Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
449 commits
Select commit Hold shift + click to select a range
e6bf1a1
Merge branch 'main' into feat/opencode-web-embed
jamiepine Mar 5, 2026
e24089b
fix(cortex): use idle time instead of lifetime for worker timeout
jamiepine Mar 5, 2026
c119f8b
fix(cortex): bias select! to drain events before health tick
jamiepine Mar 5, 2026
63bfd10
Merge pull request #332 from spacedriveapp/fix/supervisor-idle-timeout
jamiepine Mar 5, 2026
1e466e3
Merge pull request #329 from vsumner/docs/rig-design-sync
jamiepine Mar 5, 2026
1ba07e3
Merge branch 'main' into feat/opencode-web-embed
jamiepine Mar 5, 2026
4c73e55
fix: cortex supervisor exempts idle workers from timeout
jamiepine Mar 5, 2026
c69c082
fix(channel): stop re-summarising worker results that were already re…
jamiepine Mar 5, 2026
bb82385
feat: thread interactive flag through full stack and differentiate op…
jamiepine Mar 5, 2026
73fe7c0
Merge pull request #333 from spacedriveapp/fix/stop-reiterating-relay…
jamiepine Mar 6, 2026
34f92b2
Merge branch 'main' into feat/opencode-web-embed
jamiepine Mar 6, 2026
5435ed7
fix: emit WorkerInitialResult on interactive follow-up completions
jamiepine Mar 6, 2026
eb6e877
Merge pull request #314 from spacedriveapp/feat/opencode-web-embed
jamiepine Mar 6, 2026
58acc81
fix: persist transcript incrementally for interactive workers on idle
jamiepine Mar 6, 2026
14e9b0f
feat: reconnect idle interactive workers on restart
jamiepine Mar 6, 2026
26d578f
fix: enforce interactive-only opencode workers and one-per-directory …
jamiepine Mar 6, 2026
b58bca5
fix: address review feedback on idle worker resilience
jamiepine Mar 6, 2026
43c4d03
fix: leave idle workers as idle when resume fails on restart
jamiepine Mar 6, 2026
8409026
fix: persist opencode session metadata and show idle workers in chann…
jamiepine Mar 6, 2026
699eeb3
fix: prevent text overflow in agent chat message bubbles
toanalien Mar 6, 2026
285e1d6
fix: retire expired idle workers on restart and clean up event routing
jamiepine Mar 6, 2026
987fc0b
fix: persist worker directory for correct idle-worker resume
jamiepine Mar 6, 2026
4ef5dd8
Merge pull request #334 from spacedriveapp/fix/opencode-worker-resili…
jamiepine Mar 6, 2026
29edfda
feat: embed OpenCode UI via Shadow DOM instead of iframe
jamiepine Mar 6, 2026
e19dd13
fix: use full clone in build-opencode-embed so pinned commit is reach…
jamiepine Mar 6, 2026
796ba0a
fix: unshallow cached clone so pinned commit is reachable
jamiepine Mar 6, 2026
fa48493
fix: check node version upfront and show actionable error message
jamiepine Mar 6, 2026
1e75053
fix: generate manifest.json from hashed entry filenames in build script
jamiepine Mar 6, 2026
3580768
docs: document OpenCode embed build step and embedded UI
jamiepine Mar 6, 2026
89292f3
ci: build OpenCode embed in Dockerfile and release workflow
jamiepine Mar 6, 2026
fd891f0
fix: pre-seed OpenCode layout to start with sidebar and panels collapsed
jamiepine Mar 6, 2026
476e7f4
fix: hide OpenCode sidebar in embedded mode via CSS override
jamiepine Mar 6, 2026
c9c3806
feat: register Spacebot theme in OpenCode embed on mount
jamiepine Mar 6, 2026
2195ff8
feat: clickable workers in portal chat and hover tooltip for task text
jamiepine Mar 6, 2026
1b7ecce
Merge branch 'main' into fix/mcp-http-auth-header
ciaranashton Mar 6, 2026
5a64972
fix(config): widen resolve_env_value visibility so MCP header interpo…
ciaranashton Mar 6, 2026
7c06f28
chore: cargo fmt config
ciaranashton Mar 6, 2026
724943b
style: apply cargo fmt
ciaranashton Mar 6, 2026
986c2f9
chore: remove accidentally committed package-lock.json
ciaranashton Mar 6, 2026
130b924
fix(test): pass mcp_tool_names arg to render_worker_capabilities in c…
ciaranashton Mar 6, 2026
243fd67
fix: address PR #343 review feedback
jamiepine Mar 6, 2026
6ff56fb
fix: treat frozen-lockfile failure as fatal in CI
jamiepine Mar 6, 2026
f99d29b
Merge pull request #336 from toanalien/fix/layout-agent-chat
jamiepine Mar 6, 2026
e7cf779
Merge pull request #343 from spacedriveapp/fix/opencode-embed-ui
jamiepine Mar 6, 2026
4488ae5
misc: UI improvements and docs updates
jamiepine Mar 7, 2026
9d39ae8
Merge pull request #345 from spacedriveapp/misc/ui-fixes
jamiepine Mar 7, 2026
c0dfe3a
Merge remote-tracking branch 'origin/main' into feat/agent-factory
jamiepine Mar 7, 2026
aedf1bd
feat: add Projects feature — data layer, prompt injection, tools, API…
jamiepine Mar 7, 2026
aa7ecfc
fix: auto-discover worktrees on project creation and skip worktree di…
jamiepine Mar 7, 2026
5b26e90
feat: cache disk usage per repo/worktree and show inline in UI
jamiepine Mar 7, 2026
2286ce7
fix: resolve clippy warnings in factory tools
jamiepine Mar 7, 2026
c59ca80
fix: browser tabs always destroyed when workers finish
jamiepine Mar 7, 2026
1caa405
fix: browser cookies lost across agent restarts with persist_session
jamiepine Mar 7, 2026
9128ee2
fix: add missing browser_persist_session arg in context_dump test
jamiepine Mar 7, 2026
c96a2dd
fix: add user field to IdentityFiles type for AgentConfig compatibility
jamiepine Mar 7, 2026
5e47b3c
fix: collapse nested if to satisfy clippy collapsible_if
jamiepine Mar 7, 2026
c63dfd8
fix: address review findings — prompt wording and ApiState project_st…
jamiepine Mar 7, 2026
778e1be
test: replace panic branches in tool_nudge assertions
vsumner Mar 5, 2026
18d1a1a
Merge pull request #328 from vsumner/chore/bug-scanner-autopilot-pr31…
jamiepine Mar 7, 2026
db9636e
Merge branch 'main' into fix/browser-session-persistence
jamiepine Mar 7, 2026
fc938b8
feat: add ProjectsConfig to settings — TOML config, runtime hot-reloa…
jamiepine Mar 7, 2026
ace5ddb
fix: address PR review feedback
jamiepine Mar 7, 2026
bba4b59
Merge pull request #348 from spacedriveapp/fix/browser-session-persis…
jamiepine Mar 7, 2026
a931c9d
feat: add current_branch detection for repos and auto-inject project …
jamiepine Mar 7, 2026
5a1dd7f
feat: persist channel attachments to disk with recall tool
jamiepine Mar 7, 2026
6c2553c
fix: resolve clippy type_complexity and manual_clamp errors
jamiepine Mar 7, 2026
62f4f94
fix: match CI clippy strictness in local gate-pr
jamiepine Mar 7, 2026
3fce667
fix: address PR review feedback for attachment persistence
jamiepine Mar 7, 2026
7e78eee
Merge pull request #350 from spacedriveapp/feat/channel-attachment-pe…
jamiepine Mar 7, 2026
2d66284
Merge remote-tracking branch 'origin/main' into feat/projects
jamiepine Mar 7, 2026
f4e50ed
fix: renumber project migrations to avoid version collision with main
jamiepine Mar 7, 2026
8a7120d
fix: address PR review — security hardening and correctness fixes
jamiepine Mar 7, 2026
f7b6313
refactor: rewrite browser tools from single action enum to 12 flat to…
jamiepine Mar 7, 2026
388e5a2
fix: rename iframeIndices to iframe_indices in extract_dom.js to matc…
jamiepine Mar 7, 2026
85fef57
fix: stabilize browser tools — robust selectors, page readiness wait,…
jamiepine Mar 7, 2026
e496835
fix: add selector parameter to browser_click/type, validate input target
jamiepine Mar 7, 2026
5432565
debug: surface DOM extraction errors and add CDP result logging
jamiepine Mar 7, 2026
36dcc76
refactor: replace JS DOM extraction with CDP Accessibility API
jamiepine Mar 7, 2026
bba9c13
fix: prevent workers from reaching Done via reasoning-only responses
jamiepine Mar 7, 2026
dbd8995
fix: track consecutive nudge attempts, add WorkerText event, refactor…
jamiepine Mar 7, 2026
6e5bff1
Merge pull request #346 from spacedriveapp/feat/projects
jamiepine Mar 7, 2026
28a2df4
Merge branch 'main' into refactor/browser-tool-rewrite
jamiepine Mar 7, 2026
9274342
fix: fork before keychain access to prevent SIGBUS on macOS daemon start
chanyeinthaw Mar 7, 2026
abcd98d
fix: use resolved instance dir for PID check with custom config path
chanyeinthaw Mar 7, 2026
f7ece58
Merge branch 'main' into fix/mcp-http-auth-header
ciaranashton Mar 7, 2026
9ee27ea
add tool renderers for opencode, web_search, read_skill, spacebot_doc…
jamiepine Mar 7, 2026
2f6312f
improve shell/exec/bash tool result rendering and error detection
jamiepine Mar 8, 2026
bc39fac
fix: remove unused import and coerce unknown values in JSX conditionals
jamiepine Mar 8, 2026
e81b99b
Merge pull request #352 from spacedriveapp/refactor/browser-tool-rewrite
jamiepine Mar 8, 2026
2ebc3f6
Merge branch 'main' into fix/daemon-fork-sigbus
chanyeinthaw Mar 8, 2026
c4e56d5
feat: worker context injection and duplicate worker spawn prevention
jamiepine Mar 8, 2026
f56f44c
Merge branch 'main' into feat/worker-context-injection
jamiepine Mar 8, 2026
18744a5
fix: browser context management — dedup snapshots, consecutive loop g…
jamiepine Mar 8, 2026
c9dc6be
fix: address review feedback — dedup item tracking, XOR ping-pong exe…
jamiepine Mar 8, 2026
6966cea
fix: collapse nested if blocks for clippy collapsible_if
jamiepine Mar 8, 2026
94b2ef6
refactor: merge exec tool into shell, add per-command env vars
jamiepine Mar 8, 2026
9be5251
fix: retry transient provider errors instead of killing worker
jamiepine Mar 8, 2026
cb101c5
Merge pull request #359 from spacedriveapp/fix/browser-context-manage…
jamiepine Mar 8, 2026
4b25813
Merge branch 'main' into refactor/merge-shell-exec
jamiepine Mar 8, 2026
86b5d8f
fix: sandbox env propagation, env var validation, and legacy exec ren…
jamiepine Mar 8, 2026
b92bf6b
fix: set CI=true and DEBIAN_FRONTEND=noninteractive in sandbox env
jamiepine Mar 8, 2026
857e29b
Merge pull request #360 from spacedriveapp/refactor/merge-shell-exec
jamiepine Mar 8, 2026
8608f05
Merge pull request #353 from chanyeinthaw/fix/daemon-fork-sigbus
jamiepine Mar 8, 2026
979f71d
Merge remote-tracking branch 'origin/main' into feat/agent-factory
jamiepine Mar 8, 2026
de6308c
feat: wall-clock cron support in UI, anchor interval crons to last ex…
jamiepine Mar 8, 2026
aee2462
fix: expand 5-field cron to 7-field for cron crate, rework modal layo…
jamiepine Mar 8, 2026
68f780a
Merge branch 'main' into feat/worker-context-injection
jamiepine Mar 8, 2026
7bd2933
fix: address review feedback — error logging, NULL handling, softer p…
jamiepine Mar 8, 2026
eb30636
Merge pull request #361 from spacedriveapp/feat/cron-wall-clock-and-u…
jamiepine Mar 8, 2026
1a91f58
Merge remote-tracking branch 'origin/main' into feat/agent-factory
jamiepine Mar 8, 2026
92ca1b0
feat: move identity files to agent root, add ROLE.md support to API a…
jamiepine Mar 8, 2026
ecb4217
Merge remote-tracking branch 'origin/main' into feat/worker-context-i…
jamiepine Mar 8, 2026
3519a01
fix: address PR #358 review feedback — race-free task reservation, st…
jamiepine Mar 8, 2026
256a4c2
fix: address PR review feedback — races, error masking, humans hot-re…
jamiepine Mar 8, 2026
6e96dec
feat: create default hierarchical link between admin human and defaul…
jamiepine Mar 8, 2026
3a93e05
feat: add platform identity fields to HumanDef and fix default link d…
jamiepine Mar 8, 2026
3c56dde
feat: support single-repo projects and enhance skills UI
jamiepine Mar 8, 2026
c388b0d
feat: add ProfileAvatar, agent gradient/avatar, cortex chat tool call…
jamiepine Mar 8, 2026
b2e3440
fix: fall back to gradient avatar when image fails to load
jamiepine Mar 8, 2026
460f4dd
feat: redesign create agent dialog with preset cards + cortex chat, U…
jamiepine Mar 8, 2026
0ea9224
feat: add install_skill tool and refine cortex integration guidance
jamiepine Mar 8, 2026
a7ddc11
improve empty state UX and human description storage
jamiepine Mar 8, 2026
8c8e9ca
fix: address PR review — multipart error propagation, path traversal …
jamiepine Mar 8, 2026
6f04526
Merge pull request #362 from spacedriveapp/feat/single-repo-projects-…
jamiepine Mar 8, 2026
d2d2f74
Merge branch 'main' into feat/worker-context-injection
jamiepine Mar 8, 2026
6cda083
fix: worker limit check uses worker_handles, route handles OpenCode w…
jamiepine Mar 8, 2026
c87a87c
Merge branch 'main' into fix/mcp-http-auth-header
ciaranashton Mar 8, 2026
4e02874
Merge pull request #358 from spacedriveapp/feat/worker-context-injection
jamiepine Mar 8, 2026
4276c0e
Merge branch 'main' into fix/mcp-http-auth-header
jamiepine Mar 8, 2026
0d8a2a5
Merge pull request #330 from ciaranashton/fix/mcp-http-auth-header
jamiepine Mar 8, 2026
0778f42
cortex chat: spawn workers, thread management, auto-trigger on worker…
jamiepine Mar 8, 2026
79f827c
cron: webchat broadcast delivery, adapter prompt, tool description re…
jamiepine Mar 8, 2026
3a8d681
Merge branch 'main' into feat/agent-factory
jamiepine Mar 8, 2026
ba95cd0
fix: destructure Worker::new tuple in DetachedSpawnWorkerTool
jamiepine Mar 8, 2026
ad1d389
Merge pull request #315 from spacedriveapp/feat/agent-factory
jamiepine Mar 8, 2026
8011cdd
release: v0.3.0
jamiepine Mar 8, 2026
c1ae104
fix: whitelist build-opencode-embed.sh in .dockerignore
jamiepine Mar 8, 2026
ced26ab
feat(metrics): add comprehensive Prometheus metrics across all subsys…
l33t0 Mar 1, 2026
772388b
feat(docker): expose metrics port 9090
l33t0 Mar 1, 2026
3edf665
style: apply cargo fmt
l33t0 Mar 1, 2026
ad27ce2
fix: address PR review feedback
l33t0 Mar 1, 2026
dd3435a
Update docs/metrics.md
l33t0 Mar 1, 2026
8ad7096
fix: address PR review feedback for metrics instrumentation
l33t0 Mar 1, 2026
634499c
fix: add missing worker_type argument to spawn_worker_task calls
l33t0 Mar 6, 2026
1417e42
fix: address PR review feedback and fix CI build errors
l33t0 Mar 6, 2026
a61a0e3
fix: address remaining PR review feedback
l33t0 Mar 6, 2026
006180c
fix: only count memory_updates_total on actual row changes and avoid …
l33t0 Mar 6, 2026
b10df06
fix: add missing worker_type argument to cortex chat spawn_worker_tas…
l33t0 Mar 8, 2026
00630d8
fix: use actions/setup-node for Node 22 in release workflow
jamiepine Mar 8, 2026
049c1ad
fix: build interface dist in release binary job
jamiepine Mar 8, 2026
37df86b
fix: drop frozen-lockfile for interface install to resolve platform-s…
jamiepine Mar 8, 2026
7b3b4a6
fix: install linux rollup native binaries for cross-platform vite build
jamiepine Mar 8, 2026
10285f5
fix: delete bun.lock before install so platform-specific deps resolve…
jamiepine Mar 8, 2026
27c16b9
Merge branch 'main' into feat/metrics-build-enable
l33t0 Mar 8, 2026
7d13c46
Merge pull request #274 from l33t0/feat/metrics-build-enable
jamiepine Mar 8, 2026
1eb8e2a
fix: include presets in docker build context
jamiepine Mar 8, 2026
203c9d9
fix: block release publish when docker jobs fail
jamiepine Mar 8, 2026
024d00a
Add SSH daemon management API for hosted instances
jamiepine Mar 8, 2026
bf6d0ef
Address review feedback on SSH daemon management
jamiepine Mar 8, 2026
5e1e815
Address second round of review feedback
jamiepine Mar 9, 2026
a5eba12
Merge pull request #369 from spacedriveapp/feat/ssh-daemon
jamiepine Mar 9, 2026
7b0e4f8
fix: terminate channel turn immediately after skip tool call
jamiepine Mar 9, 2026
38c8cd4
feat: add system config self-awareness to channel status block
jamiepine Mar 9, 2026
faf6b4f
feat: add prompt inspector with snapshot capture
jamiepine Mar 9, 2026
ea43703
fix: guard reply/skip termination against tool errors
jamiepine Mar 9, 2026
badee64
fix: require_mention falls through to default agent instead of droppi…
jamiepine Mar 9, 2026
a2b25fd
fix: move backfill history from chat history to system prompt
jamiepine Mar 9, 2026
6c11db0
Merge pull request #373 from spacedriveapp/fix/skip-tool-terminate
jamiepine Mar 9, 2026
e840d78
address PR #374 review feedback
jamiepine Mar 9, 2026
0a260e5
Merge branch 'main' into feat/system-info-status-block
jamiepine Mar 9, 2026
cf62e26
Merge pull request #374 from spacedriveapp/feat/system-info-status-block
jamiepine Mar 9, 2026
5afbe63
Merge branch 'main' into fix/require-mention-fallthrough
jamiepine Mar 9, 2026
3cd71b2
address PR #376 review feedback
jamiepine Mar 9, 2026
21ae608
Merge pull request #376 from spacedriveapp/fix/require-mention-fallth…
jamiepine Mar 9, 2026
b629418
fix: harden backfill transcript handling
jamiepine Mar 9, 2026
b760cc4
Merge remote-tracking branch 'origin/main' into fix/backfill-system-p…
jamiepine Mar 9, 2026
99d280a
Merge pull request #377 from spacedriveapp/fix/backfill-system-prompt
jamiepine Mar 9, 2026
bd6a7ed
release: v0.3.2
jamiepine Mar 9, 2026
0688880
fix: use floor_char_boundary for string truncation to prevent UTF-8 p…
l33t0 Mar 1, 2026
8c1576c
feat(cortex): wire memory maintenance into cortex tick
vsumner Mar 4, 2026
dd0f875
fix(cortex): make memory maintenance cancelable and bounded in cortex…
vsumner Mar 4, 2026
8ae3a59
fix(hooks): restore tool-result early-return flow
vsumner Mar 4, 2026
5381b6a
Harden detached channel cleanup with registration tokens
vsumner Mar 4, 2026
4c805a3
fix(config): restore cortex maintenance config on rebased phase3
vsumner Mar 5, 2026
68c7cb6
harden cortex maintenance and config update safety
vsumner Mar 5, 2026
be33133
fix maintenance survivor embeddings and strengthen config guards
vsumner Mar 5, 2026
82238ee
fix(cortex): close rebase review follow-ups
vsumner Mar 10, 2026
81c7855
fix: macos runner
jamiepine Mar 10, 2026
e031eaf
Merge branch 'main' into phase3/cortex-memory-maintenance
jamiepine Mar 10, 2026
861b68f
Merge pull request #307 from vsumner/phase3/cortex-memory-maintenance
jamiepine Mar 10, 2026
0a3e8c8
fix: race condition losing opencode worker port in database
jamiepine Mar 10, 2026
57dc122
Merge pull request #384 from spacedriveapp/fix/opencode-port-race
jamiepine Mar 10, 2026
c79c9e9
fix: harden openai linkage and memory persistence completion contracts
tomasmach Mar 10, 2026
5509418
feat: desktop app shell and interface polish
jamiepine Mar 10, 2026
555bbd6
fix: preserve call_id when serializing openai responses tool calls
tomasmach Mar 10, 2026
6d76df1
refactor: remove redundant memory persistence contract tracking
tomasmach Mar 10, 2026
5863ed2
fix: address review findings from PR #386
tomasmach Mar 10, 2026
271c82e
fix: delete associations before memory row in embedding failure compe…
tomasmach Mar 10, 2026
c280140
fix: apply memory persistence contract to ingestion, extract retry pr…
tomasmach Mar 10, 2026
17146d5
fix(channel): surface LLM errors to users instead of silently logging
ibhagwan Mar 6, 2026
11064dd
feat(messaging): add Signal adapter via signal-cli JSON-RPC daemon
ibhagwan Mar 4, 2026
ac1c9a5
Merge pull request #347 from ibhagwan/feat/signal-adapter
jamiepine Mar 10, 2026
3f0aaa7
Merge branch 'main' into fix/gpt-codex-hardening-pass
jamiepine Mar 10, 2026
0a97964
Merge pull request #386 from tomasmach/fix/gpt-codex-hardening-pass
jamiepine Mar 10, 2026
7e9e24a
Merge branch 'main' into desktop-app
jamiepine Mar 10, 2026
3e56129
fix: use byte slice in loop_guard to avoid UTF-8 panic on multibyte c…
Dakai666 Mar 10, 2026
dfe45f6
fix: preserve reasoning in assistant tool-call conversion
skulldogged Mar 11, 2026
ebdbee6
Merge upstream/main into fix/reasoning-tool-call-serialization
skulldogged Mar 11, 2026
1e89e96
fix: address reasoning serialization review follow-ups
skulldogged Mar 11, 2026
524345f
chore: clippy fixes on HEAD
ibhagwan Mar 11, 2026
7751f6c
fix: use floor_char_boundary for UTF-8 safe string truncation
l33t0 Mar 11, 2026
78eec0a
fix: collapse nested if statements to satisfy clippy collapsible_if
l33t0 Mar 11, 2026
47c2656
fix: address review feedback - redact tokens, use truncate_utf8_ellip…
l33t0 Mar 11, 2026
81c1bb8
test: add UTF-8 multibyte truncation tests for Cyrillic, CJK, and emoji
l33t0 Mar 11, 2026
6b5347d
fix: prevent deletion of instance-level skills via agent API
l33t0 Mar 11, 2026
cf07234
fix(config): override host when deployed to docker
DeJayDev Mar 11, 2026
900b81f
fix(config): docker bind to ipv4
DeJayDev Mar 11, 2026
8f20589
fix(slack): normalize conversation ID to prevent thread splits
jamiepine Mar 11, 2026
8a82586
feat(llm): add GitHub Copilot as a first-class LLM provider
ibhagwan Mar 11, 2026
bda4c9d
fix(slack): pin outbound target at enqueue time to prevent cross-thre…
jamiepine Mar 12, 2026
bfaf70f
fix: harden discord poll handling and docs
vsumner Mar 12, 2026
6594c02
fix: address pre-existing clippy warnings and test compilation
jamiepine Mar 12, 2026
8195de9
Merge pull request #394 from ibhagwan/spacebot-copilot
jamiepine Mar 12, 2026
e39c883
fix: resolve CI failures — clippy collapsible_if and unused TS function
jamiepine Mar 12, 2026
847b784
fix: address PR review feedback — abort/drain ordering, stale control…
jamiepine Mar 12, 2026
d9e14ae
fix: address review feedback for PR #406
jamiepine Mar 12, 2026
92d5ebd
Merge pull request #406 from spacedriveapp/fix/slack-thread-conversat…
jamiepine Mar 12, 2026
b4a66e4
Merge branch 'main' into fix/reasoning-tool-call-serialization
jamiepine Mar 12, 2026
97e2d28
Merge pull request #393 from skulldogged/fix/reasoning-tool-call-seri…
jamiepine Mar 12, 2026
01a3746
Merge branch 'main' into fix/loop-guard-utf8-panic
jamiepine Mar 12, 2026
36df144
Merge branch 'main' into fix/docker-api-bind
jamiepine Mar 12, 2026
a0b5ab1
Merge branch 'main' into fix/discord-poll-validation-docs
jamiepine Mar 12, 2026
87f689b
Merge pull request #389 from Dakai666/fix/loop-guard-utf8-panic
jamiepine Mar 12, 2026
e3b6e31
Merge branch 'main' into fix/utf8-byte-slicing-panic
jamiepine Mar 12, 2026
906c4c0
Merge branch 'main' into fix/skills-remove-instance-guard
jamiepine Mar 12, 2026
788b26c
Merge pull request #400 from l33t0/fix/skills-remove-instance-guard
jamiepine Mar 12, 2026
a01f2c5
Merge pull request #398 from l33t0/fix/utf8-byte-slicing-panic
jamiepine Mar 12, 2026
bc97a17
Merge pull request #403 from DeJayDev/fix/docker-api-bind
jamiepine Mar 12, 2026
ccdbce5
Merge pull request #407 from vsumner/fix/discord-poll-validation-docs
jamiepine Mar 12, 2026
9f2d46b
Merge remote-tracking branch 'origin/main' into desktop-app
jamiepine Mar 12, 2026
06e643d
fix: resolve clippy lints — type alias, too_many_arguments, manual_strip
jamiepine Mar 12, 2026
f1666ae
Merge pull request #387 from spacedriveapp/desktop-app
jamiepine Mar 12, 2026
b85ae3a
fix: preserve whitespace-only content segments in streaming responses
jamiepine Mar 12, 2026
b334fab
Merge pull request #413 from spacedriveapp/fix/streaming-whitespace-drop
jamiepine Mar 12, 2026
780087c
chore: gitignore Swift package .build/ artifacts
jamiepine Mar 12, 2026
4fe99c6
release: v0.3.3
jamiepine Mar 12, 2026
2e9e84d
feat: add dynamic project registry (Phase 1)
marcmantei Mar 12, 2026
f32bbd4
feat: add notification on new repo discovery
marcmantei Mar 12, 2026
e3608f4
fix: defer registry sync loop spawn until messaging_manager is available
marcmantei Mar 12, 2026
da94ac2
fix: correct default model + worker retrigger relay
marcmantei Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
56 changes: 56 additions & 0 deletions .agents/skills/release-bump-changelog/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
name: release-bump-changelog
description: Use this skill when preparing a release bump or updating release notes. It writes a launch-style release story from the actual change set, then runs `cargo bump` so the generated GitHub notes and the marketing copy land together in `CHANGELOG.md`.
---

