Skip to content

fix(accessibility): preserve forced-colors state cues - #151

Draft
seonghobae wants to merge 39 commits into
test/cjk-input-assurance-376from
fix/forced-colors-accessibility
Draft

fix(accessibility): preserve forced-colors state cues#151
seonghobae wants to merge 39 commits into
test/cjk-input-assurance-376from
fix/forced-colors-accessibility

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Latest integration evidence — 2026-09-06

Current-head local Office verification on Python 3.14.6 also passed all
173 tests in 2.37 seconds; configured 598 statements/244 branches and public
docstrings 100%. This does not establish the hosted supported-version matrix.

Current candidate 59d32209159f74ce17fb71eb4595a3ccba92bf8d normally merges
parent #380 6a7121e04652348e6dbc7b58bbad843ef07f6f86. It inherits the shared
expected-archive evidence guard, with no new product delta. The shared helper
and regression exactly match the parent. Nineteen focused tests and TypeScript
pass. The full new-head configured coverage run passed 1,033 tests across
177 files in 65.85 seconds, all configured source coverage 100%.
New-head build, complete independent package consumer chain and fresh pack pass.
Archive SHA-256: dce31fd1cf0e270633034c21950cf40a2e01b1ba0e5eaa125c579953564a14da.
Full canonical packed browser run failed: 152 passed, one Firefox native-form
case timed out in its afterEach network-idle wait, and consensus did not run;
85.718207 seconds, no flaky tests or global errors. This is not full acceptance.
Nine screenshots were directly inspected: each engine's 320px normal focus,
forced selected/hover states, and structural/cursor fixture. Controls remained
unclipped, focus and selected states visible, with document/cursor boundaries
preserved. Emulated palettes differ by engine; this does not certify physical
high-contrast hardware or WCAG. Failed receipts and screenshots are retained in
/private/tmp/inkspan-pr151-current-package.31kvNI; archive digest rechecked
unchanged afterward. All older passes below remain predecessor evidence.
This PR remains Draft and does not imply protected integration or release.

Subsequent full canonical --trace on acquisition also failed: 130 passed,
four Firefox failures, 20 not run in 255.529388 seconds. Korean input failed
at click before committed text; clipboard, native-form and touch cases hit
deadlines including teardown. Failed traces show page creation 7.25–9.15 s
and navigation 6.38–10.60 s in input cases. An in-run host snapshot recorded
load 32.24 on 10 CPUs, which supports a contention hypothesis, not a proven
cause. Directly inspected Korean failure frame shows the empty placeholder,
not text corruption. All failures and receipts are retained at
/private/tmp/inkspan-pr151-full-trace.ir4ndN. A one-worker full-denominator
diagnostic is pending; no canonical setting or deadline was weakened.

That one-worker full diagnostic completed: 154 passed in 170.231333 seconds,
zero skipped, unexpected, flaky or global errors. Exact-head/archive run
bac023d3-9e86-4a73-897e-7ab156b449f1; copied receipts in
/private/tmp/inkspan-pr151-serial-trace.FjuWWa. Host load also decreased from
16.26 to 8.57 during this run, so the concurrency effect is not isolated.
This is full-denominator serial evidence, not default three-worker acceptance
or a proven timeout repair. Original deadlines and request guards unchanged.

Closes #150.

Purpose

Implement the bounded forced-colors/high-contrast accessibility slice and keep every existing toolbar command fully visible at narrow widths. Preserve normal light/dark theme colors, command order, control sizes and host authority boundaries.

Protected main is the shipped implementation authority. Mutable head/base SHAs, divergence counts, workflow IDs, review counts and mergeability are decision-time evidence only and must be refetched before every lifecycle action.

