kawa
3b12b0d506
docs(12-02): complete full i18n template coverage plan — checkpoint reached
...
- 12-02-SUMMARY.md: 60+ translation keys, 13 templates fully wired, 2 test fixes
- STATE.md: session updated, span-wrapper pattern decision recorded
- ROADMAP.md: phase 12 plan progress updated
2026-04-15 15:51:48 +02:00
kawa
59fc8b1e9c
feat(12-02): wire all template strings to Alpine i18n store
...
- dashboard.html: headings, quick actions, empty states wired to x-text
- printers.html: h1, add button, h2 wired to x-text
- printers_new.html: all form labels (span pattern), options, submit buttons wired
- clients.html: headings, label, submit button wired
- client_detail.html: back link, section heading wired
- drivers.html: all headings, label, buttons, spinner wired
- packages.html: heading, description, table headers, empty state wired
- printer_detail.html: all dt/dd, section headings, copy buttons, script/export links wired with conditional Jinja2 for color/collate/client
- partials/printer_list.html: table headers, Yes/No cells (Alpine ternary), delete button wired
- partials/printer_edit_modal.html: edit trigger, modal title, all labels (span pattern), options, save/cancel wired
- partials/client_list.html: empty state, table headers wired
- partials/driver_list.html: table headers, unknown values, empty state wired
- Fix test_printers_library_no_form: check form element attribute instead of UI label string (now in i18n dict)
2026-04-15 15:50:35 +02:00
kawa
e8801ecd34
feat(12-02): add missing translation keys to base.html dictionary
...
- Add ~60 new keys to both fr and en translation objects (dashboard, printers_new, printer_list, clients, client_detail, drivers, packages, printer_detail, edit_modal)
- Fix test_dashboard_shows_recent_packages to use class-specific empty-state assertion (string now appears in i18n JS dictionary)
2026-04-15 15:47:25 +02:00
kawa
4e23acb586
docs(12-01): complete browser language auto-detection and port autofill test fix
...
- SUMMARY.md created with TDD execution details and test results
- STATE.md updated with decisions and session info
- ROADMAP.md updated: Phase 12 now shows 1/2 summaries (In Progress)
2026-04-15 15:45:09 +02:00
kawa
2ab53f6ed9
fix(12-01): update test_port_autofill to navigate to /printers/new
...
- Plan 11-01 moved the add-printer form from /printers to /printers/new
- Update page.goto URL to match the current route
- Comment updated to explain the route change context
2026-04-15 15:43:41 +02:00
kawa
5a02f4c05b
feat(12-01): update i18n store lang init to use navigator.language fallback
...
- Replace hardcoded 'fr' default with IIFE that checks localStorage first
- Falls back to navigator.language: 'en' if starts with 'en', else 'fr'
- localStorage preference always wins over browser language setting
2026-04-15 15:43:15 +02:00
kawa
86637f838e
test(12-01): add failing tests for navigator.language auto-detection
...
- test_navigator_language_en_sets_lang_en: expects lang='en' when locale=en-US and localStorage empty
- test_navigator_language_fr_sets_lang_fr: expects lang='fr' when locale=fr-FR and localStorage empty
- test_localstorage_wins_over_navigator_language: expects localStorage to override navigator.language
2026-04-15 15:42:53 +02:00
kawa and Claude Sonnet 4.6
ef8fbc9692
docs(12-i18n-bugfixes): create phase plan
...
2 plans: browser lang auto-detection + fix test_port_autofill (wave 1),
full template i18n coverage across 13 templates (wave 2).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 15:18:53 +02:00
kawa and Claude Sonnet 4.6
b0078a4fb2
docs(phase-11): complete phase execution
...
All 4 plans complete. UIE-01..05 verified (15/15 must-haves). Human-approved.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 15:08:53 +02:00
kawa
1bec899f87
docs(11-04): complete client name navigation plan
...
- Add 11-04-SUMMARY.md with task results, decision log, self-check passed
- Add deferred-items.md logging pre-existing port_autofill E2E failure
- STATE.md: advance plan, record decisions, update session
- ROADMAP.md: Phase 11 marked 4/4 Complete
2026-04-15 14:54:16 +02:00
kawa
5bf152bcce
feat(11-04): add client name links in printer_list.html and client_list.html
...
- printer_list.html: extract group_client_id from first printer in group;
wrap client name in <a href="/clients/{id}"> when id present; Unassigned
group renders as plain text (no dead link)
- client_list.html: wrap client name cell in <a href="/clients/{{ c.id }}">
2026-04-15 14:49:52 +02:00
kawa
f3644790be
feat(11-04): add GET /clients/{id} route and client_detail.html template
...
- Add client_detail route in pages.py with 404 on unknown client_id
- Build grouped dict {client.name: [printers]} for printer_list partial reuse
- Pass clients + driver_data for edit modal compatibility
- Create client_detail.html extending base.html, includes printer_list partial
2026-04-15 14:49:12 +02:00
kawa
7b948b68c3
feat(11-02): UIE-01 edit modal — Edit button per row, Pico dialog, E2E tests
...
- Create printer_edit_modal.html: native dialog with HTMX PATCH form, Alpine.js portEdited=true
- Update printer_list.html Actions td: include edit modal partial before Delete button
- Create tests/e2e/test_printer_edit.py: modal open/pre-fill and submit/list-update E2E tests
- Fix E2E row targeting to use locator(tr, has=a:has-text) for session-scoped server safety
2026-04-15 11:10:44 +02:00
kawa
4db15d6986
test(11-03): E2E tests for theme and language toggle (UIE-04, UIE-05)
...
- test_theme_cycles_on_click: verifies auto->light->dark cycling via aria-label selector
- test_theme_persists_across_reload: verifies localStorage persistence of chosen theme
- test_language_toggle_switches_nav_label: verifies FR->EN nav label switch (Imprimantes->Printers)
- test_language_persists_across_reload: verifies localStorage persistence of chosen language
2026-04-15 11:09:38 +02:00
kawa
3353f4546c
feat(11-03): Alpine.js theme + i18n stores in base.html with top-right controls
...
- Add Alpine.store('theme') for Light/Dark/System cycling with localStorage persistence
- Add Alpine.store('i18n') with FR/EN translations for all static UI strings
- Add topbar with theme toggle button (:aria-label, @click cycle) and lang button
- Wrap main content in .main-wrapper + .topbar for layout structure
- Add .main-wrapper, .topbar, .topbar-controls styles to app.css
- Add test_theme_toggle_present integration test
- Fix test_dashboard_shows_recent_printers assertion (string now in i18n JS too)
2026-04-15 11:08:52 +02:00
kawa
4b212b6da9
feat(11-02): PATCH /printers/{id} route handler and updated _render_printer_list
...
- Add PATCH /{printer_id} route with validation and in-place update
- Optional ip_address/port_name fall back to existing values when not sent
- updated_at set explicitly on save (datetime.now(UTC))
- Update _render_printer_list to include clients and driver_data in context
- Import Driver at module level for use in both handler and helper
2026-04-15 11:08:02 +02:00
kawa
c00ac80e6c
docs(11-01): complete UIE-02 plan — Add Printer page separation
...
- Create 11-01-SUMMARY.md with full execution record
- Update STATE.md: advance plan to 3, add decisions, update session
- Update ROADMAP.md: phase 11 progress to 1/4 summaries (In Progress)
2026-04-15 11:05:23 +02:00
kawa
3d2cdc4e77
feat(11-01): UIE-02 — dedicated Add Printer page at GET /printers/new
...
- Create imptune/templates/printers_new.html: full page extending base.html
with plain <form action="/printers" method="post"> (no HTMX, browser follows 303)
and inline driver upload sub-form
- Update imptune/templates/printers.html: remove inline Add Printer form,
add <a href="/printers/new" role="button">Add Printer</a> link
- Add GET /printers/new route in imptune/api/pages.py (placed before /{printer_id})
- Change POST /printers to always return RedirectResponse(url='/printers', status_code=303)
- Update existing POST /printers tests to assert 303 + follow_redirects=False
- Update test_printer_form.py to check /printers/new instead of /printers (UIE-02 arch)
- UIE-02 tests GREEN; UIE-01/03 scaffolds remain RED (expected — not yet implemented)
2026-04-15 11:03:41 +02:00
kawa
a02df7d292
test(11-01): add Wave 0 RED scaffolds for UIE-01/02/03
...
- Add 8 new test functions: printers_new_returns_200, create_printer_redirects,
printers_library_no_form, patch_printer, patch_printer_not_found,
client_detail_returns_200, client_detail_not_found, client_links_in_printer_list
- Add FIXME comments on existing POST /printers tests noting upcoming 303 change
- All new tests FAIL against current code (proper RED TDD state)
- Existing 13 tests remain GREEN
2026-04-15 11:00:55 +02:00
kawa and Claude Sonnet 4.6
0badba20d1
docs(11): create phase plan
...
Plan 4 plans across 3 waves covering UIE-01..05: form separation
(Plan 01), printer edit modal (Plan 02), theme+i18n toggles (Plan 03),
and client detail page (Plan 04). Wave 0 test scaffolds included in Plan 01.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 10:47:19 +02:00
kawa and Claude Sonnet 4.6
5a2dd0c13c
docs(phase-11): add validation strategy and research
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 10:40:41 +02:00
kawa and Claude Sonnet 4.6
df01919220
docs(11): research UI enhancements phase domain
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 10:39:48 +02:00
kawa
e726cab548
docs(state): record phase 11 context session
2026-04-15 10:33:10 +02:00
kawa
b0df0619b1
docs(11): capture phase context
2026-04-15 10:33:04 +02:00
kawa and Claude Sonnet 4.6
036b048705
docs(phase-09): complete phase execution and human sign-off
...
All 3 UX defects fixed, 11/11 must-haves verified, human-approved.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 09:52:43 +02:00
kawa and Claude Sonnet 4.6
70454c8e14
docs(09-02): complete playwright-port-autofill plan
...
- STATE.md: advance to plan 2, record UX-02 closure decisions
- ROADMAP.md: Phase 9 now 3/3 summaries (Complete)
- Task commits already in history: 4e9bd9b (scaffolding) + 322fc20 (test)
- 1 Playwright test green: test_port_autofill[chromium] PASSED in 5.49s
- 113 unit tests unaffected
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 17:46:38 +02:00
kawa and Claude Sonnet 4.6
fb7555e6b5
docs(09-01): complete driver-upload-fix-and-inline-oob plan
...
- STATE.md: advance to Phase 09-01 active, completed_plans=15
- ROADMAP.md: Phase 8 marked Complete 8/8, Phase 9 progress row fixed
- All 3 tasks complete: 500 regression fixed, OOB template created, printer form wired
- 113 tests passing (pytest tests/ -x -q --ignore=tests/e2e)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 17:42:47 +02:00
kawa
f32c99dfbf
docs(phase-08): complete Nyquist validation track (45/45 pass, human sign-off)
2026-04-13 16:39:27 +02:00
kawa
ffcc3be3aa
docs(08-08): complete v1.0 validation index rollup plan
...
- Create 08-08-SUMMARY.md (Phase 8 closure, NYQ track complete)
- Advance STATE.md (Phase 8 ready_for_verification, 27/30 plans complete)
- Update ROADMAP.md Phase 8 progress to 8/8 Complete
2026-04-13 16:36:14 +02:00
kawa
732582021a
docs(08-08): human sign-off on v1.0-VALIDATION-INDEX.md (NYQ-02/03 complete)
...
- Flip v1.0-VALIDATION-INDEX.md frontmatter draft -> signed-off (Sébastien QUEROL, 2026-04-13)
- Tick index sign-off line (45/45 pass, 0 fail-fix-v1.1)
- Replicate dated sign-off line into all 7 per-phase VALIDATION.md Validation Sign-Off blocks
- Tick nyquist_compliant checkbox in phases 01/02/03/04/05/07 (06 already ticked)
- Upgrade Approval lines phases 01-05 from 'pending' to signed-off with index back-link
- Tick REQUIREMENTS.md NYQ-02/NYQ-03 and flip Traceability Pending -> Complete
- Phase 4 attestation-only runtime gap recorded in index Residual Risk block (not reopened per plan 10-03 sign-off)
2026-04-13 16:36:08 +02:00
kawa
192a64d574
docs(08-08): compile v1.0-VALIDATION-INDEX rollup (45/45 pass, draft)
...
- Flat table with one row per v1.0 success criterion across Phases 1-7
- Tally: 45/45 pass, 0 fail-fix, 0 deferred, 0 wont-do
- Gap validation block cross-checks all 5 historical-gap closures against REQUIREMENTS.md + fixing SUMMARY.md
- Attestation-gap residual risk (SCRPT-01..05 / RTVAL-02/03/04) documented explicitly for Phase 11 rollout
- Sign-off line unchecked (draft), frontmatter status=draft pending Task 2 human verification
2026-04-13 16:24:39 +02:00
kawa
dc70acf5f2
docs(08-07): complete Phase 7 Nyquist audit plan
...
- 4/4 pass (3 in-scope + 1 UX-03 carry-over to Phase 9)
- per-phase NYQ-01 coverage complete (7/7 v1.0 phases, 45 rows, 0 roll-forward)
- STATE advanced to plan 8 (final 08-08 rollup remaining)
2026-04-13 16:20:34 +02:00
kawa
7e78b1714e
docs(08-07): add Phase 7 Nyquist Record (4/4 pass)
...
- 3 in-scope rows for /packages 200, dashboard recent printers, dashboard recent packages
- 1 carry-over row for UX-03 (Phase 5 origin, closed in Phase 9 / 09-03)
- cites TDD commits 8cf47f5 + 91910ad (Phase 7) and d359001 + 68a2935 (Phase 9 UX-03)
- completes per-phase NYQ-01 coverage across all 7 v1.0 phases (45 total audit rows)
2026-04-13 16:18:15 +02:00
kawa
9c52cb45c2
docs(08-06): complete Phase 6 Nyquist audit plan
...
- SUMMARY.md documents 1-row Nyquist Record (PKG-04 icon embedding)
- Bidirectional gap-closure citation loop with 05-VALIDATION row 4
- RTVAL-01 cited as supporting transitive runtime evidence
- STATE advanced to plan 7, ROADMAP Phase 08 progress 6/8
2026-04-13 16:15:42 +02:00
kawa
bb62174917
docs(08-06): Phase 6 Nyquist audit - PKG-04 icon embedding 1/1 pass
...
- Add ## Nyquist Record (1 row) to 06-VALIDATION.md
- PKG-04 row cites TestIntunewinIconInclusion (2 tests) + commits 2723cc8/6310be5
- Supporting transitive evidence: Phase 10 RTVAL-01 artifact-backed PASS (same build_intunewin path)
- Manual-Only residue: icon-tile visual check deferred to Phase 11 rollout polish
- Frontmatter nyquist_compliant true, nyquist_audited 2026-04-13, nyquist_auditor set
- Sign-Off checkboxes ticked
2026-04-13 16:14:09 +02:00
kawa
885b0ea8a3
docs(08-05): complete Phase 5 Nyquist audit plan
...
- SUMMARY.md: PKG-02 is only artifact-backed runtime row (RTVAL-01)
- PKG-04 icon-embedding historical gap closed via Phase 6 citation
- Fix commits 74535ea + 7716246 surfaced as audit-trail highlight
- STATE.md + ROADMAP.md advanced to plan 06 (5/8 complete)
2026-04-13 16:12:13 +02:00
kawa
cecf9171b0
docs(08-05): add Phase 5 Nyquist Record to 05-VALIDATION.md
...
- 5 rows (PKG-01..05), all pass
- PKG-02 row cites RTVAL-01 artifact-backed tenant PASS on rubis.fr
(commits 74535ea + 7716246 flipped initial FAIL to PASS)
- PKG-04 row records Phase 6 icon-embedding gap closure in place
- Frontmatter: nyquist_compliant true, nyquist_audited 2026-04-13
2026-04-13 16:10:08 +02:00
kawa
800fa76a6d
docs(08-04): complete Phase 4 Nyquist audit plan
...
- Add 08-04-SUMMARY.md with 5/5 pass outcome
- Faithfully records Phase 10 RTVAL-02/03/04 attestation-only gap in Notes
- Update STATE.md (advance plan, add decision, record session)
- Update ROADMAP.md Phase 08 progress (4/8 summaries)
2026-04-13 16:07:15 +02:00
kawa
60654afc8e
docs(08-04): add Phase 4 Nyquist Record to 04-VALIDATION.md
...
- 5 rows: one per SCRPT-01..05 success criterion
- All rows pass at template level (pytest-backed)
- SYSTEM-context rows (SCRPT-01/02/03/04/05) cite Phase 10 RTVAL-02/03/04
with explicit attestation-only caveat per STATE.md 2026-04-13
- Frontmatter: nyquist_compliant true, nyquist_audited 2026-04-13
2026-04-13 16:05:40 +02:00
kawa
e9e95e74c5
docs(08-03): complete Phase 3 Nyquist audit plan
2026-04-13 16:03:32 +02:00
kawa
3f03b35bf2
docs(08-03): add Phase 3 Nyquist Record to 03-VALIDATION.md
...
- 10 rows (one per PRNT-01..10 success criterion), all pass
- Row 3 (PRNT-03 Alpine.js IP->port) closed as pass citing Phase 9 UX-02
Playwright fixing commits 322fc20 (test) + 37a06da (docs)
- Frontmatter: nyquist_compliant true, nyquist_audited 2026-04-13,
nyquist_auditor Claude (gsd-executor, plan 08-03)
- Preserves Test Infrastructure, Sampling Rate, Per-Task Verification Map,
Wave 0, Manual-Only Verifications, Validation Sign-Off verbatim
2026-04-13 16:02:13 +02:00
kawa
0cbc757874
docs(08-02): complete Phase 2 Nyquist audit plan
...
- 08-02-SUMMARY.md (6/6 pass rows, historical-gap closure pattern)
- STATE.md advanced to plan 3/8; decision logged
- ROADMAP.md Phase 8 progress 2/8 summaries
2026-04-13 16:00:08 +02:00
kawa
dff5a9c4a5
docs(08-02): add Phase 2 Nyquist Record (6 rows, all pass)
...
- Append Nyquist Record table to 02-VALIDATION.md (DRV-01..05 + upload-500 historical gap)
- Flip frontmatter nyquist_compliant=true; add nyquist_audited + nyquist_auditor
- Row 6 records the Phase 8 kickoff POST /drivers/upload 500 as pass via Phase 9 / UX-01 fixing commits (d1de839 , 10ee09a , 72c6a98 )
- Follows the 08-01 precedent (Phase 1 row 14 closed via Phase 10 RTVAL-01)
2026-04-13 15:58:52 +02:00
kawa
42ec015a16
docs(08-01): complete Phase 1 Nyquist audit plan
...
- Add 08-01-SUMMARY.md (14/14 pass, NYQ-01 ticked)
- STATE.md advanced to Phase 08 plan 02/8
- ROADMAP.md phase 08 progress updated via gsd-tools
- REQUIREMENTS.md NYQ-01 marked complete
2026-04-13 15:56:42 +02:00
kawa
d37a196ee7
docs(08-01): add Phase 1 Nyquist Record to 01-VALIDATION.md
...
- Append ## Nyquist Record table above Validation Sign-Off
- 14 rows: one observable check per Phase 1 success criterion (derived from v1.0-ROADMAP.md goal + plan outcomes)
- Evidence cites committed tests (test_health, test_static, test_db, test_intunewin), source file:lines, commit SHAs, or 01-VERIFICATION.md rows
- Row 14 closes former 'Upload to real Intune tenant' spike: fail-fix-v1.1 -> resolved PASS citing Phase 10 RTVAL-01 sign-off (2026-04-13)
- Frontmatter: nyquist_compliant true, nyquist_audited 2026-04-13, nyquist_auditor set
- All historical sections preserved verbatim
2026-04-13 15:55:13 +02:00
kawa
7b37bdbb4a
docs(phase-08): create Nyquist validation track phase plan (8 plans, sequential)
2026-04-13 15:45:52 +02:00
kawa and Claude Opus 4.6
442b7d680a
docs(phase-11): close rollout phase on operator attestation
...
Technician confirmed real-world rollout: ImpTune ran in its local Docker
container, generated printer packages were delivered end-to-end via BOTH
Intune and NinjaRMM to real endpoints, and all tested installs succeeded
with no blocking items to triage.
Closes RWR-01..04. Attestation-only (mirrors Phase 10 accepted gap) -
no artifact evidence captured.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 14:50:05 +02:00
kawa
43081c6828
docs(phase-11): create rollout phase plan (deploy, push, feedback triage)
2026-04-13 14:42:20 +02:00
kawa
cd2df1e163
docs(10-03): complete report-signoff plan and close Phase 10
...
- Mark Phase 10 complete in ROADMAP.md (3/3 plans, 2026-04-13)
- Create 10-03-report-signoff-SUMMARY.md with attestation-gap closure note
- Update STATE.md: plan 10-03 complete, Phase 10 closed, next is phase 8 or 11
- REQUIREMENTS.md RTVAL-01..05 ticks already landed in 10-02 completion commit (idempotent)
2026-04-13 14:32:24 +02:00
kawa
5685fd97dc
docs(phase-10): human sign-off on RUNTIME-VALIDATION.md (attestation gap acknowledged)
...
- Status flipped from READY FOR SIGN-OFF to SIGNED OFF
- Signed off by Sébastien QUEROL on 2026-04-13
- All three sign-off checkboxes ticked
- Reviewer explicitly acknowledged attestation-only audit-trail gap for RTVAL-02/03/04
- Only RTVAL-01 is artifact-backed; RTVAL-02/03/04 accepted on technician attestation
2026-04-13 14:30:45 +02:00