# Release Bump + Changelog

## Goal

Create a version bump commit where each release section includes both:

- a launch-style narrative (marketing copy)
- the exact GitHub-generated release notes

## Workflow

1. Ensure the working tree is clean (except allowed release files).
2. Draft release story markdown from real changes (PR titles, release-note bullets, and diff themes).
- Target style: similar to the `v0.2.0` narrative (clear positioning + concrete highlights).
- Keep it factual and specific to the release.
- Write to a temp file (outside repo is preferred):
- `marketing_file="$(mktemp)"`
- write markdown content to `$marketing_file`
3. Run `cargo bump <patch|minor|major|X.Y.Z>` with marketing copy input:
- `SPACEBOT_RELEASE_MARKETING_COPY_FILE="$marketing_file" cargo bump <...>`
- This invokes `scripts/release-tag.sh`.
- The script generates GitHub-native notes (`gh api .../releases/generate-notes`).
- The script upserts `CHANGELOG.md` with:
- `### Release Story` (from your marketing file)
- GitHub-generated notes body
- The script includes `CHANGELOG.md` in the release commit.
4. Verify results:
- `git show --name-only --stat`
- Confirm commit contains `Cargo.toml`, `Cargo.lock` (if present), and `CHANGELOG.md`.
- Confirm tag was created (`git tag --list "v*" --sort=-v:refname | head -n 5`).

