Commit Graph

76 Commits

Author SHA1 Message Date
vasyansk 56ba1723b9 feat(daemon): EventLog ring model with read-flags
Add event_log.rs with EventLog (capped VecDeque, monotonic ids, mark_read,
snapshot/restore) and EventLogState. Register mod in main.rs. Stub
Cmd::EventLog and Cmd::MarkRead arms in server.rs to keep the exhaustive
match compiling; full wiring follows in Task 4.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 07:21:26 +07:00
vasyansk 5a8596dd0b feat(proto): EventLog/MarkRead commands and Event/EventsRead events
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 06:59:27 +07:00
vasyansk fc13e4340c feat(proto): EventKind, EventRecord, MarkReadTarget 2026-06-10 06:52:35 +07:00
vasyansk 36964c9f21 feat(app): UI parity with Pencil mockup — top bar, panel cards, sidebar/event-center polish
Top bar (breadcrumb + actions + account), rounded panel cards with active
accent + rich headers, sidebar count pills/collapsible groups/daemon footer,
preset chips + scrollback pill, Event Center tabs + external-notify footer,
JetBrains Mono + Inter via @fontsource, shared theme tokens. Backend-absent
pieces are mocked (search, zoom, uptime, channels) pending SP1–SP5.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 06:47:38 +07:00
vasyansk 807eab3f6c docs: SP2 implementation plan — persistent event log + read-model
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 06:40:15 +07:00
vasyansk e038ff307d docs: SP2 design — persistent event log + read-model
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 06:31:26 +07:00
vasyansk 5c47ec25a1 Merge fix: GUI spaceshd discovery + non-fatal connect 2026-06-09 23:31:52 +07:00
vasyansk 92706c0780 fix(app): robust spaceshd discovery for tauri dev + non-fatal connect
The app is its own cargo workspace, so in 'tauri dev' the app binary lives
in app/src-tauri/target/ and spaceshd is NOT a sibling — lazy-start failed
and the .expect() crashed the window. Now: find_daemon tries SPACESHD_BIN,
sibling, repo-root target/{debug,release}, then PATH; bridge honors
SPACESH_SOCK like the daemon/CLI; setup logs instead of panicking.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:31:52 +07:00
vasyansk ec4025a683 docs: manual run & test guide (build, daemon, GUI, CLI, per-milestone checks)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:26:15 +07:00
vasyansk 710fa6473f Merge spacesh M3: status detection sources + UI + native notifications
Claude Code hooks (per-surface CLAUDE_CONFIG_DIR), zsh OSC 133, fallback
patterns → set_state; status rings, sidebar aggregate, Event Center,
native macOS notifications, auto-unread. 87 tests green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:18:50 +07:00
vasyansk c86627153d chore(app): lock notification plugin deps + regenerated tauri schemas
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:14:28 +07:00
vasyansk 1ecefdeb80 feat(app): Event Center, native notifications, auto-unread, state wiring in App
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:13:00 +07:00
vasyansk d36548ff39 feat(app): status rings on panels + sidebar aggregate badge from state events
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:11:46 +07:00
vasyansk c35585755e feat(daemon): actor OSC133/fallback detection → set_state, hook/shell spawn env, cleanup
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:05:18 +07:00
vasyansk 4396ad7909 feat(daemon): zsh OSC 133 shell integration via per-surface ZDOTDIR
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:00:48 +07:00
vasyansk 255fa27271 feat(daemon): versioned Claude Code hook adapter (per-surface CLAUDE_CONFIG_DIR)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:00:40 +07:00
vasyansk 4ec7dc1a78 feat(core): Osc133Scanner + FallbackScanner status detectors + grid tail_text
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:59:24 +07:00
vasyansk 84a19356e2 docs(plan): M3 implementation plan — status detection sources + UI
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:52:29 +07:00
vasyansk c0c8fe25f1 docs(spec): M3 design — status detection sources + UI + native notifications
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:45:11 +07:00
vasyansk 7f2afc3b8a Merge spacesh M4: CLI + set_state/state status primitive
spacesh-cli (lib+bin) one-shot client at full bus parity minus
interactive panels; --json + completions; lazy-start (notify
best-effort). In-memory ephemeral SurfaceState (set_state/state).
SPACESH_SOCK override. 73 tests green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:28:30 +07:00
vasyansk 819e936e6d docs(plan): sync M4 lifecycle test with SPACESH_SOCK serial-guard fix
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:24:40 +07:00
vasyansk 67c64e5bfe chore: lock clap/clap_complete for spacesh-cli
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:24:40 +07:00
vasyansk 6fc099bb6f test(daemon): serialize SPACESH_SOCK-mutating lifecycle tests to fix env race
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:23:41 +07:00
vasyansk 6f2e7885a4 test(cli): wire-level integration tests via SPACESH_SOCK mock daemon
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:20:26 +07:00
vasyansk 3c3a8039f3 feat(cli): command dispatch, human/--json rendering, status table, completions
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:17:53 +07:00
vasyansk a9fa1bf77b feat(cli): spacesh-cli scaffold — clap tree, one-shot client, command mapping
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:17:15 +07:00
vasyansk 635f9f4356 feat(daemon): per-surface status (set_state/state), idle-on-spawn, SPACESH_SOCK override
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:13:50 +07:00
vasyansk 4bd4aa4a36 feat(proto): SurfaceState + SetState command + State event + SurfaceView.state
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:10:54 +07:00
vasyansk c2f8ef4214 docs(plan): M4 implementation plan — CLI + set_state/state primitive
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:06:34 +07:00
vasyansk 429fd6977e docs(spec): M4 design — CLI + set_state/state status primitive
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:58:40 +07:00
vasyansk 34cc4ba5ca Merge spacesh M2: layouts, split tree, persistence, sidebar, presets
n-ary split layouts + LayoutEngine resize, multi-workspace structure
with groups/unread/order, 10 presets + wizard, disk persistence
(state.json) with cold-start restore (panels stopped). 56 tests green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:44:16 +07:00
vasyansk 33fc8625af docs(plan): correct M2 deferral note — group commands wired, only drag UI deferred
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:42:01 +07:00
vasyansk c9c3ba1fcd feat(app): wire set_group/delete_group bridge commands
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:41:34 +07:00
vasyansk 0328797bce chore(daemon): remove unused imports and dead placeholders
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:39:43 +07:00
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