diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 5d620bc..b93fba1 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -453,7 +453,7 @@ Plans: | 17. UI Optimization & Polish | v1.1 | 6/6 | Complete | 2026-06-18 | | 18. Auto Timezone Detection | v1.1 | 4/4 | Complete | 2026-06-14 | | 19. Local Auth (No-OIDC Mode) | v1.1 | 5/5 | Complete | 2026-06-17 | -| 20. Admin Member Editor & Declutter | v1.1 | — | Not planned | — | +| 20. Admin Member Editor & Declutter | v1.1 | 2/3 | In Progress| | ## Backlog @@ -759,13 +759,13 @@ Plans: **Goal:** Replace the per-member-row action buttons (Rotate/Add credential + Reset password) in the admin Members panel with a single edit affordance — clicking a member's name or an edit button opens a member-detail editor where an admin modifies all of that member's details in one place: display name, local-login password, and the Fastmail/CalDAV app password (calendar credential) — using clear, non-jargon labels that retire the confusing "Rotate" term. Also collapse the "Add member" section so its input fields are hidden behind a single "Add member" trigger by default, decluttering the panel. Client-side AdminPage + CredentialSheet rework over the existing `/api/admin` endpoints; no new auth/authorization boundary (seeded by the gripe that "Rotate" for the app password is not intuitive). **Requirements**: TBD (refine in /gsd-discuss-phase 20 — open scope: which fields count as "all" (color swatch? admin toggle? OIDC link?), whether to keep any standalone reset-password flow, and the exact edit affordance — clickable name vs. row edit button) **Depends on:** Phase 19 -**Plans:** 3 plans +**Plans:** 2/3 plans executed Plans: **Wave 1** -- [ ] 20-01-PLAN.md — Server: PATCH /api/admin/members/:id (displayName + is_admin) with last-admin demotion guard (TDD) + isAdmin in GET /members -- [ ] 20-02-PLAN.md — PWA API client: AdminMember.isAdmin field + updateMemberProfile fetcher (last-admin sentinel) +- [x] 20-01-PLAN.md — Server: PATCH /api/admin/members/:id (displayName + is_admin) with last-admin demotion guard (TDD) + isAdmin in GET /members +- [x] 20-02-PLAN.md — PWA API client: AdminMember.isAdmin field + updateMemberProfile fetcher (last-admin sentinel) **Wave 2** *(blocked on Wave 1 completion)* diff --git a/.planning/STATE.md b/.planning/STATE.md index 3608f51..9448559 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,17 +2,17 @@ gsd_state_version: 1.0 milestone: v1.1 milestone_name: Operability & Polish -current_phase: 18 -current_phase_name: Auto timezone detection and ability to change timezone +current_phase: 20 +current_phase_name: admin-member-editor-form-declutter status: executing stopped_at: Phase 20 UI-SPEC approved -last_updated: "2026-06-18T21:06:24.292Z" +last_updated: "2026-06-18T21:14:13.706Z" last_activity: 2026-06-18 -last_activity_desc: Phase 17 complete, transitioned to Phase 18 +last_activity_desc: Phase 20 execution started progress: total_phases: 27 completed_phases: 12 - total_plans: 55 + total_plans: 58 completed_plans: 54 percent: 44 --- @@ -24,14 +24,14 @@ progress: See: .planning/PROJECT.md (updated 2026-06-16) **Core value:** One color-coded family calendar (shared + personal) and shared lists from a single low-friction PWA — cross-ecosystem, no app store -**Current focus:** Phase 17 — ui-optimization-polish +**Current focus:** Phase 20 — admin-member-editor-form-declutter ## Current Position -Phase: 18 — Auto timezone detection and ability to change timezone -Plan: Not started -Status: Ready to execute -Last activity: 2026-06-18 — Phase 17 complete, transitioned to Phase 18 +Phase: 20 (admin-member-editor-form-declutter) — EXECUTING +Plan: 1 of 3 +Status: Executing Phase 20 +Last activity: 2026-06-18 — Phase 20 execution started ### ✅ Resolved Checkpoint — Phase 15 Plan 15-03 Task 2 (human-action)