diff --git a/.changeset/keep-tmux-session-alive-after-agent-exit.md b/.changeset/keep-tmux-session-alive-after-agent-exit.md deleted file mode 100644 index 44b60042b..000000000 --- a/.changeset/keep-tmux-session-alive-after-agent-exit.md +++ /dev/null @@ -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) diff --git a/.changeset/native-windows-support.md b/.changeset/native-windows-support.md deleted file mode 100644 index f40349b08..000000000 --- a/.changeset/native-windows-support.md +++ /dev/null @@ -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-`, -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`. diff --git a/.changeset/orchestrator-session-id-env.md b/.changeset/orchestrator-session-id-env.md deleted file mode 100644 index 8fcf20027..000000000 --- a/.changeset/orchestrator-session-id-env.md +++ /dev/null @@ -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 -orchestrator ""` 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) diff --git a/.changeset/release-train.md b/.changeset/release-train.md deleted file mode 100644 index 527832eb6..000000000 --- a/.changeset/release-train.md +++ /dev/null @@ -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 Fri–Tue) plus `workflow_dispatch`. - Bake window (Wed–Thu) 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 ` (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@`) - 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). diff --git a/.changeset/rename-worker-sessions.md b/.changeset/rename-worker-sessions.md deleted file mode 100644 index 528c43ff1..000000000 --- a/.changeset/rename-worker-sessions.md +++ /dev/null @@ -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) diff --git a/.changeset/restore-preserves-existing-branch.md b/.changeset/restore-preserves-existing-branch.md deleted file mode 100644 index 784d776fe..000000000 --- a/.changeset/restore-preserves-existing-branch.md +++ /dev/null @@ -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 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) diff --git a/packages/ao/CHANGELOG.md b/packages/ao/CHANGELOG.md index 6da307509..60f468609 100644 --- a/packages/ao/CHANGELOG.md +++ b/packages/ao/CHANGELOG.md @@ -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-`, + 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 Fri–Tue) plus `workflow_dispatch`. + Bake window (Wed–Thu) 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 ` (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@`) + 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 diff --git a/packages/ao/package.json b/packages/ao/package.json index 7f137042a..ee54fb5f2 100644 --- a/packages/ao/package.json +++ b/packages/ao/package.json @@ -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", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index a110d80f4..2bddda0ec 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -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-`, + 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 -orchestrator ""` 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 Fri–Tue) plus `workflow_dispatch`. + Bake window (Wed–Thu) 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 ` (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@`) + 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 diff --git a/packages/cli/package.json b/packages/cli/package.json index b86ceb410..03473925f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -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", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 663adb01c..dccb3af70 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -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-`, + 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 -orchestrator ""` 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 Fri–Tue) plus `workflow_dispatch`. + Bake window (Wed–Thu) 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 ` (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@`) + 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 diff --git a/packages/core/package.json b/packages/core/package.json index 00b11bac7..ad874cdb8 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -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", diff --git a/packages/plugins/agent-aider/CHANGELOG.md b/packages/plugins/agent-aider/CHANGELOG.md index 51df2e23f..990c79ebe 100644 --- a/packages/plugins/agent-aider/CHANGELOG.md +++ b/packages/plugins/agent-aider/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/agent-aider/package.json b/packages/plugins/agent-aider/package.json index 990c4807f..9a86075f0 100644 --- a/packages/plugins/agent-aider/package.json +++ b/packages/plugins/agent-aider/package.json @@ -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", diff --git a/packages/plugins/agent-claude-code/CHANGELOG.md b/packages/plugins/agent-claude-code/CHANGELOG.md index f246bb9e8..e41c5e807 100644 --- a/packages/plugins/agent-claude-code/CHANGELOG.md +++ b/packages/plugins/agent-claude-code/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/agent-claude-code/package.json b/packages/plugins/agent-claude-code/package.json index 3a4734da3..4f130fa7e 100644 --- a/packages/plugins/agent-claude-code/package.json +++ b/packages/plugins/agent-claude-code/package.json @@ -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", diff --git a/packages/plugins/agent-codex/CHANGELOG.md b/packages/plugins/agent-codex/CHANGELOG.md index b6749c398..6761e2a7f 100644 --- a/packages/plugins/agent-codex/CHANGELOG.md +++ b/packages/plugins/agent-codex/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/agent-codex/package.json b/packages/plugins/agent-codex/package.json index 56853d557..e9196702c 100644 --- a/packages/plugins/agent-codex/package.json +++ b/packages/plugins/agent-codex/package.json @@ -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", diff --git a/packages/plugins/agent-codex/src/package-version.test.ts b/packages/plugins/agent-codex/src/package-version.test.ts deleted file mode 100644 index 5b0f95f09..000000000 --- a/packages/plugins/agent-codex/src/package-version.test.ts +++ /dev/null @@ -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"); - }); -}); diff --git a/packages/plugins/agent-cursor/CHANGELOG.md b/packages/plugins/agent-cursor/CHANGELOG.md index 577e8c55e..08a26c320 100644 --- a/packages/plugins/agent-cursor/CHANGELOG.md +++ b/packages/plugins/agent-cursor/CHANGELOG.md @@ -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 diff --git a/packages/plugins/agent-cursor/package.json b/packages/plugins/agent-cursor/package.json index dd383f3e0..9f6e67ec9 100644 --- a/packages/plugins/agent-cursor/package.json +++ b/packages/plugins/agent-cursor/package.json @@ -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", diff --git a/packages/plugins/agent-kimicode/CHANGELOG.md b/packages/plugins/agent-kimicode/CHANGELOG.md index 946ba3001..ecdf3831c 100644 --- a/packages/plugins/agent-kimicode/CHANGELOG.md +++ b/packages/plugins/agent-kimicode/CHANGELOG.md @@ -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 diff --git a/packages/plugins/agent-kimicode/package.json b/packages/plugins/agent-kimicode/package.json index 6d9fd38c0..6ae80d984 100644 --- a/packages/plugins/agent-kimicode/package.json +++ b/packages/plugins/agent-kimicode/package.json @@ -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", diff --git a/packages/plugins/agent-opencode/CHANGELOG.md b/packages/plugins/agent-opencode/CHANGELOG.md index aa05d8c3a..90687d46f 100644 --- a/packages/plugins/agent-opencode/CHANGELOG.md +++ b/packages/plugins/agent-opencode/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/agent-opencode/package.json b/packages/plugins/agent-opencode/package.json index 67e794c55..d15bad074 100644 --- a/packages/plugins/agent-opencode/package.json +++ b/packages/plugins/agent-opencode/package.json @@ -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", diff --git a/packages/plugins/notifier-composio/CHANGELOG.md b/packages/plugins/notifier-composio/CHANGELOG.md index 2bf202333..44ff96052 100644 --- a/packages/plugins/notifier-composio/CHANGELOG.md +++ b/packages/plugins/notifier-composio/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/notifier-composio/package.json b/packages/plugins/notifier-composio/package.json index c907a66fb..4bc13f310 100644 --- a/packages/plugins/notifier-composio/package.json +++ b/packages/plugins/notifier-composio/package.json @@ -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", diff --git a/packages/plugins/notifier-desktop/CHANGELOG.md b/packages/plugins/notifier-desktop/CHANGELOG.md index 222fec642..c1fc8952e 100644 --- a/packages/plugins/notifier-desktop/CHANGELOG.md +++ b/packages/plugins/notifier-desktop/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/notifier-desktop/package.json b/packages/plugins/notifier-desktop/package.json index cd69871c0..75f99a83c 100644 --- a/packages/plugins/notifier-desktop/package.json +++ b/packages/plugins/notifier-desktop/package.json @@ -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", diff --git a/packages/plugins/notifier-discord/CHANGELOG.md b/packages/plugins/notifier-discord/CHANGELOG.md index 80b29fe1b..afd8ce1c5 100644 --- a/packages/plugins/notifier-discord/CHANGELOG.md +++ b/packages/plugins/notifier-discord/CHANGELOG.md @@ -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 diff --git a/packages/plugins/notifier-discord/package.json b/packages/plugins/notifier-discord/package.json index 3a4ad75ea..3a22f14b6 100644 --- a/packages/plugins/notifier-discord/package.json +++ b/packages/plugins/notifier-discord/package.json @@ -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", diff --git a/packages/plugins/notifier-openclaw/CHANGELOG.md b/packages/plugins/notifier-openclaw/CHANGELOG.md index 636384032..95c254d43 100644 --- a/packages/plugins/notifier-openclaw/CHANGELOG.md +++ b/packages/plugins/notifier-openclaw/CHANGELOG.md @@ -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 diff --git a/packages/plugins/notifier-openclaw/package.json b/packages/plugins/notifier-openclaw/package.json index 6a50caf20..f1b07cbd0 100644 --- a/packages/plugins/notifier-openclaw/package.json +++ b/packages/plugins/notifier-openclaw/package.json @@ -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", diff --git a/packages/plugins/notifier-slack/CHANGELOG.md b/packages/plugins/notifier-slack/CHANGELOG.md index c6c180fec..d7f0e386e 100644 --- a/packages/plugins/notifier-slack/CHANGELOG.md +++ b/packages/plugins/notifier-slack/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/notifier-slack/package.json b/packages/plugins/notifier-slack/package.json index a81db3852..d9f64ccc6 100644 --- a/packages/plugins/notifier-slack/package.json +++ b/packages/plugins/notifier-slack/package.json @@ -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", diff --git a/packages/plugins/notifier-webhook/CHANGELOG.md b/packages/plugins/notifier-webhook/CHANGELOG.md index 719b15724..86f0189f3 100644 --- a/packages/plugins/notifier-webhook/CHANGELOG.md +++ b/packages/plugins/notifier-webhook/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/notifier-webhook/package.json b/packages/plugins/notifier-webhook/package.json index 9da736c7a..3b89439ea 100644 --- a/packages/plugins/notifier-webhook/package.json +++ b/packages/plugins/notifier-webhook/package.json @@ -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", diff --git a/packages/plugins/runtime-process/CHANGELOG.md b/packages/plugins/runtime-process/CHANGELOG.md index b0ac8d8ec..8164222f5 100644 --- a/packages/plugins/runtime-process/CHANGELOG.md +++ b/packages/plugins/runtime-process/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/runtime-process/package.json b/packages/plugins/runtime-process/package.json index 9609c0f8d..b19d6dcfd 100644 --- a/packages/plugins/runtime-process/package.json +++ b/packages/plugins/runtime-process/package.json @@ -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", diff --git a/packages/plugins/runtime-tmux/CHANGELOG.md b/packages/plugins/runtime-tmux/CHANGELOG.md index 8a6620867..3bd0bd2cf 100644 --- a/packages/plugins/runtime-tmux/CHANGELOG.md +++ b/packages/plugins/runtime-tmux/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/runtime-tmux/package.json b/packages/plugins/runtime-tmux/package.json index 4392457d9..891a507b3 100644 --- a/packages/plugins/runtime-tmux/package.json +++ b/packages/plugins/runtime-tmux/package.json @@ -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", diff --git a/packages/plugins/scm-github/CHANGELOG.md b/packages/plugins/scm-github/CHANGELOG.md index 915bafc42..5a3c4d57d 100644 --- a/packages/plugins/scm-github/CHANGELOG.md +++ b/packages/plugins/scm-github/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/scm-github/package.json b/packages/plugins/scm-github/package.json index e2c9f1de7..3e4b2559d 100644 --- a/packages/plugins/scm-github/package.json +++ b/packages/plugins/scm-github/package.json @@ -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", diff --git a/packages/plugins/scm-gitlab/CHANGELOG.md b/packages/plugins/scm-gitlab/CHANGELOG.md index 709102027..d8ea465b4 100644 --- a/packages/plugins/scm-gitlab/CHANGELOG.md +++ b/packages/plugins/scm-gitlab/CHANGELOG.md @@ -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 diff --git a/packages/plugins/scm-gitlab/package.json b/packages/plugins/scm-gitlab/package.json index 754577095..ea9d8cd78 100644 --- a/packages/plugins/scm-gitlab/package.json +++ b/packages/plugins/scm-gitlab/package.json @@ -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", diff --git a/packages/plugins/terminal-iterm2/CHANGELOG.md b/packages/plugins/terminal-iterm2/CHANGELOG.md index 3488b1239..387363f8d 100644 --- a/packages/plugins/terminal-iterm2/CHANGELOG.md +++ b/packages/plugins/terminal-iterm2/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/terminal-iterm2/package.json b/packages/plugins/terminal-iterm2/package.json index d5ab04077..ffaa46815 100644 --- a/packages/plugins/terminal-iterm2/package.json +++ b/packages/plugins/terminal-iterm2/package.json @@ -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", diff --git a/packages/plugins/terminal-web/CHANGELOG.md b/packages/plugins/terminal-web/CHANGELOG.md index 2582dfc67..ae5ab3138 100644 --- a/packages/plugins/terminal-web/CHANGELOG.md +++ b/packages/plugins/terminal-web/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/terminal-web/package.json b/packages/plugins/terminal-web/package.json index b6733f82e..7904c8fa4 100644 --- a/packages/plugins/terminal-web/package.json +++ b/packages/plugins/terminal-web/package.json @@ -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", diff --git a/packages/plugins/tracker-github/CHANGELOG.md b/packages/plugins/tracker-github/CHANGELOG.md index 28df0d28b..98e91e8c4 100644 --- a/packages/plugins/tracker-github/CHANGELOG.md +++ b/packages/plugins/tracker-github/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/tracker-github/package.json b/packages/plugins/tracker-github/package.json index 7a6d8b466..246ea968c 100644 --- a/packages/plugins/tracker-github/package.json +++ b/packages/plugins/tracker-github/package.json @@ -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", diff --git a/packages/plugins/tracker-gitlab/CHANGELOG.md b/packages/plugins/tracker-gitlab/CHANGELOG.md index f91c361fc..d00ded588 100644 --- a/packages/plugins/tracker-gitlab/CHANGELOG.md +++ b/packages/plugins/tracker-gitlab/CHANGELOG.md @@ -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 diff --git a/packages/plugins/tracker-gitlab/package.json b/packages/plugins/tracker-gitlab/package.json index 5268be3d2..e2b57bb08 100644 --- a/packages/plugins/tracker-gitlab/package.json +++ b/packages/plugins/tracker-gitlab/package.json @@ -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", diff --git a/packages/plugins/tracker-linear/CHANGELOG.md b/packages/plugins/tracker-linear/CHANGELOG.md index bf035d188..520c8e1fc 100644 --- a/packages/plugins/tracker-linear/CHANGELOG.md +++ b/packages/plugins/tracker-linear/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/tracker-linear/package.json b/packages/plugins/tracker-linear/package.json index 8c8e247d8..46eadda1f 100644 --- a/packages/plugins/tracker-linear/package.json +++ b/packages/plugins/tracker-linear/package.json @@ -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", diff --git a/packages/plugins/workspace-clone/CHANGELOG.md b/packages/plugins/workspace-clone/CHANGELOG.md index f5c8afc36..35f6be58c 100644 --- a/packages/plugins/workspace-clone/CHANGELOG.md +++ b/packages/plugins/workspace-clone/CHANGELOG.md @@ -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-`, + 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 diff --git a/packages/plugins/workspace-clone/package.json b/packages/plugins/workspace-clone/package.json index f5f04461e..16d00059c 100644 --- a/packages/plugins/workspace-clone/package.json +++ b/packages/plugins/workspace-clone/package.json @@ -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", diff --git a/packages/plugins/workspace-worktree/CHANGELOG.md b/packages/plugins/workspace-worktree/CHANGELOG.md index b8572df3a..096f58097 100644 --- a/packages/plugins/workspace-worktree/CHANGELOG.md +++ b/packages/plugins/workspace-worktree/CHANGELOG.md @@ -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-`, + 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 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 diff --git a/packages/plugins/workspace-worktree/package.json b/packages/plugins/workspace-worktree/package.json index 4167b5ebe..4f2dab220 100644 --- a/packages/plugins/workspace-worktree/package.json +++ b/packages/plugins/workspace-worktree/package.json @@ -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", diff --git a/packages/web/CHANGELOG.md b/packages/web/CHANGELOG.md index 9a91af54f..9b84260d7 100644 --- a/packages/web/CHANGELOG.md +++ b/packages/web/CHANGELOG.md @@ -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-`, + 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 Fri–Tue) plus `workflow_dispatch`. + Bake window (Wed–Thu) 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 ` (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@`) + 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 diff --git a/packages/web/package.json b/packages/web/package.json index bbf38cf7c..d1c33b02c 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -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",