Test-first lineage

  • RED d89bd41dabca47a00d486e847eed0d3df8b5456b proved missing forced-colors system-state mappings.
  • RED bcd993a1d521d3f44fe07eaeaa5acda10dce3d6b proved split forced-colors blocks could be overridden by later equal-specificity screen rules.
  • Source/test corrections consolidated one final screen @media (forced-colors: active) layer without weakening normal light/dark behavior.
  • The browser spec was subsequently corrected to use keyboard-driven Tab focus rather than programmatic .focus() for :focus-visible evidence. That finding is addressed in the branch; its resolved/outdated review thread is not a remaining blocker.
  • The actual-editor 320px regression exposed two clipped controls in each of six engine/color-mode cases even though page-width checks passed. Native wrapping inside the existing toolbar group addresses that separate presentation defect; the causal baseline and alternatives are recorded in docs/doctoring/toolbar-reflow.md.
  • Predecessor workflow/review evidence never transfers after branch or protected-base movement.

Implemented boundary

Inside the final forced-colors layer, Inkspan uses CSS system colors to preserve editor/container boundaries, toolbar/collaboration chrome, grouping, keyboard focus, active and disabled states, authored links, code/pre/table boundaries, and collaboration cursors. Disabled controls do not rely on opacity alone. Normal light/dark theme colors remain unchanged. Forced-mode placeholder guidance and quoted content use readable document text colors. Color transitions are disabled only in forced mode, and the existing system highlight pairs on hovered/active buttons and cursor labels retain readable text with a narrowly scoped adjustment exception. Cursor-label system colors override its normal inline colors; editor/document-wide automatic adjustment remains enabled. Outside that media query, the existing toolbar group also uses native flex wrapping so image insertion and alternative-text controls remain fully visible at 320px in both normal and forced colors. This preserves existing commands, DOM/keyboard order, control sizes and tokens; groups may take additional vertical space.

This slice adds no persistence, transport, credentials, model use, authorization, tenancy, network, provider, room, or durable-audit authority.

Browser-discovery dependency

This PR is stacked on #380, the dedicated browser harness/spec/config owner, and inherits its generalized desktop-engine discovery contract. Parent updates are integrated with merge commits, never by copying the configuration into a competing writer.

The committed forced-colors journey must be selected and executed by Chromium, Firefox and WebKit on every candidate generation. Local runs establish browser-emulated keyboard/focus, computed-style and directly inspected screenshot evidence only; they do not establish physical-device high-contrast support or protected-main acceptance. Refetch the current parent, child, discovery results, CI checkout identity and review threads before any lifecycle transition.

Dependency order / source ownership

This remains the earliest active owner for the forced-colors production/source boundary. Former PR #362 is already integrated on protected main and overlaps historical src/styles.css / focus-test work, so #151 must reconcile its net production delta against then-current protected truth non-destructively before further lifecycle advancement.

For browser configuration specifically, #380 remains the single writer. Release issue #118 is a downstream stable-release acceptance boundary and does not authorize bypassing this PR's own dependency, browser-execution, review, or merge gates.

Integration boundary

Before any lifecycle transition:

  1. refetch exact fix(accessibility): preserve forced-colors state cues #151 head, protected main/live base, ancestry/mergeability, changed paths/active writers, rulesets/protection, formal reviews/threads, and every required repository/central workflow/job;
  2. reconcile protected-main divergence and the already-integrated fix(a11y): repair editor contrast and keyboard focus #362 overlap non-destructively through a supported branch-update/merge mechanism; never force-push or destructively rebase;
  3. preserve test(input): add multilingual browser input baseline #380 as the single writer for tests/browser/playwright.config.ts; only after its generalized discovery contract is inherited/reconciled may fix(accessibility): preserve forced-colors state cues #151 claim forced-colors browser execution;
  4. run the keyboard-driven forced-colors journey on every applicable browser engine and treat discovery/checkout identity as part of the proof;
  5. regenerate exact-current-head/live-base CI, security/SAST, coverage, packed-package, browser/forced-colors, Office and applicable central workflow evidence, inspecting skipped-required steps and actual checkout SHAs;
  6. obtain all qualifying independent formal approvals required by then-live governance with zero valid unresolved threads; and
  7. merge only the unchanged exact head after every applicable gate passes.

