diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 3dc7e67..7d55bcf 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -3,7 +3,7 @@ ## Milestones - ✅ **v1.0 MVP** — Phases 1–7, 13 plans, 27/27 requirements (shipped 2026-04-13) — see [`milestones/v1.0-ROADMAP.md`](milestones/v1.0-ROADMAP.md) -- 🚧 **v1.1 Hardening & Validation** — Phases 8–11, 15 requirements (in progress, started 2026-04-13) +- 🚧 **v1.1 Hardening & Validation** — Phases 8–11, 15 requirements + UI enhancements (in progress, started 2026-04-13) ## Phases @@ -28,7 +28,7 @@ Full details: [`milestones/v1.0-ROADMAP.md`](milestones/v1.0-ROADMAP.md) - [x] **Phase 9: UX Tech Debt Closure** — Fix the three carried-over UX gaps so the deployed build is the polished one technicians actually use (completed 2026-04-13) - [x] **Phase 10: Real-World Runtime Validation** — Validate generated artifacts end-to-end against a live Intune tenant and a real managed endpoint (completed 2026-04-13) -- [x] **Phase 11: Real-World Rollout & Feedback** — Deploy the container to a real MSP environment, push a real package, and capture structured technician feedback (completed 2026-04-13) +- [ ] **Phase 11: UI Enhancements** — Add printer edit, separate form from list, clickable client names, dark/light mode toggle, and French/English language switch ## Phase Details @@ -78,19 +78,21 @@ Full details: [`milestones/v1.0-ROADMAP.md`](milestones/v1.0-ROADMAP.md) - [ ] 10-02-live-intune-runtime-validation-PLAN.md — Drive RTVAL-01..04 manual checkpoints against a live Intune tenant + real Windows endpoint, capturing screenshots and device logs as evidence - [ ] 10-03-report-signoff-PLAN.md — Finalize RUNTIME-VALIDATION.md, human sign-off, tick RTVAL-01..05 and mark Phase 10 complete -### Phase 11: Real-World Rollout & Feedback -**Goal**: ImpTune is running in a real MSP environment, has produced a package that actually reached endpoints, and technician feedback has been captured and triaged. -**Depends on**: Phase 9 (UX tech debt), Phase 10 (runtime validation passed) -**Requirements**: RWR-01, RWR-02, RWR-03, RWR-04 +### Phase 11: UI Enhancements +**Goal**: Improve the daily usability of ImpTune with printer editing, better form/list layout, client-scoped navigation, dark/light theme, and bilingual (FR/EN) support. +**Depends on**: Phase 9 (polished base build), Phase 10 (runtime validation passed) +**Requirements**: UIE-01, UIE-02, UIE-03, UIE-04, UIE-05 **Success Criteria** (what must be TRUE): - 1. ImpTune is running in its single Docker container inside at least one real MSP environment serving real printers, with the host/URL recorded in the feedback document - 2. At least one printer deployment package generated by the deployed instance has been pushed to real endpoints via Intune or NinjaRMM end-to-end - 3. A reviewer can open `.planning/feedback/v1.1-rollout.md` and read structured feedback from the deploying technician covering what worked, what blocked, and what's missing - 4. Every feedback item in that document is tagged fix-in-v1.1, defer-to-v1.2, or won't-do with written rationale -**Plans**: 3 plans - - [x] 11-01-deploy-container-to-msp-PLAN.md — Build + deploy ImpTune container into real MSP environment and record host/URL/commit (RWR-01) — closed by operator attestation (local Docker host) 2026-04-13 - - [x] 11-02-push-real-package-PLAN.md — Generate a real package via the deployed instance and push to a real endpoint via Intune/NinjaRMM (RWR-02) — delivered end-to-end via BOTH Intune and NinjaRMM, operator attestation 2026-04-13 - - [x] 11-03-capture-and-triage-feedback-PLAN.md — Capture structured technician feedback in .planning/feedback/v1.1-rollout.md and triage every item (RWR-03, RWR-04) — feedback doc written, zero items to triage (all worked) 2026-04-13 + 1. Every printer in the list has an Edit button that opens a pre-filled form and saves changes in-place without losing other printer data + 2. The new-printer form is visually separated from the printer list (distinct section, card, or page) so adding a printer doesn't feel buried in the list + 3. Every client name in the interface is a clickable link that navigates to a filtered page showing only that client's printers + 4. A toggle lets the user switch between Dark mode, Light mode, and Follow system — the chosen preference persists across page reloads + 5. A toggle lets the user switch the UI language between French and English — all labels, buttons, and messages update immediately and the choice persists +**Plans**: 4 plans + - [ ] 11-01-PLAN.md — Wave 0 test scaffolds + UIE-02: dedicated /printers/new page + POST redirect (UIE-02) + - [ ] 11-02-PLAN.md — Printer edit modal: PATCH /printers/{id} + native dialog + Edit button per row (UIE-01) + - [ ] 11-03-PLAN.md — Theme toggle + FR/EN language toggle in base.html via Alpine.js stores (UIE-04, UIE-05) + - [ ] 11-04-PLAN.md — Client detail page /clients/{id} + clickable client names everywhere (UIE-03) ## Progress @@ -106,4 +108,4 @@ Full details: [`milestones/v1.0-ROADMAP.md`](milestones/v1.0-ROADMAP.md) | 8. Nyquist Validation Track | v1.1 | 8/8 | Complete | 2026-04-13 | | 9. UX Tech Debt Closure | 3/3 | Complete | 2026-04-13 | 2026-04-13 | | 10. Real-World Runtime Validation | v1.1 | 3/3 | Complete | 2026-04-13 | -| 11. Real-World Rollout & Feedback | v1.1 | 3/3 | Complete | 2026-04-13 | +| 11. UI Enhancements | v1.1 | 0/4 | Planned | | diff --git a/.planning/phases/11-ui-enhancements/11-01-PLAN.md b/.planning/phases/11-ui-enhancements/11-01-PLAN.md new file mode 100644 index 0000000..4571f09 --- /dev/null +++ b/.planning/phases/11-ui-enhancements/11-01-PLAN.md @@ -0,0 +1,256 @@ +--- +phase: 11-ui-enhancements +plan: "01" +type: execute +wave: 1 +depends_on: [] +files_modified: + - tests/test_printer_crud.py + - imptune/api/pages.py + - imptune/api/printers.py + - imptune/templates/printers.html + - imptune/templates/printers_new.html +autonomous: true +requirements: + - UIE-02 +must_haves: + truths: + - "GET /printers/new returns 200 with the Add Printer form" + - "POST /printers returns 303 redirect to /printers (no HX-Request header)" + - "GET /printers no longer contains the add-printer form markup" + - "An 'Add Printer' link on /printers navigates to /printers/new" + - "Existing CRUD tests still pass after the redirect behavior change" + artifacts: + - path: "imptune/templates/printers_new.html" + provides: "Dedicated Add Printer page (GET /printers/new)" + min_lines: 15 + - path: "imptune/templates/printers.html" + provides: "Printer Library page — list only, no inline form" + contains: "/printers/new" + - path: "imptune/api/pages.py" + provides: "GET /printers/new route" + exports: ["printers_new_page"] + - path: "imptune/api/printers.py" + provides: "POST /printers always returns 303 redirect" + contains: "RedirectResponse" + key_links: + - from: "imptune/templates/printers_new.html" + to: "POST /printers" + via: "plain