Bug bash: notes #1216

Open
opened 2026-10-06 19:01:24 +00:00 by kayg · 15 comments
Owner

AREA: Notes Tab UI (not the collab core). Note list, folders, create/rename/move/delete/Hide, the block editor: slash menu, formatting toolbar, block hover actions, drag blocks, tables, code, checklists, links and link previews, images/attachments, headings/TOC rail, tags in notes, paste from web/Word/Markdown, undo/redo, very long notes (5k blocks) scroll and typing latency, Copy link for notes/headings/blocks. Known open, do not duplicate: #1209 (status row and lone '>'), #1210 (toolbar glass), #1197 (collab data loss).

Tracking issue for the 2026-10-07 bug bash. Every bug found gets its own issue, linked here.

AREA: Notes Tab UI (not the collab core). Note list, folders, create/rename/move/delete/Hide, the block editor: slash menu, formatting toolbar, block hover actions, drag blocks, tables, code, checklists, links and link previews, images/attachments, headings/TOC rail, tags in notes, paste from web/Word/Markdown, undo/redo, very long notes (5k blocks) scroll and typing latency, Copy link for notes/headings/blocks. Known open, do not duplicate: #1209 (status row and lone '>'), #1210 (toolbar glass), #1197 (collab data loss). Tracking issue for the 2026-10-07 bug bash. Every bug found gets its own issue, linked here.
Author
Owner

Started the Notes Tab UI bug bash on branch job/bash-notes, based on origin/dev at ff53d7b8b4. I am first reproducing the reported duplicate note title, then I will probe the rest of the owned area.

Started the Notes Tab UI bug bash on branch job/bash-notes, based on origin/dev at ff53d7b8b4da5a21f862d57dcc3496f8c019f647. I am first reproducing the reported duplicate note title, then I will probe the rest of the owned area.
Author
Owner

Lead check — duplicate title in the #1209 WebKit screenshots

I inspected the supplied new-cold-connecting and existing-cold-loaded screenshots and traced their fixtures in /home/kayg/Developer/calternal-wt/notestatus-1209/apps/web/e2e/notes.mjs. The fixture creates Untitled with body # Untitled\n\n, and the existing fixture similarly repeats its title in Markdown. build_standalone_note prepends the canonical # {title} heading when the submitted body is non-empty, so those API fixtures contain duplicate H1s by construction.

The real Notes UI New note action in apps/web/src/lib/notes/newActions.ts submits the title without a body. A local production-server Playwright probe checked the saved API Markdown and rendered title for a UI-created Note and a separately saved Note; each had one H1 and one visible title. Chromium passed at 390/820/1440 px in light/dark with macOS platform emulation. I am running the same check in WebKit now.

This lead does not reproduce as an application bug. The screenshots reflect title-bearing test fixture content, so I have not opened a product bug or changed Notes behavior.

Lead check — duplicate title in the #1209 WebKit screenshots I inspected the supplied `new-cold-connecting` and `existing-cold-loaded` screenshots and traced their fixtures in `/home/kayg/Developer/calternal-wt/notestatus-1209/apps/web/e2e/notes.mjs`. The fixture creates `Untitled` with body `# Untitled\n\n`, and the existing fixture similarly repeats its title in Markdown. `build_standalone_note` prepends the canonical `# {title}` heading when the submitted body is non-empty, so those API fixtures contain duplicate H1s by construction. The real Notes UI New note action in `apps/web/src/lib/notes/newActions.ts` submits the title without a body. A local production-server Playwright probe checked the saved API Markdown and rendered title for a UI-created Note and a separately saved Note; each had one H1 and one visible title. Chromium passed at 390/820/1440 px in light/dark with macOS platform emulation. I am running the same check in WebKit now. This lead does not reproduce as an application bug. The screenshots reflect title-bearing test fixture content, so I have not opened a product bug or changed Notes behavior.
Author
Owner

Finding #2 — #1237 filed (major): Files Markdown from a Plugin folder resolves by stable item ID and returns real body content, but /f/<item-id>/edit ends in “This note is not here anymore.” The production trace shows the path: room socket closing and the Notes detail request returning 404. Evidence screenshot: artifacts/bash-notes/identity-gate-debug.png. I did not change the shared file identity/collaboration contract; that is outside Notes Tab UI ownership.

