Releases: yanokamay-org/maiestro
Release list
v0.4.2
What's new
- Subscription quota in the popover — a quota strip shows your remaining Claude, Codex and Copilot usage (#205)
- Per-agent repo settings — repo settings are now grouped per agent; Claude's
--remote-controlis now optional (#209)
Fixes
- Antigravity status — a session now shows "needs you" while
agywaits on its own permission prompt, instead of "working" (#208)
v0.4.1
What's new
- GitHub Copilot CLI support — Copilot can now be chosen as a
per-repo agent alongside Claude Code, Codex and Antigravity, including
live status hooks, headless drafting and Health Check coverage. (#203)
Windows groundwork
- Foundation for a Windows build: paths, logging, credentials, packaging
and CI. (#164) - Tool resolution on Windows (PATH separator, PATHEXT, no login shell). (#165)
- Session process tracking, Win32 VS Code window control and teardown
recovery. (#165, #166) - Tray: crisp icon, popover placed above the taskbar and kept open while
resizing. (#198)
Docs
- Simplified README installation steps. (#196)
v0.4.0
Multiple agentic coding CLIs
- Codex CLI and Antigravity CLI (
agy) supported as per-repo agents alongside Claude Code - Switch an existing session's agent (Claude ⇄ Codex)
- Global Default Agent is now a dropdown
- Codex: explains the one-time hook trust before opening VS Code
- Antigravity:
.agents/hooks.jsonkept out of git via.gitignore - Drafting-model suggestions come from each CLI's own model list
Onboarding & settings
- Onboarding unified into a single wizard, including default agent selection
- Settings "Preferences" renamed to "General" and opens on it
- UI and docs call the agent the "agentic coding CLI"
Updates
- Periodic check for newer releases with a dismissable update banner
Fixes
- Never merge into an unreadable settings.json; the popover warns instead
Docs
- README: CI/release/license badges and demo video links
v0.3.2
Fixes
- Popover opens on the right display in mixed-DPI setups. On a Retina laptop with a 1x external monitor the popover could land on the wrong screen; placement math now runs in a pure, unit-tested
popover_placementmodule working in points. The popover always drops down from the tray icon (fixes displays arranged below the main one), and the no-tray fallback uses the display under the cursor. (#175) - Show-hidden eye toggle is centered in the popover header instead of floating between the title and the gear.
Documentation
- New Security and privacy section in the README covering what runs on spawn, every data flow (GitHub API, spawn comment and its
comment_on_spawnopt-out, drafting calls, remote control, Keychain-only tokens, logs) and the absence of telemetry or update checks. (#177) - Contributor-facing Development docs moved from the README into a new
CONTRIBUTING.md, including CI commands and the PR-only git workflow. - Yanokamay LLC named as copyright holder in LICENSE, README, and the app bundle.
v0.3.1
Supersedes v0.3.0, whose build never attached to its release — use this one. Everything below landed since v0.2.9.
The app is now called mAIestro Code. The rename covers everything user-visible — the bundle is mAIestro Code.app, plus window titles, the in-app wordmark, help text, and docs. Internal identifiers are deliberately unchanged: bundle id, ~/.maiestro/, Keychain service names, log paths, and the maiestro binary all stay put, so existing settings, credentials, and launch-at-login carry over untouched. (#167)
Teardown now deletes the remote branch. Tearing down a session removes the branch on GitHub as well, so merged work stops leaving stale branches behind. The guard is a whitelist — the branch goes only when the setting is on, no PR is open against it, and either its PR merged or the branch carries nothing beyond base. Every uncertainty fails closed: if GitHub can't be reached, or the local commit count can't be determined, the branch is kept. Confirming a worktree's destruction is not consent to destroy pushed commits, so there is no override. The step is non-fatal — an unreachable GitHub never strands a worktree. (#168)
Merged-ness is checked with git cherry (patch ids) rather than ancestry, so a squash- or rebase-merged PR is correctly recognized as merged instead of being stranded forever.
Two new per-repo settings, both on by default: delete_remote_on_teardown and comment_on_spawn (which gates only the spawn comment, never the issue assignment). The repo Settings form gained a generic boolean renderer, so future on/off settings need no frontend change.
Release tooling: the publish step now requires an asset to be in state uploaded before it counts as attached, and re-verifies that before publishing — the gap that left v0.3.0 without a .dmg. (#173)
v0.2.9
v0.2.8
v0.2.8
- Added GitHub PAT setup links to onboarding and Settings
- Onboarding: pre-fill identity name, add field hints, and fix a stale identity list
- Check Health now warns on outdated
claude,git, andcodeversions - Settings: re-probe path/tool hints automatically when the health modal closes
v0.2.7
Fixes
- Worktree colors now match Claude Code's own session colors. The palette used hand-darkened approximations, so the popover row, the VS Code bars, and the Claude session UI never quite agreed (the old orange read as brown). The palette is now the exact values Claude Code paints its eight session colors with, pinned by a test. Because the new colors are mid-tone, generated VS Code settings pin a white foreground on the title, status, and activity bars. Existing sessions keep their recorded color. (#142)
- Preferences panel re-reads settings on every open. The Settings window is hidden rather than destroyed on close, so it kept showing values from first launch. A launch-at-login choice made during onboarding showed as off, and the stale value could be autosaved back, removing the LaunchAgent. It now refreshes on each open, which also picks up hand edits to
~/.maiestro/settings.json. The popover gear and the tray menu share one open path. (#139) claudein~/.local/binis found on a fresh account. The native installer andpip install --userput it there, and the login shell often lacks that directory on PATH, so first launch missed it. It is now probed as a known install location. (#141)
Housekeeping
- Generated
.vscode/settings.jsonno longer carries application-scoped VS Code settings that a folder file cannot apply. - README documents the startup prerequisites and the health check; per-feature reference docs moved from
CLAUDE.mdintodocs/; release mechanics moved into the/releaseskill.
v0.2.6
Fixes
- VS Code startup task now uses the resolved
claudepath (#134). The generated.vscode/tasks.jsonbaked a bareclaude, which relied on whatever PATH the VS Code process inherited — and a VS Code launched by a packaged mAIestro at login can carry the minimal Launch Services PATH with noclaudeon it. The task now usestools::resolve_tool, so the sametool_paths.claudeoverride that pins mAIestro's own drafting calls also decides which binary the session starts with. Existing worktrees pick it up on their next reopen.
Features
- Worktree terminal font is now a preference. The Nerd Font stack was a const in the backend; it's now
terminal_font_familyin~/.maiestro/settings.json, editable in Preferences (empty = the schema default). - New health check: is the preferred terminal font installed? Scans the macOS font directories for the first concrete family in the stack. A missing font reports as the new
infostatus (blue, excluded from the roll-up) with abrew install --cask …one-liner — losing the font only costs Claude Code's box/powerline glyphs. Only an entirely uninstalled stack warns. - Tool-path rows in Preferences are now driven off the schema rather than a hardcoded TS list.
Docs
- README: tightened intro and installation, added a macOS heading and an "Other Platforms" section, and a Nerd Font install note.
v0.2.5
Highlights
Track any repo you can read. The Add Repo picker's filter box now doubles as manual entry — type an owner/name that isn't in the fetched list and an "Add …" row appears. So a repo you merely contribute to (anything the identity's token can read) can be tracked, not just what GET /user/repos returns. The typed name is validated against GitHub before the settings file is written, so a typo fails at add time instead of becoming a broken dashboard row — and GitHub's canonical full_name is what gets tracked, which also normalizes case.
The Add Repo picker no longer makes you press Fetch. Opening it loads the default identity's repos immediately, and the identity select stays at the top and re-fetches on change (discarding a late response for an identity you've already switched away from). Manual entry is offered while that list is still loading, so naming a repo outright never waits on the fetch. Both controls are now labeled fields in their own container.
The Claude session is colored to match its worktree. Each worktree already had a deterministic color on its popover row and VS Code's title/status/activity bars; the Claude session running inside it had none, so the visual thread broke exactly where you spend your time. The generated folder-open task now passes the mapped session color as a /color initial prompt. The mapping is a bijection, so no two live sessions collide on a session color — which retires the palette's dark cyan (near-indistinguishable from the dark teal in a title bar) for a dark yellow. Existing session records keep their color, and worktrees spawned before this get themed on their next reopen.
Settings → Preferences shows what you're running. A read-only About block at the bottom: app version, build date, short git SHA, and a button opening that version's GitHub Release notes. The version comes from tauri.conf.json — the same single source release.sh bump writes — so it can't drift from the release pipeline; the date and SHA are stamped in at compile time, so there's no network call and no metadata file beside the binary. Local builds are labelled X.Y.Z+dev with a "dev build" badge (and a -dirty SHA suffix when the tree was dirty), so a dev build can't pass itself off as the release it was built from.
Fixes
- The health check's "repo isn't checked out" hint now emits an HTTPS clone command instead of SSH. The SSH form silently assumed a GitHub SSH key you may not have, so on an HTTPS-only machine the hint was a command that could never work. This is now on the common path, since an unaffiliated repo is rarely already cloned.