If the available mutation surface lacks a safe non-destructive branch merge/update operation, classify only that exact reconciliation mutation TOOL_UNAVAILABLE; do not emulate it by moving refs or copying the browser-config fix into this branch. Pending, queued, skipped-required, cancelled, absent, neutral, failed, stale, predecessor, status-only, model-only, wrong-checkout, undiscovered-test, or synthetic-source-only evidence is non-passing. Do not self-approve, weaken gates, transfer predecessor evidence, bypass governance, or fabricate release identity.


Open in Devin Review

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e3322af6-a686-4f3a-984c-fa60c39efdaa

📥 Commits

Reviewing files that changed from the base of the PR and between 3b38ead and a517183.

📒 Files selected for processing (4)
  • src/editorFocusStyles.test.ts
  • src/forcedColorsStyles.test.ts
  • src/styles.css
  • tests/browser/specs/forced-colors.browser.spec.ts

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

편집기와 툴바에 forced-colors 스타일을 추가했습니다. 시스템 색상, 키보드 포커스, 비활성 상태, 링크, 구조적 경계선, 협업 표시를 검증하는 Vitest 및 Playwright 테스트를 추가했습니다.

Changes

강제 색상 접근성

Layer / File(s) Summary
Forced-colors CSS 계약
src/styles.css
편집기 콘텐츠에 포커스 윤곽선을 추가했습니다. 편집기, 툴바, 링크, 문서 구조, 협업 표시를 시스템 색상으로 매핑했습니다.
스타일시트 계약 검증
src/forcedColorsStyles.test.ts, src/editorFocusStyles.test.ts
forced-colors 블록의 위치와 단일성, 시스템 색상 사용, 포커스·상태·구조적 경계선 규칙을 검증합니다.
브라우저 forced-colors 검증
tests/browser/specs/forced-colors.browser.spec.ts
브라우저에서 테두리, 포커스, 비활성 버튼, 링크, 코드·표 경계선, 협업 커서와 라벨을 검증합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to a5171

This localized accessibility change preserves forced-colors state cues without altering normal theme behavior, and no actionable merge-blocking risk remains after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant ForcedColorsSpec
  participant LocalHarness
  participant Stylesheet
  Browser->>ForcedColorsSpec: forced-colors 테스트 실행
  ForcedColorsSpec->>LocalHarness: 로컬 fixture와 스타일시트 요청
  LocalHarness-->>Browser: 편집기 DOM과 CSS 제공
  Browser->>Stylesheet: forced-colors 스타일 적용
  ForcedColorsSpec->>Browser: computed style 및 포커스 상태 수집
  Browser-->>ForcedColorsSpec: 테두리, 색상, 윤곽선, 표시 상태 반환
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed 변경 사항은 이슈 #150의 요구사항을 충족합니다. 단일 forced-colors 레이어에 CSS 시스템 색상을 적용했고, 포커스·활성·비활성·링크·구조 경계선·협업 표시를 보존했습니다. 결정적 스타일시트 테스트와 실제 브라우저 테스트도 추가했습니다. 일반 테마 선언과 사용자 에이전트의 forced-color 조정을 유지하며, PR을 Draft 상태로 유지…
Out of Scope Changes check ✅ Passed 변경 범위는 이슈 #150과 일치합니다. 변경 파일은 스타일시트, 관련 테스트, 기존 Playwright 브라우저 사양으로 제한되며 persistence, networking, authorization 또는 기타 무관한 기능 변경은 없습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 forced-colors 접근성 상태 단서를 보존하는 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/forced-colors-accessibility

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@opencode-agent opencode-agent Bot added area: accessibility Accessibility and assistive-technology support priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior labels Aug 22, 2026
@seonghobae
seonghobae marked this pull request as ready for review August 25, 2026 18:15
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

Open in Devin Review