Finding #2 — [#1237](https://git.kayg.org/kayg/calternal/issues/1237) filed (major): Files Markdown from a Plugin folder resolves by stable item ID and returns real body content, but `/f/<item-id>/edit` ends in “This note is not here anymore.” The production trace shows the `path:` room socket closing and the Notes detail request returning 404. Evidence screenshot: `artifacts/bash-notes/identity-gate-debug.png`. I did not change the shared file identity/collaboration contract; that is outside Notes Tab UI ownership.
Author
Owner

Lead check update: WebKit passed the same production-server probe. Across Chromium and WebKit, the UI-created New note and a saved Note each had one canonical saved H1 and one visible title at 390, 820 and 1440 px in light and dark, with macOS platform emulation. Screenshot set: artifacts/bash-notes/title-lead/. The duplicate text in the supplied screenshots is fixture Markdown, not a duplicate inserted by New note.

Lead check update: WebKit passed the same production-server probe. Across Chromium and WebKit, the UI-created New note and a saved Note each had one canonical saved H1 and one visible title at 390, 820 and 1440 px in light and dark, with macOS platform emulation. Screenshot set: `artifacts/bash-notes/title-lead/`. The duplicate text in the supplied screenshots is fixture Markdown, not a duplicate inserted by New note.
Author
Owner

Finding #3 — reproduced existing open issue #661 (no duplicate filed): opening a Task Note during the 390 px light read-only check preserved bytes and mtime but replaced the file inode and changed its Files ETag. The local evidence is now on #661. This crosses the shared Note writer/collaboration path, so I did not modify it.

Finding #3 — reproduced existing open issue #661 (no duplicate filed): opening a Task Note during the 390 px light read-only check preserved bytes and mtime but replaced the file inode and changed its Files ETag. The local evidence is now on #661. This crosses the shared Note writer/collaboration path, so I did not modify it.
Author
Owner

Evidence for #1237 is attached to that issue: https://git.kayg.org/attachments/8d05cc9c-fd51-46a5-9783-2847b6c66cc1 (390 px, light, macOS platform emulation).

Evidence for #1237 is attached to that issue: https://git.kayg.org/attachments/8d05cc9c-fd51-46a5-9783-2847b6c66cc1 (390 px, light, macOS platform emulation).
Author
Owner

Bash report

Branch: job/bash-notes
Head: b8b9d72753fa1888ca1086ffe3761233ee59edd9

Findings

Ref Symptom Severity Result
#1216 lead Note title appeared twice None; false positive The UI-created Note stores one title H1. The older screenshot fixture itself supplies # Untitled as body content, so its title and body heading repeat. Added a browser regression probe; no product fix was needed.
#1237 Files cannot open a valid Plugin-owned Markdown file in the block editor Major Filed only. Stable file identity/collaboration contract is outside this UI area.
#661 Opening an untouched Task Note changes its inode and Files ETag although bytes and nanosecond mtime stay equal Major Reproduced and reported on the existing issue. Shared writer/collaboration behavior is outside this UI area.

The block-selection probe passed its initial selection checks under Bun, then stopped when Sharp could not load. A Node rerun timed out once on single-click selection. This is inconclusive and remains unfiled; the block-selection path needs a stable rerun.

Change and UX gaps

Added apps/web/e2e/notes-title-1216.mjs. It creates one Note through the real UI and one through the authenticated API, then checks saved Markdown and the rendered title in Chromium and WebKit at 390, 820 and 1440 px, in light and dark schemes, with macOS platform emulation. The 24 screenshots are attached: title probe screenshots.

UX gap closed: the duplicate-title lead is now covered by a real-browser regression check, including accessible naming of the New note action. No product UI defect was found for this lead. UX gaps left: #1237 and #661 remain; the block-selection result is inconclusive; the full Notes interaction matrix was not completed. Known issues #1209, #1210 and #1197 were not duplicated.

Performance

