phase: 149_sync_progress_box
All verification complete. The `ink-soft`/`--surface` pair the box uses is already pinned AA by the existing theme E2E suites (8.2:1 dark, ~6.9:1 light). Everything is green — no fixes were needed.
**Phase 149 final verification report**
- Verified (no re-work needed): `#sync-progress` box wiring (single `setSyncLabel` writer with `running` flag; `is-running` class travels with the spin; aria-label owned by the writer), the panel/icon-only-button CSS, and the 5-test dedicated E2E; all 6 pre-existing sync E2Es' running pins migrated to the box, settled pins untouched.
- Dedicated E2E: `uv run pytest tests/e2e/test_sync_progress_box.py -v --no-cov` → **5 passed in 198.6 s** (isolation, slow-proxy mock; under the 600 s budget).
- Full suite: `uv run pytest --cov=app --cov-report=term-missing` → **3463 passed, app/ coverage 99%** (>90% gate).
- Migrated sync E2Es, each in isolation: `test_sync_button` 3 passed, `test_sync_cancel` 3, `test_sync_chunk_progress` 2, `test_sync_label_mobile` 4, `test_sync_summary_visibility` 3, `test_sync_upload_progress` 4 — all green.
- Lint/types: `uv run ruff check .` → All checks passed; `uv run pyright` → 0 errors.
- Criteria: in-flight spinner-only button + full untruncated wrapped box (desktop & mobile 390×844, `scrollWidth ≤ clientWidth`) ✓; settle byte-identical ("Synced HH:MM" + `3 added`, box hidden, aria restored) ✓; `#sync-result` sole live region (box `aria-hidden`), mid-run reload re-attaches ✓; WCAG (AA contrast both themes via the pinned ink-soft/surface pair, focus-visible, reduced-motion kill intact at styles.css L2201) ✓; cancel/409/error/upload/status API unchanged (green suites above) ✓.
- Documentation: README.md reviewed in full (sync-states paragraph now matches the shipped UI; env-var table matches `app/config.py` and covers all `.env.example` vars; pages/commands verified) and AGENTS.md reviewed in full — **verified consistent, no changes needed**.
- Notable: no defects found in this or prior work; no live infrastructure touched.
- Next pending phase: none — `todo/` will be empty once the harness moves 149 (only 149 was pending).
This commit is contained in:
@@ -326,14 +326,21 @@ whole git-source refresh in one click:
|
||||
rows, not the whole table); an unchanged re-sync instead gap-fills
|
||||
any missing rows (`only_missing`).
|
||||
|
||||
- States: the button shows **Syncing…** with a spinner while polling
|
||||
`GET /api/sync/status` every 2 s. During the import phase the label
|
||||
carries the live file, its `(n/m)` file position, and — while a file's
|
||||
embed batch is in flight — the pinned `· chunk n/m` embed position
|
||||
(batch granularity: the first chunk of the in-flight batch over the
|
||||
file's total content chunks); the full untruncated label also rides
|
||||
the button title and the aria-live result line. No client-side
|
||||
timeout — a clone + embed can legitimately take minutes.
|
||||
- States: while polling `GET /api/sync/status` every 2 s, the button
|
||||
becomes the spinner (icon only — its label parts are hidden while a
|
||||
run is in flight, and its accessible name is the full live label),
|
||||
and the full live detail — "Syncing… <file> (n/m)" during the import
|
||||
phase (the live file, its `(n/m)` file position, and — while a file's
|
||||
embed batch is in flight — the pinned `· chunk n/m` embed position,
|
||||
batch granularity: the first chunk of the in-flight batch over the
|
||||
file's total content chunks) — shows in a text box under the button
|
||||
row, wrapping (never clipped); the same untruncated label rides the
|
||||
button title and the aria-live result line (the sole live region —
|
||||
the box is presentational, `aria-hidden`). On settle the box hides
|
||||
and the button leaves the running state — the "Synced HH:MM" pill
|
||||
after a success (the counts line lands on the result line), the
|
||||
retry-ready "Sync sources" pill after a failure or cancel. No
|
||||
client-side timeout — a clone + embed can legitimately take minutes.
|
||||
- One sync at a time: a second trigger while a run is in flight gets a
|
||||
`409`.
|
||||
- **Cancel**: while a run is in flight, a **Cancel** button appears
|
||||
|
||||
Reference in New Issue
Block a user