## Requirements

- `gh` CLI installed and authenticated (`gh auth status`).
- `origin` remote points to GitHub, or set `SPACEBOT_RELEASE_REPO=<owner/repo>`.
- Marketing copy is required unless explicitly bypassed with `SPACEBOT_SKIP_MARKETING_COPY=1`.

## Release Story Format

Use markdown only (no outer `## vX.Y.Z` heading; script adds it). Recommended structure:

1. One strong opening paragraph (why this release matters)
2. One paragraph on major technical shifts
3. Optional short highlight bullets for standout additions/fixes

Avoid vague hype. Tie claims to concrete shipped changes.

## Notes

- Do not use a standalone changelog sync script.
- `CHANGELOG.md` is seeded from historical releases and then maintained by the release bump workflow.
20 changes: 18 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,26 @@ interface/node_modules/
interface/dist/

# Not needed for the build
docs/
tests/
scripts/
!scripts/build-opencode-embed.sh

# Exclude docs except what's needed for self_awareness.rs embeds
docs/node_modules/
docs/.next/
docs/out/
docs/app/
docs/components/
docs/lib/
docs/design-docs/
docs/*.json
docs/*.ts
docs/*.tsx
docs/*.mjs
docs/*.yaml
docs/*.lock
docs/.gitignore
docs/.node-version
fly.toml
AGENTS.md
RUST_STYLE_GUIDE.md
LICENSE
149 changes: 147 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,45 @@ env:
IMAGE: ghcr.io/${{ github.repository_owner }}/spacebot

jobs:
verify-version:
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4

- name: Verify Cargo.toml version matches tag
run: |
TAG="${GITHUB_REF#refs/tags/v}"
CARGO_VERSION=$(grep '^version' Cargo.toml | head -1 | sed 's/.*"\(.*\)"/\1/')
echo "Git tag version: $TAG"
echo "Cargo.toml version: $CARGO_VERSION"
if [ "$TAG" != "$CARGO_VERSION" ]; then
echo "::error::Version mismatch! Git tag is v${TAG} but Cargo.toml has version ${CARGO_VERSION}. Bump the version in Cargo.toml before tagging."
exit 1
fi

build-binaries:
needs: [verify-version]
if: always() && (needs.verify-version.result == 'success' || needs.verify-version.result == 'skipped')
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
runner: ubuntu-24.04
archive: tar.gz
os: linux
- target: aarch64-unknown-linux-gnu
runner: ubuntu-24.04-arm
archive: tar.gz
os: linux
- target: aarch64-apple-darwin
runner: macos-15
archive: tar.gz
os: macos
- target: x86_64-apple-darwin
runner: macos-15-intel
archive: tar.gz
os: macos
runs-on: ${{ matrix.runner }}
permissions:
contents: write
Expand All @@ -39,9 +68,30 @@ jobs:
with:
targets: ${{ matrix.target }}

- name: Install protoc
- name: Install system dependencies (Linux)
if: matrix.os == 'linux'
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler

- name: Install system dependencies (macOS)
if: matrix.os == 'macos'
run: brew install protobuf

- name: Install Node
uses: actions/setup-node@v4
with:
node-version: 22

- name: Install bun
uses: oven-sh/setup-bun@v2

- name: Build frontend
env:
SPACEBOT_SKIP_FRONTEND_BUILD: "1"
run: |
cd interface && rm -f bun.lock && bun install && cd ..
./scripts/build-opencode-embed.sh
cd interface && bun run build

- name: Determine version tag
id: version
run: |
Expand Down Expand Up @@ -72,6 +122,8 @@ jobs:
retention-days: 1

build-docker:
needs: [verify-version]
if: always() && (needs.verify-version.result == 'success' || needs.verify-version.result == 'skipped')
strategy:
matrix:
include:
Expand Down Expand Up @@ -176,7 +228,9 @@ jobs:
-d '{"image_tag": "${{ needs.build-docker.outputs.version }}"}'

create-release:
needs: build-binaries
needs:
- build-binaries
- merge-docker
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-24.04
permissions:
Expand All @@ -196,6 +250,7 @@ jobs:
run: |
mkdir -p release-assets
find binaries -name "*.tar.gz" -exec cp {} release-assets/ \;
find binaries -name "*.zip" -exec cp {} release-assets/ \;
ls -la release-assets/

- name: Create GitHub Release
Expand All @@ -204,3 +259,93 @@ jobs:
tag_name: ${{ needs.build-binaries.outputs.version }}
generate_release_notes: true
files: release-assets/*

update-homebrew:
needs:
- build-binaries
- create-release
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-24.04
permissions:
contents: read

steps:
- uses: actions/checkout@v4

- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: binaries
pattern: spacebot-*
merge-multiple: false

- name: Compute SHA256 checksums
id: sha
run: |
for arch in aarch64-apple-darwin x86_64-apple-darwin aarch64-unknown-linux-gnu x86_64-unknown-linux-gnu; do
FILE=$(find binaries -name "*${arch}*" | head -1)
KEY=$(echo "$arch" | tr '-' '_')
echo "${KEY}=$(shasum -a 256 "$FILE" | awk '{print $1}')" >> "$GITHUB_OUTPUT"
done

- name: Update formula in tap repo
env:
GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
run: |
VERSION="${{ needs.build-binaries.outputs.version }}"
VERSION_NUM="${VERSION#v}"
REPO="${{ github.repository }}"
BASE="https://github.com/${REPO}/releases/download/${VERSION}"

git clone "https://x-access-token:${GH_TOKEN}@github.com/spacedriveapp/homebrew-tap.git" tap
mkdir -p tap/Formula

SHA_ARM_MAC="${{ steps.sha.outputs.aarch64_apple_darwin }}"
SHA_X86_MAC="${{ steps.sha.outputs.x86_64_apple_darwin }}"
SHA_ARM_LINUX="${{ steps.sha.outputs.aarch64_unknown_linux_gnu }}"
SHA_X86_LINUX="${{ steps.sha.outputs.x86_64_unknown_linux_gnu }}"

# Write formula (sed strips 10 leading spaces from the YAML indentation)
sed 's/^ //' > tap/Formula/spacebot.rb <<RUBY
class Spacebot < Formula
desc "Agentic LLM system with specialized processes"
homepage "https://github.com/${REPO}"
version "${VERSION_NUM}"
license "FSL-1.1-ALv2"

on_macos do
if Hardware::CPU.arm?
url "${BASE}/spacebot-${VERSION}-aarch64-apple-darwin.tar.gz"
sha256 "${SHA_ARM_MAC}"
else
url "${BASE}/spacebot-${VERSION}-x86_64-apple-darwin.tar.gz"
sha256 "${SHA_X86_MAC}"
end
end

on_linux do
if Hardware::CPU.arm?
url "${BASE}/spacebot-${VERSION}-aarch64-unknown-linux-gnu.tar.gz"
sha256 "${SHA_ARM_LINUX}"
else
url "${BASE}/spacebot-${VERSION}-x86_64-unknown-linux-gnu.tar.gz"
sha256 "${SHA_X86_LINUX}"
end
end

def install
bin.install "spacebot"
end

test do
assert_match "spacebot", shell_output("#{bin}/spacebot --version")
end
end
RUBY

cd tap
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Formula/spacebot.rb
git commit -m "spacebot ${VERSION}" || echo "No changes to commit"
git push
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
/target
.DS_Store
.fastembed_cache
.build/

# Interface
interface/node_modules/
interface/dist/
interface/public/opencode-embed/
.opencode-build-cache/

.idea
list/
Expand Down
23 changes: 14 additions & 9 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Creating a branch is `let branch_history = channel_history.clone()`.

The branch result is injected into the channel's history as a distinct message type. Then the branch is deleted. Multiple branches can run concurrently per channel (configurable limit). First done, first incorporated.

**Tools:** memory_recall, memory_save, channel_recall, spawn_worker
**Tools:** memory_recall, memory_save, memory_delete, channel_recall, spacebot_docs, task_create, task_list, task_update, spawn_worker
**Context:** Clone of channel history at fork time
**Lifecycle:** Short-lived. Returns a conclusion, then deleted.

Expand All @@ -80,11 +80,11 @@ Two kinds:
- **Interactive:** Long-running, accepts follow-up input from the channel. Coding sessions, complex multi-step tasks.

Workers are pluggable. A worker can be:
- A Rig agent with shell/file/exec tools
- A Rig agent with shell/file tools
- An OpenCode subprocess
- Any external process that accepts a task and reports status

**Tools:** shell, file, exec, set_status (varies by worker type)
**Tools:** shell, file, set_status (varies by worker type)
**Context:** Fresh prompt + task description. No channel history.
**Lifecycle:** Fire-and-forget or long-running. Reports status via `set_status` tool.

Expand All @@ -106,6 +106,7 @@ System-level observer. Primary job: generate the **memory bulletin** — a perio
Also observes system-wide signals for future health monitoring and memory consolidation.

**Tools (bulletin generation):** memory_recall, memory_save
**Tools (interactive cortex chat):** memory + worker tools, `spacebot_docs`, `config_inspect`, task board tools
**Tools (future health monitoring):** memory_consolidate, system_monitor
**Context:** Fresh per bulletin run. No compaction needed.

Expand Down Expand Up @@ -173,12 +174,16 @@ src/
│ ├── react.rs — add emoji reaction (channel only)
│ ├── memory_save.rs — write memory to store (branch + cortex + compactor)
│ ├── memory_recall.rs— search + curate memories (branch only)
│ ├── channel_recall.rs— retrieve transcript from other channels (branch only)
│ ├── channel_recall.rs— retrieve transcript from any channel (branch only)
│ ├── set_status.rs — update worker status (workers only)
│ ├── shell.rs — execute shell commands (task workers)
│ ├── shell.rs — execute shell commands and subprocesses (task workers)
│ ├── file.rs — read/write/list files (task workers)
│ ├── exec.rs — run subprocess (task workers)
│ ├── browser.rs — web browsing (task workers)
│ ├── task_create.rs — create task-board task (branch + cortex chat)
│ ├── task_list.rs — list task-board tasks (branch + cortex chat)
│ ├── task_update.rs — update task-board task (branch + cortex chat)
│ ├── spacebot_docs.rs — read embedded Spacebot docs/changelog (branch + cortex chat)
│ ├── config_inspect.rs — inspect live runtime config (cortex chat)
│ └── cron.rs — cron management (channel only)
├── memory.rs → memory/
Expand Down Expand Up @@ -285,8 +290,8 @@ let branch_history = channel_history.clone();

**ToolServer topology:**
- Per-channel `ToolServer` (no memory tools, just channel action tools added per turn)
- Per-branch `ToolServer` with memory tools (memory_save, memory_recall)
- Per-worker `ToolServer` with task-specific tools (shell, file, exec)
- Per-branch `ToolServer` with memory tools (memory_save, memory_recall, memory_delete), channel recall, docs introspection (`spacebot_docs`), and task-board tools
- Per-worker `ToolServer` with task-specific tools (shell, file)
- Per-cortex `ToolServer` with memory_save

**Max turns:** Rig defaults to 0 (single call). Always set explicitly.
Expand Down Expand Up @@ -374,7 +379,7 @@ Phase 6 — Hardening:

These are validated patterns from research (see `docs/research/pattern-analysis.md`). Implement them when building the relevant module.

**Tool nudging:** When an LLM responds with text instead of tool calls in the first 2 iterations, inject "Please proceed and use the available tools." Implement in `SpacebotHook.on_completion_response()`. Workers benefit most.
**Tool nudging / outcome gate:** Workers cannot exit with a text-only response until they signal a terminal outcome via `set_status(kind: "outcome")`. If a worker returns text without an outcome signal, the hook fires `Terminate` and retries with a nudge prompt (up to 2 retries). After retries are exhausted the worker fails with `PromptCancelled`. See `docs/design-docs/tool-nudging.md`.

**Fire-and-forget DB writes:** `tokio::spawn` for conversation history saves, memory writes, worker log persistence. User gets their response immediately.

Expand Down
Loading
Loading