Notes editor: break-it session on macOS Safari and Chrome via cua-driver #1334

Open
opened 2026-10-07 06:50:10 +00:00 by kayg · 14 comments
Owner

Owner request 2026-10-07: try to break the Notes block editor as a real User on macOS, driving the macOS test VM with cua-driver (computer use). The owner reports the editor breaks in many ways; this job discovers and documents those breakages independently. Discovery only: one Forgejo issue per bug with exact steps, expected, actual, screenshots, browser and version. No product code changes in this issue's job; fixes are assigned after triage.

Owner request 2026-10-07: try to break the Notes block editor as a real User on macOS, driving the macOS test VM with cua-driver (computer use). The owner reports the editor breaks in many ways; this job discovers and documents those breakages independently. Discovery only: one Forgejo issue per bug with exact steps, expected, actual, screenshots, browser and version. No product code changes in this issue's job; fixes are assigned after triage.
Author
Owner

Starting discovery-only testing on branch job/editbreak-1334, based on origin/dev at 3601719b80. I will build the production web app and an isolated local server, then test Notes in Safari and Chrome on the macOS VM. No product code changes.

Starting discovery-only testing on branch job/editbreak-1334, based on origin/dev at 3601719b80a39f712daf07b37879b22929dfffa0. I will build the production web app and an isolated local server, then test Notes in Safari and Chrome on the macOS VM. No product code changes.
Author
Owner

Discovery finding filed as #1351: selecting text in a new note’s first paragraph makes the formatting capsule overlap the note title. Reproduced twice in Chrome 154.0.8037.58 on macOS 27.0 (26A428). Evidence is in artifacts/editbreak/freshproof-doubleclick.png and artifacts/editbreak/freshproof-doubleclick-again.png. Safari was not tested because the test VM’s iCloud Keychain/passkey setup blocked sign-in.

Discovery finding filed as #1351: selecting text in a new note’s first paragraph makes the formatting capsule overlap the note title. Reproduced twice in Chrome 154.0.8037.58 on macOS 27.0 (26A428). Evidence is in `artifacts/editbreak/freshproof-doubleclick.png` and `artifacts/editbreak/freshproof-doubleclick-again.png`. Safari was not tested because the test VM’s iCloud Keychain/passkey setup blocked sign-in.
Author
Owner

Filed #1352 after two Chrome/macOS reproductions: the sticky note title and breadcrumb obscure the top of the scrolled body in the 2,000-block note. Evidence is in artifacts/editbreak/long-scroll-page-down.png and artifacts/editbreak/long-scroll-repro2-after.png.

Filed #1352 after two Chrome/macOS reproductions: the sticky note title and breadcrumb obscure the top of the scrolled body in the 2,000-block note. Evidence is in `artifacts/editbreak/long-scroll-page-down.png` and `artifacts/editbreak/long-scroll-repro2-after.png`.
Author
Owner

#1334 macOS block editor discovery report

Branch: job/editbreak-1334. Base: 3601719b80a39f712daf07b37879b22929dfffa0. Head: 3601719b80a39f712daf07b37879b22929dfffa0 (discovery only; no product code changes or commits).

Issues filed

Issue Symptom Severity Chrome Safari
#1351 Formatting capsule covers the note title when selecting first-paragraph text Cosmetic Reproduced twice Not tested
#1352 Sticky note title and breadcrumb obscure the top of scrolled note text Minor Reproduced twice in the 2,000-block note; also seen after a contents-rail jump, in a mixed-block note, and after webpage paste Not tested

The #1351 screenshots are artifacts/editbreak/freshproof-doubleclick.png and freshproof-doubleclick-again.png. The #1352 screenshots are long-scroll-page-down.png, long-scroll-repro2-after.png, mixed-blocks-page-down.png, paste-webpage-result2.png, and contents-rail-section10.png. All test screenshots and findings.md remain in the worktree under artifacts/editbreak/; they are not committed.

