Commit Graph

42 Commits

Author SHA1 Message Date
vasyansk 7ec0c84685 feat(app): sidebar, preset picker, wizard, App rewired around workspaces + LayoutEngine
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:31:49 +07:00
vasyansk 0320a2f313 feat(app): tauri bridge commands for M2 (split/ratios/move/preset/restart/groups/meta)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:30:26 +07:00
vasyansk 4b88d269e3 feat(app): LayoutEngine — recursive split render, splitter resize, stopped overlay
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:29:26 +07:00
vasyansk ee2f7097ce feat(app): M2 layout TS types + bridge commands
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:28:54 +07:00
vasyansk 62a65b691d feat(daemon): M2 command dispatch, layout events, cold-start restore, persistence wiring
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:25:35 +07:00
vasyansk b72f4cb3a5 feat(daemon): spawn_from_spec to (re)start surfaces from a persisted spec
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:22:29 +07:00
vasyansk d516414ac9 feat(daemon): registry owns workspaces/groups/trees + running/stopped surfaces
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:21:47 +07:00
vasyansk 7515516699 feat(daemon): debounced persist scheduler coalescing bursts into one save
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:20:58 +07:00
vasyansk 4f7ed2a5a3 feat(daemon): StateStore trait + atomic JSON store with corrupt-file backup
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:20:51 +07:00
vasyansk 9927046c7e feat(core): 10 layout preset generators
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:17:35 +07:00
vasyansk 28d0e05763 feat(core): n-ary tree ops — split, remove+collapse, ratios, move
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:17:35 +07:00
vasyansk 2723d40ff9 feat(proto): M2 commands (split/ratios/move/preset/restart/groups/meta) and events
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:13:33 +07:00
vasyansk c8ba401023 feat(proto): SurfaceSpec, Group, Workspace, status view types
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:12:29 +07:00
vasyansk 114922aaf8 feat(proto): GroupId, Orient, n-ary LayoutNode with external-tagged serde
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:11:51 +07:00
vasyansk d859aa8841 docs(plan): M2 implementation plan — layouts, persistence, sidebar, presets
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:08:40 +07:00
vasyansk ac13976bfd docs(spec): M2 design — layouts, split tree, persistence, sidebar, presets
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:58:51 +07:00
vasyansk 17351f3da2 Merge spacesh M0+M1: daemon, PTY, grid/snapshot, Tauri app
Vertical slice (bytes GUI↔daemon↔PTY over UDS) + persistence/reattach
(daemon outlives GUI; snapshot repaint). 4 crates + Tauri 2 app.
26 tests green and non-flaky.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:41:23 +07:00
vasyansk ecc6eb9d66 design: spacesh v1 UI mockups (main, code/diff, wizard, auth, account)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:39:51 +07:00
vasyansk b2c771f4f7 chore: commit Cargo.lock for reproducible daemon/app builds
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:39:51 +07:00
vasyansk 0cc1303fd9 docs(plan): sync Task 13 attach-snapshot with double-render fix
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:39:51 +07:00
vasyansk f1630633e5 test(daemon): serialize heavy socket/PTY integration tests
Process-wide serial lock around the socket-binding and PTY-spawning
integration tests in spaceshd. Running several at once on a many-core
box starved each other's async tasks and tripped timing assumptions,
causing ~1/10 flakes under cargo test --workspace. Unit tests stay
parallel. 0/20 spaceshd + 0/5 workspace runs after the change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:39:24 +07:00
vasyansk 77dfc69bd9 fix(daemon): remove pending broadcast on attach to prevent reattach double-render
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:33:11 +07:00
vasyansk 62e86a1c97 feat(app): reattach repaint + disconnect guard (M1)
All Task 15 code (spacesh:disconnected emit in bridge.rs reader,
onDaemonRawEvent in socketBridge.ts, reconnect handler in App.tsx)
was implemented together with Task 10 in the prior commit.
This commit marks the task boundary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:25:55 +07:00
vasyansk 56893c51d0 feat(app): UDS bridge (channel/invoke/emit) + xterm.js terminal, M0 e2e works
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:24:57 +07:00
vasyansk 1579686fdd chore(app): scaffold tauri 2 + react + vite, window launches
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:22:46 +07:00
vasyansk a56d8d0fea test(daemon): harden reattach test with pre-connect socket guard
Add wait_for_socket before second client connect to handle scheduling
jitter when tests run in parallel under cargo test --workspace.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:16:18 +07:00
vasyansk 18ac699951 feat(daemon): launchd user-agent install with KeepAlive
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:14:00 +07:00
vasyansk f49fc41cd1 test(daemon): reattach after disconnect repaints prior output from snapshot
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:13:32 +07:00
vasyansk 732eef96b5 feat(daemon): grid feed + output coalescing + snapshot-on-attach (M1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:12:55 +07:00
vasyansk b201d0104e feat(core): deterministic ANSI snapshot of the grid for reattach repaint
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:11:37 +07:00
vasyansk e2b746dd64 feat(core): GridSurface feeding PTY bytes into alacritty term
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:10:49 +07:00
vasyansk 8d0b5b8d1d test(daemon): make socket/pty integration tests robust under parallel load
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:05:23 +07:00
vasyansk 4b1a544923 feat(daemon): entrypoint with single-instance lock and lazy socket bind
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 20:00:41 +07:00
vasyansk 531f89eb73 feat(daemon): socket server with router task, command dispatch, event fan-out (M0)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:59:58 +07:00
vasyansk 2aedc6924d feat(daemon): registry for workspaces and surfaces with idempotent open
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:58:28 +07:00
vasyansk 32560ea364 feat(daemon): surface actor owning pty + broadcast fan-out (M0, no grid)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:57:53 +07:00
vasyansk cd1fe1dfd5 feat(daemon): lifecycle paths, single-instance lock, stale-socket cleanup
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:57:11 +07:00
vasyansk 0b6de3d3b4 feat(pty): PtyHandle spawn/read/input/resize/kill over portable-pty
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:56:41 +07:00
vasyansk 482f693835 feat(proto): length-prefixed frame read/write with EOF handling
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:56:00 +07:00
vasyansk 0351efa2c6 feat(proto): envelope, commands, events, ids with serde round-trip tests
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:55:29 +07:00
vasyansk 31dddb3b6c chore: scaffold cargo workspace and crate skeletons
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:54:38 +07:00
vasyansk 83f1c1f57d chore: seed repo with spec, plan, and design
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:50:15 +07:00