Merge round 37: UI refinement round + intlfmt, mailbody, calscript #1539

Closed
opened 2026-10-10 14:23:48 +00:00 by kayg · 6 comments
Owner

Merge round 37: Sonnet UI refinement round (owner order 2026-10-10, "refine the UI bit by bit according to the decisions we made before") plus three small perf/backend branches. Base: origin/dev dbd621434 (= production).

Branches, in merge order: ui-chrome (shared primitives first), ui-notes, ui-calendar, ui-mail, ui-tasks, ui-search, ui-settings, ui-money, ui-notifications, ui-files-photos, ui-public, intlfmt-1461 (#1461), mailbody-1533 (#1533), calscript-1492 (#1492, bench only).

money-688 is not in this round (review still blocked).

Merge round 37: Sonnet UI refinement round (owner order 2026-10-10, "refine the UI bit by bit according to the decisions we made before") plus three small perf/backend branches. Base: origin/dev dbd621434 (= production). Branches, in merge order: ui-chrome (shared primitives first), ui-notes, ui-calendar, ui-mail, ui-tasks, ui-search, ui-settings, ui-money, ui-notifications, ui-files-photos, ui-public, intlfmt-1461 (#1461), mailbody-1533 (#1533), calscript-1492 (#1492, bench only). money-688 is not in this round (review still blocked).
Author
Owner

Started merge37 on job/merge37. Base: dbd621434d (production). Merge the 14 specified heads in order; retain ui-chrome shared ownership, regenerate perf contracts once, then run combined gates, release e2e, targeted Mail HTML adversarial checks and screenshot evidence. No push or deploy.

Started merge37 on job/merge37. Base: dbd621434d0a1133f16230cca5c6a83af0d8aed3 (production). Merge the 14 specified heads in order; retain ui-chrome shared ownership, regenerate perf contracts once, then run combined gates, release e2e, targeted Mail HTML adversarial checks and screenshot evidence. No push or deploy.
Author
Owner

All 14 specified commits merged in order. Current head 98cfd3577. Before final gates, fetched and merged origin/dev: Already up to date. Source conflict: MailSection kept ui-mail Toggle and singular/plural message wording, with intlfmt formatNumber. Perf JSON conflicts kept an existing side only until one final scripts/perf-lint --adopt-7c regeneration. Result: perf-lint: PASS; 0 violations; 22247 scoped exceptions. contracts/perf/ratchet.json unchanged. ui-chrome inputModality roving-focus marker and Notifications keyboard Delete setInputModality both remain. Web check: svelte-check found 0 errors and 0 warnings. Editor: Test Files 30 passed (30), Tests 529 passed (529). Only Rust product file changed: crates/plugins/mail/src/html.rs. Mail clippy passed. Remaining suites and release build are running.

All 14 specified commits merged in order. Current head 98cfd3577. Before final gates, fetched and merged origin/dev: Already up to date. Source conflict: MailSection kept ui-mail Toggle and singular/plural message wording, with intlfmt formatNumber. Perf JSON conflicts kept an existing side only until one final scripts/perf-lint --adopt-7c regeneration. Result: perf-lint: PASS; 0 violations; 22247 scoped exceptions. contracts/perf/ratchet.json unchanged. ui-chrome inputModality roving-focus marker and Notifications keyboard Delete setInputModality both remain. Web check: svelte-check found 0 errors and 0 warnings. Editor: Test Files 30 passed (30), Tests 529 passed (529). Only Rust product file changed: crates/plugins/mail/src/html.rs. Mail clippy passed. Remaining suites and release build are running.
kayg referenced this issue from a commit 2026-10-10 14:49:02 +00:00
kayg referenced this issue from a commit 2026-10-10 14:49:02 +00:00
kayg referenced this issue from a commit 2026-10-10 14:49:02 +00:00
kayg referenced this issue from a commit 2026-10-10 14:49:02 +00:00
kayg referenced this issue from a commit 2026-10-10 14:49:02 +00:00
Author
Owner

Combined focus and identity checks passed on the 98cfd3577 production build and merged release server. Mail selected list ID and reader ID are both cccccccc-cccc-4ccc-8ccc-ccccccccccc3 (Latest review note), not the older First review note. Mouse clicks on Mail, Notes Explorer/sidebar and Notification rows have outline:none; Mail Tab and ArrowDown, Notes Explorer ArrowDown, and Notification ArrowDown have solid keyboard rings and data-input=keyboard.

Evidence: 20 dark palettes: Mail + sidebar, Notes Explorer, menu (60 PNGs), input focus states (7 PNGs). Actual-size Chromium, macOS platform emulation, real disposable API data. Visual quality remains for the orchestrator to review.

Notes suite failure at e2e/notes.mjs:623 reproduced with the same script on production dbd621434; filed #1541. It is pre-existing. The owner capture script had a strict-locator error after three captures; corrected by selecting the first required loaded row. The focused attack harness is being corrected to create a fresh message identity for each body-attribute payload rather than editing an already retained projection out of band. Standard Mail HTML #726 also runs in this round. No product expectation was weakened. Current head: 948347ddf.

Combined focus and identity checks passed on the 98cfd3577 production build and merged release server. Mail selected list ID and reader ID are both cccccccc-cccc-4ccc-8ccc-ccccccccccc3 (Latest review note), not the older First review note. Mouse clicks on Mail, Notes Explorer/sidebar and Notification rows have outline:none; Mail Tab and ArrowDown, Notes Explorer ArrowDown, and Notification ArrowDown have solid keyboard rings and data-input=keyboard. Evidence: [20 dark palettes: Mail + sidebar, Notes Explorer, menu (60 PNGs)](https://git.kayg.org/attachments/b7bcdc74-e843-4c7c-873c-fc29bce03ab0), [input focus states (7 PNGs)](https://git.kayg.org/attachments/ade49fd7-7b14-4a3c-8eaf-f8b876854e6b). Actual-size Chromium, macOS platform emulation, real disposable API data. Visual quality remains for the orchestrator to review. Notes suite failure at e2e/notes.mjs:623 reproduced with the same script on production dbd621434; filed #1541. It is pre-existing. The owner capture script had a strict-locator error after three captures; corrected by selecting the first required loaded row. The focused attack harness is being corrected to create a fresh message identity for each body-attribute payload rather than editing an already retained projection out of band. Standard Mail HTML #726 also runs in this round. No product expectation was weakened. Current head: 948347ddf.
Author
Owner

Combined gates passed: cargo fmt --check (exit 0); Mail crate clippy (exit 0); Mail crate tests 172 passed, 10 ignored; web check 0 errors and 0 warnings; web test 314 files / 2301 tests passed; editor test 30 files / 529 tests passed. Web production build and release server build passed.

Mail layouts passed. mail-html-726 passed all 42 macOS-emulated screenshots, ownership/anonymous/off-state checks, two-tab revocation, body dark selectors, font decoding, HTML containment and Undo with zero external resource requests.

Pre-existing current-script failures, each tested against production dbd621434 with its own release server and web build: Notes #1541, Calendar #1542, Mail Morph cold fixture #1543, Search #1544, Settings #1545, Notifications empty-state copy #1546. Files comparison is in progress. Sharp runtime failed in Tasks/Money; the matching Nix GCC library resolves it and those suites will rerun. These are local loader failures, not product findings.

Perf smoke skipped: perf-run status showed calternal tabcomp1233finalmatrix holding the VM (expected 60 min). No Mac VM used.

Combined gates passed: cargo fmt --check (exit 0); Mail crate clippy (exit 0); Mail crate tests 172 passed, 10 ignored; web check 0 errors and 0 warnings; web test 314 files / 2301 tests passed; editor test 30 files / 529 tests passed. Web production build and release server build passed. Mail layouts passed. mail-html-726 passed all 42 macOS-emulated screenshots, ownership/anonymous/off-state checks, two-tab revocation, body dark selectors, font decoding, HTML containment and Undo with zero external resource requests. Pre-existing current-script failures, each tested against production dbd621434 with its own release server and web build: Notes #1541, Calendar #1542, Mail Morph cold fixture #1543, Search #1544, Settings #1545, Notifications empty-state copy #1546. Files comparison is in progress. Sharp runtime failed in Tasks/Money; the matching Nix GCC library resolves it and those suites will rerun. These are local loader failures, not product findings. Perf smoke skipped: perf-run status showed calternal tabcomp1233finalmatrix holding the VM (expected 60 min). No Mac VM used.
Author
Owner

READY ac7fda1a8c

Built: merge round 37 integrates all 14 requested heads, in the requested order, with the required no-ff merge messages. No features were added. origin/dev was fetched and merged once before the gates; it was already up to date. All requested heads are ancestors of this head. No push or deploy was run.

Files: 149 changed paths are listed in changed-files.txt in the attached log archive. They include the requested Tab UI, packages/ui shared primitives, Mail settings locale formatting, crates/plugins/mail/src/html.rs, contracts/perf/adoption-1058.json, contracts/perf/exceptions.json, the Calendar benchmark and docs/perf/baseline.json. This round adds apps/web/e2e/merge37-review.mjs and tests/adversarial/mail_html_1533.mjs. Screenshots are ignored review artifacts and are not committed.

Decisions: no new product design decision. Shared conflicts retain ui-chrome and its root roving-focus policy. Notifications keeps keyboard Delete modality. Mail settings keep ui-mail's Toggle and singular/plural grammar and #1461's formatNumber. Generated perf contracts were regenerated once with scripts/perf-lint --adopt-7c; ratchet.json did not change. The extra containment fixture queues work through the supported preference API and awaits preparation before opening. This preserves the rule that reader opens do not start background content work.

Gates: Rust changed only in calternal-plugin-mail. Clippy and tests ran per crate under the owner resource rule; no workspace clippy was run. cargo fmt --check had no output and exited 0. Commands used CARGO_PROFILE_DEV_DEBUG=line-tables-only, CARGO_INCREMENTAL=0, CARGO_BUILD_JOBS=4 and worktree target/tmp. Full output is attached. Verbatim terminal summaries:

cargo clippy -p calternal-plugin-mail --all-targets -- -D warnings
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 40s

cargo test -p calternal-plugin-mail -- --test-threads=4
test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 44.20s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

cd apps/web && bun run check
svelte-check found 0 errors and 0 warnings

cd apps/web && bun run test --maxWorkers=2
 Test Files  314 passed (314)
      Tests  2301 passed (2301)
   Start at  16:28:44
   Duration  469.71s (transform 27%, environment 26%, import 23%, tests 19%, setup 5%)

cd packages/editor && bun run test --maxWorkers=2
 Test Files  30 passed (30)
      Tests  529 passed (529)
   Start at  16:26:39
   Duration  29.40s (transform 4.67s, setup 492ms, import 12.27s, tests 11.34s, environment 27.85s)

cd apps/web && bun run build
Compressed 924 static variants; saved 21712834 bytes.

cargo build --release -p calternal-server
    Finished `release` profile [optimized] target(s) in 13m 33s

The combined product was built and gated at 98cfd3577. Every later commit changes only the two verification scripts. The final product sources are identical to that gated build. Final scripts pass node --check and git diff --check.

Passing release-build suites: Tasks (72 screenshots), Photos, auth/sign-in, Mail layouts, mail-html-726 (42 screenshots), Notification row layout, Notification Delete (five-click Undo and 20-request burst), Notes UI rules, sidebar-content-shift-1138, Calendar view audit (30 screenshots), combined owner review and the focused #1533 attack. Browser runs were serial. The local Sharp loader issue was fixed with the matching Nix GCC runtime; affected scripts were then run again.

Known gaps: the following current-script failures also occur on production dbd621434 using its own release server and web build. Existing expectations were kept. Each has its own issue. These failures stop later coverage in those full suites; they are pre-existing under this round's classification rule.

Suite Same failure on both builds Issue
Notes Block-editor contenteditable locator timeout #1541
Calendar Retired Week sidebar link locator #1542
mailmorph-1368 No cold Mail body exists in rows 238..202 #1543
Search Shortcut modality assertion expects keyboard #1544
Settings Paper menuitemradio locator timeout #1545
Notifications Old empty-inbox text locator #1546
Files PDF metadata remains during text-card cache-family proof #1547
Public shares Public Note fixture text absent from article.document #1548
Money Create Budget locator after balance review #1549
glass-audit Calendar .block.plan fixture absent #1550
hide-1153 Task date adoption not ready #1551

All three scripts changed by ui-files-photos were run: sidebar-content-shift-1138 passes; glass-audit and hide-1153 reproduce on production and are filed. The extra probe also exposed a synthetic cold-body fallback 500 on both builds (#1552). Its raw comparison logs are retained. Preparing the fixture before opening fixes the setup race without weakening the zero-5xx assertion.

UX gaps closed: the combined probe verifies no mouse ring on Mail, Notes sidebar/Explorer and Notification rows; Tab and ArrowDown show keyboard rings. It records 60 non-transparent selected fills across the 20 dark palettes for Mail, sidebar and Notes Explorer, and saves menu selection in each palette. Clicking Latest review note opens reader ID cccccccc-cccc-4ccc-8ccc-ccccccccccc3, matching the row. The older explicit deep link renders First review note; Latest is not aria-current there. The reported click mismatch was not reproduced. The fixture uses different subjects within one thread.

UX gaps left: visual quality review belongs to the orchestrator. The owner set has 66 actual-size Chromium captures: Calendar, Tasks, Notes, Files, Photos, Mail, Money, Ask, Settings, Search and Notifications at 1440, 820 and 390 px, light and dark. Files are under artifacts/merge37/owner with plain names. Captures use macOS platform emulation, real disposable data, loaded-content assertions and cleared hover. No Mac VM was used. Shared controls remain the upstream packages/ui primitives; this round adds no visible control or local style.

Adversarial result (one focused Mail-only round, under 20 minutes):

Mail HTML #1533 adversarial: 3 body-attribute payloads inert; empty sandbox permissions; zero scripts, external requests, dialogs and 5xx.

mail-html-726 also passed ownership, anonymous/off-state access, two-tab revocation, sender dark selectors/font decoding, HTML containment, Undo and zero external resource requests.

Performance smoke: skipped. perf-run status showed calternal tabcomp1233finalmatrix holding the shared VM (expected 60 minutes). No baseline comparison is claimed. Merge-only code adds test work and no runtime operation; Mail body-attribute work remains bounded by the existing HTML/CSS and attribute limits.

Cleanup completed:

     Removed 16352 files, 5.9GiB total

Web build output and worktree test temporary files were removed. Worktree is clean. Evidence and full gate/comparison logs:

READY ac7fda1a8c

READY ac7fda1a8c49e902e1b246bea9d167d64e92d58f Built: merge round 37 integrates all 14 requested heads, in the requested order, with the required no-ff merge messages. No features were added. origin/dev was fetched and merged once before the gates; it was already up to date. All requested heads are ancestors of this head. No push or deploy was run. Files: 149 changed paths are listed in changed-files.txt in the attached log archive. They include the requested Tab UI, packages/ui shared primitives, Mail settings locale formatting, crates/plugins/mail/src/html.rs, contracts/perf/adoption-1058.json, contracts/perf/exceptions.json, the Calendar benchmark and docs/perf/baseline.json. This round adds apps/web/e2e/merge37-review.mjs and tests/adversarial/mail_html_1533.mjs. Screenshots are ignored review artifacts and are not committed. Decisions: no new product design decision. Shared conflicts retain ui-chrome and its root roving-focus policy. Notifications keeps keyboard Delete modality. Mail settings keep ui-mail's Toggle and singular/plural grammar and #1461's formatNumber. Generated perf contracts were regenerated once with scripts/perf-lint --adopt-7c; ratchet.json did not change. The extra containment fixture queues work through the supported preference API and awaits preparation before opening. This preserves the rule that reader opens do not start background content work. Gates: Rust changed only in calternal-plugin-mail. Clippy and tests ran per crate under the owner resource rule; no workspace clippy was run. cargo fmt --check had no output and exited 0. Commands used CARGO_PROFILE_DEV_DEBUG=line-tables-only, CARGO_INCREMENTAL=0, CARGO_BUILD_JOBS=4 and worktree target/tmp. Full output is attached. Verbatim terminal summaries: ```text cargo clippy -p calternal-plugin-mail --all-targets -- -D warnings Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 40s cargo test -p calternal-plugin-mail -- --test-threads=4 test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 44.20s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s cd apps/web && bun run check svelte-check found 0 errors and 0 warnings cd apps/web && bun run test --maxWorkers=2 Test Files 314 passed (314) Tests 2301 passed (2301) Start at 16:28:44 Duration 469.71s (transform 27%, environment 26%, import 23%, tests 19%, setup 5%) cd packages/editor && bun run test --maxWorkers=2 Test Files 30 passed (30) Tests 529 passed (529) Start at 16:26:39 Duration 29.40s (transform 4.67s, setup 492ms, import 12.27s, tests 11.34s, environment 27.85s) cd apps/web && bun run build Compressed 924 static variants; saved 21712834 bytes. cargo build --release -p calternal-server Finished `release` profile [optimized] target(s) in 13m 33s ``` The combined product was built and gated at 98cfd3577. Every later commit changes only the two verification scripts. The final product sources are identical to that gated build. Final scripts pass node --check and git diff --check. Passing release-build suites: Tasks (72 screenshots), Photos, auth/sign-in, Mail layouts, mail-html-726 (42 screenshots), Notification row layout, Notification Delete (five-click Undo and 20-request burst), Notes UI rules, sidebar-content-shift-1138, Calendar view audit (30 screenshots), combined owner review and the focused #1533 attack. Browser runs were serial. The local Sharp loader issue was fixed with the matching Nix GCC runtime; affected scripts were then run again. Known gaps: the following current-script failures also occur on production dbd621434 using its own release server and web build. Existing expectations were kept. Each has its own issue. These failures stop later coverage in those full suites; they are pre-existing under this round's classification rule. | Suite | Same failure on both builds | Issue | | --- | --- | --- | | Notes | Block-editor contenteditable locator timeout | #1541 | | Calendar | Retired Week sidebar link locator | #1542 | | mailmorph-1368 | No cold Mail body exists in rows 238..202 | #1543 | | Search | Shortcut modality assertion expects keyboard | #1544 | | Settings | Paper menuitemradio locator timeout | #1545 | | Notifications | Old empty-inbox text locator | #1546 | | Files | PDF metadata remains during text-card cache-family proof | #1547 | | Public shares | Public Note fixture text absent from article.document | #1548 | | Money | Create Budget locator after balance review | #1549 | | glass-audit | Calendar .block.plan fixture absent | #1550 | | hide-1153 | Task date adoption not ready | #1551 | All three scripts changed by ui-files-photos were run: sidebar-content-shift-1138 passes; glass-audit and hide-1153 reproduce on production and are filed. The extra probe also exposed a synthetic cold-body fallback 500 on both builds (#1552). Its raw comparison logs are retained. Preparing the fixture before opening fixes the setup race without weakening the zero-5xx assertion. UX gaps closed: the combined probe verifies no mouse ring on Mail, Notes sidebar/Explorer and Notification rows; Tab and ArrowDown show keyboard rings. It records 60 non-transparent selected fills across the 20 dark palettes for Mail, sidebar and Notes Explorer, and saves menu selection in each palette. Clicking Latest review note opens reader ID cccccccc-cccc-4ccc-8ccc-ccccccccccc3, matching the row. The older explicit deep link renders First review note; Latest is not aria-current there. The reported click mismatch was not reproduced. The fixture uses different subjects within one thread. UX gaps left: visual quality review belongs to the orchestrator. The owner set has 66 actual-size Chromium captures: Calendar, Tasks, Notes, Files, Photos, Mail, Money, Ask, Settings, Search and Notifications at 1440, 820 and 390 px, light and dark. Files are under artifacts/merge37/owner with plain names. Captures use macOS platform emulation, real disposable data, loaded-content assertions and cleared hover. No Mac VM was used. Shared controls remain the upstream packages/ui primitives; this round adds no visible control or local style. Adversarial result (one focused Mail-only round, under 20 minutes): ```text Mail HTML #1533 adversarial: 3 body-attribute payloads inert; empty sandbox permissions; zero scripts, external requests, dialogs and 5xx. ``` mail-html-726 also passed ownership, anonymous/off-state access, two-tab revocation, sender dark selectors/font decoding, HTML containment, Undo and zero external resource requests. Performance smoke: skipped. perf-run status showed calternal tabcomp1233finalmatrix holding the shared VM (expected 60 minutes). No baseline comparison is claimed. Merge-only code adds test work and no runtime operation; Mail body-attribute work remains bounded by the existing HTML/CSS and attribute limits. Cleanup completed: ```text Removed 16352 files, 5.9GiB total ``` Web build output and worktree test temporary files were removed. Worktree is clean. Evidence and full gate/comparison logs: - [merge37-dark-selection.zip](https://git.kayg.org/attachments/b7bcdc74-e843-4c7c-873c-fc29bce03ab0) - [merge37-focus.zip](https://git.kayg.org/attachments/ade49fd7-7b14-4a3c-8eaf-f8b876854e6b) - [merge37-mail-html.zip](https://git.kayg.org/attachments/38693850-de58-4c73-a193-3715f8ddba0f) - [merge37-mail-layouts.zip](https://git.kayg.org/attachments/4f3d38cd-b2b9-4fd7-8d9b-d447dc6a1976) - [merge37-calendar-views.zip](https://git.kayg.org/attachments/1432cd87-b504-4152-9042-6e421d7b6c95) - [merge37-notification-proof.zip](https://git.kayg.org/attachments/200aef08-7960-413e-8377-fc790e1e23b9) - [merge37-owner.zip](https://git.kayg.org/attachments/ebf277e8-dbaa-454b-a9d1-4f55f4e76c40) - [merge37-focus-final.zip](https://git.kayg.org/attachments/186a4e28-7005-45bf-b785-2038020431ee) - [merge37-logs.zip](https://git.kayg.org/attachments/fb93d942-22d2-4380-a674-d5e4de8eef85) READY ac7fda1a8c49e902e1b246bea9d167d64e92d58f
kayg referenced this issue from a commit 2026-10-10 16:07:18 +00:00
kayg referenced this issue from a commit 2026-10-10 16:07:18 +00:00
kayg referenced this issue from a commit 2026-10-10 16:07:18 +00:00
kayg referenced this issue from a commit 2026-10-10 16:07:18 +00:00
kayg referenced this issue from a commit 2026-10-10 16:07:18 +00:00
Author
Owner

Deployed to production in merge round 37 (ac7fda1a8, 2026-10-10 21:37 IST).

Deployed to production in merge round 37 (ac7fda1a8, 2026-10-10 21:37 IST).
kayg closed this issue 2026-10-10 16:07:33 +00:00
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1539
No description provided.