phase: 87_big_read_progress
All criteria verified — no defects found, nothing to fix. Final report: **Phase 87 — big read progress: final verification pass (all tasks already complete in `complete/`)** - Verified implementation vs. overview: `TOOL_LINE_ELAPSED_AFTER_MS = 5_000`, single live `armToolLineClock` site, settle on thinking/retry/delta, `stopToolLineClock` in `setUiState`, visible `.typing-elapsed` (aria kept byte-identical), CSS AA pairing — all match design; `app/` byte-identical (0 changes) - **Tests/lint (exact outcomes):** - `uv run pytest --cov=app --cov-report=term` → 1732 passed, coverage **99%** (>90% ✓) - `uv run pytest tests/e2e/test_big_read_progress.py -v --no-cov` → **4 passed** (ticking suffix, visible hint, settle, no-timer restore) - `test_thinking_display.py` → 5 passed · `test_agent_document_tools.py` → 4 passed · `test_smoke.py` → 3 passed (all isolated) - 3 pinned frontend suites + new unit pins → 62 passed · `uv run ruff check . && uv run pyright` → clean, 0 errors - **Completion criteria:** E2E pins 1–4 ✓ · guard/state-machine byte-identical ✓ (diff is additive only) · diff scope limited to `app.js`, `styles.css`, 2 new test files, phase files; nothing in `app/` ✓ - **Notable:** no deviations; commit + `00_phase.md` move left to the harness per executor rules (task files already in `complete/`) - **Next pending phase:** none — `todo/` contains only this phase (87 is the last)
This commit is contained in:
@@ -606,6 +606,17 @@ details.thinking .thinking-text ul { margin: 0 0 0.5rem; }
|
||||
border-radius: 5px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
/* Phase 87 (TODO.md L5): the latest tool line's visible "processing"
|
||||
suffix — ticking "(Ns)" while ≥5s of the turn's stream stay silent
|
||||
after the call; removed on the next frame (settle). ink-soft on the
|
||||
bubble surface (the AA pairing), small mono like every status line. */
|
||||
.tool-elapsed {
|
||||
font-family: var(--mono);
|
||||
font-size: 0.75rem;
|
||||
color: var(--ink-soft);
|
||||
margin-left: 0.5rem;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.msg-meta {
|
||||
font-size: 0.75rem;
|
||||
@@ -1113,8 +1124,29 @@ details.thinking .thinking-text ul { margin: 0 0 0.5rem; }
|
||||
0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
|
||||
30% { transform: translateY(-5px); opacity: 1; }
|
||||
}
|
||||
/* Phase 87 (TODO.md L5): the visible pre-token elapsed hint — the
|
||||
10s thinking clock promoted from aria-only to sighted users.
|
||||
ink-soft on the bubble surface (the AA pairing), small mono like
|
||||
every status line. Plain text: no animation, no motion opt-out.
|
||||
The span is a sibling of the dots inside the same .typing bubble, so
|
||||
it resets the dot geometry (.typing span) it would otherwise inherit. */
|
||||
.typing-elapsed {
|
||||
width: auto;
|
||||
height: auto;
|
||||
border-radius: 0;
|
||||
background: none;
|
||||
opacity: 1;
|
||||
animation: none;
|
||||
font-family: var(--mono);
|
||||
font-size: 0.75rem;
|
||||
color: var(--ink-soft);
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.typing span { animation: none; opacity: 0.7; }
|
||||
/* Phase 87 (TODO.md L5): the elapsed hint is plain text, not motion —
|
||||
it keeps full opacity (the AA pairing) under reduced motion. */
|
||||
.typing span.typing-elapsed { opacity: 1; }
|
||||
/* Phase 17 thinking block: the chevron stills (no rotation motion). */
|
||||
details.thinking summary::before { transition: none; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user