Commit Graph

8 Commits

Author SHA1 Message Date
f8955be4e9 feat(web): filter by ownerId and surface missing-role 401 state
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 08:28:25 +00:00
02adfd0dbe feat: installable PWA (manifest, icons, minimal service worker)
- public/manifest.webmanifest with any + maskable icons (192/512)
- generated inbox-glyph icons in app palette, apple-touch-icon
- minimal no-cache service worker for installability; registered via client plugin
- head: manifest/icon links, mobile-web-app-capable

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 08:00:54 +00:00
104ffc4f1d feat: compact task rows + bottom-sheet list picker
- Tasks as dense divided rows: title clamps to 2 lines, note to 1;
  tap a row to expand the full text (was: full-height cards → heavy scroll)
- List switcher moved from top chip row into the thumb zone: a "List" pill
  in the dock opens a bottom sheet with all lists (52px rows, active check)
- Masthead title now shows the selected list; compacted header spacing

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:56:41 +00:00
c29f793973 feat: mobile-first redesign (warm notebook aesthetic, thumb-zone capture bar)
- Editorial masthead (Fraunces + Spline Sans), warm paper/ink palette with
  terracotta accent, matching dark mode
- Thumb-zone composer: single capture input + round submit, optional note
  toggle, refocus after add for rapid capture
- Mobile-first CSS: 44-50px touch targets, 16px inputs (no iOS zoom),
  edge-to-edge scroll-snap list chips, safe-area insets, tap-highlight off,
  contained overscroll; desktop as min-width enhancement
- Staggered task-card entrance (reduced-motion aware), themed empty states
- Head: theme-color light/dark, Apple web-app metas, lang attr, font preconnect

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:49:45 +00:00
812048a0b5 fix: bootstrap-gate auth before mount (krypto-kuns pattern); never call API unauthenticated
Root cause: the router-guard adapter let index.vue mount and call the API before
auth resolved, so auth.fetch returned a synthetic 401 (the banner) and the package's
redirect-loop guard could strand the user. Now use the core ZitadelAuth and gate in an
async plugin (Nuxt awaits it before mount), mirroring the working krypto-kuns app.
2026-06-10 08:49:01 +00:00
56186a1fea feat: zitadel provisioning script + project-audience scope 2026-06-10 08:07:20 +00:00
f83bb25316 feat: mobile-first web client (login, lists, add task) 2026-06-10 08:01:39 +00:00
935ff5b757 feat: scaffold nuxt app 2026-06-10 07:49:40 +00:00