Files
tessera-ctl/.planning/quick/260929-dmx-widget-raster-horizontal-feiner-48-spalt/260929-dmx-PLAN.md
T
schalli a435a30c34
Tessera CI/CD / Lint & Type Check (push) Successful in 51s
Tessera CI/CD / Tests (push) Successful in 1m18s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 19s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m7s
docs(quick-260929-dmx): feineres Raster, Kalender schmaler, Browser-Pruefung
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 09:56:27 +02:00

4.1 KiB
Raw Blame History

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)

  1. "das kalender widget soll in der breite schmäler gemacht werden können."
  2. "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_VERSION to 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.
    • COLS as 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 ?? 4 fallbacks → 8), empty-dashboard suggestions, any layout templates/seed data in apps/web or apps/api (grep defaultW, w: in dashboard code, layouts defaults 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.
  • verify: pnpm --filter web exec vitest run src/lib src/components/dashboard green.

Task 2: Widget width constraints in new units

  • files: apps/web/src/components/dashboard/widget-registry.tsx (+ test)
  • action: In WIDGET_CONSTRAINTS double every minW and defaultW (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 web green; 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 (plain up does 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).