No benchmark numbers were collected. Current verification policy reserves measurements for the locked perf VM and performance jobs. The existing Notes editor profile can be run in the merge round with:

perf-run calternal bash-notes 30 -- env PERF_LOCATION=perf-test-69-63 node bench/notes-editor-series.mjs

It measures editor readiness, typing-to-paint, selection and hover paths, CPU and memory for its 64- and 900-block cases. It does not cover the requested 5k-block scroll/typing case or a five-minute memory soak; add those cases before treating Notes-area performance coverage as complete.

Gates

git fetch origin && git merge origin/dev: Already up to date.

cargo fmt --check: passed, no output. No Rust files changed, so no crate clippy or tests ran.

cd apps/web && bun run check:

perf-lint: PASS; 0 violations; 22615 scoped exceptions
svelte-check found 0 errors and 2 warnings in 2 files

The two warnings are existing empty CSS rules in AttachmentDeck.svelte and AgendaList.svelte.

cd apps/web && bun run test:

 Test Files  282 passed (282)
      Tests  1978 passed (1978)
   Start at  00:15:22
   Duration  291.14s (transform 28%, environment 28%, import 21%, tests 17%, setup 5%)

Focused title probe: passed in two browser engines, two real Notes, three widths and two schemes. The broader Notes E2E stopped at the #1237 file-identity failure. Cargo cleanup removed 9,264 files (3.4 GiB); web build output was deleted.

Decisions and merge-round follow-up

No product design decision was needed. I kept the change to the Notes E2E file because the confirmed title behavior was already correct, and did not change shared file-identity or note-writer/collaboration behavior.

For the merge round, rerun bun run build followed by NOTES_E2E_MACOS=1 bun apps/web/e2e/notes.mjs --screenshots artifacts/bash-notes/notes against the shared prebuilt server. It must prove the Plugin-owned file route reaches an editable surface after #1237 is fixed. Rerun CALTERNAL_E2E_MAC=1 bun apps/web/e2e/notes-open-661.mjs; it must prove opening untouched Task, Daily and plain Notes leaves their bytes, mtime, ETag, toast and change feed unchanged after #661 is fixed. Run the Notes editor profile above on the perf VM and add the 5k-block and five-minute cases before reporting those metrics.