Coverage

Area Result Notes
Disposable instance and seed data Yes Built production web assets and a release server. Seeded short notes, mixed block types, a 2,000-block note, and RTL, emoji ZWJ, combining-mark, and CJK text through the real API.
Basic editing and formatting Partial Typed and edited text, split a paragraph, used headings, bold/italic, list indent/outdent, and checklist controls. Undo and redo worked for formatting and webpage paste. Every block conversion and all boundary merge cases were not covered.
Slash menu and block types Partial Opened the slash menu and inserted common block types. Viewed headings, quotes, callout, lists, checklist, table, code, separator, tag, and link preview. I did not exercise every type at the start, middle, and end of a note.
Links Partial Created a link with the toolbar, undid it, and viewed a bare-URL preview. Link editing/removal, selected-text URL paste, adjacent links, and wrapped links were not covered.
Selection Partial Selected and copied a web page with Cmd+A. Cross-block selection, table/code selection, triple-click, and drag selection were not conclusively tested.
Paste Partial Copied the Example Domain page in Chrome and pasted its multilingual paragraphs into a fresh note; undo and redo worked. Safari, TextEdit rich text, Markdown, tabs, and image clipboard paste were not tested.
Drag and drop No Block reordering, text drag, Finder image drag, and touch drag were not tested.
Long note Partial Scrolled the 2,000-block note and jumped to Section 10 using the contents rail. The jump reached #section-10. I did not measure typing latency or run a performance profile.
macOS-specific editing Partial Tested on macOS in Chrome, including toolbar/keyboard editing and undo/redo. Option+E accents, emoji picker, spellcheck/autocorrect, text substitutions, resize while editing, and two windows on one note were not tested.
Browser coverage Partial Google Chrome 154.0.8037.58 on macOS 27.0 (26A428) was tested. Safari 27.0 setup stopped at the first-account passkey prompt because iCloud Keychain confirmation was unavailable on the lab profile.
Width and theme coverage Partial Captured real macOS Chrome at 500 px (narrow-window proxy), 820 px, and desktop. The macOS window manager clamped a 390 px request to 500 px. Dark mode was not tested.

Build and cleanup

Web production build output:

Compressed 917 static variants; saved 21486598 bytes.

Release server build output:

Finished release profile [optimized] target(s) in 28m 46s

No Rust or web test gates were run because this was discovery only and no product code changed. cargo clean output:

Removed 0 files

The local server and reverse SSH tunnel are stopped. The worktree target/, apps/web/build, and apps/web/.svelte-kit outputs are removed. A generated file in the Mac lab account was moved to Bin; macOS TCC denied permanent deletion through SSH, so I left unrelated Bin contents untouched.

Decisions

No product design decisions were needed. For narrow-width evidence, I used 500 px after the macOS window manager refused 390 px and clamped the window to 500 px.