Comment thread tests/browser/specs/forced-colors.browser.spec.ts Outdated
Comment thread tests/browser/specs/forced-colors.browser.spec.ts Outdated
@seonghobae
seonghobae marked this pull request as draft August 26, 2026 00:11
# Conflicts:
#	src/editorFocusStyles.test.ts
@seonghobae

Copy link
Copy Markdown
Contributor Author

Conflict resolution at merge head 5a0d410 (main@057762e + this branch):

  • src/styles.css: removed the duplicated ordinary focus rule and the small outline-color: CanvasText fragment left by the fix(a11y): repair editor contrast and keyboard focus #362 auto-merge; the comprehensive forced-colors block from this branch is now the single authoritative cascade (toolbar focus = Highlight offset +2px, editor content focus = Highlight offset −2px, structure/text = CanvasText family).
  • src/editorFocusStyles.test.ts: unified contract asserts (1) exactly one ordinary accent rule, (2) forced-colors block cascades AFTER it, (3) content focus Highlight −2px, toolbar Highlight +2px, and no competing partial override.
  • Both test files pass locally: 9/9.

CI re-verifies at this head.

- Single screen @media (forced-colors: active) layer after base state rules:
  editor content focus = CanvasText outline-color (guaranteed canvas
  contrast), toolbar focus/active = Highlight family, structure = CanvasText
- editorFocusStyles contract asserts the unified cascade; designTokens and
  forcedColors contracts both satisfied (17 tests pass)
@seonghobae

Copy link
Copy Markdown
Contributor Author

Cascade reconciliation at f522d1f: the #362-merged CanvasText content-focus contract and this branch's comprehensive forced-colors layer are now one block — single screen forced-colors layer after base state rules; editor content focus = CanvasText outline-color; toolbar focus/active = Highlight family. designTokens, forcedColors, and editorFocus contracts all pass locally (17/17). CI re-verifies.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

Replace programmatic target focus with Tab navigation so the browser
evidence exercises the actual focus-visible interaction path.

Signed-off-by: Seongho Bae <me@seonghobae.me>
Commit-Message-Assisted-by: Claude (via Claude Code)
Use the platform keyboard chord for control traversal while keeping
ordinary Tab navigation on Chromium, Firefox, and non-macOS WebKit.

Signed-off-by: Seongho Bae <me@seonghobae.me>
Commit-Message-Assisted-by: Claude (via Claude Code)
@seonghobae

Copy link
Copy Markdown
Contributor Author

Current head e892384f2509c125359081ebc467d42e3dc21c8e replaces programmatic target focus with a real keyboard traversal.

RED: the first cross-engine run passed Chromium/Firefox but WebKit on macOS skipped toolbar controls under plain Tab.

GREEN: the harness now uses the native macOS WebKit Alt+Tab control-navigation chord and ordinary Tab elsewhere. The unchanged current head passes:

  • forced-colors browser journey: Chromium, Firefox, WebKit (3/3)
  • Vitest coverage: 163 files / 905 tests, 100% statements, branches, functions, lines
  • build/type declarations and packed-package consumer verification

Hosted current-head checks and independent review remain required; this local evidence does not transfer across head or base movement.

Adopt PR #380 head b2e4bb4
without rewriting the forced-colors branch.

Signed-off-by: Seongho Bae <me@seonghobae.me>
Commit-Message-Assisted-by: Claude (via Claude Code)
Signed-off-by: Seongho Bae <me@seonghobae.me>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Non-force merge a7d9919 contains the current #380 parent 5a1ba2e. The child-specific delta remains src/styles.css, the two stylesheet contract tests, and the forced-colors browser spec; browser configuration stays with #380. Local stylesheet contracts pass 8/8. The final unchanged signed head passes 51/51 browser checks: forced-colors keyboard/computed-style coverage and the composition suite on Chromium, Firefox and WebKit. An overlapping earlier local retry was rejected because the harness port was occupied; it provided no evidence and was rerun sequentially. The stale PR-body statement that this spec is undiscovered has been corrected. The PR remains Draft behind its parent; these are local emulation checks, not qualifying approval, current-head hosted CI, real-device support, or protected-main integration.