## Bash report Branch: `job/bash-notes` Head: `b8b9d72753fa1888ca1086ffe3761233ee59edd9` ### Findings | Ref | Symptom | Severity | Result | |---|---|---|---| | #1216 lead | Note title appeared twice | None; false positive | The UI-created Note stores one title H1. The older screenshot fixture itself supplies `# Untitled` as body content, so its title and body heading repeat. Added a browser regression probe; no product fix was needed. | | [#1237](https://git.kayg.org/kayg/calternal/issues/1237) | Files cannot open a valid Plugin-owned Markdown file in the block editor | Major | Filed only. Stable file identity/collaboration contract is outside this UI area. | | [#661](https://git.kayg.org/kayg/calternal/issues/661) | Opening an untouched Task Note changes its inode and Files ETag although bytes and nanosecond mtime stay equal | Major | Reproduced and reported on the existing issue. Shared writer/collaboration behavior is outside this UI area. | The block-selection probe passed its initial selection checks under Bun, then stopped when Sharp could not load. A Node rerun timed out once on single-click selection. This is inconclusive and remains unfiled; the block-selection path needs a stable rerun. ### Change and UX gaps Added `apps/web/e2e/notes-title-1216.mjs`. It creates one Note through the real UI and one through the authenticated API, then checks saved Markdown and the rendered title in Chromium and WebKit at 390, 820 and 1440 px, in light and dark schemes, with macOS platform emulation. The 24 screenshots are attached: [title probe screenshots](https://git.kayg.org/attachments/a6b27285-1991-4a89-87f6-7feb42d1c664). UX gap closed: the duplicate-title lead is now covered by a real-browser regression check, including accessible naming of the New note action. No product UI defect was found for this lead. UX gaps left: #1237 and #661 remain; the block-selection result is inconclusive; the full Notes interaction matrix was not completed. Known issues #1209, #1210 and #1197 were not duplicated. ### Performance No benchmark numbers were collected. Current verification policy reserves measurements for the locked perf VM and performance jobs. The existing Notes editor profile can be run in the merge round with: `perf-run calternal bash-notes 30 -- env PERF_LOCATION=perf-test-69-63 node bench/notes-editor-series.mjs` It measures editor readiness, typing-to-paint, selection and hover paths, CPU and memory for its 64- and 900-block cases. It does not cover the requested 5k-block scroll/typing case or a five-minute memory soak; add those cases before treating Notes-area performance coverage as complete. ### Gates `git fetch origin && git merge origin/dev`: `Already up to date.` `cargo fmt --check`: passed, no output. No Rust files changed, so no crate clippy or tests ran. `cd apps/web && bun run check`: ```text perf-lint: PASS; 0 violations; 22615 scoped exceptions svelte-check found 0 errors and 2 warnings in 2 files ``` The two warnings are existing empty CSS rules in `AttachmentDeck.svelte` and `AgendaList.svelte`. `cd apps/web && bun run test`: ```text Test Files 282 passed (282) Tests 1978 passed (1978) Start at 00:15:22 Duration 291.14s (transform 28%, environment 28%, import 21%, tests 17%, setup 5%) ``` Focused title probe: passed in two browser engines, two real Notes, three widths and two schemes. The broader Notes E2E stopped at the #1237 file-identity failure. Cargo cleanup removed 9,264 files (3.4 GiB); web build output was deleted. ### Decisions and merge-round follow-up No product design decision was needed. I kept the change to the Notes E2E file because the confirmed title behavior was already correct, and did not change shared file-identity or note-writer/collaboration behavior. For the merge round, rerun `bun run build` followed by `NOTES_E2E_MACOS=1 bun apps/web/e2e/notes.mjs --screenshots artifacts/bash-notes/notes` against the shared prebuilt server. It must prove the Plugin-owned file route reaches an editable surface after #1237 is fixed. Rerun `CALTERNAL_E2E_MAC=1 bun apps/web/e2e/notes-open-661.mjs`; it must prove opening untouched Task, Daily and plain Notes leaves their bytes, mtime, ETag, toast and change feed unchanged after #661 is fixed. Run the Notes editor profile above on the perf VM and add the 5k-block and five-minute cases before reporting those metrics.
Author
Owner

Started Round 2 on branch job/bash-notes at 5fef321a45c32fc4893f7f5a44942569d05d7d5c. Merged origin/dev at 3601719b80a39f712daf07b37879b22929dfffa0 first, as required. I am exercising the Notes Tab UI against a local production build.

Started Round 2 on branch `job/bash-notes` at `5fef321a45c32fc4893f7f5a44942569d05d7d5c`. Merged `origin/dev` at `3601719b80a39f712daf07b37879b22929dfffa0` first, as required. I am exercising the Notes Tab UI against a local production build.
Author
Owner

Round 2 reproduced the existing #1237 Files/editor integration issue in the production Notes E2E. With a fresh local server, bun e2e/notes.mjs --screenshots ../../artifacts/bash-notes reached the Money Plugin fixture at Money/Household/Budget.md; the Files Quick Look action navigated to the stable /f/<item-id>/edit route, but .note-card .editor-surface .ProseMirror[contenteditable="true"] did not appear within 20 seconds. The run stopped at apps/web/e2e/notes.mjs:615. Screenshot evidence: artifacts/bash-notes/notesfilter-606-files-money-390-mono.png. This is the symptom already tracked by #1237; no duplicate issue or shared editor change made.

Round 2 reproduced the existing #1237 Files/editor integration issue in the production Notes E2E. With a fresh local server, `bun e2e/notes.mjs --screenshots ../../artifacts/bash-notes` reached the Money Plugin fixture at `Money/Household/Budget.md`; the Files Quick Look action navigated to the stable `/f/<item-id>/edit` route, but `.note-card .editor-surface .ProseMirror[contenteditable="true"]` did not appear within 20 seconds. The run stopped at `apps/web/e2e/notes.mjs:615`. Screenshot evidence: `artifacts/bash-notes/notesfilter-606-files-money-390-mono.png`. This is the symptom already tracked by #1237; no duplicate issue or shared editor change made.
Author
Owner

