# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.3.8] - 2026-05-28

## [0.3.7] - 2026-05-27

### Added
- Built-in package `serena` — installs the Serena coding-agent toolkit
  (https://github.com/oraios/serena) via `uv tool install serena-agent`
  and registers it as a Claude Code MCP server at user scope with
  `--context claude-code --project-from-cwd`. Provides symbol-level
  find/rename/refactor tools. Prereqs: `uv`, `claude`.

## [0.3.6] - 2026-05-27

### Added
- Built-in package `modern-web-guidance` — installs Google Chrome's modern
  web platform skill via `npx modern-web-guidance@latest install` (interactive
  wizard, `claude-skill` artifact at `~/.claude/skills/modern-web-guidance`,
  scope = both). Update uses `npx modern-web-guidance@latest update`.
- `.github/workflows/publish.yml` — release trigger with two firing modes:
  (1) manual `workflow_dispatch` with a `level` input
  (`patch` / `minor` / `major`), and (2) push of a trigger tag
  `release-patch` / `release-minor` / `release-major` from git or
  `jj git push --tag`. The job runs `cargo release` on `master`, bumps
  the version, tags, pushes, publishes to crates.io, then deletes the
  trigger tag. The resulting `v*` tag fires the existing binary-artifact
  `Release` workflow.

## [0.3.5] - 2026-05-15

## [0.3.4] - 2026-05-12

## [0.3.3] - 2026-05-12

## [0.3.2] - 2026-05-12

## [0.3.1] - 2026-05-12

## [0.3.0] - 2026-05-12

## [0.2.5] - 2026-05-12

## [0.2.4] - 2026-05-12

## [0.2.3] - 2026-05-07

### Added
- Built-in package `ccstatusline` — installs the customizable Claude Code
  status line via `bunx -y ccstatusline@latest` (interactive TUI, global
  scope). Declares a `bun` prereq and a `path` artifact at
  `~/.config/ccstatusline/settings.json`.

## [0.2.2] - 2026-04-22

## [0.2.1] - 2026-04-22

## [0.2.0] - 2026-04-17

## [0.1.0] - 2026-04-17

### Added
- `[[install]].interactive = true` on registry install methods. Jobs flagged
  interactive run first, serially, with inherited stdio (so wizards like
  `npx claude-mem install` and `npx ctx7 setup` still work); everything else
  runs concurrently with per-line `indicatif` spinners, mise-style. `aimgr
  install` (bootstrap) and `aimgr up` share the same runner, so both pick up
  the new behavior. Built-ins: `claude-mem` and `context7` flagged interactive;
  `seek`, `fff-nvim`, `plannotator`, and `claude` run in parallel.

### Added
- `[[artifacts]]` on registry packages — declarative presence checks that
  replace the single-shell `verify` probe. Kinds: `cli` (PATH lookup),
  `claude-skill` / `claude-rule` (`~/.claude/skills|rules/<name>`), and
  `path` (arbitrary file/dir, `~/`/`$HOME/` expand). Packages with multiple
  install targets (e.g. context7 installs a skill *and* a rule) declare
  one block per artifact; the post-install warning reports each one
  individually (`✔`/`✘`) instead of a single opaque `verify` failure.
  `verify` stays as a fallback for non-file-shaped probes.

### Changed
- Built-in packages migrated to `[[artifacts]]`:
  - `context7` — `claude-skill find-docs` + `claude-rule context7`
  - `claude-mem` — `path ~/.claude/plugins/marketplaces/thedotmack`
  - `plannotator` — `path ~/.claude/plugins/plannotator`
  - `seek` — `cli seek`

### Fixed
- Post-install `verify` failure now warns and records the install instead of
  bailing. Fixes repeated re-install attempts for tools whose `verify` runs a
  PATH lookup under `sh -c` but whose real install target is a shell alias
  (e.g. `claude-mem`) — `sh -c` doesn't load zsh/bash rc files so aliases are
  invisible. `claude-mem`'s built-in verify now checks the Claude-plugin
  directory instead of `command -v claude-mem`.

### Changed (major pivot — not yet released)
- **Command-driven packages.** Registry packages now declare `[[install]]`, `[[prereq]]`,
  `verify`, and optional `uninstall`/`update` shell commands instead of file-merge
  recipes. `[[merge]]` and `[[link]]` blocks are scaffolded but deferred.
- **Built-in registry.** Five seed packages ship inside the binary via `include_str!`:
  `plannotator`, `context7`, `claude-mem`, `seek`, `fff-nvim`. The old user-managed
  `~/.local/share/aimgr/registry/` directory and `AIMGR_REGISTRY` env var are gone.
  Per-user overrides live at `~/.config/aimgr/custom/<name>.toml`; they shadow
  built-ins transparently.
- **Mise-shaped verbs.** Replaced `install/uninstall/update/list` with
  `use/unuse/sync/up/purge`, plus `install/uninstall` repurposed to
  scaffold/delete *custom registry packages*. Added `ls`, `status`, `registry`,
  `init`, `edit`, `implode`.
- **Intent vs. reality split.** Project intent at `.aimgr/aimgr.toml` (checked in),
  project reality at `.aimgr/state.toml` (gitignored). Global intent at
  `~/.config/aimgr/config.toml`, machine reality at
  `~/.local/state/aimgr/state.toml` (now also tracks managed-project paths and
  trusted shell commands).
- **Categories collapsed** from `{plugin, skill, agent, command}` to
  `{tool, add-on}`; packages declare `tools = [claude|codex|cursor]` instead of
  being keyed by tool/kind.
- **Drift-aware sync.** Rendered CLAUDE.md blocks are recorded pristine-text in
  state; re-sync writes silently when the file is untouched, prompts on hand-edits.

### Added
- `aimgr init` wizard (manifest + sync).
- `aimgr use -g` / `--all` scope flags.
- `aimgr up [<name>]` — parallel update for every installed package on the
  machine (pass a name to update one), with per-package live spinner + message
  (indicatif), tail-dump of failed jobs, and non-zero exit when any job fails.
- Interactive picker (bare `aimgr`): context-aware header + action menu
  (add / remove / sync / update / init / browse), delegating to the matching verb.
- Trust gate: first-time shell installers prompt for explicit approval and cache
  the `(package, command)` pair in machine state.
- `AIMGR_TEST_SHELL` / `AIMGR_TEST_LOG` test hooks for deterministic exec testing.

### Removed
- `AIMGR_REGISTRY` env var, `aimgr setup`, `aimgr registry use`, the XDG registry
  directory. First-run bootstrap is no longer required.
- `Kind` enum and the `<tool>/<kind>/<name>/` registry layout.
