docs: T5 Optik in ARCHITECTURE §15, Annahmen 119–124, TASKS, Spec-Abweichungen (T5b B8)
- ARCHITECTURE: neuer Abschnitt 15 (Tokens und vier Farbsätze, Darstellung, Baukasten und Wächter, Bewegung und Budgets, Beute in Sonne, Wabe und Kartenmarker, Lebenslinie, Bienenjahr-Rad, Manifest/Icons/SW), §11.7 Königinnen mit automatischem Endstatus, Annahmen 119–124. - TASKS: Abschnitt T5 mit erledigten und offenen Punkten. - Spec: 18 markierte Abweichungen bei der Umsetzung mit Grund. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
bb3f79e55f
commit
4ba6dea45a
3 files changed
+146
-6
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# T5 Optik mit eigener Handschrift — Design
|
||||
|
||||
Stand: 2026-10-14, Nachtrag 2026-10-16 (§17 Bewegungs-Sprache, Frage 4 in §16; Anlass Beute-Spec §12.4, Issue #26) · Betrifft: ApiCore-Frontend (plus ein kleiner Zusatz am Backend-Endpunkt `GET /autopilot/today`) · Teilprojekt T5 aus `docs/superpowers/specs/2026-10-12-plattform-rueckgrat-und-fahrplan-design.md` §10
|
||||
Stand: 2026-10-14, Nachtrag 2026-10-16 (§17 Bewegungs-Sprache, Frage 4 in §16; Anlass Beute-Spec §12.4, Issue #26), Nachtrag 2026-10-19 (Abweichungen bei der Umsetzung, je an der Stelle als „Abweichung bei der Umsetzung 2026-10-19“ vermerkt) · Betrifft: ApiCore-Frontend (plus ein kleiner Zusatz am Backend-Endpunkt `GET /autopilot/today`) · Teilprojekt T5 aus `docs/superpowers/specs/2026-10-12-plattform-rueckgrat-und-fahrplan-design.md` §10
|
||||
|
||||
## 1. Ziel
|
||||
|
||||
@@ -116,7 +116,7 @@ Gemessen mit derselben OKLCH-Rechnung wie `src/lib/forms/rating-contrast.spec.ts
|
||||
| T3 Task 11 Varroa-Trend (SVG) | Muster für handgeschriebene Diagramme | Vorlage für Lebenslinie und Rad. |
|
||||
| T4 Task 15 `ColonyOverviewRow.inspectionDueOn`, `ColonyNextSteps`, `AutopilotToday` | Fälligkeit, nächste Schritte, Saison je Stand | Randstufen der Zelle, Zukunftszone der Lebenslinie, Rad. `AutopilotToday` bekommt zwei Felder (9.1). |
|
||||
| T4 Task 18 `SeasonChip`, `SEGMENT_LABELS`, Heute-Karten | Saison-Chips auf dem Dashboard | Die Saison je Stand zieht in die Rad-Karte. Die Chip-Zeile entfällt dort, um Doppelanzeige zu vermeiden. `SeasonChip` bleibt auf der Stand-Seite. |
|
||||
| T4 Task 17 `INTENT_ICONS` | Icon je Absicht | Werte aus `AREAS` (Durchsicht, Varroa, Fütterung …). |
|
||||
| T4 Task 17 `INTENT_ICONS` | Icon je Absicht | Werte aus `AREAS` (Durchsicht, Varroa, Fütterung …). **Abweichung bei der Umsetzung 2026-10-19:** `INTENT_ICONS` bleibt eine eigene Tabelle (`lib/suggestions/labels.ts`). Grund: Eine Absicht ist kein Bereich; viele Absichten (Gesundheit, Königin prüfen, Aufräumen) haben keinen Bereich in `AREAS`. |
|
||||
| T4 Task 19 Varroa-Bänder, `rating` je Messung | Ampel je Messung | Lebenslinie färbt mit `rating.light` und markiert `band.redAbove`. |
|
||||
| T4 Task 31 `PHASE_SOURCE_LABELS` | „gemeldet“, „geschätzt“, „Kalender“ | Rad zeigt die Quelle damit. |
|
||||
|
||||
@@ -351,6 +351,7 @@ Alles wird je Gerät gespeichert, nicht am Konto. Draußen am Handy will man Son
|
||||
- Je Zeile: `code`, `status`, Bedingungen, `lastInspectionDate`, `openWarnings`, `openCritical`. Ab T4 zusätzlich `inspectionDueOn`, `segment`, `nextStepTitle`.
|
||||
- Zustand der Zelle = `colonyStatusLight(row, { today, inspectionsVisible })`, unverändert aus T3/T4.
|
||||
- Auf der Bienenstände-Liste lädt `useQueries` die Übersicht aller aktiven Stände, höchstens 20. Bei mehr Ständen zeigen die übrigen Karten nur die Zusammenfassung, ohne Wabe; das ist im Betrieb nicht zu erwarten.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** Jede Karte der Liste lädt ihre Übersicht selbst (`useColonyOverview`, derselbe Schlüssel und Paket-Rückfall), nicht ein `useQueries` über alle Stände. Karten ab dem 21. Stand laden nichts und zeigen nur Name und Ort, auch keine Zusammenfassung (`MAX_COMB_CARDS`). Grund: Die Zusammenfassung braucht dieselbe Übersicht wie die Wabe; ohne Anfrage gibt es keine Zahlen. Ein Sammel-Endpunkt ist Folgepunkt in TASKS.md (ARCHITECTURE Annahme 123).
|
||||
|
||||
### 6.2 Aufbau
|
||||
|
||||
@@ -393,6 +394,7 @@ Bienenstände-Liste (`/apiaries`, Tab „Aktiv“): Jeder aktive Stand ist eine
|
||||
- Die Liste behält ihren Hauptknopf „+ Neuer Bienenstand“. Die Karten haben keine eigenen Knöpfe. Der Name führt zum Stand, die Zellen führen zu den Völkern.
|
||||
- Der Tab „Historie“ bleibt eine `EntityCard`-Liste ohne Wabe.
|
||||
- Die Legende steht einmal oben über allen Karten.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** Der `SeasonChip` der Karte zeigt nur den Abschnitt aus `segment` der Übersicht, ohne das Intervall („alle 7 Tage“). Grund: Die Übersicht trägt kein Intervall; es bräuchte eine zweite Anfrage je Karte.
|
||||
|
||||
### 6.3 Zelle
|
||||
|
||||
@@ -418,6 +420,7 @@ Bienenstände-Liste (`/apiaries`, Tab „Aktiv“): Jeder aktive Stand ist eine
|
||||
- Ohne `inspections:read` (`inspectionsVisible = false`) gibt es einen 1-px-Rand in `--input` und keine Aussage zur Durchsicht.
|
||||
- Die 3-Tage-Grenze ist dieselbe wie „SOON“ in der T4-Rangfolge.
|
||||
- Die Funktion `rimStepOf(row, today, inspectionsVisible)` liegt in `src/lib/honeycomb/cell-state.ts`.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** Der Rand ist in der Tinte der Füllung gezeichnet (`--condition-*-foreground`), nicht in `--foreground`. Grund: Im Dunkelmodus ist `--foreground` hell und hat auf den hellen Füllungen unter 2:1; die Randstärke wäre nicht zu lesen. Das Paar Füllung und Tinte hält `contrast.spec.ts` in allen vier Sätzen bei mindestens 4,5:1. Die Breiten in der Sonne kommen aus `--comb-stroke-1` bis `-3`.
|
||||
- **Zustand „Winterruhe“:** Ab T4 heißt die Rand-Erklärung im Namen „Winterruhe – keine Durchsicht nötig“.
|
||||
|
||||
### 6.4 Bedienung
|
||||
@@ -472,6 +475,7 @@ Keine Animation. Ändert sich der Zustand nach einem Sync, wechselt die Füllung
|
||||
- Knopf „Stand öffnen“ (44 px, `size="touch"`, Umriss)
|
||||
- Keine Bedienung einzelner Zellen auf der Karte. Sie wären für Handschuhe zu klein.
|
||||
- Popup im Token-Stil: `.leaflet-popup-content-wrapper`, `.leaflet-popup-tip` mit `--popover`/`--popover-foreground` und Tinten-Rand. Den Schließknopf `.leaflet-popup-close-button` vergrößert ein Pseudo-Element auf 44 px.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** Zoom-, Ausblend- und Marker-Animationen sowie das Nachgleiten (`inertia`) laufen nur bei „Voll“ (§17.2). Das Verschieben per Pfeiltaste und das automatische Verschieben zum geöffneten Popup animiert Leaflet aber in jeder Stufe. Grund: Leaflet 1.9 hat dafür keine Option; ein Eingriff in Leaflet-Interna lohnt für diese kurze Bewegung nicht. Folgepunkt in TASKS.md.
|
||||
|
||||
### 7.3 Barrierefreiheit und Rückfall
|
||||
|
||||
@@ -511,6 +515,12 @@ Ein SVG-String je Stand, gemerkt nach den Ampel-Zählern. Keine neue Abhängigke
|
||||
- Die Konstante `STRENGTH_IN_FRAMES_SINCE` (`lifeline.ts`) ist das Rollout-Datum von T3 Task 9. Es wird beim Bau aus dem Deploy-Protokoll eingetragen.
|
||||
- Ältere Werte erscheinen nicht in der Kurve, nur in der Tabelle mit der Einheit „Skala (alt)“.
|
||||
- So vermischt die Kurve keine Einheiten.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** `STRENGTH_IN_FRAMES_SINCE` ist `2026-10-17`, der erste volle Tag nach dem Rollout des Frontends mit dem Waben-Stepper (sha-cda3e02, 16.10.2026 abends), nicht der Tag des Rollouts selbst. Ob ein Wert davor liegt, entscheidet `createdAt` der Durchsicht, ersatzweise ihr Datum. Grund: Der Rollout war am 16.10. um 22:28; ein Wert dieses Tages stammt fast sicher noch aus der alten Skala. In Produktion liegt zwischen 10.10. und 19.10. keine Durchsicht, also kein Wert auf der Grenze (ARCHITECTURE Annahme 122).
|
||||
- **Abweichung bei der Umsetzung 2026-10-19 (Tabelle oben):**
|
||||
- Der Varroa-Key heißt im Bestand `["colonies", id, "varroa-measurements"]`; die Lebenslinie nutzt ihn, damit keine Doppel-Anfrage entsteht.
|
||||
- Die Zeile „Ampel ohne T4“ entfällt: den Key `["varroa", "threshold"]` gibt es nicht mehr, jede Messung trägt seit T4 `rating`. `buildLifeline` nimmt für alte Daten optional ein Band, der Hook lädt keins.
|
||||
- Ein Balken unter Behandlungswirkung bekommt keine Ampel, sondern das Wort „Behandlungseffekt“. Grund: Eine erfundene Ampel wäre falsch.
|
||||
- Königin-Amtszeiten gibt es nur für die geladenen Königinnen (die letzten 5 nach Beginn). Eine unbekannte oder gelöschte Königin erscheint nur als Ereignis „Königinwechsel“.
|
||||
- **Rechte:** Fehlt ein Leserecht (403), fällt die Spur weg, ohne Fehlermeldung. Das gilt für `inspections:read` (Stärke), `varroa:read` (Milben), `treatments:read` (Behandlungen) und `queens:read` (Königin). Die Kopfzeile nennt nur vorhandene Spuren.
|
||||
|
||||
### 8.2 Aufbau
|
||||
@@ -554,10 +564,17 @@ Spalten (Handy / Desktop):
|
||||
- Ab T4 sind das `next-steps`, vorher offene Aufgaben.
|
||||
- Der Hinweis `withdrawalUntil` (T4) erscheint als Satz unter der Grafik: „Wartezeit bis 20.08.“
|
||||
- **Wertbeschriftung:** Die Stärke-Kurve beschriftet nur den letzten Wert, den höchsten und den niedrigsten Wert im Ausschnitt sowie Punkte, die mindestens 24 px Abstand haben. So überlappen keine Zahlen.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:**
|
||||
- Die Zukunftszone ist in Zeilen geteilt (22 px je Schritt, höchstens 3), nicht im Zeitmaß. Grund: 21 Tage × 1,6 px sind 34 px, zu wenig für drei Zeilen mit Titel und Datum.
|
||||
- Die Milben-Skala reicht bis zum Doppelten der höchsten Grenze im Ausschnitt (`threshold` oder `band.redAbove`), eine Skala für alle Balken. Grund: Ab T4 wechselt die Grenze mit der Jahreszeit; mit einer Skala je Balken wären die Balken nicht vergleichbar.
|
||||
- Ereignis-Icons, die näher als 20 px beieinander liegen, werden ein Icon mit Zähler. Es zeigt die stärkste Art, sein Name nennt alle Ereignisse („05.09.: Behandlung; 01.09.: Fütterung und 1 weitere“). Grund: Icons verschiedener Tage lagen sonst übereinander.
|
||||
- Alle Beschriftungen (Monate, „heute“, Werte, Titel der Zukunft) sind HTML in 13 px über dem SVG, kein SVG-Text. Grund: SVG-Text skaliert mit der Breite und fiele auf dem Handy unter 13 px.
|
||||
- Ohne Spur „Milben“ entfällt die Milbenspalte; die Schraffur der Behandlungen liegt dann in der Stärke-Spalte.
|
||||
|
||||
### 8.3 Platzierung und Bedienung
|
||||
|
||||
- **Volksseite:** eigene Karte „Lebenslinie“ direkt unter der T4-Karte „Als Nächstes“, auf dem Desktop in der rechten Spalte oben. Der Hauptknopf der Seite bleibt „Durchsicht erfassen“.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** Die Karte steht in Zeile 2 als erstes Element der breiten Fläche, über den Karten zu Durchsichten, Varroa usw. Reihenfolge im DOM: Stammdaten, Beute, Aktionen, Lebenslinie, Karten. Grund: Seit Beute L2 belegt die Beute die rechte Spalte oben, und Zeile 1 bleibt Stammdaten und Beute (Plan-Review 2026-10-16, Task B4).
|
||||
- **Bedienung:** nur zwei Knöpfe, „Ganzes Leben zeigen“ und „Als Tabelle“ (`aria-expanded`). Punkte und Balken sind nicht antippbar; sie wären zu klein für Handschuhe. Details stehen in der Tabelle und in den bestehenden Karten (Durchsichten, Varroa, Behandlungen).
|
||||
- **Leer:** Ohne Durchsicht und Messung steht dort „Noch keine Durchsicht. Die Lebenslinie wächst mit jeder Durchsicht.“ und der Knopf „Durchsicht erfassen“ als Umriss. Königin und Ereignisse erscheinen trotzdem, falls vorhanden.
|
||||
- **Laden:** ein Skelett-Block in voller Höhe des Ausschnitts, kein Spinner.
|
||||
@@ -616,6 +633,7 @@ Spalten (Handy / Desktop):
|
||||
- Das Rad zeigt den Abschnitt, in dem die meisten aktiven Stände sind.
|
||||
- Bei Gleichstand gilt der weiter fortgeschrittene Abschnitt. Lieber eine Durchsicht zu früh als einen Schwarm verpasst (T4 7.3).
|
||||
- Abweichende Stände nennt die dritte Zeile im Zentrum: „Südhang: noch Frühjahr“. Bei mehr als einem Stand steht dort „2 Stände weichen ab – siehe Tabelle“.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** Abweichende Stände und der Wetter-Hinweis (`note`) stehen in einer eigenen Zeile unter dem Rad und in der Tabelle, nicht im Zentrum. Grund: Der freie Kreis im Zentrum (r < 62) fasst bei 390 px und in der Sonne nur drei kurze, einzeilige Zeilen (siehe 9.2).
|
||||
- **Aufgaben:** offene Aufgaben mit Termin aus der bestehenden Dashboard-Query `["tasks", "dashboard"]`.
|
||||
- Je Kalenderwoche ein Punkt.
|
||||
- Überfällige Aufgaben bilden einen eigenen Punkt kurz vor dem Zeiger.
|
||||
@@ -685,6 +703,8 @@ Feste Größe 320 × 320 px. Unter 328 px Containerbreite skaliert das Rad mit,
|
||||
1. Abschnitt (22 px, Space Grotesk halbfett)
|
||||
2. „seit {Datum} · {Quelle}“ (14 px; Quelle aus `PHASE_SOURCE_LABELS`: „gemeldet am 18.04.“, „geschätzt“, „Kalender“; bei `note` zusätzlich „Wetterdaten lückenhaft“ bzw. „ohne Koordinaten“)
|
||||
3. das laufende Arbeitsfenster mit Ende, oder die Abweichung eines Stands
|
||||
|
||||
**Abweichung bei der Umsetzung 2026-10-19:** Das Zentrum hat höchstens drei einzeilige Zeilen: der Abschnitt (13 bis 22 px, wächst mit der Breite des Rads), „seit {Datum}“ und das laufende Fenster (breites Rad: Name, z. B. „Einwinterung“; schmales Rad: „bis 15.11.“). Die Quelle steht im Satz „Jetzt … (Kalender) · Danach …“, Wetter-Hinweis und Abweichungen in der Zeile unter dem Rad. Container-Queries wählen die Form, ohne Messen und ohne Layout-Sprung. Grund: Mit 22 px und umbrechenden 14-px-Zeilen lief der Text bei schmalen Breiten und in der Sonne aus dem Kreis.
|
||||
- **Zeiger:** Linie in `--foreground` mit der Wabenzelle als Kappe. Er steht auf heute und bewegt sich nie animiert.
|
||||
- **Darunter:** die Legende (eine Zeile, 13 px) und der Satz „Jetzt … · Danach …“.
|
||||
- **Karte:** Überschrift „Bienenjahr“ (h2). Rechts steht der Textlink „Zum Kalender“ (44 px Trefferfläche) als einzige Aktion; „Als Tabelle“ ist eine Aufklapp-Steuerung.
|
||||
@@ -711,6 +731,8 @@ Reihenfolge von oben nach unten:
|
||||
- Fenster | von | bis
|
||||
|
||||
Dazu kommt die Zeile „Aufgaben je Woche“ für die nächsten 4 Wochen.
|
||||
|
||||
**Abweichung bei der Umsetzung 2026-10-19:** „Aufgaben je Woche“ ist eine dritte Tabelle mit Beschriftung (4 Wochen ab dem Montag dieser Woche, dazu „überfällig“), keine lose Zeile. Grund: dieselbe Form wie die beiden anderen Tabellen, mit eigener Beschriftung für Screenreader.
|
||||
- Keine interaktiven Teile im SVG. Die Punkte wären zu klein (eine Woche entspricht etwa 15 px Bogen).
|
||||
|
||||
### 9.5 Leistung und Bewegung
|
||||
@@ -760,6 +782,9 @@ Der Wächter-Test `src/styles/baukasten-guard.spec.ts` prüft die Regeln aus 10.
|
||||
- `"tile"`: umrandete Kachel wie `ToggleChip`; gewählt mit Honig-Tönung und 2-px-Tinten-Rand; Sonne: `--card` mit Tinten-Rand
|
||||
- `"task"`: die Abhak-Zelle der Heute-Liste; die `honey-check`-Animation bleibt als einzige „Moment“-Bewegung, jetzt auf dem Base-UI-Primitiv statt eines eigenen `role="checkbox"`
|
||||
- `ToggleChip` wird nach der Umstellung gelöscht.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:**
|
||||
- Enter auf einer Checkbox schaltet nicht und sendet kein Formular ab; nur die Leertaste schaltet (Muster der WAI-ARIA APG). Das gilt auch für die Abhak-Zelle der Heute-Liste. Grund: Base UI schickte mit Enter das umgebende Formular ab (Ruling T5-3).
|
||||
- `SwitchRow` geht ebenfalls in `CheckboxField` auf (Prop `role="switch"`, neu `ui/switch.tsx`). Es sind 35 Stellen in 27 Dateien, nicht 17. Grund: Seit der Spec kamen Stellen aus T6, T7 und Beute dazu.
|
||||
|
||||
### 10.4 Tabs
|
||||
|
||||
@@ -770,6 +795,11 @@ Der Wächter-Test `src/styles/baukasten-guard.spec.ts` prüft die Regeln aus 10.
|
||||
- Base UI liefert `role="tab"`/`tabpanel`, `aria-controls` und Pfeiltasten.
|
||||
- Die Variante `line` entfällt; die Statistik nutzt `segment`.
|
||||
- `ActiveHistoryTabs` wird eine Vorlage auf `Tabs` (Props `value`, `onValueChange`, `activeCount`, `historyCount`, `children` je Panel). Die 9 Listen legen ihre Liste in das Panel. `TabSwitcher` wird gelöscht; die beiden Einstellungsseiten nutzen `Tabs` direkt.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:**
|
||||
- Pfeiltasten bewegen nur den Fokus; Enter oder Leertaste wählt den Reiter (manuelle Aktivierung). Nur `ActiveHistoryTabs` wählt schon beim Fokus. Grund: Statistik und Einstellungen laden je Reiter Daten, jeder Pfeil hätte eine Anfrage ausgelöst; `ActiveHistoryTabs` filtert nur schon geladene Daten.
|
||||
- `ActiveHistoryTabs` hat zusätzlich die Props `toolbar`, `toolbarAlign` und `heading`. Grund: Fünf Listen haben Filter oder einen Anlegen-Knopf neben den Reitern; ohne die Props lägen sie unter den Panels.
|
||||
- Unter 640 px zeigen `/settings/automation` und die Statistik eine Auswahlliste statt der Leiste (`TabPicker`). Grund: Sieben Reiter brachen bei 390 px in fünf Reihen um.
|
||||
- Die Zahl im Reiter („Aktiv (3)“) fehlt, solange die Liste lädt oder fehlschlägt. Grund: „(0)“ wäre in diesem Zustand falsch.
|
||||
|
||||
### 10.5 Plus/Minus
|
||||
|
||||
@@ -787,6 +817,7 @@ Der Wächter-Test `src/styles/baukasten-guard.spec.ts` prüft die Regeln aus 10.
|
||||
- MFA-Codes
|
||||
- Spalten und Zeilen im Etiketten-Designer
|
||||
- Werte in Aufgabenvorlagen und Regeln
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** In `varroa/new` nutzt die Milbenzahl für ein Volk den `NumberStepper`. Die Sammelerfassung (`BulkMiteCounts`) bleibt ein Eingabefeld. Grund: Dort stehen viele Zeilen untereinander, und die Zahlen werden meist am Schreibtisch nach dem Auszählen getippt; ein Stepper je Zeile verdoppelte die Liste und bremste das Springen mit Tab (Ruling T5-2). Die Entnahme in `stock-card` bleibt bei Rohstoffen ein Eingabefeld (Gramm).
|
||||
|
||||
### 10.6 Fokus für eigene Bedienelemente
|
||||
|
||||
@@ -915,6 +946,7 @@ export const AREAS: Readonly<Record<AreaKey, Area>>;
|
||||
|
||||
- Eine Seite, die einen anderen Bereich nur erwähnt (z. B. die Schleuderung in der Honigcharge), darf dessen Icon tragen. Ein Icon bedeutet immer seinen Bereich.
|
||||
- Die öffentliche Herkunftsseite behält ihre eigenen Icons.
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** `AREAS` hat 37 Schlüssel statt 32. Neu sind `compliance` (`ShieldCheck`, betrieb), `medicines` (`Pill`, erfassung), `voice` (`Mic`, erfassung), `hive-systems` (`Box`, neutral) und `system` (`Activity`, neutral). Grund: T6, T7 und Beute brachten Einträge in Navigation und „+ Neu“, die ihr Icon aus `AREAS` lesen (Plan-Review 2026-10-16).
|
||||
|
||||
## 12. Manifest und Icons
|
||||
|
||||
@@ -1147,6 +1179,7 @@ Der Fahrplan nannte etwa 5 PT. Mehr wird es durch vier Punkte, die §10 nicht ei
|
||||
- ARCHITECTURE §2: `AREAS` als einzige Quelle für Icon und Ton, Wabenzelle als einziges Motiv.
|
||||
- TASKS.md: Abschnitt T5 mit Haken; Abschnitt R „Redesign“ verweist auf T5.
|
||||
- Empfohlen: `ApiCore-Frontend/DESIGN.md` per `/impeccable document` aus dem fertigen Stand erzeugen, damit spätere Seiten den Baukasten finden.
|
||||
- Stand 2026-10-19: Die nächste freie Nummer war 119. ARCHITECTURE hat die Annahmen 119 („Darstellung je Gerät“), 120 („Ein Baukasten“) und 121–124 (offene Fragen vorläufig A, Stichtag der Stärke-Kurve, 20 Karten in der Liste, Bezugsstand des Rads), den Absatz in §2 und den neuen Abschnitt 15. TASKS.md hat den Abschnitt T5, und Abschnitt R verweist darauf. `DESIGN.md` und der Changelog-Hinweis stehen als offene Punkte in TASKS.md.
|
||||
|
||||
## 16. Offene Fragen an den Inhaber
|
||||
|
||||
@@ -1244,6 +1277,11 @@ Die Werte kommen aus dem, was die Beute schon ausliefert, und aus den bestehende
|
||||
| **Wabenmotiv** | Die Wabenzelle bewegt sich nur an zwei Stellen: beim Abhaken (`.honey-check`) und auf der Beute-Bühne. Waben-Standkarte, Mini-Waben, Rad, Lebenslinie, `BrandMark` und `AreaIcon` stehen still (6.8, 8.5, 9.5 bleiben). Ein Ladezeichen in Wabenform gibt es nicht. | – | – |
|
||||
| **Toast** | Sonner-Standard (gleitet), Dauer und Kurve auf die Tokens | ohne Gleiten, nur Deckkraft | CSS-Überschreibung an `[data-sonner-toaster]`, falls Sonner das nicht selbst tut |
|
||||
|
||||
**Abweichung bei der Umsetzung 2026-10-19:**
|
||||
- **Listenzeile hinzu:** Eine neue Zeile erscheint sofort, ohne Eintritt. Grund: 17.5 „Daten stehen sofort da“ wiegt schwerer; eine einblendende Zeile wäre ein Datenwert in Bewegung.
|
||||
- **Toast:** Bei „Voll“ behält Sonner sein eigenes Gleiten (400 ms, unter der Grenze von 420 ms) und wird nicht auf die Tokens umgestellt. Bei „Dezent“ blendet der Toast nur über.
|
||||
- **Listenzeile weg:** Bei „Dezent“ blendet die Zeile im Fluss aus (`AnimatePresence` im Modus `sync`), die übrigen stehen danach sofort am Ziel. Eine Liste, die erscheint, bevor das `motion`-Modul geladen ist, bleibt bis zum nächsten Einhängen ohne Bewegung.
|
||||
|
||||
### 17.5 Was nie animiert
|
||||
|
||||
- **Datenwerte, die der Imker liest:**
|
||||
@@ -1286,6 +1324,7 @@ Die Werte kommen aus dem, was die Beute schon ausliefert, und aus den bestehende
|
||||
- Geladen wird nur im `(app)`-Layout, nicht auf Login und Herkunft.
|
||||
- Budget: höchstens 30 kB gzip, im Build gemessen wie das 3D-Budget.
|
||||
- Die three.js-Szene nutzt `motion` nicht (eigene Federn in `use-animated-node.ts`).
|
||||
- **Abweichung bei der Umsetzung 2026-10-19:** Statt `domMax` lädt `motion` nur `domAnimation`; das Nachrücken der Zeilen ist ein eigenes FLIP (eine Messung zu Beginn, dann WAAPI-`transform` auf der `linear()`-Feder). Der ganze `motion`-Code liegt in einem nachgeladenen Modul (`components/motion/motion-runtime.tsx`), das in keinem ersten Laden steckt; `AppMotion` lädt es nur vor. Gemessen: 28,1 kB gzip für alle `motion`-Chunks zusammen (`npm run check:motion-budget`, im Image-Build). Grund: `domMax` allein hatte etwa 33 kB, und der erste Bau lag mit statischem Kern bei 47,5 kB, über dem Budget.
|
||||
|
||||
### 17.7 Abnahme
|
||||
|
||||
|
||||
Reference in new issue
Block a user