Round 2 reproduced #1171 in the real Notes editor: the “Ship the offline map pack” list-row handle was active and labelled correctly, but its center was 343.84375 px above the first text line (apps/web/e2e/notes.mjs:3113). I added the measurement to #1171. The implementation is in shared packages/editor, so no editor-core changes were made here.

Round 2 reproduced #1171 in the real Notes editor: the “Ship the offline map pack” list-row handle was active and labelled correctly, but its center was 343.84375 px above the first text line (`apps/web/e2e/notes.mjs:3113`). I added the measurement to #1171. The implementation is in shared `packages/editor`, so no editor-core changes were made here.
Author
Owner

Round 2 update: the real 5,000-block editor rendered and accepted five minutes of keyboard typing, but after a 1.5 second settle the Notes API returned only 6 of 60 unique typed markers. I added the evidence and a bounded follow-up plan to the existing collab/save issue #1197; no duplicate issue or core edit. The follow-up will check whether the markers are present in the editor DOM and allow up to 60 seconds for the API save.

Round 2 update: the real 5,000-block editor rendered and accepted five minutes of keyboard typing, but after a 1.5 second settle the Notes API returned only 6 of 60 unique typed markers. I added the evidence and a bounded follow-up plan to the existing collab/save issue #1197; no duplicate issue or core edit. The follow-up will check whether the markers are present in the editor DOM and allow up to 60 seconds for the API save.
Author
Owner

Update on the potential #1197 finding: the bounded 5,000-block follow-up found all 60 typed markers in the editor and in the Notes API after 34.3 seconds. The earlier 1.5 second read was too early to call data loss; no loss was confirmed in the completed run. A separate reload attempt timed out but did not record the API count, so it remains inconclusive.

Local debug-build profile under shared-host load: open 6.91 s; keydown-to-paint p50/p95 76.9/171.5 ms; scroll-frame p95 16.8 ms; heap 27.6→56.9 MB; 60 typing bursts saved in 34.3 s. No comparable 5,000-block baseline exists in docs/perf/baseline.json. These are local, not perf-VM results.

Update on the potential #1197 finding: the bounded 5,000-block follow-up found all 60 typed markers in the editor and in the Notes API after 34.3 seconds. The earlier 1.5 second read was too early to call data loss; no loss was confirmed in the completed run. A separate reload attempt timed out but did not record the API count, so it remains inconclusive. Local debug-build profile under shared-host load: open 6.91 s; keydown-to-paint p50/p95 76.9/171.5 ms; scroll-frame p95 16.8 ms; heap 27.6→56.9 MB; 60 typing bursts saved in 34.3 s. No comparable 5,000-block baseline exists in `docs/perf/baseline.json`. These are local, not perf-VM results.
Author
Owner

Round 2 report

Branch: job/bash-notes
Head: 9b270ad6f72998f57a2df0458b618ccb0328e66e

Findings

Issue Symptom Severity Result
#1348 Notes Explorer has no rename or move action in its menu; dragging a Note onto a real folder leaves its path unchanged. Minor Filed only; no feature work in this bug-only round.
#1237 Plugin-owned Markdown cannot open in the block editor from Files. Major Filed in Round 1; left with its owner.
#1171 Duplicate/misaligned block handles and block-menu action order. Minor Existing shared-editor issue; reproduced, left with its owner.

Issue #661 remains with its owner from Round 1. I did not re-adjudicate it in Round 2.

