Skip to content

Reduce web startup payload and fix accessibility defects - #74

Merged
Mirksen merged 6 commits into
masterfrom
Mirksen/harden-web-quality
Nov 7, 2026
Merged

Mirksen merged 6 commits into
masterfrom
Mirksen/harden-web-quality

Conversation

@Mirksen

@Mirksen Mirksen commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Warum

The workbench eagerly loaded every experiment (827,696 bytes JavaScript / 265,995 gzip at e009022). Browser audits found low-contrast text and incorrectly named chain links; keyboard users could lose their place when inline forms closed or explanations covered content.

Was

Load Hash lab, Chain lab and Leaderboard on demand; prepare only the visible Activity tail and retain it during mining progress. Fix contrast in both themes, inline focus return, hoverable/dismissible explanations, skip navigation, mixed pointer/focus holds and reduced-motion scrolling. Settings can disable the existing M shortcut for assistive input.

Add initial-transfer budgets (255 KiB JS / 25 KiB CSS gzip) and an axe/keyboard browser check in PR CI and after automatic publication. No server or proof-rule changes.

Verify

Baseline and after measurements use the same M5 Chrome/WebKit method, with Chrome CPU slowed 4x. On the unchanged baseline, new regression checks reproduce the focus/hint/hold defects and all-40-versus-visible-12 Activity work. The corrected checks pass. The 24-view browser matrix has zero axe violations after the fixes; 90-second 360px Auto-mine checks report no browser errors or active workers after Pause. Bundle and axe guards reject deliberately broken disposable fixtures. Exact-head CI passed at 692c92534b9a4330ceddb94d64d0752b7f607d13: Web checks and Server checks. Integrated peer-owned PR75 cancellation check without relaxing its zero-attempt/hash assertions. Final integrated initial gzip: 253,956 bytes JS and 22,757 bytes CSS. Automatic publication and read-only domain acceptance follow the bound merge.

Released and accepted

Final release a3fe5b5ab649b3f57b20d89ac82dee191fd23f86 passed automatic publication, exact index comparison and live browser/quality acceptance. Follow-up PR76 fixes the production CSP instrumentation and first-visit focus occlusion discovered during release acceptance. Independent read-only live matrix: 24 Chrome/WebKit cases, zero axe violations and no horizontal overflow; initial labs deferred. Focus checks also pass on short viewports. Live initial gzip: 254,339 bytes JS and 22,830 bytes CSS. No live blocks submitted.

Load experiments on demand, bound Activity work to its visible tail, and fix measured contrast, keyboard focus, hint dismissal, reduced motion and shortcut control findings. Add manifest transfer budgets and an axe/browser guard with mutation evidence.
@Mirksen
Mirksen merged commit 983c4e0 into master Nov 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant