Repository navigation
berth v0.1.6
Onboarding release. What the first real registration taught: a project's own services need no adoption when the evidence already attributes them, a shell hook that follows cd, a warning before a Compose override that cannot apply, berth tidy for the leftovers, and ADR-009 (proposed) for moving repositories off hardcoded ports.
Added
- ADR-009 (proposed, council-reviewed): how a registered repository stops hardcoding ports. Environment first, the project's own W0 port as the default, strict bind; a
berth-migrateskill with one recipe per tool (#17); three scanner zones so a migrated default is never re-declared, andberth project declared --pruneas a rail-guarded, audited exception to additive-only policy edits (#16). berth shell-init zsh|bash|fishprints a directory-change hook for your rc file: entering a registered project's checkout exports its ports, leaving it unsets them, and moving between two directories of the same project costs nothing (noberthprocess spawned unless the project root changed) (#21).berth env --shell --unsetprintsunsetlines for every variable--shellwould export in the same context, including the shared ones, and nothing else — whatshell-initevals when leaving a project (#21).berth env --compose-overridedetects a mapped service whose currently-declared port is already held by a container without compose labels (started withdocker run) and prints a per-service warning — the recreate command with its volumes, and a caution for an anonymous volume or an image that keeps state only in memory unless configured — instead of a silently ineffective override;berth whoaddsstarted by: compose <project> | docker runand mounted volume names to a container holder's evidence;berth doctorreports the Compose flavour on this machine (docker composeplugin, standalonedocker-compose, or none) and its version, which the override output now names for the next step (#22).berth tidy [--project X] [--dry-run] [--json]: one human command that applies the leftover-cleanup plan an agent has already shown.--dry-run(and--json) liststale/orphanleases it would release, any owner, andunmanagedports it can only suggest adopting; applying — human-only under ADR-008 — releases exactly that plan with one audit line per port and is idempotent. The human-only refusal message now explains why and, when it applies, names theberth tidy --project <name>apply path, andberth check's attention summary ends with onerun: berth tidy --project <name>line per project with something to release (#20).
Changed
- The npm package's
homepageis the documentation site (https://amiable-dev.github.io/berth/) instead of the README; npmjs.com andnpm docslink there from the next release. - Reconciler: a live holder inside a project's own block that is already attributed by evidence (compose
working_dirlabel or process cwd) is nowokwith no lease required, instead ofunmanaged.PortRecordgainsattribution: 'lease' | 'evidence'; a holder with no attribution staysunmanaged, and a container started outside Compose gets advisory copy that says so instead of the generic adopt text (#19). berth launch-json --writeno longer writes a machine-specificcwdfor the common case: entries omitcwdwhen it equals the repository root, and write it relative to the repository root when--cwdpoints elsewhere. After writing,.claude/launch.jsonis appended to.git/info/exclude(never.gitignore) unless it is already tracked or ignored, so it is never committed by accident;--no-excludeopts out (#23).berth env --shelloutside a registered project no longer fails: it exits 0, prints only the machine-wideBERTH_SHARED_*exports plus a comment naming the fix (berth project add .), and writes nothing to stderr, so a shell rc file canevalit on every prompt without noise.--strictrestores the old exit-1 behaviour;--dotenv,--compose-overrideand--jsonare unchanged and still fail loudly (#21).