Standardize on the .agents/ directory (shared with project skills): phases/, user_stories/, reports/, screenshots/, validate.sh, and phase-sessions/ + pipeline.log all move to .agents/ (git mv preserves history; runtime artifacts move alongside). Updates every reference in AGENTS.md, README.md, .gitignore, app docstrings, and test story headers. Historical KB content in data/ and the runtime pipeline.log transcript are left untouched.
3.8 KiB
Phase 58 — 2× Reading Column on Wide Desktops
Source: TODO.md L5 — "The chat response needs to be 2x wider on wide desktops. there's a lot of unused space."
Story: n/a (TODO-derived — owner roadmap confirmation 2026-08-31, D2 + owner expansion: the document view widens too)
Context: The 46rem reading column is hard-coded in four places in frontend/assets/styles.css: .chat-shell (~L399), .shared-shell (~L2153), .doc-md (~L2319) and .doc-summary:has(+ .doc-md) (~L2369). A fifth 46rem column, .tuning-shell (~L903), is out of scope (it is a form, not a reading surface). Surrounding block comments reference the PLAN §7 "46rem column" contract — comments get updated to note the wide override; .agents/PLAN.md does not exist in this repo (removed by owner, commit 281f355) and AGENTS.md is not touched per protocol — the owner's new instruction supersedes the old "46rem" wording.
Objective
On wide desktops the chat reading column (incl. the shared chat view) and the document reading column are 2× — 92rem — while everything below the wide breakpoint renders exactly as today.
Dependencies
57_edit_document_summaries(todo, preceding)
Tasks
01_wide_column_css.md—--chat-columncustom property (46rem base) +@media (min-width: 1500px)override to 92rem; the four selectors switch to the property; comments updated; unit CSS pins.02_e2e_wide_column.md— measured-width Playwright proof at 1920px vs 1280px (chat, document, shared) + regressions + the atomic commit.
Testing & Quality
- Unit CSS pins (house style,
tests/unit/test_save_chat_ui.pypattern):--chat-column: 46remin:root; amin-width: 1500pxmedia block setting it to92rem; the four selectors usevar(--chat-column);.tuning-shellstill hard-coded46rem(negative pin). - E2E (mandatory, A16):
tests/e2e/test_wide_desktop_column.py, run in isolation (bounding-box width assertions). - Coverage: >90% on
app/(validate.sh gate — pure-CSS phase, gate still runs).
Completion Criteria
- At 1920×1080:
.chat-shell(chat page),.shared-shell(/shared/<token>), and.doc-md(document viewer) are ~1472px (92rem ±4); the.doc-summarypanel matches the column when present. - At 1280×800: all of the above are ~736px (46rem ±4) — and at 360px/900px the existing mobile/tablet rules are byte-for-byte untouched (no horizontal overflow at 360px).
.tuning-shellstays 46rem at every width.uv run pytestgreen; coverage TOTAL >90%.uv run pytest tests/e2e/test_wide_desktop_column.py -v --no-covgreen in isolation (DB up).- Regression E2E suites green in isolation:
test_responsive_polish.py,test_smoke.py,test_document_viewer.py,test_markdown_tables.py,test_shared_header.py. uv run ruff check . && uv run pyrightclean.- One
--no-gpg-signcommit; phase dir moved to.agents/phases/complete/(.agents/stays untracked — owner instruction, commit281f355).
Locked decisions
- Owner-locked (2026-08-31, roadmap confirmation, D2 + expansion):
- Wide desktop = viewport
min-width: 1500px; the reading column becomes 92rem (2× 46rem). - Scope:
.chat-shell,.shared-shell,.doc-md,.doc-summary:has(+ .doc-md)— the owner explicitly extended the TODO's "chat response" to the document view as well. .tuning-shell(and every other 46rem surface) is unchanged; mobile/tablet breakpoints are untouched.
- Wide desktop = viewport
- Block comments in
styles.cssthat cite the "46rem contract" are updated to name the base value + the wide override (owner instruction 2026-08-31, TODO L5) — no other file outsidefrontend/+tests/changes.
Commit
git add frontend/ tests/ && git commit --no-gpg-sign -m "feat(web): 2x reading column on wide desktops — 92rem at >=1500px (chat, shared, document view)"