## #1334 macOS block editor discovery report Branch: `job/editbreak-1334`. Base: `3601719b80a39f712daf07b37879b22929dfffa0`. Head: `3601719b80a39f712daf07b37879b22929dfffa0` (discovery only; no product code changes or commits). ### Issues filed | Issue | Symptom | Severity | Chrome | Safari | | --- | --- | --- | --- | --- | | #1351 | Formatting capsule covers the note title when selecting first-paragraph text | Cosmetic | Reproduced twice | Not tested | | #1352 | Sticky note title and breadcrumb obscure the top of scrolled note text | Minor | Reproduced twice in the 2,000-block note; also seen after a contents-rail jump, in a mixed-block note, and after webpage paste | Not tested | The #1351 screenshots are `artifacts/editbreak/freshproof-doubleclick.png` and `freshproof-doubleclick-again.png`. The #1352 screenshots are `long-scroll-page-down.png`, `long-scroll-repro2-after.png`, `mixed-blocks-page-down.png`, `paste-webpage-result2.png`, and `contents-rail-section10.png`. All test screenshots and `findings.md` remain in the worktree under `artifacts/editbreak/`; they are not committed. ### Coverage | Area | Result | Notes | | --- | --- | --- | | Disposable instance and seed data | Yes | Built production web assets and a release server. Seeded short notes, mixed block types, a 2,000-block note, and RTL, emoji ZWJ, combining-mark, and CJK text through the real API. | | Basic editing and formatting | Partial | Typed and edited text, split a paragraph, used headings, bold/italic, list indent/outdent, and checklist controls. Undo and redo worked for formatting and webpage paste. Every block conversion and all boundary merge cases were not covered. | | Slash menu and block types | Partial | Opened the slash menu and inserted common block types. Viewed headings, quotes, callout, lists, checklist, table, code, separator, tag, and link preview. I did not exercise every type at the start, middle, and end of a note. | | Links | Partial | Created a link with the toolbar, undid it, and viewed a bare-URL preview. Link editing/removal, selected-text URL paste, adjacent links, and wrapped links were not covered. | | Selection | Partial | Selected and copied a web page with Cmd+A. Cross-block selection, table/code selection, triple-click, and drag selection were not conclusively tested. | | Paste | Partial | Copied the Example Domain page in Chrome and pasted its multilingual paragraphs into a fresh note; undo and redo worked. Safari, TextEdit rich text, Markdown, tabs, and image clipboard paste were not tested. | | Drag and drop | No | Block reordering, text drag, Finder image drag, and touch drag were not tested. | | Long note | Partial | Scrolled the 2,000-block note and jumped to Section 10 using the contents rail. The jump reached `#section-10`. I did not measure typing latency or run a performance profile. | | macOS-specific editing | Partial | Tested on macOS in Chrome, including toolbar/keyboard editing and undo/redo. Option+E accents, emoji picker, spellcheck/autocorrect, text substitutions, resize while editing, and two windows on one note were not tested. | | Browser coverage | Partial | Google Chrome 154.0.8037.58 on macOS 27.0 (26A428) was tested. Safari 27.0 setup stopped at the first-account passkey prompt because iCloud Keychain confirmation was unavailable on the lab profile. | | Width and theme coverage | Partial | Captured real macOS Chrome at 500 px (narrow-window proxy), 820 px, and desktop. The macOS window manager clamped a 390 px request to 500 px. Dark mode was not tested. | ### Build and cleanup Web production build output: ```text Compressed 917 static variants; saved 21486598 bytes. ``` Release server build output: ```text Finished release profile [optimized] target(s) in 28m 46s ``` No Rust or web test gates were run because this was discovery only and no product code changed. `cargo clean` output: ```text Removed 0 files ``` The local server and reverse SSH tunnel are stopped. The worktree `target/`, `apps/web/build`, and `apps/web/.svelte-kit` outputs are removed. A generated file in the Mac lab account was moved to Bin; macOS TCC denied permanent deletion through SSH, so I left unrelated Bin contents untouched. ### Decisions No product design decisions were needed. For narrow-width evidence, I used 500 px after the macOS window manager refused 390 px and clamped the window to 500 px.
Author
Owner

Starting round 2 on job/editbreak-1334. Initial worktree HEAD: 3601719b80a39f712daf07b37879b22929dfffa0. I am merging the requested origin/dev production revision before rebuilding. This round is discovery only; no product code changes.

Starting round 2 on `job/editbreak-1334`. Initial worktree HEAD: `3601719b80a39f712daf07b37879b22929dfffa0`. I am merging the requested `origin/dev` production revision before rebuilding. This round is discovery only; no product code changes.
Author
Owner

Progress update: merged origin/dev at 0419170fe456b58614befcb12d9c9d255118f1c0. The release server build is running in /mnt/hdd/targets/jobs/editbreak-1334; the web build follows it. Safari is open on the first-account setup flow. Its visible copy says the account uses a passkey and has no password, so I am trying that real macOS path before using Chrome as fallback. No product files have changed.

Progress update: merged `origin/dev` at `0419170fe456b58614befcb12d9c9d255118f1c0`. The release server build is running in `/mnt/hdd/targets/jobs/editbreak-1334`; the web build follows it. Safari is open on the first-account setup flow. Its visible copy says the account uses a passkey and has no password, so I am trying that real macOS path before using Chrome as fallback. No product files have changed.
Author
Owner

Progress update: the release build is still running and has moved into server crates (axum-core and related dependencies); no build error is reported. The Mac lock is released between brief inspection sessions. I have not reached the Notes editor yet and no product files have changed. The next step is the web build, then the Safari-first passkey setup and editor coverage.

Progress update: the release build is still running and has moved into server crates (`axum-core` and related dependencies); no build error is reported. The Mac lock is released between brief inspection sessions. I have not reached the Notes editor yet and no product files have changed. The next step is the web build, then the Safari-first passkey setup and editor coverage.
Author
Owner

Progress update: the server build is through calternal-media and is compiling the remaining media, Notes and server dependencies. The build has not failed. No product files have changed; web build and real Mac editor coverage are still pending.

Progress update: the server build is through `calternal-media` and is compiling the remaining media, Notes and server dependencies. The build has not failed. No product files have changed; web build and real Mac editor coverage are still pending.
Author
Owner

Round 2 status: origin/dev is merged at 0419170fe4. The required release server build is still compiling dependency crates in /mnt/hdd/targets/jobs/editbreak-1334; no build error has appeared. The Safari account screen is passkey-only and exposes no password field, so I will try the real macOS passkey flow and use Chrome only if Safari still blocks entry. No Notes editor coverage or findings yet; no product files changed.

Round 2 status: origin/dev is merged at 0419170fe456b58614befcb12d9c9d255118f1c0. The required release server build is still compiling dependency crates in /mnt/hdd/targets/jobs/editbreak-1334; no build error has appeared. The Safari account screen is passkey-only and exposes no password field, so I will try the real macOS passkey flow and use Chrome only if Safari still blocks entry. No Notes editor coverage or findings yet; no product files changed.
Author
Owner

Round 2 build status: bun run build completed successfully on the merged worktree; final output: Compressed 917 static variants; saved 21487291 bytes. The release server build compiled calternal-server and is linking its remaining plugin dependencies. No editor findings yet and no product files changed.

Round 2 build status: `bun run build` completed successfully on the merged worktree; final output: `Compressed 917 static variants; saved 21487291 bytes.` The release server build compiled `calternal-server` and is linking its remaining plugin dependencies. No editor findings yet and no product files changed.
Author
Owner

Round 2 status: the web production build passed. The release server build continues and is compiling the AI plugin and remaining dependencies; active rustc processes show it is still working. No Notes-editor findings yet because the local server is not ready. The tracked worktree remains unchanged apart from the required origin/dev merge.

Round 2 status: the web production build passed. The release server build continues and is compiling the AI plugin and remaining dependencies; active `rustc` processes show it is still working. No Notes-editor findings yet because the local server is not ready. The tracked worktree remains unchanged apart from the required origin/dev merge.
Author
Owner

Round 2 build status: the required release server build passed. Exact final output: Finished release profile [optimized] target(s) in 87m 35s. The web production build also passed; final output: Compressed 917 static variants; saved 21487291 bytes. I am starting the isolated local test server and then beginning Safari-first macOS CUA coverage. No product code changed.

Round 2 build status: the required release server build passed. Exact final output: `Finished `release` profile [optimized] target(s) in 87m 35s`. The web production build also passed; final output: `Compressed 917 static variants; saved 21487291 bytes.` I am starting the isolated local test server and then beginning Safari-first macOS CUA coverage. No product code changed.
Author
Owner

