Skip to content

v0.17.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 11:45
· 121 commits to main since this release

Changelog

Features

  • 4508b0f feat(cli): versioned, self-cleaning skills sync (PLAN-365)
  • 90073ba feat(clientcaps): client-awareness — capability probe and progressive tool profiles (PLAN-369)
  • 627aa68 feat(codex): install opt-in mailbox hooks
  • 7efb9a8 feat(hooks): plumb hooks — install, status and uninstall, for Claude Code and Codex
  • 467cfa2 feat(mcp): align initialize instructions with the managed brief (PLAN-366)
  • 5fc273d feat(mcp): session_start brief mode — cheap orientation for subagents
  • ebd67ae feat(setup): managed instruction block — the mechanism (PLAN-364 PR 1 of 2)
  • c3fe18e feat(setup): per-client instruction templates, apply_patch countermand, --uninstall removal (PLAN-364 PR 2 of 2)
  • dd8e620 feat(stats): three standing health metrics — make abandonment visible (PLAN-368)
  • a587f45 feat(tasks): allow project-defined run_task slots
  • b2966e3 feat(tasks): follow the workspace's package manager, and reach extra slots from the CLI
  • 756eea6 feat(tools): fail_on_new_errors — a plumb edit can refuse to break the build (PLAN-362 PR2)
  • 0f30d9a feat(tools): read_multiple_files header dedup (PLAN-357 commit 3)
  • 0e16bdc feat(tools): read_multiple_files uniform slicing/search params (PLAN-357)
  • fba012a feat(topology): resolve imports into cross-file edges; answer with packages

Fixes

  • 8fff729 fix(argalias): stop suggesting a parameter's opposite, and carry the spellings agents send
  • f99d122 fix(changelog): put the restored blank line back in its actual original spot
  • df3048a fix(changelog): restore 2 blank lines eaten inside the released 0.17.1 section
  • df2b9ae fix(cli): refuse stop/restart without a terminal instead of crashing in the TUI
  • ef2fb23 fix(cli): skills sync — manifest is the ONLY proof of ownership (PLAN-365 review)
  • d31b05f fix(clientcaps): PLAN-369 review round 1 — remove unsafe unknown→lean rung, tighten evidence bar
  • 233744a fix(clientsmoke): Codex reports client-side-allowlist, not the generic reason
  • 52b200f fix(codex): accept hooks install client argument
  • 23726dc fix(codex): defer Plumb tools from direct surface
  • 8dadcb0 fix(hooks): fold the hooks removal into main's uninstall side-effect helper
  • 70eaa75 fix(hooks): review round 1 — an uninstall must never delete a hook plumb did not install
  • 5348229 fix(hooks): review round 2 — three of these defects were in round 1's fixes
  • 29fd110 fix(hooks): review round 3 — close the lock defect's third form, pin the guards nothing tested
  • a8d9b0b fix(mcp): PLAN-358 review round 1 — valid nested example, exact-match priority, changelog attribution
  • 5edb41e fix(mcp): PLAN-366 review round 1 — real topology-active test, restore .plumb-init recovery
  • 07e8a56 fix(mcp): brief mode carries re-pin, LSP skip note, resumed name, mail
  • e70ddee fix(mcp): pin the discovery ladder into Claude Code's context, tighten description budget
  • 9206f5b fix(mcp): review round 1 — structural pin-superset test, restore ttl clause, fix stale byte count
  • 87616f1 fix(minimal_diff_review): cap per file so a bundle cannot hide the rest
  • 2917020 fix(minimal_diff_review,changelog): review round — per-file drop reason, capped list, honest antonym claim
  • 41dbdae fix(read_multiple_files): drop the decorative rule and the wrong byte count
  • b46e233 fix(setup): an unverified client layout reads as "not installed", not an error
  • e3cfe61 fix(setup): keep a YAML client's own indentation instead of imposing 4 spaces
  • 54c1479 fix(setup): precision nit — edit_file warns, only a guarded call (or write_file) refuses
  • 23e3c38 fix(setup): review round 1 — dangling symlink stays a symlink, drop false CC-harness quotes
  • b016180 fix(setup): review round 1 — refuse malformed/duplicate blocks, dedupe by real file
  • c09a173 fix(stats): PLAN-368 review round 1 — fix lane-defection over/undercounting, semantic sample-size guard
  • 986b36c fix(stats): PLAN-368 review round 2 — lane-defection was inverted by round 1's fix
  • 9892eae fix(tasks,guidance): honour the pinned-tool rule and drop ambient detection from CLI tests
  • 4c24687 fix(tasks,topology_search): trim descriptions back under the pinned-set budget
  • 05186a7 fix(tools): PLAN-360 review round 1 — truthful path_prefix, doc comment, table row
  • eceb665 fix(tools): PLAN-363 review round 2 — prove disambiguation candidates round-trip
  • e871609 fix(tools): label post-write diagnostics fresh vs stale (PLAN-362 PR1)
  • 926a14c fix(tools): lead with truncation notices; ship a read-only run_command allow-list
  • 406e91d fix(tools): read_multiple_files tracker + wiring parity (PLAN-357)
  • b6c26cc fix(tools): restore chars/baseline on read_multiple_files headers (review)
  • 6370b31 fix(tools): review round 1 — commit the txlog before notify when the gate is off
  • b8f7796 fix(tools): review round 1 — labelled timeout-with-nothing-cached, third pull-failure label
  • e65299c fix(tools): symbol_name primary + snap-never-error for explain_symbol/type_hierarchy (PLAN-363)
  • 6a69c77 fix(tools,cli,mcp): PLAN-361 review round 1 — falsifiable pin leg, both wiring axes
  • 6db7455 fix(tools,mcp): edit_file rejection UX — every rejection is a one-call retry (PLAN-358)
  • ab91f03 fix(topology): close two holes adversarial review found in the language-aware target
  • d8a9ed6 fix(topology): derive the test target from the language, not from Go
  • e52821d fix(topology): round-2 review — the fixture guard read the wrong 50
  • 4869749 fix(topology): stop seeding affected-test traversal from import names
  • 7568173 fix(topology): stop spending the package cap as a node budget
  • aff469f fix: PLAN-367 review round 1 — net the CLI/TUI/web tables, fix surcharge ratio provenance
  • 047e8bb fix: PLAN-367 review round 2 — net the web /api/stats bubble-scatter chart

Others

  • a263098 Close out #9: $XDG_RUNTIME_DIR for the daemon socket, Kotlin validated on Linux (9/9) (#381)
  • 87163af Linux hardening (#9): Wayland clipboard, XDG paths, adapter tier drift (#380)
  • f4ed038 build(lint): size the lint retry budget for a queue, not for one peer
  • db59c75 chore(deps): gotreesitter v0.48.1 -> v0.51.0; retire the C enum workaround
  • cf92c45 docs(changelog): PLAN-361 wording fix — pin test guarantee (review)
  • 382d35d docs(changelog): PLAN-363 — describe the shipped disambiguation behavior accurately
  • 832e25e docs(changelog): PLAN-376 re-home entry under a fresh 0.17.2 (unreleased) heading
  • dc184fd docs(changelog): re-home PLAN-368 entry under 0.17.2 (unreleased)
  • 8523f23 docs(changelog): relocate rebase-orphaned entries to 0.17.2 (unreleased)
  • cc4cded docs(cli): skills sync — correct two misleading strings (PLAN-365 review)
  • df10c80 docs(skills): PLAN-376 refresh shipped skill content for wave-1/2 doctrine
  • 2078713 docs(skills): PLAN-376 review round 1 — transaction_apply diagnostics, autoBrief truthfulness
  • b098f77 docs(tools): topology_routes truth-in-labeling (PLAN-360, worth-it W1-6)
  • fc9297e docs(topology): lead with the narrowing knobs in explore and search
  • a9b836a docs(topology): max_results describes packages, which is what it now bounds
  • e1e19e4 docs(use-cases): measure against a real read tool, and re-measure after the fixes
  • 6f183f4 docs(use-cases): pin the re-measured scenarios to their commit
  • 968c9ed docs(use-cases): re-measure every number, and add a script that regenerates them
  • ebb7b2d docs(use-cases): re-measure scenario 7 after the rebase
  • 9ce6f38 docs(use-cases): re-measure scenario 7, and stop the parser pinning a command shape
  • f453a8c docs(use-cases): refresh the file_outline figures, which had drifted on main
  • 267f4bd docs+fix: honest math + docs repositioning — correctness-first, net-of-surcharge (PLAN-367)
  • 80a5a3f docs: read_multiple_files honest token contract (PLAN-357 commit 4)
  • 46d76b8 release: 0.17.1
  • 7a75dec release: 0.17.2
  • dd7dd65 revert(collab): deliver peer messages on every result, regardless of size
  • 3f91b5d revert(config): do not ship a default [[command]] allow-list
  • 1d80b0a test(clientcaps,tools): PLAN-370 truncation-proof description conformance per client
  • 4fc6066 test(tools,cli,mcp): registration-parity and wiring tests (PLAN-361)

Install

Homebrew (macOS + Linux):

brew install plumbkit/plumb/plumb

Direct download: grab the archive for your OS/arch below, extract it, and
put the plumb binary on your PATH.

Platform Archive
macOS, Apple Silicon (M-series) plumb_0.17.2_darwin_arm64.tar.gz
macOS, Intel plumb_0.17.2_darwin_amd64.tar.gz
Linux, Intel/AMD 64-bit plumb_0.17.2_linux_amd64.tar.gz
Linux, ARM 64-bit plumb_0.17.2_linux_arm64.tar.gz

Verify your download against checksums.txt.

macOS note: these binaries are not yet code-signed. On a direct download
Gatekeeper may block the first run — clear the quarantine flag once:
xattr -dr com.apple.quarantine ./plumb. Homebrew installs are unaffected.