Repository navigation
Releases
Oxytocin 0.9.16
Changed
- Task hands work over through files in the project instead of an agent's plan mode, the same way for every
agent. A task lives in.oxy/tasks/<task id>/:raw.task.json(your description) andplan.md(the planner's
plan). Each role starts with a one-line prompt that names those files and a built-in skill
(.oxy/tasks/skills/plan.md,implement.md,review.md: how to plan, implement and review), so the task, the plan
and the rules are read once and never pasted into a prompt. Git ignores the folder; it is removed when you mark the
task done, reject its plan or delete it, while the plan stays readable in Task. - Task: the plan has a fixed outline (summary, numbered steps with their files, a verification checklist), which
Task shows as steps instead of plain Markdown. The implementer ticks each finished step and each passed check in the
plan file and Task shows the progress ("2 of 5 done"). A plan without that outline is still shown as written. - Task: a Claude Code planner no longer starts in plan mode with Opus and a plan hook: it runs with the model and
permissions of the agent you chose, plus allow rules for the task's own folder. Feedback is typed into the planner's
session and the rewritten plan file is the next version. Task no longer reads Claude Code's transcripts or plan
folder and no longer opens a local port.
Fixed
- Project Runner: the Run view no longer shows the apps and scripts of the previous project after you open
another one. An update of the previous project that finished late (a scan of a large folder) could overwrite the
new project's list until you left the project and came back.
Oxytocin 0.9.15
Changed
- Projects: a project whose terminals you closed opens on its empty view (New terminal, AI agents, Open…) instead
of starting a new terminal by itself, also after Oxytocin restarts or the project's workspace was unloaded to save
memory. A project opened for the first time still starts its terminal (or its startup terminals). - Tabs: a tab is at most 280 px wide and tabs shrink (down to 96 px) to share a narrow group before the tab strip
scrolls, so a long title ends in an ellipsis and every tab's close button (×) stays in view: closing a tab no longer
means scrolling its name first. The full title is in the tab's tooltip; a single tab still spans the whole header.
Fixed
-
Tabs: the active tab of a group with several tabs is underlined again (the marker was meant to be hidden only
for a single tab spanning the header). -
Terminals: restarting a terminal whose project folder was deleted keeps the old terminal and says why, instead
of leaving the panel without a terminal; any other restart failure is reported too. -
Projects: New terminal in project (project context menu) waits for that project's workspace instead of a fixed
50 ms: on a project whose workspace was unloaded the terminal could open in the previously active project. A
project opened this way for the first time gets one terminal, not its default terminal plus another. -
Projects: the project's activity dot no longer stays on (the hollow Idle dot) once you closed its terminals.
Terminals running in the background — a Project Runner app or script, an Ensemble session — mark the project only
while something runs in them, not when their shell sits idle after a script finished or they exited. The project's
tooltip counts the same terminals. -
Workspaces: a layout saved right before its project was opened again (a workspace unloaded and reopened
quickly) is no longer read from disk before the save finishes, which could bring back the previous layout.
Oxytocin 0.9.14
Added
-
Usage Monitor: the Sessions table has a "Code Map" column: how many Code Map tool calls the agent in that
terminal made during the session and how many characters of answers it received; the tooltip adds stale, not-OK and
failed answers. Oxytocin keeps only counts, in memory since the app started — no queries, paths or code. -
Code Map: a project can turn on Suggest code locations with each prompt (Project settings → Code Map, off by
default). With the Claude Code Bridge installed, Oxytocin then adds up to three file pointers to Claude Code's context
when a prompt matches the map strongly, and nothing otherwise; pointers already given in the session are not repeated.
The prompt is read locally for that one lookup and is never stored or logged.
Changed
- Code Map is in beta, like Ensemble: a Beta badge marks it in Project settings, the project menu, the "+" menu
and the Code Map Visualizer, and the Code Map settings tab opens with a notice (closed for the session with ×). It is
not fully tested yet: the map can lag behind edits, miss relationships or rank a less relevant file first. - Workspaces: layouts are no longer rewritten every time an agent's terminal changes its live state (working,
waiting, activity, bells) or a terminal of another project changes; only changes to what a layout stores (terminal
titles, folders, agent sessions) save it. - Code Map: a file turned down for its size no longer restarts the parser thread, so the grammars stay loaded and
indexing continues without the restart cost. - Git: changing a setting unrelated to git no longer runs git again to detect its version.
- Code Map: answers keep up with edits. While the file watcher is healthy a query no longer audits the whole
checkout; it waits only for the incremental update of the files that changed, which now re-resolves just the
affected files and updates the search index in place. On Oxytocin's own repository an edit shows up in the next
answer within about 0.2 s (was about 2.6 s) and an unchanged query answers in milliseconds (was about 0.5 s). For
large maps, small edits are written to.oxy/code-mapshortly after the edits settle.freshness: "verified"still
audits content hashes. - Code Map:
oxy_find_codeanswers include the relevant source lines, so most lookups need no separate file
read. The best match shows up to 12 numbered lines (its signature and the lines with the question's terms, with
context); a second or third match shows up to 6 lines only when it scores close to the first. Lines are shown only
while the file still matches the index.full: truereturns the whole definition of the best match (up to 80
lines), and plugins can ask for the same withexcerpts: 'terms' | 'full'on a search query. - Code Map: agent answers are much cheaper to use.
- Agents see one tool to locate code (
oxy_find_code;oxy_task_contextwhile Review memory is on) and no status
tool; the tool schemas and the guidance are about 60% smaller and say when plain Grep is the better choice. - Answers are quiet
path:lines kind signaturepointers, about 55% shorter: no header, coverage totals or symbol
IDs. One line appears only when the index is updating or a cited file changed, and "Truncated" only when the size
budget cut results. oxy_code_relationsacceptspathandline, so a pointer from a find answer can be used directly.- While files are re-indexed, queries answer from the last published map, marked as stale, instead of returning
"updating" without data. - The
CLAUDE.md/AGENTS.mdinstruction block is a single line; existing opted-in blocks are upgraded
automatically.
- Agents see one tool to locate code (
- Code Map: finding code is more accurate.
oxy_find_codeand the task context now rank on what is inside function
bodies (BM25F over names, paths and bodies with query coverage), rank tests and docs lower unless the question asks
for them, and show one result per file first; results carrycoverageandstrongconfidence fields. On Oxytocin's
own questions the right file comes first in 27 of 44 cases instead of 19. The map cache grows by about 40% and is
rebuilt once after the update;graph.jsonis unchanged. - Code Map: TypeScript and JavaScript method calls on values with a declared type are resolved (constructor
parameter properties, fields, parameters,new T(), return types, inherited members), sooxy_code_relationsfinds
about a quarter more callers; path aliases such as@shared/*resolve through a solution-styletsconfig.jsonwith
project references instead of appearing as external packages.
Fixed
-
Task: starting a task works again: the Claude planner opened in plan mode and did nothing. Its prompt came after
--add-dir, which reads every following argument as one more directory, so Claude Code got no prompt. A new
agent session now gets its prompt before any other argument. Claude sessions started by Task no longer get
--add-dir, which also keeps a startup prompt from being submitted (anthropics/claude-code#92930); they read Task's
folder through a permission rule in Task's--settingsfile instead. A plugin that starts Claude Code with
addDirsand a prompt, or a Claude launch command in Settings → AI Agents that ends with an option taking several
values (such asclaude --add-dir ../shared), gets the prompt typed once the agent is ready. -
Task: a new agent session that has not started on its prompt 30 seconds after it opened (it waits for input or
is still starting, for example on a question) is shown in Task with Show terminal, instead of looking as if
the task were running. -
Editors and diffs: typing while a save is in progress no longer marks the newer text as saved or lets a
save-and-close action discard it. Repeated saves share the pending write, and the next save checks the modification
time returned by the previous write instead of reporting a false conflict. -
Editors: an automatic reload that finishes after typing starts no longer overwrites those edits; obsolete
reads are ignored after another load, a save or closing the panel. Failed reloads keep the editor mounted, a failed
file check no longer reports the file as deleted, and errors from Keep mine are reported instead of escaping. -
Diffs: a live refresh no longer silently authorizes overwriting another process's edits: normal Save still
checks the disk version the edit started from. Unsaved text stays available when refreshing fails or the file is
deleted, becomes binary or exceeds the diff size limit. Switching a preview to another file isolates its state
from reads and saves still finishing for the previous file. -
Host processes: stopping during restart backoff immediately rejects waiting requests; calling start during
backoff cannot create a second child. Shutdown stops health checks, late ready/ping messages cannot revive or affect
a replacement host, and disposal releases RPC calls, timers and subscriptions even without a child exit event. -
RPC: finishing a request after its channel closes no longer causes an unhandled rejection when sending either
the result or an error. Removed event subscriptions release their empty listener sets, and disposed channels do not
retain new subscriptions. -
Databases: a failed connection that was already dropped no longer removes its replacement from the pool,
leaking that connection and forcing extra reconnects. A disposed pool refuses new connections and closes pending
ones when they finish opening. -
Git: rapid watcher configuration changes keep the newest request; removing a project or shutting down cannot
resurrect a watcher still being replaced, and late repository discovery no longer publishes stale state. Events
accumulated behind another repository are handled in one refresh instead of scheduling a redundant second scan. -
Saved state: a value that cannot be serialized no longer blocks every subsequent write; the next valid value
can be persisted normally. -
Tests: Git and plugin-generator subprocesses in integration tests explicitly hide their Windows console.
-
Settings: changes saved at the same moment (for example a plugin turned on while another setting changes) no
longer overwrite each other insettings.json; each one is written after the previous one. -
Projects: adding, removing, reordering or editing a project right after the start waits for the project list to
load instead of being lost when it finishes loading; moving a project to another folder no longer undoes a project
setting saved at the same time. -
Git: a project whose file watcher could not start (the Workspace Host restarting, too many watched files) gets
one again on the next refresh (window focus, a periodic or manual refresh) instead of showing no live changes until
Oxytocin restarts; the half-started watcher no longer stays behind. A project removed while its watcher was starting
no longer keeps watching in the background. -
AI agents: a Claude Code terminal no longer briefly shows an older state (working after it already waits for
you) when its session file changed twice in quick succession. -
Plugins: views of a window that reloaded or crashed are closed in the Plugin Hosts; they used to stay open in the
background, keep the plugin's resources and come back after a Plugin Host restart. -
Agent Tools (MCP): a tool call whose agent went away (killed, timed out) is cancelled instead of running to the
end, so for example a question it asked no longer waits for an answer nobody reads. -
Diffs: switching to another file of the same language in a diff (Ensemble changes, a diff preview tab) shows it
from the top with its own folding instead of the previous file's scroll position; unsaved edits of the replaced file
no longer keep the diff mark...
Oxytocin 0.9.13
Changed
- Task: reworked so that planner → approval → implementer works without manual hand-offs.
- A Claude planner hands its finished plan to Task and waits for your decision in its plan hook: Approve ends its
turn, Revise sends your feedback as its answer (Claude revises at once, nothing is typed into its terminal), Reject
ends the task. Press Esc in its terminal to talk to it instead. - Every role starts in a new session with a clean context unless you choose a running one; the implicit reuse
of a matching session is gone. New sessions start with their prompt on the command line, so "the agent is not
ready" no longer happens. - A prompt for a session that already runs is typed as soon as its agent waits for input, never over a turn or a
question; Task shows what it waits for instead of an error, and there is nothing to retry. - The implementer and the reviewer read a brief (the task and the approved plan) from Task's folder, so the plan
keeps its formatting on Windows too.
- A Claude planner hands its finished plan to Task and waits for your decision in its plan hook: Approve ends its
- AI agents: a new Claude Code, Codex CLI, Gemini CLI or Qwen Code session started by Oxytocin with a prompt (Task,
Changes → Send to review, plugins) receives it on its command line instead of having it typed once the agent is
ready (Plugin API 0.2.2, which also addsaddDirs).
Fixed
- Sidebars: a section collapsed, moved or resized right before quitting is remembered.
- Tests: E2E tests no longer depend on the machine they run on: the app window has the same size on every screen,
terminals are typed into once their prompt is shown, AI agent variables of the test runner's environment (an API
base URL, a surrounding Claude Code session) are not passed on, and latency budgets fail only on a gross
regression (measurements are still recorded inperf-results.json). CI runs E2E next to the other checks in three
shards per platform and records traces only for retried tests, which shortens a release run considerably.
Oxytocin 0.9.12
Fixed
- Code Map retrieval: focused lookups return compact source pointers with better identifier and configuration ranking.
Task context defaults to six matches and adds a small neighborhood only when needed. Full JSON remains available
withformat: "json". Smaller maps and refreshed generated instructions avoid mandatory broad context for simple questions. - Code Map Visualizer: a force layout, quieter edges, neighborhood highlighting and a directional connection inspector
make dependencies easier to read. The graph has more space; the accessible outline and additional filters open on demand.
Oxytocin 0.9.11
Added
-
Code Map Visualizer: Knowledge shows findings next to their code and evidence, with review and freshness filters.
Task context shows the items an agent received and why, using an expiring receipt. Both require the new
code-map.knowledge.readpermission (Plugin API 0.2.1); the core Learnings manager remains available separately.
An offline longitudinal corpus and evaluation harness cover four arms and changed evidence. Automatic remains
unavailable until measured evaluation passes its release gate. -
Code Map learnings for agents:
oxy_task_contextreturns bounded code pointers, relations and up to three
applicable reviewed findings. Agents propose reusable findings withoxy_propose_learningand report feedback
withoxy_learning_feedback. Receipts bind feedback to the authenticated session and checkout; negative feedback
suspends reuse until review. Review mode remains the default. -
Code Map learnings: a core settings manager for user findings in main and Ensemble checkouts, with evidence hashes,
review, revision history, search, export and confirmed deletion. Changed evidence requires explicit revalidation;
rebuilding or deleting the map preserves findings. Removed worktrees retain an inspectable archive; explicitly
promote a finding to share it with the project. Project budgets include live stores, archives and revisions.
Memory settings offer Review and Off;
Automatic is unavailable. -
Code Map: Python support — package roots, declarations, decorators, relative imports/re-exports and simple
calls, including self methods. Unknown instance attributes and dynamic imports remain unresolved; support is shown
as Imports with simple calls. -
Code Map: Java support — packages and source modules, declarations, imports, inheritance and calls bound from
declared receiver types and argument counts. Reflection and ambiguous same-arity overloads remain unresolved. -
Code Map: Go support — modules and workspace packages, declarations, imports and calls resolved from declared
receiver types. Interface dispatch and unknown receivers remain unresolved; build tags are recorded, not evaluated. -
Code Map Visualizer: Changes highlights uncommitted files and their potential indexed dependents. Impact
follows incoming dependencies up to three steps. Switch between the main folder and Ensemble worktrees; task
changes compare with their recorded base, including committed edits. -
Code Map Visualizer: explore folders, file dependencies and symbol neighborhoods, search the index and open
verified source locations. Filter relations and evidence, keep node positions across updates, or use the keyboard
through a list. Available from the project menu, Code Map settings and the Add menu; all assets work offline. -
Plugin API 0.2.0:
oxy.codeMap(code-map.read) lists checkouts, reports status, serves bounded graph slices,
search, outlines and relations, delivers invalidations and opens verified source locations, including worktrees.
Plugins that declareengine: "^0.1.x"need an update to^0.2.0before they load again. -
Code Map: Ensemble worktrees get separate maps and authenticated agents query their own checkout. Add or remove
the agent guidance inCLAUDE.mdorAGENTS.mdfrom Code Map settings. Ensemble diffs and checkpoint commits exclude
.oxydata, including files already tracked by a worktree's base commit. -
Code Map for agents:
oxy_find_code,oxy_file_outline,oxy_code_relations,oxy_repo_mapand
oxy_code_map_statusare available through Oxytocin's MCP server for enabled projects. Answers are bounded, report
freshness and coverage, and use an explicit checkout selection. Configure MCP access from the Code Map settings tab. -
Code Map: enable it in Project settings → Code Map to keep a local, deterministic map of the project's code in
.oxy/(ignored by Git unless you choose otherwise). It updates in the background while Oxytocin runs. Agents can read
.oxy/code-map/MAP.md; copy ready-made agent instructions from the tab. TypeScript and JavaScript symbols, imports and
calls; other files appear as files. -
Code Map: C# support — solutions and projects, namespaces, types and members,
usingdirectives and project
references, and calls resolved from declared types. Partial types appear once with all their declarations;bin/and
obj/next to a project file are skipped.
Fixed
- macOS release checks: ESLint gets an explicit 4 GiB heap limit for type-aware linting instead of exhausting
Node's default heap. Regular CI now checks Windows, Linux and macOS before release workflows. - Windows release tests: the learning archive recovery test uses canonical paths so differences in temporary
directory casing do not prevent its simulated write failure. The C# test that generates and parses 1001 files has
a dedicated 30-second timeout to tolerate parallel test load.
Oxytocin 0.9.10
Changed
- Task: a Claude Code planner starts in a new session in plan mode (Opus, high effort) with bypass permissions in
its Shift+Tab cycle, so exploring asks no permission questions. Its finished plan goes straight to Task instead of an
approval question in the terminal, shown as Markdown with the status Plan awaiting approval. Approve &
implement, Revise (your feedback is pasted into the planner's terminal and the revised plan arrives the same
way) or Reject; every version is kept. While planning, edits inside the project andgit commit,push,
checkoutandresetare denied for that session only; your Claude Code settings files are not changed. When
Oxytocin does not answer, Claude Code asks in the terminal as usual. - An empty workspace offers more than New terminal: start an AI agent directly, or open anything from the group's
+ menu (terminal profiles, agents, tools) with Open….
Fixed
- Prompts typed into agents by Task, Changes → Send to review, Ensemble, Scratchpad and plugins are submitted
reliably. Long prompts, such as an approved plan, sometimes stayed in the agent's input box until Enter was pressed:
Codex CLI on Windows reads a long paste slowly and took the Enter as part of it. Enter now follows once the agent has
taken the paste in, and is sent again after a few seconds when the agent did not start.
Added
- Plugin API 0.1.10:
oxy.agents.launch({ claudeArgs, env })adds arguments and environment variables to a new agent
session;AgentLauncher.agentnames the CLI a launch choice starts.
Oxytocin 0.9.9
Changed
- Task opens in the right sidebar and works in either sidebar, following the active project, or as a workspace tab.
Its layout fits a narrow sidebar. Agent terminals started or reused by Task and Changes → Send to review are
revealed and focused in the workspace.
Added
- Plugin API 0.1.9:
oxy.ui.openPanel(…, { placement: 'sidebar' })opens a tool in the right sidebar.
Oxytocin 0.9.8
Added
- Task: a lightweight plan → approve → implement → optional review workflow. Choose agents, accounts and API
profiles from the same list as + → AI Agents. Claude Code's native plan document is captured automatically;
plans can also be pasted or edited before approval. Approval saves a frozen document and sends only the task and
that plan to the implementer. Start review manually when implementation is ready. Agents run in ordinary
interactive terminals, with matching session reuse and a fresh-session option; tasks survive app restarts. - AI Agents launch commands: configure a command with arguments for each CLI in Settings → AI Agents, such as
codex --yolo. Commands apply to new sessions, including added accounts and Claude API profiles. - Changes → Send to review: choose an agent from the usual AI Agents list to review staged, unstaged and
untracked changes. Reuses a matching terminal or opens one. Edit the instruction and save it as the default in
the review dialog; it is also available asgit.reviewPromptin Settings. - Plugin API 0.1.8: shared agent launch choices and profile-aware launching with optional prompt delivery,
existing-session selection, fresh sessions and Claude plan mode.
Fixed
- Usage Monitor freshness: Claude subscription limits are polled every ten seconds as a fallback for missed
filesystem notifications. Partial or failed reads are retried. Continuous file activity no longer postpones log
ingestion indefinitely; same-size log and chat rewrites are detected. Refresh usage data in the sidebar menu
and Refresh data in the dashboard rescan source files rather than repainting cached totals. Dashboard values
also refresh periodically and when the panel becomes visible. Limit timestamps continue to show when the agent
actually reported them; refreshing does not invent a new limit reading. - Detects when Claude's status line configuration has been removed or changed and shows Repair limit updates
in the sidebar and Usage settings. Repair preserves the previous status line backup.
Removed
- The built-in Relay plugin. Its general-purpose plugin API additions remain available.
Oxytocin 0.9.7
Added
- Relay: hand work from one AI agent to the next. The new built-in Relay plugin (+ menu → Tools → Relay, or
Relay: Show Relay Panel) works with the agents running in a project, on any of your accounts:- Hand off at the limit. When an agent finishes its turn and its account's 5-hour (or weekly) limit is at least
90% used (adjustable), the next free agent in the order you set — e.g. Claude Code, then Codex CLI on your main
account, then Codex CLI on a second account — gets your hand-off prompt, such as "Continue the implementation
after {from}; the status is in TODO.md". Agents whose account is nearly out are skipped; when nobody is free,
Relay waits, also for the first agent's limit to start over, so the work can go round. - Review after each turn. When an author finishes a turn that changed files, the reviewer agent gets the review
prompt with the names of the changed files; turns that end while the reviewer works are reviewed together, and
the reviewer's own turns start nothing. - Relay types one short prompt per hand-off and nothing else — no status messages, no system prompts, no diffs (the
agents read the files themselves) — so the agents' context and limits go to the work. It only types into an
agent that waits for input and never over a question on screen; every hand-off shows a notification and is
listed in the panel, where Send now also sends the prompt by hand.
- Hand off at the limit. When an agent finishes its turn and its account's 5-hour (or weekly) limit is at least
Changed
- Usage Monitor: plan limits per account. The sidebar card lists the limits of each account under its name —
Claude (main), Claude (Work), Codex (main) — each window with how much is used, when it resets and when it was
read (28% of 5h limit · resets in 49 min · as of 10:07). Codex CLI limits are shown with the others. Added
accounts' sessions count towards the usage too (their transcripts, rollouts and chats are read from the
accounts' folders), and accounts that share the main account's settings report their own Claude limits through
the same status line. The limits are also available to other plugins. - Plugin API 0.1.7: agent accounts (
oxy.agents.listAccounts,AgentSnapshot.accountId), plan limits
(getLimits,reportLimits) andoxy.agents.sendPrompt(changelog).