Skip to content

Improve reading UI and fix workspace reliability - #39

Draft
aaron-seq wants to merge 16 commits into
mainfrom
codex/issue-36-reading-interface
Draft

aaron-seq wants to merge 16 commits into
mainfrom
codex/issue-36-reading-interface

Conversation

@aaron-seq

@aaron-seq aaron-seq commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Description

The reading UI crowded source context, controls and results. This keeps the source beside the tools, adds restrained light/dark themes and local SVG icons, and restores keyboard access to tabs and summary-length controls.

The seven reliability fixes preserve overlapping settings edits, isolate document/chat responses, stop queued summary work after failure, preserve cleanup alarms, bound response-body reads, and extract visible text with paragraph boundaries. Review caught and corrected stale popup language payloads, independent summary restoration and collapsed disclosures.

Community PR #53 addresses the same #49 failure. Its commit 4d31f67 is incorporated with contributor history; equivalent tests are consolidated into the retained deferred mapper/worker regressions.

Closes #36. Closes #46. Closes #47. Closes #48. Closes #49. Closes #50. Closes #51. Closes #52.

Validation

Head: eb721b8; base bd0e0f7 includes merged #42–#44. Primary-session local checks used source 9c3db4b; later documentation/consolidation commits leave runtime, tests and configuration unchanged.

  • npm run verify: lint/typecheck and 361 tests pass.
  • npm run test:coverage: 95.01% statements / 85.16% branches / 95.60% functions / 97.02% lines; floors retained.
  • npm run test:e2e: 33 unpacked-Chromium tests pass, with intercepted providers, native two-context storage and delayed-response races.
  • Native Node fetch/incomplete-loopback-body diagnostic: 200/503/401 each time out near the 150ms deadline, one request.
  • Audit gate exits 0: five moderate / zero high or critical, tracked in Update ESLint tooling for the minimatch advisory #54.
  • npm dry-run: 25 files, 26 runtime references resolve. The downloaded prior CI ZIP has 24 files (npm adds package metadata), all matching the final packaged inputs byte-for-byte.
  • Generated compact light, desktop dark and populated-chat views inspected.

Current-head CI covers Node 20/22/24, Chromium, ancestry and packaging; prior same-source CI passed. Final artifact status/inspection is linked from the bug board. Optional Codecov authentication still fails (log, #45); coverage gates pass.

Requirements, regressions and validation limits.

Risks and rollback

No runtime dependency, permission, schema, provider/model default or deployed service changes. Already-started sibling requests may finish after a section failure. Alarm timing is simulated. No live-provider, native toolbar/OS, screen-reader, minimum-browser or real-book performance claim. PDF/OCR and semantic retrieval remain roadmap work.

This remains a draft for review. Revert and reload to roll back; no data migration.

Screenshots

Reading summary · Dark Chat · Previous interface

Aaron Sequeira added 5 commits November 2, 2026 11:13
Ignore obsolete extraction and analysis responses after accepting a new document. Keep pending history snapshots from restoring chat after a successful clear or a new exchange; preserve restoration when clearing fails.

Fixes #47

Fixes #48
Keep the request deadline active through success and error body reads.
Preserve timeout classification without retrying, and leave parsing failures
outside the transient network retry policy.

Fixes #51
Stop scheduling summary chunks after a fatal section error while
already-started siblings settle. Preserve the original rejection and
cover deferred sibling completion through the mapper and worker.

Fixes #49
Check for an existing cleanup alarm before creating one so ordinary
worker wakes do not restart its daily delay. Keep listener registration
synchronous and contain alarm read/create failures for a later retry.

Cover restart timing, absent alarms, blocked reads, rejection recovery,
and scheduling despite unavailable settings.

Fixes #50
Read the original DOM with cached computed styles and exclude hidden or
unwanted content without changing the source page. Keep block boundaries
and inline words intact.

Add unit and real Chromium regressions for hidden text, adjacent blocks,
inline content, and an unchanged source DOM.

Fixes #52
Aaron Sequeira added 5 commits November 2, 2026 11:16
Restore saved summaries independently of obsolete chat snapshots without replacing a fresh result. Ignore delayed source-link successes and errors after importing another document.

Refs #47, #48
Route options updates and confirmed resets through the worker so every
UI shares one preferences writer. Queue initialization, updates, and
replacement writes without allowing a failure to block later edits.

Cover overlapping top-level and nested edits, initialization/reset
ordering, read/write recovery, and real two-context browser persistence.
Inject failed save reads in the worker while preserving page-load errors.

Fixes #46
Keep a stale popup from replacing the sibling language saved in Settings. Preserve the intentional two-field swap, with unit payload and native storage browser regressions.

Refs #46
Read only the first direct summary of collapsed details and reject selected
article containers hidden by a collapsed ancestor. Keep content inside a
visible first summary readable without changing the source DOM.

Preserve blank lines around rendered paragraphs so summary chunking keeps
whole paragraphs. Add red-first unit and Chromium details regressions and
an actual extraction-to-chunkContent browser check.

Refs #52
Keep the product checkpoint concise and link the requirement-to-regression evidence, validation limits, milestone, and tooling follow-up. Document worker-owned settings writes and the explicit reset message.
@aaron-seq aaron-seq changed the title Redesign the reading workspace and keyboard controls Improve reading UI and fix workspace reliability Nov 2, 2026
Preserve the contributor commit for #49 and its scheduling documentation. Resolve the equivalent stop-flag implementation using the tested version, and consolidate duplicate regressions into the existing deferred mapper and worker cases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment