test(input): add multilingual browser input baseline - #380
Conversation
Refs #376. Add cross-engine committed-input fidelity coverage plus a bounded synthetic composition lifecycle probe without claiming real OS IME or mobile-device support.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Refs #376. Extend the browser-only assurance lane with committed multilingual edits in headings, list items and table cells plus undo/redo evidence for committed Korean input. This remains synthetic committed-input evidence, not real OS IME or mobile-device support.
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Exact-head follow-up Local exact-head evidence:
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Verify that activating an enabled formatting control by touch keeps the editor focused across Chromium, Firefox, and WebKit. Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com> Commit-Message-Assisted-by: Claude (via Claude Code)
|
Exact-head browser assurance update for |
Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com> Commit-Message-Assisted-by: Claude (via Claude Code)
|
Added exact-head browser assurance for controlled-value replacement during an active synthetic composition at The harness now verifies that the local composed revision is published before a newer host-controlled value is applied, and that native form serialization ends on the host revision. Product source remains untouched. Local evidence:
This is emulation evidence only; it does not claim physical OS IME or real-device support. |
Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com> Commit-Message-Assisted-by: Claude (via Claude Code)
|
Added exact-revision browser assurance in Validation: |
Exercise the existing autosave queue with composition snapshots and assert the exact composed revision reaches the host save callback once. Resolve the autosave artifact alongside the editor in packed browser tests. Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Exact child head 5a1ba2e corrects the earlier revision-only evidence: the harness now connects the existing autosave queue to an in-memory host save callback. During synthetic composition, neither document-change evidence nor saves are emitted; after compositionend, the callback receives exactly one tag matching the editor snapshot captured before the newer controlled value replaces it. The full arrays are asserted, so duplicates and a wrong snapshot fail. The packed harness resolves the autosave artifact alongside the packed editor, without a source autosave fallback. Local validation: composition browser suite 48/48; packed journey Chromium/Firefox/WebKit x 3 repetitions 9/9; typecheck and diff check pass. Parent e710cf4 remains in ancestry; child delta is browser harness/spec/config only. This is local queue-callback evidence, not durable persistence, OS IME, physical-device, protected-main, or current-head CI approval evidence. |
Keep the child delta browser-only while inheriting PR #201 and its #176/#402 prerequisites through ordinary history. The heading, list and table setup assertions first reproduced false edit snapshots from the old TipTap setContent boolean. Use explicit update suppression in the existing fixture; all nine focused cases pass across Chromium, Firefox and WebKit without weakening input or callback oracles. Signed-off-by: Seongho Bae <me@seonghobae.me>
Exact-head foundation and browser-fixture verification — 2026-09-05Candidate The inherited editor API exposed one fixture migration defect: preparing the heading, list and table cases emitted an edit snapshot. All three new preparation assertions were RED. The existing fixture now uses explicit update suppression; all nine focused cases pass across Chromium, Firefox and WebKit. This repair belongs to test preparation, not production editing semantics, and no expected input or callback oracle was weakened. Fresh verification on this final head:
These results establish browser-emulated/component input, composition, form, clipboard and touch/focus behavior only. They do not prove real OS-IME candidate handling, physical iOS/Android devices, installed-tarball browser identity, a 20ms performance target, durable persistence or collaboration-provider authority. Keep Draft and keep parent-before-child protected integration. Hosted skipped/queued/absent checks and predecessor reviews are non-passing; no Ready, approval, merge, release or bypass is claimed. |
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>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Source-owner teardown inheritance and bounded local proof — 2026-09-06Draft candidate Fresh final-head unit coverage passed 1,021 tests in 176 files with 100% statements, branches, functions and lines. Full build, packed-package consumer verification and 173 project-local macOS Office tests passed; Office statements, branches and docstrings remain 100%. The retained package digest remains Browser attempts are deliberately separated:
No fixture, assertion, timeout, production source or checked-in worker configuration was changed to obtain the final pass. The shared 10-core M5 host was observed at load averages 28.12/25.90/16.77 during diagnosis; contention is a plausible explanation, not a proven causal attribution. Retain the initial failure in the attempt denominator. The final result establishes bounded-worker local execution, not proof that the default/hosted configuration is reliable under all load. The package digest is separate from these source-harness runs; installed-tarball identity, real OS-IME/physical-device behavior, a 20ms performance target, protected integration and release are not established here. Local Office dependencies remain distinct from the Linux-only CI wheel lock. #151 must inherit this parent and regenerate its own exact-head proof. Keep Draft, parent-before-child integration and all existing live gates; no approval, merge, tag, publication or bypass is claimed. |
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>
Selected stylesheet provenance repair — full verification pendingCurrent candidate: Packed JavaScript selection previously left the input editor importing source At test-only baseline The change also includes The current local full coverage run is still in progress and has reported a Fresh complete source-mode and extracted-package browser runs, package-bound |
Signed-off-by: Seongho Bae <me@seonghobae.me>
Canonical browser helper integration and retained failuresAdditional #379 lifecycle evidence: current Child #151 full-workload failure trace: its unchanged The child's one-worker diagnostic subsequently passed all 154 cases in Latest same-head full trace acquisition: Later head update: A later same-head diagnostic using the existing outside-repository prebuilt Independent current-head build restoration and the complete The same-head Firefox composition file subsequently passed all 16 cases with Candidate The reason is concrete: #151's real collaboration renderer supplies inline The earlier At current The integrated child Current parent acceptance now includes 145/145 source browser cases, no skips The current packed browser run failed: 131 passed, 3 failed, 11 did not run, Traces include failures before product assertions: one browser launch took Draft hosted checks at this current head were skipped, not green. There is no Later unchanged full packed acquisitionThe same current head and archive subsequently passed 145/145 canonical Separate 390x844 packed-harness screenshots were directly inspected in all |
Signed-off-by: Seongho Bae <me@seonghobae.me>
Signed-off-by: Seongho Bae <me@seonghobae.me>
Refs #376.
Purpose
Draft real-browser input-assurance child for #201. This lane owns browser harness/spec/config evidence only and does not write or re-own
src/**production semantics.Stack ownership
mainis the only shipped-source authority.CwlEditorcomposition/read-only/controlled-value semantics.Do not embed mutable head/base SHAs, workflow run IDs, review counts, or mergeability snapshots here as durable truth. Refetch them immediately before every action.
Browser-assurance scope
The child owns the committed browser harness/config/specs for multilingual/CJK and grapheme input, synthetic composition lifecycle, composition/clipboard interactions, native-form serialization, active-composition teardown/remount, read-only clipboard behavior, touch/pointer/focus geometry, reflow behavior, and loopback-only browser requests.
Its intended net delta is the browser-assurance set under:
tests/browser/harness.ts;tests/browser/input-harness.html;tests/browser/input-harness.ts;tests/browser/playwright.config.ts;tests/browser/vite.config.ts;tests/browser/specs/composition-clipboard.browser.spec.ts;tests/browser/specs/composition-native-form.browser.spec.ts;tests/browser/specs/read-only-clipboard.browser.spec.ts;tests/browser/specs/touch-clipboard.browser.spec.ts;tests/browser/specs/stylesheet-identity.browser.spec.ts.The accompanying
docs/TEST_STRATEGY.mdanddocs/doctoring/browser-stylesheet-provenance.mdrecord assurance methodology and limits. The actual input editor and the shared focus/print CSS URL select the extracted package stylesheet in package mode or the local build in source mode. Archive-digest metadata alone does not prove which CSS the browser loaded; the regression checks loaded identity and shared-route bytes. Source and package runs require separate current-head proof. The matching collaboration entry and lazy actual-renderer probe also follow that selection; the shared normal-color regression supports downstream forced-colors inspection without copying renderer markup.The shared
tests/browser/evidenceContract.tsalso rejects an absent package archive when an expected digest is explicitly supplied. Its executable regression extends the existingsrc/releaseBrowserEvidence.test.tsassurance test only; no productionsrc/**implementation changes. Unconfigured source-only evidence remains permitted, while expected package evidence must have matching actual bytes.Before every restack or lifecycle action, independently compare the exact live parent to the exact child and prove the child is not carrying a competing production-source delta.
Executable discovery contract
A predecessor contained
composition-native-form.browser.spec.tswhile its inherited Playwright selector selected only a narrow clipboard/print subset. File presence was therefore false-green evidence.The child deliberately uses the stronger desktop-engine discovery contract
/\.browser\.spec\.ts$/u, so committed*.browser.spec.tsjourneys are selected by Chromium, Firefox and WebKit while the dedicated consensus spec remains isolated in its own project. The native-form/composition journeys also fail closed on non-loopback browser requests: only the declared loopback harness origin is permitted and any rejected origin must make the journey fail.Evidence discipline
For every exact current child generation:
Pending, queued, skipped-required, cancelled, absent, neutral, failed, stale, predecessor, status-only, model-only, wrong-checkout, synthetic-source, undiscovered-test, or otherwise vacuous evidence does not pass. Parent/predecessor workflow evidence never transfers to a newly synchronized child head.
Assurance boundary
This is browser-emulation/component evidence only. It does not establish physical-device OS-IME candidate behavior, real iOS Safari/Android Chrome support, durable save, authorization, transport, tenancy, durable persistence, host network policy, or collaboration-provider authority.
No transport, authentication, authorization, tenancy, durable persistence, credentials, model/provider, network, host-owned Yjs-provider, durable audit, deployment, migration, retention, or durable PDF authority moves into Inkspan through this lane.
Remaining #376 acceptance
This Draft does not close #376. Remaining acceptance includes authorized real OS-IME/candidate journeys; broader controlled-value/autosave concurrency combinations beyond the locally covered single composed snapshot; collaboration-near-composition behavior; broader toolbar/dialog/hydration cases; stronger mobile target-size/no-hover/focus/zoom/reflow assurance on accepted devices; and periodic authorized real-device evidence before claiming iOS Safari or Android Chrome support.
Lifecycle boundary
Keep this PR Draft behind #201 and the protected release-acceptance boundary. Before any lifecycle transition, refetch protected main, exact parent/head/live base, ancestry/mergeability, changed refs/active writers, live governance, exact-current workflow/job evidence including checkout SHAs, formal reviews and unresolved threads. Do not self-approve, weaken gates, transfer predecessor evidence, fabricate mobile/IME support, create a competing production writer, or represent this Draft as protected-main shipped truth.