Skip to content

Release 0.2.8: dir-aware global binaries, interactive plugin menu, closed-env activation - #8

Merged
DracoRunner merged 22 commits into
mainfrom
feat/avm-0.2.7-release
Jul 17, 2026
Merged

Release 0.2.8: dir-aware global binaries, interactive plugin menu, closed-env activation#8
DracoRunner merged 22 commits into
mainfrom
feat/avm-0.2.7-release

Conversation

@DracoRunner

Copy link
Copy Markdown
Collaborator

Summary

Fixes two real usability bugs and adds discoverability, plus a small dead-code cleanup.

Issue 1 — global packages (npm i -g <pkg>) were unrunnable

  • reshim generates shims for every executable in installed versions' bin/ dirs; auto-runs after npm/yarn/pnpm/bun install commands, so tsc, eslint, etc. work immediately (no manual reshim step).
  • exec-shim now resolves any binary across managed versions — local pin → global pin → other tools — so a globally-installed tool runs regardless of the active project version.

Issue 2 — closed envs (Codex/Claude) reset PATH and lose dir-aware resolution

  • avm shims activate idempotently adds ~/.avm/shims to .zshenv/.bashrc/.profile. .zshenv is sourced by every zsh invocation (incl. non-interactive zsh -c), which is how such sandboxes spawn shells.

UX

  • Bare avm <plugin> (e.g. avm java) now opens an interactive action menu that chains into the chosen action; uniform for every plugin. Non-TTY falls back to the classic status printout.
  • Clearer unknown-subcommand hint.

Cleanup

  • Removed 65 lines of dead duplicated resolver methods on Resolver.

New commands

  • avm shims reshim
  • avm shims activate
  • avm shims install now reshims too

Testing

  • Full workspace builds with no warnings; all 25 CLI scenario tests pass.
  • Verified live: fake global bin → reshim → runnable; cross-version fallback; activate idempotency (throwaway HOME).

Notes / follow-ups

  • Cross-version fallback runs a global tool under the global version's runtime, not the project-pinned one — matches the "installed globally = runnable everywhere" ask. Can add a warn/refuse if strictness is preferred.
  • No shim pruning on uninstall (stale shim falls through to system PATH).
  • Non-interactive bash -c isn't covered by activate (bash has no .zshenv equivalent without $BASH_ENV).

…activation

Issue 1 — global packages installed via `npm i -g` were unrunnable:
- reshim(): generate shims for every executable in installed versions' bins,
  auto-run after npm/yarn/pnpm/bun install commands
- exec-shim resolves any binary across managed versions (local pin -> global
  pin -> other tools), so a globally-installed tool runs regardless of the
  active version

Issue 2 — closed envs (Codex/Claude) reset PATH and lose dir-aware resolution:
- `avm shims activate` idempotently adds ~/.avm/shims to .zshenv/.bashrc/.profile

UX — bare `avm <plugin>` now opens an interactive action menu that chains into
the chosen action, uniform for every plugin; better unknown-command hint.

Cleanup — delete 65 lines of dead duplicated resolver methods on Resolver.
@DracoRunner
DracoRunner merged commit d990949 into main Jul 17, 2026
2 checks passed
@DracoRunner
DracoRunner deleted the feat/avm-0.2.7-release branch July 17, 2026 04:27
@DracoRunner DracoRunner changed the title feat: dir-aware global binaries, interactive plugin menu, closed-env activation Release 0.2.8: dir-aware global binaries, interactive plugin menu, closed-env activation Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant