Skip to content

Add persistent scratchpads and multi-window session restoration - #5

Open
jeanmonet wants to merge 1 commit into
openprose:mainfrom
jeanmonet:codex/persistent-scratch-workspaces
Open

Add persistent scratchpads and multi-window session restoration#5
jeanmonet wants to merge 1 commit into
openprose:mainfrom
jeanmonet:codex/persistent-scratch-workspaces

Conversation

@jeanmonet

@jeanmonet jeanmonet commented Aug 23, 2026

Copy link
Copy Markdown

Summary

  • add durable, automatically saved untitled Markdown scratchpads
  • make ⌘T create a scratchpad tab, ⌘N create a scratchpad window, and ⌘⇧S promote a scratchpad to a named Markdown file
  • restore the complete independent-window and native-tab hierarchy across normal quits, including selected tabs, editor continuity, usable frames, and physical-display affinity
  • integrate the durable session with native AppKit window restoration and preserve existing version-1 sessions through migration

Per-window macOS Space assignment is intentionally not claimed here: AppKit does not expose a supported API for restoring a window to a specific Space.

Verification

  • make release — passed; production app and CLI built and signatures validated
  • make smoke — passed; bundle, CLI, document inspection/comparison, and app-window launch checks passed
  • make benchmark-matrix — passed all five startup cases locally; worst visible-window p95 was 419.884 ms against the 500 ms limit, and worst target-ready p95 was 1,159.897 ms against the 1,250 ms limit
  • git diff --cached --check — passed before commit
  • make test — unavailable in this environment because only Command Line Tools are installed and the XCTest module is missing; focused XCTest coverage was added for scratchpad/session behavior but could not be executed locally

The startup matrix measured commit e2aa550 on macOS 26.5.2, Apple M1 Pro, with three warm-ups and ten measured direct launches per case. This is a single-machine development run, not a broad performance claim. The reproducible GitHub startup run is awaiting upstream approval for this fork PR; once approved, it will run on the repository's pinned runner and retain the JSON measurements for 90 days.

Compatibility and safety

  • Ordinary Markdown remains authoritative and byte preservation is tested where relevant.
  • App-only launch-path work was measured with the repository's startup matrix.
  • CLI output, errors, and exit status remain deterministic where relevant. The CLI is unchanged.
  • Protocol or schema changes include compatibility tests and documentation. The local session format advances to version 2 and migrates version 1.
  • Generated files, private fixtures, credentials, and raw traces are excluded.
  • I have signed off each commit under the Developer Certificate of Origin.

Scratchpads are private ordinary Markdown files under Application Support, use atomic autosave, flush synchronously during normal termination, and are removed after successful promotion or explicit discard. Physical-display placement falls back to a usable on-screen frame if a display is unavailable.

Documentation

  • User-facing behavior and release implications are documented, or this change needs no documentation.

Signed-off-by: jeanmonet <15112920+jeanmonet@users.noreply.github.com>
@jeanmonet jeanmonet changed the title "'Add persistent scratchpads and multi-window session restoration'" Add persistent scratchpads and multi-window session restoration Aug 23, 2026
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