Bug bash round 3: notes #1396

Open
opened 2026-10-07 19:01:19 +00:00 by kayg · 6 comments
Owner

AREA: Notes and the block editor, tested on the real macOS VM in Safari as well as Chromium/WebKit. The owner says the block editor "breaks in many instances" (examples: duplicated link icons, deleted blocks coming back after a quick keystroke #1384). Use the macOS VM (calternal@10.69.69.21 via netbird ssh --no-browser calternal@10.69.69.21; cua-driver for computer use; reach your local server with an ssh -R tunnel; VNC creds may be loaded into env from ~/calternal-private/macvm/vnc.env but never printed). Flows: typing at speed, IME/dead keys/emoji, paste from Safari/Pages/Notes.app/Word-like HTML and Markdown, links (Markdown, bare URL, wikilink, autolink), headings, lists and nested lists, tasks, tables, code blocks, images and attachments, drag handles and block menus, undo/redo across all of these, slash menu, multi-block selection, Copy link to block, two tabs editing the same Note, reload mid-edit, very large Notes.

Tracking issue for the 2026-10-08 night bug bash round 3. Every bug found gets its own issue, linked here.

AREA: Notes and the block editor, tested on the real macOS VM in Safari as well as Chromium/WebKit. The owner says the block editor "breaks in many instances" (examples: duplicated link icons, deleted blocks coming back after a quick keystroke #1384). Use the macOS VM (calternal@10.69.69.21 via `netbird ssh --no-browser calternal@10.69.69.21`; cua-driver for computer use; reach your local server with an ssh -R tunnel; VNC creds may be loaded into env from ~/calternal-private/macvm/vnc.env but never printed). Flows: typing at speed, IME/dead keys/emoji, paste from Safari/Pages/Notes.app/Word-like HTML and Markdown, links (Markdown, bare URL, wikilink, autolink), headings, lists and nested lists, tasks, tables, code blocks, images and attachments, drag handles and block menus, undo/redo across all of these, slash menu, multi-block selection, Copy link to block, two tabs editing the same Note, reload mid-edit, very large Notes. Tracking issue for the 2026-10-08 night bug bash round 3. Every bug found gets its own issue, linked here.
Author
Owner

Starting round 3 on branch job/bash3-notes, based at 0419170fe4. I am reviewing the earlier Notes bash coverage, then will test the remaining editor flows on the local app and Mac VM. I will report every new issue here with its issue number and evidence.

Starting round 3 on branch job/bash3-notes, based at 0419170fe456b58614befcb12d9c9d255118f1c0. I am reviewing the earlier Notes bash coverage, then will test the remaining editor flows on the local app and Mac VM. I will report every new issue here with its issue number and evidence.
Author
Owner

Finding: #1431 (minor) — pasted plain-text Markdown stays literal in one paragraph instead of creating heading, task and code blocks. Reproduced in a real local production app: the clipboard matched the Markdown; the editor rendered zero semantic headings and task checkboxes; the saved Note retained the Markdown markers as paragraph text. Safari-style rich HTML paste in the same run preserved its block structure. Screenshot: artifacts/bash3-notes/markdown-paste-raw-1440-light.png. The behavior is not specified in DESIGN §9; I recorded the simplest expected behavior in #1431 and am checking whether the fix belongs inside the Notes editor area.

Finding: #1431 (minor) — pasted plain-text Markdown stays literal in one paragraph instead of creating heading, task and code blocks. Reproduced in a real local production app: the clipboard matched the Markdown; the editor rendered zero semantic headings and task checkboxes; the saved Note retained the Markdown markers as paragraph text. Safari-style rich HTML paste in the same run preserved its block structure. Screenshot: artifacts/bash3-notes/markdown-paste-raw-1440-light.png. The behavior is not specified in DESIGN §9; I recorded the simplest expected behavior in #1431 and am checking whether the fix belongs inside the Notes editor area.
Author
Owner

Found and filed #1433: in a Note, clicking the accessible task checkbox saves - [x], but no Undo action appears and ⌘Z leaves it checked. Reproduction and the 1× production capture are attached at artifacts/bash3-notes/task-checkbox-no-undo-1440-light.png. #1229 covers the separate Tasks view; the Note task node is shared editor core, so this job filed only.

Found and filed #1433: in a Note, clicking the accessible task checkbox saves `- [x]`, but no Undo action appears and ⌘Z leaves it checked. Reproduction and the 1× production capture are attached at `artifacts/bash3-notes/task-checkbox-no-undo-1440-light.png`. #1229 covers the separate Tasks view; the Note task node is shared editor core, so this job filed only.
Author
Owner

Found and filed #1434: in a ready Note editor's reading mode, a pointer click on the visible task checkbox leaves its state and saved Markdown unchanged. The control is exposed as enabled; Space toggles and saves, and a pointer click works after entering text-edit mode. On the 390 px view its target is 16 × 16 px. Screenshots are in artifacts/bash3-notes/task-checkbox-pointer-noop-{1440,390}-light.png. This is in the shared editor task node, so this job filed only.

Found and filed #1434: in a ready Note editor's reading mode, a pointer click on the visible task checkbox leaves its state and saved Markdown unchanged. The control is exposed as enabled; Space toggles and saves, and a pointer click works after entering text-edit mode. On the 390 px view its target is 16 × 16 px. Screenshots are in `artifacts/bash3-notes/task-checkbox-pointer-noop-{1440,390}-light.png`. This is in the shared editor task node, so this job filed only.
Author
Owner

Additional major finding filed on the existing shared editor issue #1371: Copy link to a heading is followed by delayed corruption of adjacent autolink and wikilink Markdown. A clean production Note reproduces twice; the same-Note before/after screenshots and API counts are now in #1371. This job does not edit the shared editor core.

Additional major finding filed on the existing shared editor issue #1371: Copy link to a heading is followed by delayed corruption of adjacent autolink and wikilink Markdown. A clean production Note reproduces twice; the same-Note before/after screenshots and API counts are now in #1371. This job does not edit the shared editor core.
Author
Owner

Round 3 report

Branch: job/bash3-notes
Base: merged origin/dev once before final gates
Head: d395b6e25da20d8c67b8b9fc1a593b813939c8a7
Files changed: none. No source or test files changed, and no commit was made. The confirmed defects are in shared editor core, which this job must report without editing. The working tree is clean.

Findings

Issue Symptom Severity Result
#1431 Plain-text multi-block Markdown paste stays literal instead of creating blocks. Rich HTML paste preserves structure. Minor Filed only; shared editor core.
#1433 In text-edit mode, Space toggles a task and saves it, but Cmd+Z does not undo the toggle and no Undo action appears. Minor Filed only; shared editor core.
#1434 In reading mode, pointer/touch activation of a task checkbox does nothing. At 390 px the hit target is 16×16 px. Space works and saves. Major Filed only; shared editor core.
#1371 After “Copy link to Links”, the saved Note body becomes corrupted after about 1–2 seconds: adjacent paragraphs merge and autolink/wikilink content duplicates. Reproduced on two fresh Notes. Major Added evidence to the existing issue to avoid filing a duplicate; shared editor core.
#1384 Immediate key after block-menu deletion does not resurrect the block; Undo restores once, and re-delete survives reload. — Targeted production flow passed; no new issue.

Evidence images are in artifacts/bash3-notes/. They are ignored local artifacts and were not attached: scripts/fj issue comment supports a body file but has no attachment option. The affected core is outside this job's edit scope.

Coverage

The six matrix-{390,820,1440}-{paper,noir}-mac.png captures cover 390/820/1440 px in light/dark with macOS platform emulation. Interactive flows below were mostly exercised in Chromium at 1440 px, light theme; only the task pointer/touch flow was specifically checked at 390 px. These captures do not count as real macOS rendering.

Flow Status and input used Width/theme; gaps or findings
Typing at speed Tested; rapid keyboard typing and save. 1440/light.
IME, dead keys, emoji Partial; emoji ZWJ and combining characters typed. Native IME/dead-key composition not tested. 1440/light.
Paste from Safari/Pages/Notes/Word-like HTML and Markdown Partial; synthetic Safari-style rich HTML clipboard paste, save, Undo and Redo passed. Plain Markdown paste reproduced #1431. Native source apps were not tested. 1440/light, keyboard.
Markdown links, bare URLs, wikilinks, autolinks Rendered and copied. Delayed body corruption after Copy link to Links reproduced and reported on #1371. 1440/light.
Headings Slash-menu Heading 2 insertion and block Copy link navigation passed; the deep link restored the hash and anchor flash. 1440/light, keyboard.
Lists and nested lists Rich HTML paste and rendering checked. 1440/light.
Tasks Space toggle/save checked; pointer no-op and missing Undo filed as #1434/#1433. 1440/light keyboard; 390/light pointer and touch.
Tables Rendered a GFM table with RTL content. 1440/light.
Code blocks Rich HTML paste and rendering checked. 1440/light.
Images and attachments Seeded attachment loaded and rendered. 1440/light.
Drag handles and block menus Block-menu delete/Undo/reload passed. Keyboard drag-handle grab/release passed. Pointer drag reordered once, but repeat runs were inconclusive. 1440/light; pointer drag needs a stable rerun.
Undo/redo across these flows Partial; rich HTML paste Undo/Redo and block-delete Undo passed. Task checkbox Undo failed (#1433); drag Undo was inconclusive. 1440/light, keyboard.
Slash menu Keyboard insertion of Heading 2 passed. 1440/light.
Multi-block selection Range selection and Shift+F10 block menu checked. 1440/light, keyboard.
Copy link to block Stable block link copied; opening it restored the exact heading anchor. Delayed corruption after Copy link to Links is tracked on #1371. 1440/light.
Two tabs editing one Note Peer update appeared in the other tab and remained after reload. 1440/light.
Reload mid-edit Typed marker survived reload and appeared in the API body. 1440/light.
Very large Notes 5,000-paragraph Note loaded; selection, offline/online, and five-minute use were profiled. 1440/light.
Real macOS Safari and native paste apps Not tested. The Mac VM reported no main display. WebKit was exercised through an HTTPS local front; platform emulation is not Safari-on-macOS evidence. No real Mac rendering.
Full accessibility and navigation matrix Partial. Checkbox name/role/state, keyboard focus/menu flows, Escape/Enter, and screenshots were checked. Full Tab order, screen-reader pass, reduced-motion matrix, browser back/forward, and every flow at every width/theme/input mode were not completed. See gaps above.

Performance

Local production UI and shared prebuilt server; not measured on the perf VM. A 5,000-paragraph Note had 5,001 paragraphs and 8,310 DOM nodes. Ready time was 7,669 ms, post-ready JS heap was about 50.3 MiB, and 21 long tasks totaled 6,846 ms. In the five-minute scroll-and-select run, heap ranged from about 30–60 MiB and the cumulative long-task count reached 43 / 11,186 ms. Distant scroll-plus-select samples were 390.9–1,505.5 ms; these include programmatic scrolling and are not warm adjacent-block selection timings. Host load was 26.21 / 28.31 / 24.19. The §59 baseline is 1,874 ms for 900 blocks, so these different sizes and loaded local host are not a direct comparison. The profile was also reported on #1392.

Gates

cargo fmt --check exited 0 with no output. No Rust code changed, so crate clippy/test were not run. Full bun run test and the full e2e/adversarial suites are merge-round work under the verification policy; no web source changed, so no focused Vitest file was run.

Captured gate output (the tool truncated the very large perf-lint exception listing):

NOTE Bun skipped 1 lock package(s) not installed in this production environment
PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages
perf-lint: PASS; 0 violations; 22544 scoped exceptions
User browser caches use userStorage; only documented device/public-link exceptions remain.
Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css.
Text sizes and UI shape values use shared role tokens.
Keyboard focus rings use the shared focus tokens.
UI transitions and animation options use shared motion tokens or documented exceptions.
svelte-check found 0 errors and 4 warnings in 2 files

bun run check exited 0. The four warnings are existing unused CSS selectors in apps/web/src/lib/mail/MailView.svelte and apps/web/src/routes/money/[budget]/[month]/+page.svelte.

UX gaps left

The four findings above remain unfixed because they are in shared editor core. Real macOS Safari, native source-app paste, native IME/dead keys, reliable pointer drag/drag Undo, and the full accessibility/reduced-motion/back-forward matrix remain unverified. There were no UX gaps closed in code in this job.

Decisions

DESIGN.md does not state whether plain-text multi-block Markdown paste should parse as blocks. I recorded the simplest behavior in #1431: parse explicit multi-block Markdown structure while leaving ordinary plain text unchanged. No other design choice required a product decision.

## Round 3 report **Branch:** `job/bash3-notes` **Base:** merged `origin/dev` once before final gates **Head:** `d395b6e25da20d8c67b8b9fc1a593b813939c8a7` **Files changed:** none. No source or test files changed, and no commit was made. The confirmed defects are in shared editor core, which this job must report without editing. The working tree is clean. ### Findings | Issue | Symptom | Severity | Result | |---|---|---:|---| | #1431 | Plain-text multi-block Markdown paste stays literal instead of creating blocks. Rich HTML paste preserves structure. | Minor | Filed only; shared editor core. | | #1433 | In text-edit mode, Space toggles a task and saves it, but Cmd+Z does not undo the toggle and no Undo action appears. | Minor | Filed only; shared editor core. | | #1434 | In reading mode, pointer/touch activation of a task checkbox does nothing. At 390 px the hit target is 16×16 px. Space works and saves. | Major | Filed only; shared editor core. | | #1371 | After “Copy link to Links”, the saved Note body becomes corrupted after about 1–2 seconds: adjacent paragraphs merge and autolink/wikilink content duplicates. Reproduced on two fresh Notes. | Major | Added evidence to the existing issue to avoid filing a duplicate; shared editor core. | | #1384 | Immediate key after block-menu deletion does not resurrect the block; Undo restores once, and re-delete survives reload. | — | Targeted production flow passed; no new issue. | Evidence images are in `artifacts/bash3-notes/`. They are ignored local artifacts and were not attached: `scripts/fj issue comment` supports a body file but has no attachment option. The affected core is outside this job's edit scope. ### Coverage The six `matrix-{390,820,1440}-{paper,noir}-mac.png` captures cover 390/820/1440 px in light/dark with macOS platform emulation. Interactive flows below were mostly exercised in Chromium at 1440 px, light theme; only the task pointer/touch flow was specifically checked at 390 px. These captures do not count as real macOS rendering. | Flow | Status and input used | Width/theme; gaps or findings | |---|---|---| | Typing at speed | Tested; rapid keyboard typing and save. | 1440/light. | | IME, dead keys, emoji | Partial; emoji ZWJ and combining characters typed. Native IME/dead-key composition not tested. | 1440/light. | | Paste from Safari/Pages/Notes/Word-like HTML and Markdown | Partial; synthetic Safari-style rich HTML clipboard paste, save, Undo and Redo passed. Plain Markdown paste reproduced #1431. Native source apps were not tested. | 1440/light, keyboard. | | Markdown links, bare URLs, wikilinks, autolinks | Rendered and copied. Delayed body corruption after Copy link to Links reproduced and reported on #1371. | 1440/light. | | Headings | Slash-menu Heading 2 insertion and block Copy link navigation passed; the deep link restored the hash and anchor flash. | 1440/light, keyboard. | | Lists and nested lists | Rich HTML paste and rendering checked. | 1440/light. | | Tasks | Space toggle/save checked; pointer no-op and missing Undo filed as #1434/#1433. | 1440/light keyboard; 390/light pointer and touch. | | Tables | Rendered a GFM table with RTL content. | 1440/light. | | Code blocks | Rich HTML paste and rendering checked. | 1440/light. | | Images and attachments | Seeded attachment loaded and rendered. | 1440/light. | | Drag handles and block menus | Block-menu delete/Undo/reload passed. Keyboard drag-handle grab/release passed. Pointer drag reordered once, but repeat runs were inconclusive. | 1440/light; pointer drag needs a stable rerun. | | Undo/redo across these flows | Partial; rich HTML paste Undo/Redo and block-delete Undo passed. Task checkbox Undo failed (#1433); drag Undo was inconclusive. | 1440/light, keyboard. | | Slash menu | Keyboard insertion of Heading 2 passed. | 1440/light. | | Multi-block selection | Range selection and Shift+F10 block menu checked. | 1440/light, keyboard. | | Copy link to block | Stable block link copied; opening it restored the exact heading anchor. Delayed corruption after Copy link to Links is tracked on #1371. | 1440/light. | | Two tabs editing one Note | Peer update appeared in the other tab and remained after reload. | 1440/light. | | Reload mid-edit | Typed marker survived reload and appeared in the API body. | 1440/light. | | Very large Notes | 5,000-paragraph Note loaded; selection, offline/online, and five-minute use were profiled. | 1440/light. | | Real macOS Safari and native paste apps | Not tested. The Mac VM reported no main display. WebKit was exercised through an HTTPS local front; platform emulation is not Safari-on-macOS evidence. | No real Mac rendering. | | Full accessibility and navigation matrix | Partial. Checkbox name/role/state, keyboard focus/menu flows, Escape/Enter, and screenshots were checked. Full Tab order, screen-reader pass, reduced-motion matrix, browser back/forward, and every flow at every width/theme/input mode were not completed. | See gaps above. | ### Performance Local production UI and shared prebuilt server; not measured on the perf VM. A 5,000-paragraph Note had 5,001 paragraphs and 8,310 DOM nodes. Ready time was 7,669 ms, post-ready JS heap was about 50.3 MiB, and 21 long tasks totaled 6,846 ms. In the five-minute scroll-and-select run, heap ranged from about 30–60 MiB and the cumulative long-task count reached 43 / 11,186 ms. Distant scroll-plus-select samples were 390.9–1,505.5 ms; these include programmatic scrolling and are not warm adjacent-block selection timings. Host load was 26.21 / 28.31 / 24.19. The §59 baseline is 1,874 ms for 900 blocks, so these different sizes and loaded local host are not a direct comparison. The profile was also reported on #1392. ### Gates `cargo fmt --check` exited 0 with no output. No Rust code changed, so crate clippy/test were not run. Full `bun run test` and the full e2e/adversarial suites are merge-round work under the verification policy; no web source changed, so no focused Vitest file was run. Captured gate output (the tool truncated the very large perf-lint exception listing): ```text NOTE Bun skipped 1 lock package(s) not installed in this production environment PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages perf-lint: PASS; 0 violations; 22544 scoped exceptions User browser caches use userStorage; only documented device/public-link exceptions remain. Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css. Text sizes and UI shape values use shared role tokens. Keyboard focus rings use the shared focus tokens. UI transitions and animation options use shared motion tokens or documented exceptions. svelte-check found 0 errors and 4 warnings in 2 files ``` `bun run check` exited 0. The four warnings are existing unused CSS selectors in `apps/web/src/lib/mail/MailView.svelte` and `apps/web/src/routes/money/[budget]/[month]/+page.svelte`. ### UX gaps left The four findings above remain unfixed because they are in shared editor core. Real macOS Safari, native source-app paste, native IME/dead keys, reliable pointer drag/drag Undo, and the full accessibility/reduced-motion/back-forward matrix remain unverified. There were no UX gaps closed in code in this job. ### Decisions DESIGN.md does not state whether plain-text multi-block Markdown paste should parse as blocks. I recorded the simplest behavior in #1431: parse explicit multi-block Markdown structure while leaving ordinary plain text unchanged. No other design choice required a product decision.
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#1396
No description provided.