chore: version packages (#1812)

* chore: version packages

* ci: nudge — trigger required checks on bot PR

* test(agent-codex): drop self-defeating hardcoded version assertion

Same file as the earlier fix on this branch — changesets/action regenerated from main, bringing the bad test back. This deletion will land on main when this Version PR merges, so future Version PR regenerations won't re-introduce it.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: suraj-markup <sk9261712674@gmail.com>
This commit is contained in:
github-actions[bot] 2026-05-13 03:50:07 +05:30 committed by GitHub
parent 15158aa7b2
commit ee2f4256f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
61 changed files with 1168 additions and 168 deletions

View File

@ -1,8 +0,0 @@
---
"@aoagents/ao-plugin-runtime-tmux": patch
"@aoagents/ao-web": patch
---
Tmux sessions no longer die when the agent process inside them exits. When you Ctrl-C the agent in a web terminal, the pane now drops to an interactive `$SHELL` in the workspace dir instead of nuking the tmux session and leaving the dashboard in a phantom "runtime lost" state. The lifecycle manager still detects the agent exit (via `agent.isProcessRunning`) and transitions the session to `agent_process_exited`, but the runtime stays usable so you can run shell commands or manually re-launch the agent.
Also: the mux-websocket re-attach loop now checks `tmux has-session` before retrying after a PTY exit. When the tmux session is genuinely gone (e.g. `ao stop`), it skips the three doomed `attach-session` spawns from #1640 and notifies the dashboard immediately. (#1756)

View File

@ -1,54 +0,0 @@
---
"@aoagents/ao-core": minor
"@aoagents/ao-cli": minor
"@aoagents/ao": minor
"@aoagents/ao-plugin-runtime-process": minor
"@aoagents/ao-plugin-runtime-tmux": minor
"@aoagents/ao-plugin-agent-claude-code": minor
"@aoagents/ao-plugin-agent-codex": minor
"@aoagents/ao-plugin-agent-aider": minor
"@aoagents/ao-plugin-agent-opencode": minor
"@aoagents/ao-plugin-workspace-worktree": minor
"@aoagents/ao-plugin-workspace-clone": minor
"@aoagents/ao-plugin-tracker-github": minor
"@aoagents/ao-plugin-tracker-linear": minor
"@aoagents/ao-plugin-scm-github": minor
"@aoagents/ao-plugin-notifier-desktop": minor
"@aoagents/ao-plugin-notifier-slack": minor
"@aoagents/ao-plugin-notifier-webhook": minor
"@aoagents/ao-plugin-notifier-composio": minor
"@aoagents/ao-plugin-terminal-iterm2": minor
"@aoagents/ao-plugin-terminal-web": minor
"@aoagents/ao-web": minor
---
feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.

View File

@ -1,6 +0,0 @@
---
"@aoagents/ao-core": minor
"@aoagents/ao-cli": minor
---
Worker sessions now learn how to message the orchestrator that spawned them. When a project has an orchestrator running, the worker's system prompt gains a "Talking to the Orchestrator" section with the literal `ao send <prefix>-orchestrator "<message>"` command (rendered at prompt-build time, no env var, no shell-syntax variants). `ao send` itself now auto-prefixes outgoing messages with `[from $AO_SESSION_ID]` when invoked from inside an AO session, so the receiver always knows who's writing — symmetric across worker→orchestrator, orchestrator→worker, and worker→worker. Humans running `ao send` from a normal terminal stay unprefixed. (#1786)

View File

@ -1,52 +0,0 @@
---
"@aoagents/ao-core": minor
"@aoagents/ao-cli": minor
"@aoagents/ao": minor
"@aoagents/ao-web": minor
---
feat(release): weekly release train — channels, onboarding, dashboard banner, cron
Ships the full release pipeline described in `release-process.html`:
- **Cron-driven nightly canary.** `.github/workflows/canary.yml` triggers via
`schedule: '0 18 * * 5,6,0,1,2'` (23:30 IST FriTue) plus `workflow_dispatch`.
Bake window (WedThu) pauses scheduled nightlies; the captain re-cuts via
workflow_dispatch when a fix lands. Stable `release.yml` publishes via
`changesets/action`. `.changeset/config.json` adds the snapshot template
(`{tag}-{commit}`). `@aoagents/ao-web` stays in the linked group and ships
alongside `@aoagents/ao-cli` (it's a workspace:* runtime dep, so marking it
private would 404 every `npm install -g @aoagents/ao` after publish).
`scripts/check-publishable-deps.mjs` runs in both release.yml and canary.yml
before the publish step and fails CI if a publishable package depends on a
`private: true` package via workspace:*.
- **Update channels.** New `updateChannel` field in the global config schema
(`stable | nightly | manual`, default `manual` so existing users see no
surprise installs). `update-check.ts` reads `dist-tags[channel]` from the
npm registry, compares prerelease versions segment-by-segment so SHA-suffixed
nightlies sort correctly, and skips notices entirely on `manual`.
- **Soft auto-install + active-session guard.** On stable/nightly, `ao update`
skips the confirm prompt and just installs. Before installing it lists
sessions and refuses with `N session(s) active. Run \`ao stop\` first.` if
any are in `working`/`idle`/`needs_input`/`stuck`. Same guard duplicated
in `POST /api/update` so the dashboard returns a structured 409.
- **Onboarding question.** `ao start` prompts once for the channel if unset;
dismissal persists `manual`. `ao config set updateChannel <value>` (and
`installMethod`) lets users change it later.
- **Dashboard banner.** `GET /api/version` reads the same cache file as the
CLI. `UpdateBanner` (Tailwind only, `var(--color-*)` tokens) appears at the
top of the dashboard when `isOutdated`. Click POSTs to `/api/update`;
dismissal persists per-version in `localStorage`.
- **Bun + Homebrew detection.** New install-method classifiers for
`~/.bun/install/global/` (auto-installs `bun add -g @aoagents/ao@<channel>`)
and `/Cellar/ao/` (notice only — `brew upgrade ao` to avoid clobbering
brew's symlinks). `installMethod` config field overrides path detection.
Supersedes #1525 (incorporates the canary + release infrastructure with the
cron / no-stale-SHA-guard / no-merged-PR-comment modifications called out in
the design doc).

View File

@ -1,5 +0,0 @@
---
"@aoagents/ao-web": minor
---
Add inline rename for worker sessions in the sidebar. Each worker row now shows a small pencil button on hover; clicking it swaps the label for an input pre-filled with the current title. Enter persists via `PATCH /api/sessions/:id`, Escape cancels, and an empty value reverts the session to its default title. The rename is written to the existing `displayName` metadata field and is now the highest-priority signal in `getSessionTitle`, so a user-chosen label always beats PR/issue titles. The session ID (`ao-N`) remains the canonical identifier — only display surfaces change. (#1647)

View File

@ -1,5 +0,0 @@
---
"@aoagents/ao-plugin-workspace-worktree": patch
---
Restoring a session whose worktree directory was cleaned up but whose branch still existed locally would 422 with `fatal: a branch named <X> already exists`. The recovery path in `workspace.restore()` unconditionally fell through to `git worktree add -b`, even when the local branch was present (which `destroy()` deliberately preserves). The catch now checks for the local branch and re-attaches it without `-b`/`-B`, preserving the session's commits. (#1741)

View File

@ -1,5 +1,87 @@
# @aoagents/ao
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
- 7c46dc9: feat(release): weekly release train — channels, onboarding, dashboard banner, cron
Ships the full release pipeline described in `release-process.html`:
- **Cron-driven nightly canary.** `.github/workflows/canary.yml` triggers via
`schedule: '0 18 * * 5,6,0,1,2'` (23:30 IST FriTue) plus `workflow_dispatch`.
Bake window (WedThu) pauses scheduled nightlies; the captain re-cuts via
workflow_dispatch when a fix lands. Stable `release.yml` publishes via
`changesets/action`. `.changeset/config.json` adds the snapshot template
(`{tag}-{commit}`). `@aoagents/ao-web` stays in the linked group and ships
alongside `@aoagents/ao-cli` (it's a workspace:_ runtime dep, so marking it
private would 404 every `npm install -g @aoagents/ao` after publish).
`scripts/check-publishable-deps.mjs` runs in both release.yml and canary.yml
before the publish step and fails CI if a publishable package depends on a
`private: true` package via workspace:_.
- **Update channels.** New `updateChannel` field in the global config schema
(`stable | nightly | manual`, default `manual` so existing users see no
surprise installs). `update-check.ts` reads `dist-tags[channel]` from the
npm registry, compares prerelease versions segment-by-segment so SHA-suffixed
nightlies sort correctly, and skips notices entirely on `manual`.
- **Soft auto-install + active-session guard.** On stable/nightly, `ao update`
skips the confirm prompt and just installs. Before installing it lists
sessions and refuses with `N session(s) active. Run \`ao stop\` first.`if
any are in`working`/`idle`/`needs_input`/`stuck`. Same guard duplicated
in `POST /api/update` so the dashboard returns a structured 409.
- **Onboarding question.** `ao start` prompts once for the channel if unset;
dismissal persists `manual`. `ao config set updateChannel <value>` (and
`installMethod`) lets users change it later.
- **Dashboard banner.** `GET /api/version` reads the same cache file as the
CLI. `UpdateBanner` (Tailwind only, `var(--color-*)` tokens) appears at the
top of the dashboard when `isOutdated`. Click POSTs to `/api/update`;
dismissal persists per-version in `localStorage`.
- **Bun + Homebrew detection.** New install-method classifiers for
`~/.bun/install/global/` (auto-installs `bun add -g @aoagents/ao@<channel>`)
and `/Cellar/ao/` (notice only — `brew upgrade ao` to avoid clobbering
brew's symlinks). `installMethod` config field overrides path detection.
Supersedes #1525 (incorporates the canary + release infrastructure with the
cron / no-stale-SHA-guard / no-merged-PR-comment modifications called out in
the design doc).
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-cli@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao",
"version": "0.6.0",
"version": "0.7.0",
"description": "Orchestrate parallel AI coding agents — global CLI wrapper",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,113 @@
# @aoagents/ao-cli
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
- fe33bb7: Worker sessions now learn how to message the orchestrator that spawned them. When a project has an orchestrator running, the worker's system prompt gains a "Talking to the Orchestrator" section with the literal `ao send <prefix>-orchestrator "<message>"` command (rendered at prompt-build time, no env var, no shell-syntax variants). `ao send` itself now auto-prefixes outgoing messages with `[from $AO_SESSION_ID]` when invoked from inside an AO session, so the receiver always knows who's writing — symmetric across worker→orchestrator, orchestrator→worker, and worker→worker. Humans running `ao send` from a normal terminal stay unprefixed. (#1786)
- 7c46dc9: feat(release): weekly release train — channels, onboarding, dashboard banner, cron
Ships the full release pipeline described in `release-process.html`:
- **Cron-driven nightly canary.** `.github/workflows/canary.yml` triggers via
`schedule: '0 18 * * 5,6,0,1,2'` (23:30 IST FriTue) plus `workflow_dispatch`.
Bake window (WedThu) pauses scheduled nightlies; the captain re-cuts via
workflow_dispatch when a fix lands. Stable `release.yml` publishes via
`changesets/action`. `.changeset/config.json` adds the snapshot template
(`{tag}-{commit}`). `@aoagents/ao-web` stays in the linked group and ships
alongside `@aoagents/ao-cli` (it's a workspace:_ runtime dep, so marking it
private would 404 every `npm install -g @aoagents/ao` after publish).
`scripts/check-publishable-deps.mjs` runs in both release.yml and canary.yml
before the publish step and fails CI if a publishable package depends on a
`private: true` package via workspace:_.
- **Update channels.** New `updateChannel` field in the global config schema
(`stable | nightly | manual`, default `manual` so existing users see no
surprise installs). `update-check.ts` reads `dist-tags[channel]` from the
npm registry, compares prerelease versions segment-by-segment so SHA-suffixed
nightlies sort correctly, and skips notices entirely on `manual`.
- **Soft auto-install + active-session guard.** On stable/nightly, `ao update`
skips the confirm prompt and just installs. Before installing it lists
sessions and refuses with `N session(s) active. Run \`ao stop\` first.`if
any are in`working`/`idle`/`needs_input`/`stuck`. Same guard duplicated
in `POST /api/update` so the dashboard returns a structured 409.
- **Onboarding question.** `ao start` prompts once for the channel if unset;
dismissal persists `manual`. `ao config set updateChannel <value>` (and
`installMethod`) lets users change it later.
- **Dashboard banner.** `GET /api/version` reads the same cache file as the
CLI. `UpdateBanner` (Tailwind only, `var(--color-*)` tokens) appears at the
top of the dashboard when `isOutdated`. Click POSTs to `/api/update`;
dismissal persists per-version in `localStorage`.
- **Bun + Homebrew detection.** New install-method classifiers for
`~/.bun/install/global/` (auto-installs `bun add -g @aoagents/ao@<channel>`)
and `/Cellar/ao/` (notice only — `brew upgrade ao` to avoid clobbering
brew's symlinks). `installMethod` config field overrides path detection.
Supersedes #1525 (incorporates the canary + release infrastructure with the
cron / no-stale-SHA-guard / no-merged-PR-comment modifications called out in
the design doc).
### Patch Changes
- Updated dependencies [845fffd]
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- Updated dependencies [71326bc]
- Updated dependencies [a33b2ba]
- @aoagents/ao-plugin-runtime-tmux@0.7.0
- @aoagents/ao-web@0.7.0
- @aoagents/ao-core@0.7.0
- @aoagents/ao-plugin-runtime-process@0.7.0
- @aoagents/ao-plugin-agent-claude-code@0.7.0
- @aoagents/ao-plugin-agent-codex@0.7.0
- @aoagents/ao-plugin-agent-aider@0.7.0
- @aoagents/ao-plugin-agent-opencode@0.7.0
- @aoagents/ao-plugin-workspace-worktree@0.7.0
- @aoagents/ao-plugin-workspace-clone@0.7.0
- @aoagents/ao-plugin-tracker-github@0.7.0
- @aoagents/ao-plugin-tracker-linear@0.7.0
- @aoagents/ao-plugin-scm-github@0.7.0
- @aoagents/ao-plugin-notifier-desktop@0.7.0
- @aoagents/ao-plugin-notifier-slack@0.7.0
- @aoagents/ao-plugin-notifier-webhook@0.7.0
- @aoagents/ao-plugin-notifier-composio@0.7.0
- @aoagents/ao-plugin-terminal-iterm2@0.7.0
- @aoagents/ao-plugin-terminal-web@0.7.0
- @aoagents/ao-plugin-agent-cursor@0.7.0
- @aoagents/ao-plugin-agent-kimicode@0.7.0
- @aoagents/ao-plugin-notifier-discord@0.7.0
- @aoagents/ao-plugin-notifier-openclaw@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-cli",
"version": "0.6.0",
"version": "0.7.0",
"description": "CLI for agent-orchestrator — the `ao` command",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,81 @@
# @aoagents/ao-core
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
- fe33bb7: Worker sessions now learn how to message the orchestrator that spawned them. When a project has an orchestrator running, the worker's system prompt gains a "Talking to the Orchestrator" section with the literal `ao send <prefix>-orchestrator "<message>"` command (rendered at prompt-build time, no env var, no shell-syntax variants). `ao send` itself now auto-prefixes outgoing messages with `[from $AO_SESSION_ID]` when invoked from inside an AO session, so the receiver always knows who's writing — symmetric across worker→orchestrator, orchestrator→worker, and worker→worker. Humans running `ao send` from a normal terminal stay unprefixed. (#1786)
- 7c46dc9: feat(release): weekly release train — channels, onboarding, dashboard banner, cron
Ships the full release pipeline described in `release-process.html`:
- **Cron-driven nightly canary.** `.github/workflows/canary.yml` triggers via
`schedule: '0 18 * * 5,6,0,1,2'` (23:30 IST FriTue) plus `workflow_dispatch`.
Bake window (WedThu) pauses scheduled nightlies; the captain re-cuts via
workflow_dispatch when a fix lands. Stable `release.yml` publishes via
`changesets/action`. `.changeset/config.json` adds the snapshot template
(`{tag}-{commit}`). `@aoagents/ao-web` stays in the linked group and ships
alongside `@aoagents/ao-cli` (it's a workspace:_ runtime dep, so marking it
private would 404 every `npm install -g @aoagents/ao` after publish).
`scripts/check-publishable-deps.mjs` runs in both release.yml and canary.yml
before the publish step and fails CI if a publishable package depends on a
`private: true` package via workspace:_.
- **Update channels.** New `updateChannel` field in the global config schema
(`stable | nightly | manual`, default `manual` so existing users see no
surprise installs). `update-check.ts` reads `dist-tags[channel]` from the
npm registry, compares prerelease versions segment-by-segment so SHA-suffixed
nightlies sort correctly, and skips notices entirely on `manual`.
- **Soft auto-install + active-session guard.** On stable/nightly, `ao update`
skips the confirm prompt and just installs. Before installing it lists
sessions and refuses with `N session(s) active. Run \`ao stop\` first.`if
any are in`working`/`idle`/`needs_input`/`stuck`. Same guard duplicated
in `POST /api/update` so the dashboard returns a structured 409.
- **Onboarding question.** `ao start` prompts once for the channel if unset;
dismissal persists `manual`. `ao config set updateChannel <value>` (and
`installMethod`) lets users change it later.
- **Dashboard banner.** `GET /api/version` reads the same cache file as the
CLI. `UpdateBanner` (Tailwind only, `var(--color-*)` tokens) appears at the
top of the dashboard when `isOutdated`. Click POSTs to `/api/update`;
dismissal persists per-version in `localStorage`.
- **Bun + Homebrew detection.** New install-method classifiers for
`~/.bun/install/global/` (auto-installs `bun add -g @aoagents/ao@<channel>`)
and `/Cellar/ao/` (notice only — `brew upgrade ao` to avoid clobbering
brew's symlinks). `installMethod` config field overrides path detection.
Supersedes #1525 (incorporates the canary + release infrastructure with the
cron / no-stale-SHA-guard / no-merged-PR-comment modifications called out in
the design doc).
## 0.6.0
### Minor Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-core",
"version": "0.6.0",
"version": "0.7.0",
"description": "Core library — types, config, session manager, lifecycle manager, event bus",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-agent-aider
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-agent-aider",
"version": "0.6.0",
"version": "0.7.0",
"description": "Agent plugin: Aider",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-agent-claude-code
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-agent-claude-code",
"version": "0.6.0",
"version": "0.7.0",
"description": "Agent plugin: Claude Code",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-agent-codex
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-agent-codex",
"version": "0.6.0",
"version": "0.7.0",
"description": "Agent plugin: OpenAI Codex CLI",
"license": "MIT",
"type": "module",

View File

@ -1,11 +0,0 @@
import { describe, expect, it } from "vitest";
import { readFileSync } from "node:fs";
describe("package manifest version", () => {
it("is bumped to 0.6.0", () => {
const packageJsonUrl = new URL("../package.json", import.meta.url);
const packageJson = JSON.parse(readFileSync(packageJsonUrl, "utf8")) as { version?: string };
expect(packageJson.version).toBe("0.6.0");
});
});

View File

@ -1,5 +1,14 @@
# @aoagents/ao-plugin-agent-cursor
## 0.7.0
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.1.4
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-agent-cursor",
"version": "0.1.4",
"version": "0.7.0",
"description": "Agent plugin: Cursor CLI",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,14 @@
# @aoagents/ao-plugin-agent-kimicode
## 0.7.0
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.1.3
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-agent-kimicode",
"version": "0.1.3",
"version": "0.7.0",
"description": "Agent plugin: Kimi Code CLI (MoonshotAI)",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-agent-opencode
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-agent-opencode",
"version": "0.6.0",
"version": "0.7.0",
"description": "Agent plugin: OpenCode",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-notifier-composio
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-notifier-composio",
"version": "0.6.0",
"version": "0.7.0",
"description": "Notifier plugin: Composio unified notifications (Slack, Discord, email)",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-notifier-desktop
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-notifier-desktop",
"version": "0.6.0",
"version": "0.7.0",
"description": "Notifier plugin: OS desktop notifications",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,14 @@
# @aoagents/ao-plugin-notifier-discord
## 0.7.0
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.2.9
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-notifier-discord",
"version": "0.2.9",
"version": "0.7.0",
"description": "Notifier plugin: Discord webhook notifications",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,14 @@
# @aoagents/ao-plugin-notifier-openclaw
## 0.7.0
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.2.9
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-notifier-openclaw",
"version": "0.2.9",
"version": "0.7.0",
"description": "Notifier plugin: OpenClaw webhook notifications",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-notifier-slack
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-notifier-slack",
"version": "0.6.0",
"version": "0.7.0",
"description": "Notifier plugin: Slack",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-notifier-webhook
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-notifier-webhook",
"version": "0.6.0",
"version": "0.7.0",
"description": "Notifier plugin: generic webhook",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-runtime-process
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-runtime-process",
"version": "0.6.0",
"version": "0.7.0",
"description": "Runtime plugin: child processes",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,51 @@
# @aoagents/ao-plugin-runtime-tmux
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- 845fffd: Tmux sessions no longer die when the agent process inside them exits. When you Ctrl-C the agent in a web terminal, the pane now drops to an interactive `$SHELL` in the workspace dir instead of nuking the tmux session and leaving the dashboard in a phantom "runtime lost" state. The lifecycle manager still detects the agent exit (via `agent.isProcessRunning`) and transitions the session to `agent_process_exited`, but the runtime stays usable so you can run shell commands or manually re-launch the agent.
Also: the mux-websocket re-attach loop now checks `tmux has-session` before retrying after a PTY exit. When the tmux session is genuinely gone (e.g. `ao stop`), it skips the three doomed `attach-session` spawns from #1640 and notifies the dashboard immediately. (#1756)
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-runtime-tmux",
"version": "0.6.0",
"version": "0.7.0",
"description": "Runtime plugin: tmux sessions",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-scm-github
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-scm-github",
"version": "0.6.0",
"version": "0.7.0",
"description": "SCM plugin: GitHub (PRs, CI, reviews)",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,14 @@
# @aoagents/ao-plugin-scm-gitlab
## 0.7.0
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.2.9
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-scm-gitlab",
"version": "0.2.9",
"version": "0.7.0",
"description": "SCM plugin: GitLab (MRs, CI, reviews)",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-terminal-iterm2
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-terminal-iterm2",
"version": "0.6.0",
"version": "0.7.0",
"description": "Terminal plugin: macOS iTerm2",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-terminal-web
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-terminal-web",
"version": "0.6.0",
"version": "0.7.0",
"description": "Terminal plugin: xterm.js web terminal",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-tracker-github
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-tracker-github",
"version": "0.6.0",
"version": "0.7.0",
"description": "Tracker plugin: GitHub Issues",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,15 @@
# @aoagents/ao-plugin-tracker-gitlab
## 0.7.0
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
- @aoagents/ao-plugin-scm-gitlab@0.7.0
## 0.2.9
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-tracker-gitlab",
"version": "0.2.9",
"version": "0.7.0",
"description": "Tracker plugin: GitLab Issues",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-tracker-linear
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-tracker-linear",
"version": "0.6.0",
"version": "0.7.0",
"description": "Tracker plugin: Linear",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,47 @@
# @aoagents/ao-plugin-workspace-clone
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-workspace-clone",
"version": "0.6.0",
"version": "0.7.0",
"description": "Workspace plugin: git clone",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,48 @@
# @aoagents/ao-plugin-workspace-worktree
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
### Patch Changes
- a33b2ba: Restoring a session whose worktree directory was cleaned up but whose branch still existed locally would 422 with `fatal: a branch named <X> already exists`. The recovery path in `workspace.restore()` unconditionally fell through to `git worktree add -b`, even when the local branch was present (which `destroy()` deliberately preserves). The catch now checks for the local branch and re-attaches it without `-b`/`-B`, preserving the session's commits. (#1741)
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- @aoagents/ao-core@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-plugin-workspace-worktree",
"version": "0.6.0",
"version": "0.7.0",
"description": "Workspace plugin: git worktrees",
"license": "MIT",
"type": "module",

View File

@ -1,5 +1,106 @@
# @aoagents/ao-web
## 0.7.0
### Minor Changes
- 0f5ae0b: feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is `process`
(ConPTY via `node-pty` + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), `ao doctor`,
and `ao update` all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind `\\.\pipe\ao-pty-<sessionId>`,
registered so `ao stop` can reach it.
A new cross-platform abstraction layer (`packages/core/src/platform.ts`)
centralises every platform branch behind helpers like `isWindows()`,
`getDefaultRuntime()`, `getShell()`, `killProcessTree()`, `findPidByPort()`,
and `getEnvDefaults()`. Path comparison uses `pathsEqual` /
`canonicalCompareKey` to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (`gh`, `git`) ship as `.cjs` + `.cmd` shims on Windows;
`script-runner` runs `.ps1` siblings of `.sh` scripts via PowerShell. New
`ao-doctor.ps1` / `ao-update.ps1` shipped.
`ao open` is now cross-platform: it sources sessions from `sm.list()`
instead of `tmux list-sessions` (so `runtime-process` sessions on Windows
appear), and the open action branches per OS — `open-iterm-tab` stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind `isWindows()`; `runtime-tmux` and the bash hook flows are untouched.
See `docs/CROSS_PLATFORM.md` for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in `docs/ARCHITECTURE.md`.
- 7c46dc9: feat(release): weekly release train — channels, onboarding, dashboard banner, cron
Ships the full release pipeline described in `release-process.html`:
- **Cron-driven nightly canary.** `.github/workflows/canary.yml` triggers via
`schedule: '0 18 * * 5,6,0,1,2'` (23:30 IST FriTue) plus `workflow_dispatch`.
Bake window (WedThu) pauses scheduled nightlies; the captain re-cuts via
workflow_dispatch when a fix lands. Stable `release.yml` publishes via
`changesets/action`. `.changeset/config.json` adds the snapshot template
(`{tag}-{commit}`). `@aoagents/ao-web` stays in the linked group and ships
alongside `@aoagents/ao-cli` (it's a workspace:_ runtime dep, so marking it
private would 404 every `npm install -g @aoagents/ao` after publish).
`scripts/check-publishable-deps.mjs` runs in both release.yml and canary.yml
before the publish step and fails CI if a publishable package depends on a
`private: true` package via workspace:_.
- **Update channels.** New `updateChannel` field in the global config schema
(`stable | nightly | manual`, default `manual` so existing users see no
surprise installs). `update-check.ts` reads `dist-tags[channel]` from the
npm registry, compares prerelease versions segment-by-segment so SHA-suffixed
nightlies sort correctly, and skips notices entirely on `manual`.
- **Soft auto-install + active-session guard.** On stable/nightly, `ao update`
skips the confirm prompt and just installs. Before installing it lists
sessions and refuses with `N session(s) active. Run \`ao stop\` first.`if
any are in`working`/`idle`/`needs_input`/`stuck`. Same guard duplicated
in `POST /api/update` so the dashboard returns a structured 409.
- **Onboarding question.** `ao start` prompts once for the channel if unset;
dismissal persists `manual`. `ao config set updateChannel <value>` (and
`installMethod`) lets users change it later.
- **Dashboard banner.** `GET /api/version` reads the same cache file as the
CLI. `UpdateBanner` (Tailwind only, `var(--color-*)` tokens) appears at the
top of the dashboard when `isOutdated`. Click POSTs to `/api/update`;
dismissal persists per-version in `localStorage`.
- **Bun + Homebrew detection.** New install-method classifiers for
`~/.bun/install/global/` (auto-installs `bun add -g @aoagents/ao@<channel>`)
and `/Cellar/ao/` (notice only — `brew upgrade ao` to avoid clobbering
brew's symlinks). `installMethod` config field overrides path detection.
Supersedes #1525 (incorporates the canary + release infrastructure with the
cron / no-stale-SHA-guard / no-merged-PR-comment modifications called out in
the design doc).
- 71326bc: Add inline rename for worker sessions in the sidebar. Each worker row now shows a small pencil button on hover; clicking it swaps the label for an input pre-filled with the current title. Enter persists via `PATCH /api/sessions/:id`, Escape cancels, and an empty value reverts the session to its default title. The rename is written to the existing `displayName` metadata field and is now the highest-priority signal in `getSessionTitle`, so a user-chosen label always beats PR/issue titles. The session ID (`ao-N`) remains the canonical identifier — only display surfaces change. (#1647)
### Patch Changes
- 845fffd: Tmux sessions no longer die when the agent process inside them exits. When you Ctrl-C the agent in a web terminal, the pane now drops to an interactive `$SHELL` in the workspace dir instead of nuking the tmux session and leaving the dashboard in a phantom "runtime lost" state. The lifecycle manager still detects the agent exit (via `agent.isProcessRunning`) and transitions the session to `agent_process_exited`, but the runtime stays usable so you can run shell commands or manually re-launch the agent.
Also: the mux-websocket re-attach loop now checks `tmux has-session` before retrying after a PTY exit. When the tmux session is genuinely gone (e.g. `ao stop`), it skips the three doomed `attach-session` spawns from #1640 and notifies the dashboard immediately. (#1756)
- Updated dependencies [845fffd]
- Updated dependencies [0f5ae0b]
- Updated dependencies [fe33bb7]
- Updated dependencies [7c46dc9]
- Updated dependencies [a33b2ba]
- @aoagents/ao-plugin-runtime-tmux@0.7.0
- @aoagents/ao-core@0.7.0
- @aoagents/ao-plugin-runtime-process@0.7.0
- @aoagents/ao-plugin-agent-claude-code@0.7.0
- @aoagents/ao-plugin-agent-codex@0.7.0
- @aoagents/ao-plugin-agent-opencode@0.7.0
- @aoagents/ao-plugin-workspace-worktree@0.7.0
- @aoagents/ao-plugin-tracker-github@0.7.0
- @aoagents/ao-plugin-tracker-linear@0.7.0
- @aoagents/ao-plugin-scm-github@0.7.0
- @aoagents/ao-plugin-agent-cursor@0.7.0
- @aoagents/ao-plugin-agent-kimicode@0.7.0
## 0.6.0
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@aoagents/ao-web",
"version": "0.6.0",
"version": "0.7.0",
"description": "Web dashboard for agent-orchestrator",
"license": "MIT",
"type": "module",