Skip to content

Releases: zainfathoni/amux

v0.3.7

Choose a tag to compare

@github-actions github-actions released this 29 Jul 11:40
4c8ae68
fix(claude): admit completed config migration evidence (#312)

## Summary

- match core migration-required semantics when quarantine encounters
retained config-local or global rollback sources
- bind bounded, hash-only object/content evidence for effective legacy
sources and all canonical destinations, then revalidate it immediately
before park
- preserve legacy and canonical config bytes while keeping pending,
unsafe, unavailable, oversized, symlinked, or drifted evidence
fail-closed
- document completed retained migration evidence versus genuinely
pending migration

## Validation

- `go test ./skills/amux-claude/experimental/claude-delegation -run
'TestProviderOwnedInvalidStoreQuarantine|TestQuarantineRetainedCompletedMigrationEvidence'
-count=1`
- `GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=commit.gpgsign
GIT_CONFIG_VALUE_0=false go test
./skills/amux-claude/experimental/claude-delegation -count=1`
- `go test ./scripts -count=1`
- `GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=commit.gpgsign
GIT_CONFIG_VALUE_0=false go test ./... -count=1`
- `go vet ./...`
- `go build ./cmd/amux`
- `python3 -m py_compile
skills/amux-claude/experimental/claude-delegation/claude_delegation.py`
- `gofmt` on the changed Go test
- `git diff --check`

No live Claude/provider call was performed.

Closes #288

v0.3.6

Choose a tag to compare

@github-actions github-actions released this 29 Jul 06:16
b2ca793
Support Claude Opus 5 read-only delegation (#306)

## Summary

- admit exact `claude-opus-5` only for local read-only Claude delegation
- preserve exact model binding through policy, launch, receipt, and
process checks without aliases, fallback, normalization, or retry
- keep mutating Stage A and fresh-Orb Claude pinned to exact
`claude-opus-4-8`
- add a maintained provider/executor readiness matrix for `/amux-claude`
and `/amux-pi`

## Validation

- `go test ./skills/amux-claude/experimental/claude-delegation -count=1`
- `go test ./scripts -count=1`
- `go test ./...`
- `go vet ./...`
- `go build ./cmd/amux`
- `git diff --check`

Closes #305

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 29 Jul 04:48
1b5992f
Add local-checkout skill symlink installation (#304)

## Summary

- add opt-in `AMUX_SKILLS_SOURCE` support to the shell installer
- link `/amux`, `/amux-claude`, and `/amux-pi` from one canonical local
checkout under `~/.agents/skills`
- preserve replaced real installs and same-name legacy duplicates as
timestamped backups
- reject invalid sources, unsafe destination parents, source/destination
overlap, and backup collisions before mutation
- keep binary-only installation unchanged when the option is absent
- document explicit checkout refresh and Amp reload behavior

## Verification

- `/bin/sh -n docs/install.sh`
- `go test ./scripts -count=1`
- `go test ./...`
- `go vet ./...`
- `go build ./cmd/amux`
- `git diff --check`

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 29 Jul 01:59
19e3b2d
Restore lean projectless local worker spawn (#299)

Closes #297.

## Summary

- restore `amux spawn` for the narrow projectless physical-host case,
with `amux worker spawn` as the exact alias
- rely on executor selection to route the command to the intended
physical host; spawn is local by construction, canonicalizes the
requested workdir, and requires no local process `--runner-id` alias or
attestation
- read and bound the complete prompt before taking the mutation lock;
dry-run remains lock-free, while real ownership/group/tmux preflight,
sole creation, input, and persistence stay under the existing machine
lock
- run `amp threads new --mode <exact-mode>` once in that cwd; retain
exact returned IDs, while nonzero/no-parseable-ID and zero/invalid-ID
results are sanitized as creation-indeterminate
- create one exact tmux continue pane, attempt one bounded literal
paste, and attempt one Enter only after paste succeeds; failed
loads/pastes scrub the exact randomized transport buffer
- preserve and report the exact thread and returned tmux identity—or
explicitly indeterminate requested identity—on every post-create
failure; never retry, search, read history/transcripts, archive, kill,
or reconcile
- after successful input attempts, report and persist the worker; for an
optional existing group, preflight the established additive Amp
capability before creation, then report/persist membership and
call/report the shared add-only label ensure

This follows the owner's clarification on #297: the historical local
`amux spawn` sequence is the baseline. It intentionally does not
introduce a new Amp server API or revive the removed worker-spawn
operation ledger/state machine. Creation and composer submission remain
separate controlled local steps.

## Verification

- focused spawn/tmux tests: plain unnamed runner/projectless path;
default and pass-through modes; multiline stdin/file; prompt-before-lock
ordering; mutable create under lock; group-aware lock-free dry-run;
sanitized human/JSON creation-indeterminate output; exact-ID
preservation; canonical cwd and ownership conflicts;
tmux/load/paste/Enter failures and exact buffer scrub; group
capability/persistence/label failures; truthful partial-success
outcomes; no retry/cleanup
- `go test ./...`
- `go vet ./...`
- `go build ./cmd/amux`
- Darwin cross-compile for `internal/tmux`
- `git diff origin/main...HEAD --check`
- focused final review: approved with no remaining blocker

## Residual behavior

The route is intentionally non-atomic after Amp returns a thread. A
reported post-create failure requires deliberate operator inspection;
rerunning spawn, repasting, pressing Enter, or cleaning up automatically
is forbidden. Readiness is transcript-free: amux requires the exact
returned Amp pane and continue command/environment to remain stable for
a bounded settle period before input attempts. Successful paste/Enter
commands are attempts, not transcript or inference proof.

v0.3.3

Choose a tag to compare

@zainfathoni zainfathoni released this 28 Jul 22:31
f96b880
Support Pi 0.82.1 in the bounded local Spark helper (#295)

## Summary

- migrate only the bounded physical-host Pi helper from exact
`@earendil-works/pi-coding-agent` 0.80.10 to exact 0.82.1
- enforce Pi 0.82.1's exact Node `>=22.19.0` engine contract inside the
same bounded process before Pi's entrypoint loads
- preserve exact Spark model, one-attempt, one-file, OAuth, settings,
timeout/output, process-group cleanup, and independent-review boundaries
- accept normal owner-managed provider cache and read-only settings
permissions on the explicitly trusted host, while rejecting unsafe cache
filesystem objects
- leave the separate fresh-Orb recipe pinned to 0.80.10

## Audit evidence

- registry and v0.82.1 source agree on package name, version, bin, and
Node engine
- all fixed CLI flags remain supported in published Pi 0.82.1
- published Pi 0.82.1 reached its entrypoint through the exact guard
under Node 22.19.0
- physical-host preflight confirmed exact Pi 0.82.1, compatible Node
25.9.0, all required flags, owner-managed OAuth metadata, bounded
settings, and normal generated cache state without exposing credential
contents

## Physical OAuth smoke

- one exact owner-authorized inference attempt on the trusted physical
host; no retry or fallback
- exact requested model `openai-codex/gpt-5.3-codex-spark`,
owner-managed OAuth, fixed no-tools/session/context argv, two-minute
bound, empty stderr
- helper returned `replacement_applied_untrusted` for exactly one test
file
- complete model diff contained the intended one-line normal-cache
fixture plus a missing final newline; exact-file gofmt corrected only
that formatting defect
- physical-host package verification encountered three existing PID
timing-fixture failures; no second provider attempt or semantic repair
ran
- coordinator reproduced the exact final line in the Orb and
independently passed the package once, five consecutive package runs,
race mode, scripts, formatting, and diff checks

## Validation

- `go test ./skills/amux-pi/experimental/pi-spark-local -count=1`
- `go test ./skills/amux-pi/experimental/pi-spark-local -count=5`
- `go test -race ./skills/amux-pi/experimental/pi-spark-local -count=1`
- `go test ./scripts -count=1`
- `go vet ./...`
- process-local signing-disabled `go test ./...` because the Orb's SSH
signing buffer was unavailable
- `git diff --check`
- published-package Node 22.19.0 guard/CLI smoke without inference

Closes #293

v0.3.2

Choose a tag to compare

@zainfathoni zainfathoni released this 28 Jul 14:55
fe87a1e
Validate operator-assisted local Claude tmux adoption (#294)

## Summary

- document the operator-assisted local Claude tmux adoption route
separately from managed delegation and fresh-Orb execution
- incorporate field-learned fail-closed composer guidance for exact
`claude-opus-5`/`Opus 5` confirmation, ghost autocomplete, collapsed
paste segments, Vim key semantics, and unclassified UI
- add stable exact-substring coverage for the complete updated guidance

## Field evidence

- read-only adoption smoke validated exact semantic window selection,
preflight, one bounded prompt, independent result verification, and
preservation of the owner-created session
- exclusive-writer mutation smoke validated the one-file corrective
result and independent aggregate verification
- final-window decommission blocked safely; a later non-final
exact-window decommission succeeded while preserving the keeper window,
authentication, branch, and worktree
- Pi 0.82.1 compatibility remains a separate follow-up in #293

## Tests

- `gofmt -w scripts/amux_skill_test.go`
- `git diff --check`
- `go test ./scripts -run
TestClaudeLocalTmuxAdoptionRouteStaysOperatorAssistedAndFailClosed
-count=1`
- `go test ./scripts -count=1`
- `go test ./...` (Claude delegation and scripts pass; overall command
is not green because unrelated tmux terminal-launch fixture and Pi
process/timing fixture tests fail in this environment)

Closes #291

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 28 Jul 05:56
6f53093
v0.3.1: lifecycle safety and provider quarantine

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 03:52
03bd442
v0.3.0: native thread adoption

v0.2.33

Choose a tag to compare

@github-actions github-actions released this 24 Jul 06:35
v0.2.33
e4e1bba
v0.2.33

v0.2.32

Choose a tag to compare

@github-actions github-actions released this 24 Jul 04:35
v0.2.32
f033370
Release v0.2.32