Preserve the four-file forced-colors source/test delta while inheriting #380 and its #201/#176/#402 prerequisites through ordinary history. The existing focus, forced-colors and print stylesheet tests pass. No browser discovery configuration is copied or re-owned here; normal theme rules and the already-merged #362 baseline remain intact.

Signed-off-by: Seongho Bae <me@seonghobae.me>
A 320px screenshot revealed image insertion and alternative-text controls clipped inside the editor while document scroll width still passed. Assert every actual toolbar button's full bounds in normal and forced colors, retaining screenshots. The corrected Chromium baseline fails on both clipped controls; the initial mistaken locator is retained as test-authoring failure, not product evidence.

Signed-off-by: Seongho Bae <me@seonghobae.me>
The six actual-editor baseline cases each lost image insertion and alternative-text controls at 320px despite a passing document-width check. Reuse native flex wrapping inside the existing group; preserve all commands, target sizes, keyboard order, theme tokens and print rules. Record the 12-observation baseline, rejected alternatives and proposed acceptance in the canonical documentation graph.

Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Real narrow-toolbar visibility: 12 clipped-control observations to zero — 2026-09-06

Candidate dd1a78045807e37e32f87810564be4b1fefd56df inherits #380 a271dd0f37e700951dc6d0227c95919db99403fd and source owner #201 f9a7879b66ea7c9590caa0d0465c84050791aa6c through ordinary merge history. The net delta against the browser owner remains eight presentation/test/documentation files; shared browser discovery and input-source behavior are inherited, not copied into competing writers.

The page-width check had missed an actual authoring failure: at 320px, the image button was partly clipped and its alternative-text button was entirely hidden. A page scroll width of 320px did not prove that controls inside the editor were available. The real public editor, rather than only a smaller chrome fixture, now checks the complete bounds of every toolbar button.

Baseline 4bc3c8fab0c697dba0576686325cf09fe61242b3 reproduced two clipped controls in each of Chromium, Firefox and WebKit under both normal and forced colors: 12 clipped-control observations across six cases. The one-line native group-wrapping change in e53eefa424d7199cfeae203778f7b6cff72bcd8a made all six cases pass. The final candidate preserves that runtime change exactly and adds only the inherited teardown-test repair. Final result: zero clipped controls in all six cases. Screenshots were captured before assertions and inspected; controls remain present with unchanged sizes, commands, DOM order and theme colors, while a narrow group can occupy another row.

Fresh final-head verification:

  • 1,027 production tests in 177 files passed with --maxWorkers=2; statements, branches, functions and lines remain 100%, with no unhandled errors or React act diagnostics.
  • Full build and complete packed-package consumer verification passed.
  • All 145 source-browser cases passed with --workers=1, including all six new normal/forced-color geometry cases, with zero unexpected/skipped/flaky results and no global errors. The receipt binds this candidate and run c53027bc-65c7-404e-b842-406c8c7a2ff5.
  • Project-local macOS Office verification passed 173 tests with 100% statements, branches and docstrings. Declared local development dependencies do not substitute for the Linux-only CI wheel lock or hosted Ubuntu matrix.
  • The separately retained package has SHA-256 8ca477782b3d420803d589999f3a8c28ba476a67e165d36b4bf537c271c38ff7.

The initial incorrectly named locator failure is not counted as a geometry RED. The earlier UI candidate's full-suite teardown-oracle failure is retained and was repaired in source owner #201, not hidden by a UI-local workaround. The parent lane's default-worker timeout and subsequent bounded-worker proof remain separately disclosed in its evidence; this final run does not erase them or establish default/hosted-load reliability.

