4.1 KiB
4.1 KiB
quick_id, type, wave, autonomous
| quick_id | type | wave | autonomous |
|---|---|---|---|
| 260929-dmx | quick | 1 | true |
Quick 260929-dmx: Widget-Raster horizontal feiner (48 Spalten), Kalender schmaler
User requests (29.09.2026)
- "das kalender widget soll in der breite schmäler gemacht werden können."
- "und mache das widget raster horizontal etwas feiner."
Measurements (orchestrator, browser, lg breakpoint, grid width 1593 px, margin 12)
- Today: 24 cols → one width unit ≈ 66 px. Calendar minW 6 ≈ 383 px, default 8 ≈ 515 px.
- Calendar rendered at 251 px: fully usable (month grid, header "September 2026", event list truncates titles cleanly).
- Calendar at 185 px: header clipped, event titles reduced to one letter → too narrow.
- Target: calendar minimum ≈ 250 px.
Decision (locked)
Double the HORIZONTAL resolution only: COLS = { lg: 48, md: 40, sm: 24, xs: 16, xxs: 4 } in
apps/web/src/components/dashboard/dashboard-grid.tsx. Row height (20) and margin (12) unchanged.
Every existing widget keeps its exact on-screen size and position.
Task 1: Grid version 3 (horizontal x2) with migration
- files: apps/web/src/lib/grid-layout-migration.ts (+ test), apps/web/src/components/dashboard/dashboard-grid.tsx (+ test), apps/web/src/lib/stores/dashboard-store.ts (only if needed)
- action:
- Bump
GRID_VERSIONto 3. Migration becomes stepwise and cumulative: v1 → v2: existing behavior (x,y,w,h,minW,minH,maxW,maxH × 2). v2 → v3: NEW, horizontal only: x, w, minW, maxW × 2 (y, h, minH, maxH unchanged). So a v1 layout gets both steps, a v2 layout only the second, a v3 layout nothing. Keep idempotence and marker semantics (marker only in persisted JSON). Update the file header comment (German, same style) to document v3. COLSas above. Check every other place that depends on column count or widget width units: centering offset,RESIZE_AXIS_FALLBACK,breakpointFor, default positions when adding a widget (dashboard-grid.tsx~380:defaultW ?? 4,minW ?? 4fallbacks → 8), empty-dashboard suggestions, any layout templates/seed data in apps/web or apps/api (grepdefaultW,w:in dashboard code,layoutsdefaults in apps/api/src/dashboard). Anything expressed in width units gets × 2.- Tests: extend grid-layout-migration tests (v1→v3, v2→v3, v3 untouched, idempotence, marker 3 written), update dashboard-grid tests pinning cols.
- Bump
- verify:
pnpm --filter web exec vitest run src/lib src/components/dashboardgreen.
Task 2: Widget width constraints in new units
- files: apps/web/src/components/dashboard/widget-registry.tsx (+ test)
- action: In
WIDGET_CONSTRAINTSdouble everyminWanddefaultW(same physical size as before), EXCEPT calendar:minW: 8(≈ 251 px at lg — the measured usable minimum),defaultW: 16(unchanged size). minH/defaultH unchanged. Update the comment above calendar (German): narrower on user request 29.09., 8 of 48 ≈ 250 px measured usable. Existing layouts: the existing override logic in dashboard-grid (quick-260916-dyv: stored minW/minH replaced by constants in every breakpoint) must pick up the new calendar minW so existing calendars can be shrunk — verify that path with a test. - verify: web tests green;
pnpm turbo run type-check lint --filter webgreen; biome warnings for web not above baseline 55.
Task 3: CHANGELOG, rebuild, commit
- CHANGELOG.md under
## Unveröffentlicht→### Geändert(section exists) add plain-German bullets (app text uses "Sie"):- Dashboard: Das Raster ist in der Breite doppelt so fein – Widgets lassen sich in kleineren Schritten breiter oder schmaler ziehen und genauer platzieren. Bestehende Anordnungen bleiben unverändert.
- Dashboard: Das Kalender-Widget lässt sich deutlich schmaler ziehen als bisher.
- Rebuild local stack:
docker compose up -d --build web(plainupdoes not rebuild). - Commits per task, messages end with
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>. - NEVER git push (orchestrator pushes after browser check).
- Browser check is done by the orchestrator (resize calendar to minimum, existing layout unchanged after migration, marker 3 persisted).