roadmap(06): add Phase 6 — UX Polish
phase.add appended the entry after the 999.x backlog (the decimal backlog convention confused the auto-placement). Moved it into Phase Details before ## Progress, added it to the top checklist + Progress table + execution order, gave it goal/success-criteria/candidate-scope (promotes backlog 999.2/3/6/7/8/9), renamed the dir to 06-ux-polish, and bumped STATE to 6 phases (50%).
This commit is contained in:
+23
-1
@@ -18,6 +18,7 @@ Decimal phases appear between their surrounding integers in numeric order.
|
||||
- [x] **Phase 3: Event Write-Back + PWA Install** - Full event CRUD written back to Fastmail, PWA manifest + service worker, guided iOS install flow (completed 2026-06-07)
|
||||
- [ ] **Phase 4: Shared Lists + Live Sync** - Named collaborative lists with item CRUD and real-time SSE co-edit sync
|
||||
- [ ] **Phase 5: Web Push Notifications** - VAPID push for event reminders, event changes, and list-change alerts
|
||||
- [ ] **Phase 6: UX Polish** - All-day visual distinction, event-form date/recurrence behavior, recurring-series edit, and auth-flow smoothing
|
||||
|
||||
## Phase Details
|
||||
|
||||
@@ -158,10 +159,29 @@ Plans:
|
||||
|
||||
**Plans**: TBD
|
||||
|
||||
### Phase 6: UX Polish
|
||||
|
||||
**Goal**: Smooth the rough edges surfaced during live use — clearer all-day events, saner event-form date/recurrence behavior, recurring-series editing, and auth-flow polish — so the app feels slick for the non-technical Apple member (hard UX constraint).
|
||||
**Mode:** mvp
|
||||
**Depends on**: Phase 3 (calendar/event-form polish); Phase 4 for any list-related polish
|
||||
**Requirements**: TBD
|
||||
**Success Criteria** (what must be TRUE):
|
||||
|
||||
1. All-day events are visually distinct from timed events at a glance
|
||||
2. The event form keeps a sane duration when the start moves, all-day edits don't grow the event, and a recurrence can be bounded (repeat-until / count)
|
||||
3. A recurring series can be edited as a whole
|
||||
4. A session that expires mid-use redirects cleanly to sign-in instead of hanging on a generic error
|
||||
5. Unauthenticated cold load shows a neutral "signing you in…" splash — no calendar/"sign-in required" flash before Authelia
|
||||
|
||||
**Candidate scope** (promote via `/gsd-review-backlog` at planning): 999.2 (login flash), 999.3 (session-timeout redirect), 999.6 (all-day visual), 999.7 (form end-tracking + all-day-edit off-by-one), 999.8 (recurrence bound), 999.9 (recurring-series edit). 999.4 (reminders) and 999.5 (provider setup) are more feature than polish — decide at planning.
|
||||
|
||||
**Plans**: TBD
|
||||
**UI hint**: yes
|
||||
|
||||
## Progress
|
||||
|
||||
**Execution Order:**
|
||||
Phases execute in numeric order: 1 → 2 → 3 → 4 → 5
|
||||
Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6
|
||||
Note: Phase 4 depends only on Phase 1 and can begin as soon as Phase 1 is complete. It is serialized here to reduce work-in-progress.
|
||||
|
||||
| Phase | Plans Complete | Status | Completed |
|
||||
@@ -171,6 +191,7 @@ Note: Phase 4 depends only on Phase 1 and can begin as soon as Phase 1 is comple
|
||||
| 3. Event Write-Back + PWA Install | 12/12 | Complete | 2026-06-07 |
|
||||
| 4. Shared Lists + Live Sync | 0/? | Not started | - |
|
||||
| 5. Web Push Notifications | 0/? | Not started | - |
|
||||
| 6. UX Polish | 0/? | Not started | - |
|
||||
|
||||
## Backlog
|
||||
|
||||
@@ -299,3 +320,4 @@ Plans:
|
||||
Plans:
|
||||
|
||||
- [ ] TBD (promote with /gsd-review-backlog when ready)
|
||||
|
||||
|
||||
+7
-3
@@ -7,11 +7,11 @@ stopped_at: "Phase 03 (event-write-back-pwa-install) COMPLETE — Gate 2 verifie
|
||||
last_updated: "2026-06-07T23:30:00.000Z"
|
||||
last_activity: 2026-06-07
|
||||
progress:
|
||||
total_phases: 5
|
||||
total_phases: 6
|
||||
completed_phases: 3
|
||||
total_plans: 21
|
||||
completed_plans: 21
|
||||
percent: 60
|
||||
percent: 50
|
||||
---
|
||||
|
||||
# Project State
|
||||
@@ -30,7 +30,7 @@ Plan: Not started
|
||||
Status: Phase 03 complete — ready to plan Phase 04
|
||||
Last activity: 2026-06-07
|
||||
|
||||
Progress: [██████░░░░] 60% (3 of 5 phases)
|
||||
Progress: [█████░░░░░] 50% (3 of 6 phases)
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
@@ -87,6 +87,10 @@ Recent decisions affecting current work:
|
||||
- [Phase ?]: D-02 calendar picker: hidden when writableCalendars.length === 1, shown when >1 — authoritative from GET /api/events/writable-calendars
|
||||
- [Phase ?]: T-03-15 XSS: EventForm renders all values as plain-text JSX children; no dangerouslySetInnerHTML in code
|
||||
|
||||
### Roadmap Evolution
|
||||
|
||||
- Phase 6 added (2026-06-07): UX Polish — all-day visual distinction, event-form date/recurrence behavior, recurring-series edit, auth-flow smoothing. Candidate scope pulls from backlog 999.2/999.3/999.6/999.7/999.8/999.9.
|
||||
|
||||
### Pending Todos
|
||||
|
||||
- **Fix `docs/deployment.md` local-dev command** — the documented dev run is wrong: the API dev script (`node --watch dist/index.js`) does NOT load `.env`, and `DB_HOST` defaults to `localhost` with an empty password. Correct local-dev command is: `pnpm --filter @familysync/api build && set -a; source .env; set +a && DEV_AUTH_BYPASS=true DB_HOST=localhost pnpm --filter @familysync/api dev` (+ `pnpm --filter @familysync/pwa dev`). Consider adding `--env-file=.env` to the dev script so this is automatic. (Surfaced during Phase 2 UAT.)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
Reference in New Issue
Block a user