PRD, TRD and the product-technical gap baseline link the bounded doctoring record, which records the baseline, alternatives, runnable regression and W3C Reflow basis. CONTRACTS is unchanged because no public API, document/evidence schema, callback or host authority changes.

Keep Draft and integrate parents first. These source-harness screenshots and a separately verified package do not establish installed-tarball browser identity, physical-device/OS high-contrast or IME acceptance, whole-product WCAG conformance, a 20ms performance target, protected merge, central review, approval or release. Re-fetch all live governance and exact-head evidence before any lifecycle transition.

Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Direct visual inspection found and repaired unreadable labels

Candidate: cc766fd6faf80aacea114ce7702e7f84190632bb, with canonical browser
parent #380 7e231329f8efed484e61e0c29e42e18527142d4d integrated by a normal
signed-off merge. The child has no net changes to the shared browser harness,
Vite configuration or stylesheet-identity spec against that parent.

The earlier nine passing semantic/geometry checks did not establish visual
acceptance: Chromium's pressed Bold button was visibly blank. The retained
immediate/settled screenshots separated two causes. Forced-mode transitions
temporarily interpolated both colors to white; disabling transitions alone
still left an automatic text backplate concealing the label. The repair uses
the existing system highlight pair with a narrowly scoped adjustment exception.
Actual collaboration-renderer tests also exposed normal inline colors taking
precedence; the forced label's two system colors now override those values.
Normal colors and the renderer's input sanitization are unchanged.

Readable placeholder guidance and quoted content now use CanvasText, while
disabled controls retain GrayText and structural state cues. No hard-coded
forced palette, editor-wide opt-out, new runtime dependency or API change was
introduced. The doctoring record
preserves standards, alternatives, causal checks and claim limits.

Current local evidence:

  • Unit/coverage: 1,032 passed, 177 files; configured statements, branches,
    functions and lines all 100%. No timeout or assertion threshold changes.
  • Office: 173 passed, coverage.py report 100%, public docstrings 100%.
    This is the local interpreter, not the complete hosted Python matrix.
  • Package-consumer command passed ESM, CommonJS, SSR-safe imports, exported
    subpaths, isolated consumers and strict TypeScript declarations.
  • Standard source browser command, including its normal build/startup path:
    154 passed, 0 skipped, 0 flaky, 0 global errors, run
    729d54e1-609f-4509-b3e3-8b1e2b7128b1.
  • Exact packed archive SHA-256:
    f0b465de8af68af6657c6ae809afa5d1e1f6dcadb99f97b6eddc4cc9fbf9b5a5.
    Extracted editor JavaScript, collaboration JavaScript and CSS match the build.
  • Standard packed-browser command: 154 passed, 0 skipped, 0 flaky,
    0 global errors
    , run 91e52449-6d65-4b15-8790-0173df9a69b3, bound to
    the archive above. Its source/package selector checks all passed.

Directly inspected source and packed images cover normal and forced colors at 320 CSS
pixels, actual selected/hovered controls, keyboard focus and rendered remote
labels across Chromium, Firefox and WebKit. WebKit's live capability probe
reports no forced-color-adjust support; it still executes all color, geometry,
focus, interaction and screenshot checks. Emulation is not physical OS/device
coverage or whole-product WCAG certification.

Earlier failures remain retained, including the initial server startup timeout,
the incorrect test locator, the transition-only failure, three actual-cursor
palette failures and the WebKit capability-check failure. Diagnostic prebuilt
runs are not relabeled as standard startup or release proof. Logs, images and
JSON reports are retained under
/private/tmp/inkspan-forced-colors-visual-evidence.1gmd6m.

This remains Draft/Proposed. Current protected-main ancestry, hosted checks,
independent reviews, security gates and release acceptance remain separate;
skipped Draft checks are not green. No force push, self-approval, gate weakening,
merge or release is claimed.

Signed-off-by: Seongho Bae <me@seonghobae.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: accessibility Accessibility and assistive-technology support priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(accessibility): preserve forced-colors toolbar and editor state cues

1 participant