Safari 27.0 on macOS 27.0 is blocked at the first-account setup screen, Step 1 of 2: passkey / Create your passkey. The screen states: “This is the first account on this server, so it becomes the owner. A passkey signs you in with Face ID, Touch ID, or your screen lock. There is no password.” Clicking Create passkey left the same step; Escape also returned to it. The setup URL contains a one-time token, so I did not capture that screen. I am continuing in Chrome per the job brief.

Safari 27.0 on macOS 27.0 is blocked at the first-account setup screen, `Step 1 of 2: passkey` / `Create your passkey`. The screen states: “This is the first account on this server, so it becomes the owner. A passkey signs you in with Face ID, Touch ID, or your screen lock. There is no password.” Clicking Create passkey left the same step; Escape also returned to it. The setup URL contains a one-time token, so I did not capture that screen. I am continuing in Chrome per the job brief.
Author
Owner

Round 2 discovery is complete. Head: 0419170fe456b58614befcb12d9c9d255118f1c0 after merging origin/dev; no product code changed and no commit was made.

Issues filed: none. I did not reproduce a new product defect twice.

Coverage: On macOS 27.0 / Chrome 154.0.8037.98, I selected text, used Cmd+K, accepted a URL prompt, and saw the text underlined (artifacts/editbreak/round2/link-created.png). The local server stopped during the test and showed Reconnecting… your changes are kept, so I did not verify persistence. Toolbar activation via CUA accessibility was inconclusive; I did not file it as a defect. URL paste/edit/remove/undo/redo and adjacent/wrapped/list/heading/table links remain untested. Safari/TextEdit/Notes/Markdown paste, cross-block/table/code selection, block or Finder drag, macOS substitutions, block-boundary keys, dark mode, and narrow window remain untested.

Safari 27.0 showed Create your passkey; Cancel and Escape did not reveal password sign-in. I did not capture the setup screen because its URL contained a one-time token. I continued in the isolated Chrome profile.

Build output:

  • Finished release profile [optimized] target(s) in 87m 35s
  • Compressed 917 static variants; saved 21487291 bytes.

Gates/tests were not run because this was discovery only. cargo clean: Removed 9260 files, 3.4GiB total. The local server stopped with LAB_STOPPING; the Mac screenshot server and SSH tunnel were stopped; build output was removed.

Reports: artifacts/editbreak/findings.md and artifacts/editbreak/final-report.md.

Round 2 discovery is complete. Head: `0419170fe456b58614befcb12d9c9d255118f1c0` after merging `origin/dev`; no product code changed and no commit was made. Issues filed: none. I did not reproduce a new product defect twice. Coverage: On macOS 27.0 / Chrome 154.0.8037.98, I selected text, used Cmd+K, accepted a URL prompt, and saw the text underlined (`artifacts/editbreak/round2/link-created.png`). The local server stopped during the test and showed `Reconnecting… your changes are kept`, so I did not verify persistence. Toolbar activation via CUA accessibility was inconclusive; I did not file it as a defect. URL paste/edit/remove/undo/redo and adjacent/wrapped/list/heading/table links remain untested. Safari/TextEdit/Notes/Markdown paste, cross-block/table/code selection, block or Finder drag, macOS substitutions, block-boundary keys, dark mode, and narrow window remain untested. Safari 27.0 showed `Create your passkey`; Cancel and Escape did not reveal password sign-in. I did not capture the setup screen because its URL contained a one-time token. I continued in the isolated Chrome profile. Build output: - `Finished `release` profile [optimized] target(s) in 87m 35s` - `Compressed 917 static variants; saved 21487291 bytes.` Gates/tests were not run because this was discovery only. `cargo clean`: `Removed 9260 files, 3.4GiB total`. The local server stopped with `LAB_STOPPING`; the Mac screenshot server and SSH tunnel were stopped; build output was removed. Reports: `artifacts/editbreak/findings.md` and `artifacts/editbreak/final-report.md`.
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#1334
No description provided.