Notes: Doing/Cancelled Tasks render as literal [/] and [-] bullets #1457

Closed
opened 2026-10-08 09:02:57 +00:00 by kayg · 7 comments
Owner

Problem

Setting a Task's Status to Doing writes its line as - [/] Title (Cancelled: - [-] Title). The Notes editor's Markdown reader only recognises [ ] and [x], so these lines render as plain bullets showing the literal text [/] Prepare autumn planning, the hidden-root styling does not apply, and features that look for the Task root (reminders, #1432) miss it. Evidence: worktree remind-1432, apps/artifacts/remind-1432/reminder-1440-light-click.png.

Risk: if a user edits such a Note, the editor may re-serialize the line and drop or escape the status marker (data change). Check this first.

Expected

  • The editor reads [ ], [x], [/] and [-] as Task items with the right status (checkbox look per DESIGN for Doing/Cancelled; if DESIGN is silent, Doing = partially filled checkbox, Cancelled = struck-through with a dash, matching the Tasks Tab's status icons) and writes each back byte-identically.
  • The TS (packages/editor markdown) and Rust (calternal-collab markdown, Notes task parser) readers/writers agree; extend the shared cross-language test vectors.
  • Round trip of every status through edit/save/reload is byte-identical; editing the title text keeps the marker.
  • Tasks Tab, Calendar and Search show the same status as the Note.

Gates: cargo fmt/clippy/test for touched crates; bun run check, bun run test (--maxWorkers=2), packages/editor tests. Screenshots of a Note containing all four statuses (390/820/1440, light/dark).

## Problem Setting a Task's Status to Doing writes its line as `- [/] Title` (Cancelled: `- [-] Title`). The Notes editor's Markdown reader only recognises `[ ]` and `[x]`, so these lines render as plain bullets showing the literal text `[/] Prepare autumn planning`, the hidden-root styling does not apply, and features that look for the Task root (reminders, #1432) miss it. Evidence: worktree remind-1432, `apps/artifacts/remind-1432/reminder-1440-light-click.png`. Risk: if a user edits such a Note, the editor may re-serialize the line and drop or escape the status marker (data change). Check this first. ## Expected - The editor reads `[ ]`, `[x]`, `[/]` and `[-]` as Task items with the right status (checkbox look per DESIGN for Doing/Cancelled; if DESIGN is silent, Doing = partially filled checkbox, Cancelled = struck-through with a dash, matching the Tasks Tab's status icons) and writes each back byte-identically. - The TS (packages/editor markdown) and Rust (calternal-collab markdown, Notes task parser) readers/writers agree; extend the shared cross-language test vectors. - Round trip of every status through edit/save/reload is byte-identical; editing the title text keeps the marker. - Tasks Tab, Calendar and Search show the same status as the Note. Gates: cargo fmt/clippy/test for touched crates; bun run check, bun run test (--maxWorkers=2), packages/editor tests. Screenshots of a Note containing all four statuses (390/820/1440, light/dark).
Author
Owner

Started on job/statusmark-1457, base d395b6e25. Merged the requested prerequisite 52e8dfbee (fast-forward). Checking status marker data preservation first. No dependency changes planned.

Started on `job/statusmark-1457`, base `d395b6e25`. Merged the requested prerequisite `52e8dfbee` (fast-forward). Checking status marker data preservation first. No dependency changes planned.
Author
Owner

Data-change risk confirmed at prerequisite HEAD: - [/] Doing serializes as - \[/\] Doing; - [-] Cancelled serializes as - \[-\] Cancelled. Both parse as ordinary bullets. Notes core already maps / to Doing and - to Cancelled. Added nullable workflow-marker schema data, the Rust Yjs default, and matching readers/writers. Existing vector expectations gain this schema default because #1457 explicitly extends Task item behavior. The shared Checkbox already supplies the mixed dash drawing; reuse it for Doing and Cancelled, with Cancelled text struck through. Merged fetched origin/dev af202e151 before gates.

Data-change risk confirmed at prerequisite HEAD: `- [/] Doing` serializes as `- \[/\] Doing`; `- [-] Cancelled` serializes as `- \[-\] Cancelled`. Both parse as ordinary bullets. Notes core already maps `/` to Doing and `-` to Cancelled. Added nullable workflow-marker schema data, the Rust Yjs default, and matching readers/writers. Existing vector expectations gain this schema default because #1457 explicitly extends Task item behavior. The shared Checkbox already supplies the mixed dash drawing; reuse it for Doing and Cancelled, with Cancelled text struck through. Merged fetched origin/dev `af202e151` before gates.
Author
Owner

Found a second marker-loss path in NoteView.svelte::syncTaskEditor: it compared only checked, so Doing → To do and Done → Cancelled could skip a root update or retain the old marker in the fallback editor. It now compares and writes both fields. Cost stays one existing root lookup plus constant attribute work; no new IO or layout reads. The benchmark fixture extension is committed as 04c61c481; NOTES_EDITOR_TASK_STATUS_ONLY=1 covers 64 and 900 Task rows and the existing 200-action burst. Measurements are deferred under the non-performance-job verification policy. Final focused editor output: Test Files 4 passed (4); Tests 238 passed (238). The full web suite reported an unrelated Files Inspector Canvas-membership failure; its focused rerun is in progress. No expectation has been changed.

Found a second marker-loss path in `NoteView.svelte::syncTaskEditor`: it compared only `checked`, so Doing → To do and Done → Cancelled could skip a root update or retain the old marker in the fallback editor. It now compares and writes both fields. Cost stays one existing root lookup plus constant attribute work; no new IO or layout reads. The benchmark fixture extension is committed as `04c61c481`; `NOTES_EDITOR_TASK_STATUS_ONLY=1` covers 64 and 900 Task rows and the existing 200-action burst. Measurements are deferred under the non-performance-job verification policy. Final focused editor output: `Test Files 4 passed (4)`; `Tests 238 passed (238)`. The full web suite reported an unrelated Files Inspector Canvas-membership failure; its focused rerun is in progress. No expectation has been changed.
Author
Owner

Core reader/writer, schema, Yjs defaults, shared vectors and regression coverage are committed as 6e61f5550. Final focused editor run: Test Files 4 passed (4), Tests 238 passed (238). Rust compilation and crate tests remain in progress; this is a progress report, not a gate claim. The unrelated Files Inspector rerun passed all 19 tests unchanged. Four existing NoteView source hashes were refreshed in both performance ledgers (8 hash fields total); rules, limits, owners, expiries and ratchet counts are unchanged. Header-sync correction and focused real-server evidence are the remaining slices.

Core reader/writer, schema, Yjs defaults, shared vectors and regression coverage are committed as `6e61f5550`. Final focused editor run: `Test Files 4 passed (4)`, `Tests 238 passed (238)`. Rust compilation and crate tests remain in progress; this is a progress report, not a gate claim. The unrelated Files Inspector rerun passed all 19 tests unchanged. Four existing NoteView source hashes were refreshed in both performance ledgers (8 hash fields total); rules, limits, owners, expiries and ratchet counts are unchanged. Header-sync correction and focused real-server evidence are the remaining slices.
Author
Owner

Core commit: 5bca202b2; root sync: ee39bae91; benchmark fixture: 04c61c481.

Final web gates after merging origin/dev pass: perf-lint: PASS; 0 violations; 22544 scoped exceptions, svelte-check found 0 errors and 4 warnings in 2 files, Test Files 297 passed (297), Tests 2120 passed (2120). The warnings are existing unused selectors in MailView and the Money route. No test expectations were weakened.

Rust clippy passes. All 140 unit tests and the seeded cross-language/Yjs test pass. The remaining integration tests are finishing. The production build is ready. Next: the branch server, live title edit/save/reload, rich-root status refresh, and six macOS-platform captures at 390/820/1440 in light/dark.

Core commit: `5bca202b2`; root sync: `ee39bae91`; benchmark fixture: `04c61c481`. Final web gates after merging origin/dev pass: `perf-lint: PASS; 0 violations; 22544 scoped exceptions`, `svelte-check found 0 errors and 4 warnings in 2 files`, `Test Files 297 passed (297)`, `Tests 2120 passed (2120)`. The warnings are existing unused selectors in MailView and the Money route. No test expectations were weakened. Rust clippy passes. All 140 unit tests and the seeded cross-language/Yjs test pass. The remaining integration tests are finishing. The production build is ready. Next: the branch server, live title edit/save/reload, rich-root status refresh, and six macOS-platform captures at 390/820/1440 in light/dark.
Author
Owner

#1457 Task workflow marker preservation

Built

The editor and the collaboration writer now read and retain [ ], [x], [/] and [-]. Title edits retain the marker and Block ID. The mounted editor uses the existing shared Checkbox (editor variant). Doing and Cancelled have its mixed dash; Cancelled text has a presentation-only strike.

Task header refreshes now compare both completion and the marker. Doing → To do and Done → Cancelled can no longer leave an old marker in the hidden root.

The Notes core reader already supported all four markers. A regression test checks its public Index extractor against the collaboration reader and writer. Shared vectors, mounted tests and the seeded schema generator cover workflow markers.

The old reader treated [/] and [-] as literal bullet text. Saving escaped them to \[/\] and \[-\]. This was a source-data change, not only a display defect.

UX gaps closed

  • Doing and Cancelled are Task items with named checkbox states.
  • Opening a Note does not rewrite markers. Title edits and reload retain marker bytes and Block IDs.
  • Rich Task roots can use the existing hidden-root rule and identity lookup.
  • Header status refresh updates markers even when completion does not change.
  • Explicit checkbox actions clear the workflow marker; title edits retain it.

Decisions

DESIGN does not specify the editor drawing for these two markers. Reuse the shared Checkbox mixed-state dash and add no icon or control style. Cancelled uses a strike in CSS, not a Markdown strike mark. Explicit checkbox activation follows the shared mixed-state completion behavior.

Keep the existing boolean completion field. Add a nullable statusMarker schema attribute for / and -. Completion takes precedence if an older command leaves a marker that disagrees with the boolean. Existing rooms read the null default. The root uses / for Doing, Blocked and Waiting, as the existing server does. No migration or dependency change is required.

Cost and performance

Parsing and writing remain linear in Markdown bytes and Task items. Each Task adds one nullable attribute and constant work. No extra IO, query, layout measurement or observer is added.

Extend bench/notes-editor-series.mjs with NOTES_EDITOR_TASK_STATUS_ONLY=1: four status markers, 64-item average fixture, 900-item worst-case fixture and the existing 200-pointer burst. Syntax check passed. No performance numbers were collected: the later verification policy limits performance measurements to performance issues. Run the profile against docs/perf/baseline.json in the merge round if measurements are needed.

Known gaps / UX gaps left

No functional gap was found in the focused marker regression. Previously escaped literal text is not automatically converted into Tasks; that would change user text. Broad API matrices, full e2e, real Mac interoperability and performance measurements are outside this job under the verification policy. Search and Calendar screens are not walked in this focused test; their shared Task projection is checked. The six zoomed crops show an inherited cap-height alignment offset: the shared editor checkbox sits about 3 px high beside text on phone and tablet, for all four statuses. No control geometry was changed. Per the scope note, leave this cosmetic adjustment to the Sonnet UI pass. The orchestrator owns visual review.

For the merge round

  • bash tests/adversarial/run.sh: the combined server must pass hostile-input, authorization and concurrency matrices.
  • cd apps/web && bun run test:e2e:tasks && bun run test:e2e:calendar && bun run test:e2e:search: check status consistency across the combined production app.
  • With the combined release server and matching assets, NOTES_EDITOR_TASK_STATUS_ONLY=1 CALTERNAL_SERVER_BIN="$CALTERNAL_SERVER_RELEASE_BIN" node bench/notes-editor-series.mjs: compare average and worst-case data with the baseline if measuring. Run through perf-run calternal statusmark-1457 15 -- ... on the perf VM; confirm rendering timing on the locked Mac VM.

Branch, commits and files

Branch job/statusmark-1457; head a854b907009448f7cf3df24bd43d9ce80d923e84. Prerequisite 52e8dfbee merged first, then fetched origin/dev once (af202e151) before final gates. No push, deploy or remote merge.

  • a854b9070 test(notes): verify workflow markers through live edits and root refreshes

  • 10f62d3a2 fix(notes): sync workflow markers when Task headers change status

  • f61e4317d fix(editor): preserve Task workflow markers through Markdown saves

  • 04c61c481 bench(notes): cover workflow markers in the editor hot-path profile

  • apps/web/e2e/statusmark-1457.mjs

  • apps/web/src/lib/notes/NoteView.svelte

  • bench/notes-editor-series.mjs

  • contracts/perf/adoption-1058.json

  • contracts/perf/exceptions.json

  • contracts/vectors/markdown/README.md

  • contracts/vectors/markdown/calternal/editor.v1.json

  • contracts/vectors/markdown/editor.v1.json

  • crates/calternal-collab/src/lib.rs

  • crates/calternal-collab/src/markdown.rs

  • packages/editor/src/Editor.svelte.test.ts

  • packages/editor/src/components/TaskItemView.svelte

  • packages/editor/src/extensions.ts

  • packages/editor/src/markdown.test.ts

  • packages/editor/src/markdown.ts

  • packages/editor/test/pmDocGen.ts

The four exact NoteView perf pins in each perf contract were refreshed after source changes. Rules, limits and ratchets are unchanged. Existing Task vector expectations gain the new nullable schema attribute; existing marker behavior and assertions are not weakened. No lockfile or dependency changes.

Gates: verbatim output

All commands use the requested Cargo environment and four build jobs. Rust gates cover the touched crate only. The branch server was built for the focused browser regression; no route or API contract changed.

cargo fmt --check


Exit 0; no output.

cargo clippy -p calternal-collab --all-targets -- -D warnings

    Checking calternal-collab v0.0.1 (/home/kayg/Developer/calternal-wt/statusmark-1457/crates/calternal-collab)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.60s

cargo test -p calternal-collab -- --test-threads=4

test result: ok. 140 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 220.82s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.81s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.94s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.34s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 68.18s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.07s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.29s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.45s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.35s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.93s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.07s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.81s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 32.82s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.79s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 24.16s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

cd apps/web && bun run check

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

cd apps/web && bun run test --maxWorkers=2

 Test Files  297 passed (297)
      Tests  2120 passed (2120)
   Duration  632.29s (environment 27%, transform 26%, import 23%, tests 18%, setup 5%)

cd packages/editor && bun run check

svelte-check found 0 errors and 0 warnings

cd packages/editor && bun run test --maxWorkers=2

 Test Files  22 passed (22)
      Tests  476 passed (476)
   Duration  59.31s (transform 7.90s, setup 905ms, import 22.05s, tests 31.84s, environment 50.10s)

Final changed editor files: bunx vitest run src/markdown.test.ts src/markdown.vectors.test.ts src/Editor.svelte.test.ts src/markdown.roundtrip.svelte.test.ts --maxWorkers=2

 Test Files  4 passed (4)
      Tests  238 passed (238)
   Duration  56.93s (transform 25.33s, setup 566ms, import 40.14s, tests 31.16s, environment 31.01s)

Final vector fixture: bunx vitest run src/markdown.vectors.test.ts --maxWorkers=2

 Test Files  1 passed (1)
      Tests  36 passed (36)

cargo build -p calternal-server

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 12m 23s

Focused real-server regression: cd apps/web && CALTERNAL_SERVER_BIN="$CARGO_TARGET_DIR/debug/calternal-server" node e2e/statusmark-1457.mjs

PASS: exact title edit/save bytes.
PASS #1457: all four Task statuses survive live title edit/save/reload; shared Task projection agrees; rich root status refresh and hiding work; six macOS-platform production captures.

cargo clean

     Removed 16260 files, 16.9GiB total

Rust total: 208 passed; the cross-language round includes 5,000 cases per family. Web check warnings are existing unused selectors in MailView and the Money route. The first full web run had an unrelated InfoPanel timeout; the unchanged focused test and the final full run passed. The focused browser test waits for Appearance before navigation completes, the live room handshake before typing, and hidden-root attachment rather than visibility. It runs with Node because this host's Bun cannot load the shared Sharp zoom helper.

Production screenshots

Chromium production app, macOS platform emulation, real disposable API data. Coarse-pointer phone/tablet contexts. All four edited Tasks are loaded. No reload toast, leftover hover or focus ring. Screen sizes: 390×844, 820×900, 1440×900; light and dark. Six actual-size captures and six 4× alignment crops were inspected. Files stay in ignored artifacts/statusmark-1457/; no review images were committed.

Web build and .svelte-kit/output removed; review artifacts and gate logs retained. Worktree is clean.

# #1457 Task workflow marker preservation ## Built The editor and the collaboration writer now read and retain `[ ]`, `[x]`, `[/]` and `[-]`. Title edits retain the marker and Block ID. The mounted editor uses the existing shared Checkbox (`editor` variant). Doing and Cancelled have its mixed dash; Cancelled text has a presentation-only strike. Task header refreshes now compare both completion and the marker. Doing → To do and Done → Cancelled can no longer leave an old marker in the hidden root. The Notes core reader already supported all four markers. A regression test checks its public Index extractor against the collaboration reader and writer. Shared vectors, mounted tests and the seeded schema generator cover workflow markers. The old reader treated `[/]` and `[-]` as literal bullet text. Saving escaped them to `\[/\]` and `\[-\]`. This was a source-data change, not only a display defect. ## UX gaps closed - Doing and Cancelled are Task items with named checkbox states. - Opening a Note does not rewrite markers. Title edits and reload retain marker bytes and Block IDs. - Rich Task roots can use the existing hidden-root rule and identity lookup. - Header status refresh updates markers even when completion does not change. - Explicit checkbox actions clear the workflow marker; title edits retain it. ## Decisions DESIGN does not specify the editor drawing for these two markers. Reuse the shared Checkbox mixed-state dash and add no icon or control style. Cancelled uses a strike in CSS, not a Markdown strike mark. Explicit checkbox activation follows the shared mixed-state completion behavior. Keep the existing boolean completion field. Add a nullable `statusMarker` schema attribute for `/` and `-`. Completion takes precedence if an older command leaves a marker that disagrees with the boolean. Existing rooms read the null default. The root uses `/` for Doing, Blocked and Waiting, as the existing server does. No migration or dependency change is required. ## Cost and performance Parsing and writing remain linear in Markdown bytes and Task items. Each Task adds one nullable attribute and constant work. No extra IO, query, layout measurement or observer is added. Extend `bench/notes-editor-series.mjs` with `NOTES_EDITOR_TASK_STATUS_ONLY=1`: four status markers, 64-item average fixture, 900-item worst-case fixture and the existing 200-pointer burst. Syntax check passed. No performance numbers were collected: the later verification policy limits performance measurements to performance issues. Run the profile against `docs/perf/baseline.json` in the merge round if measurements are needed. ## Known gaps / UX gaps left No functional gap was found in the focused marker regression. Previously escaped literal text is not automatically converted into Tasks; that would change user text. Broad API matrices, full e2e, real Mac interoperability and performance measurements are outside this job under the verification policy. Search and Calendar screens are not walked in this focused test; their shared Task projection is checked. The six zoomed crops show an inherited cap-height alignment offset: the shared editor checkbox sits about 3 px high beside text on phone and tablet, for all four statuses. No control geometry was changed. Per the scope note, leave this cosmetic adjustment to the Sonnet UI pass. The orchestrator owns visual review. ## For the merge round - `bash tests/adversarial/run.sh`: the combined server must pass hostile-input, authorization and concurrency matrices. - `cd apps/web && bun run test:e2e:tasks && bun run test:e2e:calendar && bun run test:e2e:search`: check status consistency across the combined production app. - With the combined release server and matching assets, `NOTES_EDITOR_TASK_STATUS_ONLY=1 CALTERNAL_SERVER_BIN="$CALTERNAL_SERVER_RELEASE_BIN" node bench/notes-editor-series.mjs`: compare average and worst-case data with the baseline if measuring. Run through `perf-run calternal statusmark-1457 15 -- ...` on the perf VM; confirm rendering timing on the locked Mac VM. ## Branch, commits and files Branch `job/statusmark-1457`; head `a854b907009448f7cf3df24bd43d9ce80d923e84`. Prerequisite `52e8dfbee` merged first, then fetched `origin/dev` once (`af202e151`) before final gates. No push, deploy or remote merge. - `a854b9070` test(notes): verify workflow markers through live edits and root refreshes - `10f62d3a2` fix(notes): sync workflow markers when Task headers change status - `f61e4317d` fix(editor): preserve Task workflow markers through Markdown saves - `04c61c481` bench(notes): cover workflow markers in the editor hot-path profile - `apps/web/e2e/statusmark-1457.mjs` - `apps/web/src/lib/notes/NoteView.svelte` - `bench/notes-editor-series.mjs` - `contracts/perf/adoption-1058.json` - `contracts/perf/exceptions.json` - `contracts/vectors/markdown/README.md` - `contracts/vectors/markdown/calternal/editor.v1.json` - `contracts/vectors/markdown/editor.v1.json` - `crates/calternal-collab/src/lib.rs` - `crates/calternal-collab/src/markdown.rs` - `packages/editor/src/Editor.svelte.test.ts` - `packages/editor/src/components/TaskItemView.svelte` - `packages/editor/src/extensions.ts` - `packages/editor/src/markdown.test.ts` - `packages/editor/src/markdown.ts` - `packages/editor/test/pmDocGen.ts` The four exact NoteView perf pins in each perf contract were refreshed after source changes. Rules, limits and ratchets are unchanged. Existing Task vector expectations gain the new nullable schema attribute; existing marker behavior and assertions are not weakened. No lockfile or dependency changes. ## Gates: verbatim output All commands use the requested Cargo environment and four build jobs. Rust gates cover the touched crate only. The branch server was built for the focused browser regression; no route or API contract changed. cargo fmt --check ```text ``` Exit 0; no output. cargo clippy -p calternal-collab --all-targets -- -D warnings ```text Checking calternal-collab v0.0.1 (/home/kayg/Developer/calternal-wt/statusmark-1457/crates/calternal-collab) Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.60s ``` cargo test -p calternal-collab -- --test-threads=4 ```text test result: ok. 140 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 220.82s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.81s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.94s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.34s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 68.18s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.07s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.29s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.45s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.35s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.93s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.07s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.81s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 32.82s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.79s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 24.16s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` cd apps/web && bun run check ```text perf-lint: PASS; 0 violations; 22544 scoped exceptions svelte-check found 0 errors and 4 warnings in 2 files ``` cd apps/web && bun run test --maxWorkers=2 ```text Test Files 297 passed (297) Tests 2120 passed (2120) Duration 632.29s (environment 27%, transform 26%, import 23%, tests 18%, setup 5%) ``` cd packages/editor && bun run check ```text svelte-check found 0 errors and 0 warnings ``` cd packages/editor && bun run test --maxWorkers=2 ```text Test Files 22 passed (22) Tests 476 passed (476) Duration 59.31s (transform 7.90s, setup 905ms, import 22.05s, tests 31.84s, environment 50.10s) ``` Final changed editor files: bunx vitest run src/markdown.test.ts src/markdown.vectors.test.ts src/Editor.svelte.test.ts src/markdown.roundtrip.svelte.test.ts --maxWorkers=2 ```text Test Files 4 passed (4) Tests 238 passed (238) Duration 56.93s (transform 25.33s, setup 566ms, import 40.14s, tests 31.16s, environment 31.01s) ``` Final vector fixture: bunx vitest run src/markdown.vectors.test.ts --maxWorkers=2 ```text Test Files 1 passed (1) Tests 36 passed (36) ``` cargo build -p calternal-server ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 12m 23s ``` Focused real-server regression: cd apps/web && CALTERNAL_SERVER_BIN="$CARGO_TARGET_DIR/debug/calternal-server" node e2e/statusmark-1457.mjs ```text PASS: exact title edit/save bytes. PASS #1457: all four Task statuses survive live title edit/save/reload; shared Task projection agrees; rich root status refresh and hiding work; six macOS-platform production captures. ``` cargo clean ```text Removed 16260 files, 16.9GiB total ``` Rust total: 208 passed; the cross-language round includes 5,000 cases per family. Web check warnings are existing unused selectors in MailView and the Money route. The first full web run had an unrelated InfoPanel timeout; the unchanged focused test and the final full run passed. The focused browser test waits for Appearance before navigation completes, the live room handshake before typing, and hidden-root attachment rather than visibility. It runs with Node because this host's Bun cannot load the shared Sharp zoom helper. ## Production screenshots Chromium production app, macOS platform emulation, real disposable API data. Coarse-pointer phone/tablet contexts. All four edited Tasks are loaded. No reload toast, leftover hover or focus ring. Screen sizes: 390×844, 820×900, 1440×900; light and dark. Six actual-size captures and six 4× alignment crops were inspected. Files stay in ignored `artifacts/statusmark-1457/`; no review images were committed. - [note-1440-dark.png](https://git.kayg.org/attachments/c67c72ff-92f3-4e6c-bc7a-62a7565161ea) - [note-1440-light.png](https://git.kayg.org/attachments/e27e8d27-7019-4ba2-9902-0ce3440a0b80) - [note-390-dark.png](https://git.kayg.org/attachments/1b449b5d-1b84-48d6-9e22-0dfa3b4cf04f) - [note-390-light.png](https://git.kayg.org/attachments/fe8dac98-e5cf-48b6-9831-f5d11da361fa) - [note-820-dark.png](https://git.kayg.org/attachments/8e226a36-457d-444b-b5fd-e32b55c55fdf) - [note-820-light.png](https://git.kayg.org/attachments/79cb8473-8a21-43af-87ca-fd7e39544e6f) - [tasks-1440-dark.png](https://git.kayg.org/attachments/1d266a73-7f1b-467a-b8a2-a6b85fa26846) - [tasks-1440-light.png](https://git.kayg.org/attachments/46feff7d-8377-4e0b-aa33-996e74578f5d) - [tasks-390-dark.png](https://git.kayg.org/attachments/ec839fcc-ef45-44fc-b46f-0f29d3580f6b) - [tasks-390-light.png](https://git.kayg.org/attachments/274ca594-865c-4c3d-a826-23e63e877e9f) - [tasks-820-dark.png](https://git.kayg.org/attachments/6485c943-aa15-4333-908b-cdde861d5082) - [tasks-820-light.png](https://git.kayg.org/attachments/26e01b72-cd0e-45d5-abff-189e8b6d149d) Web build and `.svelte-kit/output` removed; review artifacts and gate logs retained. Worktree is clean.
Author
Owner

Deployed to calternal.cloud in merge round 35b (build 9dc65437e, live 2026-10-09 ~11:07 IST). Closing.

Deployed to calternal.cloud in merge round 35b (build 9dc65437e, live 2026-10-09 ~11:07 IST). Closing.
kayg closed this issue 2026-10-09 05:37:07 +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#1457
No description provided.