Repository navigation
Guided init, settings and the Atlas look; memory search like the app - #3
Merged
Merged
Conversation
A hook that writes the store directly drains the new rows within the sync budget; a turn delivered to atlas serve forces a drain instead of waiting for the 30 s tick. Without atlas serve nothing synced before until atlas capture sync.
… its hook fires The prompt is recorded as it is submitted, every tool call as the agent's post-tool hook reports it (with the file it wrote, or for a shell call the files git saw change while it ran), and Stop closes the turn with the transcript's text and usage. Each delivery syncs to the cloud at once. - record.OpenTurn and RecordTool; CapturedTurn.Open completes an open turn; Tool.NoSample lets a transcript sighting complete a delivered row. - The dispatcher holds a per-session lock for the hook's lifetime, tracks delivered calls as key groups (id, name+arguments, command text, written paths) so the transcript read at Stop records none twice, and keeps the hook's own time on every delivery. - Post-tool hooks for all eight agents: Claude Code, Codex (code-mode exec scripts unwrapped), Cursor (afterFileEdit, afterShellExecution), Copilot (postToolUse; derived ids), OpenCode (tool.execute.after), Droid (PostToolUse), Antigravity (PostToolUse; the prompt read at PreInvocation), Pi (tool_result; the extension serialises its hooks). - Verified live for every agent but Droid.
A file written and committed in one shell command never appeared in git status, so the turn had no touch for it; and touches that landed after the post-commit hook had walked the commit never linked to it. The dispatcher now remembers HEAD at turn start and after each shell call, counts files changed by the turn's commits as its changes, and asks the writer to link the commits made during the turn (gitlink.LinkRange), consuming those late touches so they cannot attach to a later commit.
Hook session state, the spool, the OpenCode export cache, the listener's run file and the CLI's logs move to a per-user state directory, $XDG_STATE_HOME/atlas-cli/projects/<hash>/ (internal/clistate); older layouts are moved there on first use. .atlas/ now holds only what the desktop app writes. Test packages point XDG_STATE_HOME at a temp dir.
Hook-captured sessions now use the app's registry agent ids, record capture candidates from the agent's reply, leave a handoff note at session end, and run the extractor through the Atlas gateway's default model after long turns and at session end (detached, one pass per session at a time). atlas memory list --all includes candidates, as the app shows them.
Reverts the registry-id renaming of 0.3.3: hook sessions, memory entries, handoff notes and the MCP bridge use the integration's own id again.
… like the app - atlas init is a guided flow (organisation, Project, agents with an "All agents" row, background sync, memory search); flags answer it in scripts. atlas settings changes everything on one screen; atlas sync on|off keeps a listener the hooks restart; atlas update replaces the binary from a checksum-verified release. - Every command draws in the Atlas palette (monochrome, colour for status), with the dot logo of Array Bold's "///", tree lists, a progress bar, a live atlas serve feed and styled help; pipes keep plain text. - Memory search matches the app: MiniLM in pure Go (vectors identical to the app's), vectors in memory.sqlite, near-duplicate merge, hybrid search, and corpus.sqlite with the project's documents in memory_search; atlas memory index and Settings > Model download the model and build the index. - Agents' plan tools (TodoWrite, update_plan, todowrite, Claude's tasks and plan mode) become the shared plan. - Fixes: a commit of a file the agent had read gets its checkpoint; a listener stops when .atlas/ is replaced instead of writing into deleted files; init creates the memory record; extract state, the daily snapshot and damaged-record restore follow the app. - README redesigned with a banner.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings main up to v0.4.0. It also carries the v0.3.x work that landed after #2 was merged (per-event capture, commit checkpoints, the app's
.atlaslayout, memory parity, agents' own names).Setup and UI
atlas init: guided steps (organisation, Project, agents with an All agents row, background sync, memory search);--agents,--all-agents,--syncfor scripts.atlas settings: account, capture and memory, agents, sync, the local model, updates on one screen.atlas sync on|off: a background listener the hooks restart.atlas update: checksum-verified self-update.atlas servefeed; plain text for pipes.Shared memory like the app
memory.sqlite, near-duplicate merge, hybrid search;corpus.sqlitedocuments inmemory_search(9/9 documents byte-identical to the app's index).atlas memory index, Settings ▸ Model (download, index, remove).memory_briefing).Fixes
.atlas/is replaced instead of writing into deleted files.Test plan
go test ./...,golangci-lint run(0 issues),go mod tidy -diffcleanmemory_searchfinds memories by meaning through a Claude session; OpenCodetodowritebecomes the plan; model download from Settings;atlas updatefrom a 0.3.0 build🤖 Generated with Claude Code