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