Work and evidence

  • Committed one E2E selector correction in apps/web/e2e/deeplinks.mjs (9b270ad6f): the Notes header locator now selects the exact action instead of colliding with per-Note actions. The focused heading deep-link flow passed.
  • A production-server Notes list run seeded 1,000 real Notes. API pagination, title order, rare-tag filtering, and the six 390/820/1440 px light/dark Mac-emulated list captures passed. A later sidebar Show more probe timed out at its row-count assertion; that check is inconclusive and does not confirm a product defect.
  • Hide/Undo/Show hidden and the Notes tag-only flow passed. The WebKit image-paste flow passed, including failed-upload retry, saved attachment after reload, and six Mac-emulated screenshots. Heading Copy link stayed stable across rename and Note move, and the deep link restored its heading target.
  • A 5,000-block Note profile on this shared host used a debug server. The host load average was [27.56, 31.13, 37.85] at start and [35.52, 32.01, 35.42] at end. The Note body was 499,898 bytes; open took 6,910 ms; scroll-frame p95 was 16.8 ms; keydown-to-paint p50/p95 was 76.9/171.5 ms; heap was 27.7 MB before and 56.9 MB after five minutes; all 60 typing bursts appeared in saved content after 34.3 seconds. docs/perf/baseline.json has no matching Notes editor metric. The perf VM was held by calternal tabswitch-1233, so these are local observations, not perf-VM results.
  • The Notes Explorer rename/move gap is in #1348. Evidence screenshot: artifacts/bash-notes/notes-explorer-actions/1440-light-macos.png.

UX gaps left

  • The Notes Explorer cannot rename or move Notes or folders. Files offers those actions elsewhere; DESIGN §28 does not specify them in the Notes Explorer. I filed #1348 and did not add new behavior.
  • The 1,000-row Explorer reveal timed out in the probe and needs a clean follow-up. Full create/rename/move/delete/restore coverage, every slash-menu type, all editor actions, undo/redo across every action, two-tab edits, offline/online recovery, and reload-mid-action were not completed in this time-box.
  • The perf VM measurement remains outstanding because the VM was occupied. The local 5,000-block latency is under heavy host load and should not be treated as a final performance result.

Gate output

bun run check completed successfully. Relevant output, verbatim:

PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages
perf-lint: PASS; 0 violations; 22548 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 1 warning in 1 file

The one warning was the existing empty CSS rule at packages/ui/src/components/calendar/AttachmentDeck.svelte:1055:3.

bun run test exited 1. Exact final summary:

Test Files  9 failed | 278 passed (287)
     Tests  12 failed | 2023 passed (2035)
  Start at  10:24:44
  Duration  1255.15s (transform 36%, environment 21%, tests 18%, import 18%, setup 6%)

Transform  |component| transforming modules took 747.53s · 37% of tracked time, re-done on every run
             persist transforms across runs with fsModuleCache: true
             learn more: https://vitest.dev/guide/improving-performance#caching-between-reruns

error: script "test" exited with code 1

All 12 failures were 5-second timeouts across 9 files, including unrelated components and collaborationUndo.svelte.test.ts; no test expectations were changed. No Rust files changed, so Rust fmt/clippy/test gates were not run. cargo clean was run after the UI work.

Decisions not covered by DESIGN

  • I classified missing Notes Explorer rename/move as minor because Files still supports those actions, and filed #1348 for owner direction. DESIGN §28 describes the Notes file-explorer sidebar but does not define those actions there.
  • I kept the 5,000-block results labeled local and inconclusive for final performance because the perf VM was occupied and this host load was high.
