Skip to content

Retain Notes drafts until explicit guarded save - #28

Merged
MrScripty merged 3 commits into
mainfrom
feat/timeline-notes-draft-custody
Oct 9, 2026
Merged

MrScripty merged 3 commits into
mainfrom
feat/timeline-notes-draft-custody

Conversation

@MrScripty

@MrScripty MrScripty commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Leaving BeatEditor or editing a second clip previously cancelled its single 500 ms Notes timer and lost the unsaved text. Notes now stay separately per clip in the existing project session and reach canonical story memory only through explicit Save Notes.

The existing Notes command accepts an optional original TimelineNotesInput and checks node, exact text and owned field revision inside its transaction, including ABA. Its optional response receipt belongs to that exact historical command, so lost acknowledgements retry the original ID/payload without duplicating a save or adopting a newer writer's revision. Dirty and later queued text remain intact; current saved conflicts are shown separately. An uncertain original retry remains available after a late lock. Agent/prompt reads use saved Notes, and existing screenplay review still requires explicit acceptance before replacement. No durable draft store, schema, embedding or model dependency is added.

Exact product: c703ebb, tree ab5d64837792dc9379370a927a32486a6cc92f39. Base is integrated PR27 515b4b1; PR27's tree is unchanged.

Validation:

  • 123 core / 597 server tests, all targets/features, locked/offline; strict Clippy.
  • 601 UI tests in 104 files; 19 focused draft/session/component tests; Svelte check 0 errors/warnings, lint, format, build and normal commit hooks.
  • Public SQLite checks cover exact text, stale/ABA rollback, original receipt replay after another save and late lock, save/reopen, and existing generated-consumer impact without changing saved screenplay.
  • Seven local Chromium screenshots show real AppShell/Bible/Notes/Script/timeline components through a labelled test IPC adapter to public Rust/SQLite services. No direct database mutations or model calls. Panel remount, two drafts, explicit save/discard, dropped response after real commit, locked retry, canonical conflict and session reset pass with no runtime exceptions. Entire saved screenplay payload is identical before/after; its projection envelope clock may advance.
  • Source/transformed-module bytes, public-service transcript, screenshots, test logs and a consistent qualified SQLite snapshot are preserved at /workspace/scratch/timeline-notes-draft-custody-evidence for parent delivery. These images contain manual screenplay; generated downstream impact is covered separately by the SQLite test.

Proof limits: instrumented local browser/public-service qualification, not native runtime, uninstrumented release or real-model quality. Native renderer status is unavailable in the browser adapter. Unsaved drafts remain transient in an open project session; project-switch/hard-reload recovery stays deferred. Exact-source independent review accepted c703ebb/tree ab5d64837792dc9379370a927a32486a6cc92f39 with no remaining blocker. Independently passed 15 server Notes cases, 25 UI cases and 1 postcommit-failure case; verified 8 source/module hash pairs and all seven PNG hashes, and visually inspected three custody/status/conflict images. Report SHA256: ed1e13f07d8b79a4fd679f0c9954d6c057164272a3135f3233ec1fcdb8cd77f9.

No hosted workflow was started. The head uses [skip ci] under the owner's spending pause; required merge gates are unchanged and this remains a draft.

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 31d7af07-feee-47a9-9b2e-71c232c74ff7

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@MrScripty
MrScripty changed the base branch from feat/timeline-title-memory to main October 9, 2026 18:18
@MrScripty
MrScripty marked this pull request as ready for review October 9, 2026 18:18
@MrScripty
MrScripty merged commit 7e963d5 into main Oct 9, 2026
5 checks passed
@MrScripty
MrScripty deleted the feat/timeline-notes-draft-custody branch October 14, 2026 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant