Skip to content

v1.0.2

Choose a tag to compare

@robotrocketscience robotrocketscience released this 27 Apr 22:57
· 1431 commits to main since this release
Immutable release. Only release title and notes can be modified.
v1.0.2
dac96a6

Patch release: per-project install routing, aelf doctor settings
linter, and CI guardrails for release docs. Closes the v1.0.1 gap
where one machine couldn't cleanly route per-project venv hooks
alongside a global pipx install, and the README roadmap drifted out
of sync minutes after the wheel was on PyPI.

Added

  • aelf doctor: scan user-scope and project-scope Claude Code
    settings.json for hook + statusline commands whose program token
    doesn't resolve. Catches dangling absolute paths, bare names not on
    $PATH, and missing scripts under bash /… interpreter wrappers.
    Exits 1 on any broken finding so it can gate CI (#81).
  • staging-gate.yml release-docs-check job: when a PR bumps
    pyproject.toml version, enforce CHANGELOG.md has a matching
    ## [X.Y.Z] section + compare-link footnote, and that README.md
    has no roadmap row marking the released version as next /
    planned. No-op on non-release PRs (#80).
  • post-release-docs-issue.yml: on release.published, opens a
    tracking issue docs sweep for vX.Y.Z with a per-doc checklist
    for the second-order docs the gate can't verify automatically
    (RELEASING.md test counts, ROADMAP.md narrative, etc.) (#80).

Changed

  • aelf setup no longer requires --scope. Default is auto-detect:
    project (writes <cwd>/.claude/settings.json) when cwd/.venv
    matches the active interpreter's sys.prefix, else user (writes
    ~/.claude/settings.json). Explicit --scope still wins (#81).
  • aelf setup --command defaults to an absolute path: project scope
    -> the active venv's aelf-hook; user scope -> the first
    aelf-hook on $PATH (typically a pipx-installed
    ~/.local/bin/aelf-hook). Lets one machine route per-project venvs
    to their own hook AND fall back to a global pipx install outside
    any project, without bare-name $PATH collisions (#81).
  • aelf setup now silently removes legacy dangling
    /usr/local/bin/aelf{,-hook} symlinks if their target no longer
    exists. Real files and live symlinks are never touched (#81).
  • aelf unsetup defaults to basename-match cleanup (every entry
    whose program basename is aelf-hook), so an install written with
    the new auto-resolved absolute path can be torn down by bare
    aelf unsetup without specifying the path (#81).