## Round 2 report Branch: `job/bash-notes` Head: `9b270ad6f72998f57a2df0458b618ccb0328e66e` ### Findings | Issue | Symptom | Severity | Result | | --- | --- | --- | --- | | #1348 | Notes Explorer has no rename or move action in its menu; dragging a Note onto a real folder leaves its path unchanged. | Minor | Filed only; no feature work in this bug-only round. | | #1237 | Plugin-owned Markdown cannot open in the block editor from Files. | Major | Filed in Round 1; left with its owner. | | #1171 | Duplicate/misaligned block handles and block-menu action order. | Minor | Existing shared-editor issue; reproduced, left with its owner. | Issue #661 remains with its owner from Round 1. I did not re-adjudicate it in Round 2. ### Work and evidence - Committed one E2E selector correction in `apps/web/e2e/deeplinks.mjs` (`9b270ad6f`): the Notes header locator now selects the exact action instead of colliding with per-Note actions. The focused heading deep-link flow passed. - A production-server Notes list run seeded 1,000 real Notes. API pagination, title order, rare-tag filtering, and the six 390/820/1440 px light/dark Mac-emulated list captures passed. A later sidebar Show more probe timed out at its row-count assertion; that check is inconclusive and does not confirm a product defect. - Hide/Undo/Show hidden and the Notes tag-only flow passed. The WebKit image-paste flow passed, including failed-upload retry, saved attachment after reload, and six Mac-emulated screenshots. Heading Copy link stayed stable across rename and Note move, and the deep link restored its heading target. - A 5,000-block Note profile on this shared host used a debug server. The host load average was `[27.56, 31.13, 37.85]` at start and `[35.52, 32.01, 35.42]` at end. The Note body was 499,898 bytes; open took 6,910 ms; scroll-frame p95 was 16.8 ms; keydown-to-paint p50/p95 was 76.9/171.5 ms; heap was 27.7 MB before and 56.9 MB after five minutes; all 60 typing bursts appeared in saved content after 34.3 seconds. `docs/perf/baseline.json` has no matching Notes editor metric. The perf VM was held by `calternal tabswitch-1233`, so these are local observations, not perf-VM results. - The Notes Explorer rename/move gap is in #1348. Evidence screenshot: `artifacts/bash-notes/notes-explorer-actions/1440-light-macos.png`. ### UX gaps left - The Notes Explorer cannot rename or move Notes or folders. Files offers those actions elsewhere; DESIGN §28 does not specify them in the Notes Explorer. I filed #1348 and did not add new behavior. - The 1,000-row Explorer reveal timed out in the probe and needs a clean follow-up. Full create/rename/move/delete/restore coverage, every slash-menu type, all editor actions, undo/redo across every action, two-tab edits, offline/online recovery, and reload-mid-action were not completed in this time-box. - The perf VM measurement remains outstanding because the VM was occupied. The local 5,000-block latency is under heavy host load and should not be treated as a final performance result. ### Gate output `bun run check` completed successfully. Relevant output, verbatim: ```text PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages perf-lint: PASS; 0 violations; 22548 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 1 warning in 1 file ``` The one warning was the existing empty CSS rule at `packages/ui/src/components/calendar/AttachmentDeck.svelte:1055:3`. `bun run test` exited 1. Exact final summary: ```text Test Files 9 failed | 278 passed (287) Tests 12 failed | 2023 passed (2035) Start at 10:24:44 Duration 1255.15s (transform 36%, environment 21%, tests 18%, import 18%, setup 6%) Transform |component| transforming modules took 747.53s · 37% of tracked time, re-done on every run persist transforms across runs with fsModuleCache: true learn more: https://vitest.dev/guide/improving-performance#caching-between-reruns error: script "test" exited with code 1 ``` All 12 failures were 5-second timeouts across 9 files, including unrelated components and `collaborationUndo.svelte.test.ts`; no test expectations were changed. No Rust files changed, so Rust fmt/clippy/test gates were not run. `cargo clean` was run after the UI work. ### Decisions not covered by DESIGN - I classified missing Notes Explorer rename/move as minor because Files still supports those actions, and filed #1348 for owner direction. DESIGN §28 describes the Notes file-explorer sidebar but does not define those actions there. - I kept the 5,000-block results labeled local and inconclusive for final performance because the perf VM was occupied and this host load was high.
Author
Owner

Found during the 2026-10-07 macOS Notes editor break-it run: #1351, “Notes editor: formatting capsule overlaps the note title.” The first-paragraph selection capsule covers the lower half of the note title in Chrome 154.0.8037.58 on macOS 27.0. The issue includes two screenshots and exact reproduction steps. This is separate from #1210’s capsule surface/width regression.

Found during the 2026-10-07 macOS Notes editor break-it run: #1351, “Notes editor: formatting capsule overlaps the note title.” The first-paragraph selection capsule covers the lower half of the note title in Chrome 154.0.8037.58 on macOS 27.0. The issue includes two screenshots and exact reproduction steps. This is separate from #1210’s capsule surface/width regression.
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`.
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#1216
No description provided.