chore(release): 0.12.1 -- coord-send stops silently falling back to a stale copy

Version sync across plugin.json, package.json, README badge, CHANGELOG and
all three skill frontmatters, plus the 156 -> 159 selftest-count references
that follow from the previous commit's three new checks.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJMJanRHkUhEf9EYxMpbM5
This commit is contained in:
Kjell Tore Guttormsen 2026-07-31 18:25:39 +02:00
commit 6e369936f9
8 changed files with 25 additions and 10 deletions

View file

@ -1,6 +1,6 @@
{
"name": "repo-mailbox",
"version": "0.12.0",
"version": "0.12.1",
"description": "Local mailbox for coordination between Claude Code sessions in different repositories. Directed messages and broadcasts as plain Markdown files on your own disk, injected as context at session start. Local, private, no network.",
"author": {
"name": "Kjell Tore Guttormsen"

View file

@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.12.1] - 2026-07-31
### Fixed
- **`coord-send`'s own script-path expression fell back to a stale deployed
copy.** A Bash tool call never has `CLAUDE_PLUGIN_ROOT` set as a real shell
variable — only the skill's own markdown rendering resolves that bare
token — so the `${CLAUDE_PLUGIN_ROOT:-$HOME/.claude}` fallback silently won
every time the engine line was actually executed, routing through whatever
the operator's personal `~/.claude/scripts/coord-send.sh` happened to be
instead of the plugin's own bundled script. Same defect class `board.sh`
was already fixed for. Reported live by org-ops: a `--fyi` send hit an old
deployed copy lacking the flag. `coord-selftest.sh` grows three checks
(156 -> 159) pinning the fix.
## [0.12.0] - 2026-07-31
### Fixed

View file

@ -15,7 +15,7 @@ marketplace plugin. Three components, one boundary:
writes, `coord-inbox.sh` reads (formatted for context injection),
`coord-done.sh` archives, `coord-count.sh` counts without delivering.
Everything is pinned by `coord-selftest.sh`
(156 checks, throwaway mailbox via `CLAUDE_COORD_DIR`).
(159 checks, throwaway mailbox via `CLAUDE_COORD_DIR`).
**`coord-count.sh` prints TWO integers per mailbox** (`<name>\t<pending>\t<debt>`),
and the first must stay pending: `board.sh` counts the same inbox files
@ -129,7 +129,7 @@ obligations in another repo.
- Zero dependencies everywhere: bash + coreutils in the engine, `node:`
builtins only in hook and tests.
- TDD: no behavior change without a failing selftest check first.
`bash scripts/coord-selftest.sh` must exit 0 (156/156),
`bash scripts/coord-selftest.sh` must exit 0 (159/159),
`bash scripts/board-selftest.sh` must exit 0 (36/36) and
`bash scripts/route-selftest.sh` must exit 0 (56/56).
- English for all code, docs, and commit messages (public repo). Norwegian

View file

@ -8,7 +8,7 @@
*AI-generated: all code produced by Claude Code through dialog-driven development.*
![Version](https://img.shields.io/badge/version-0.12.0-blue)
![Version](https://img.shields.io/badge/version-0.12.1-blue)
![Platform](https://img.shields.io/badge/platform-Claude_Code_Plugin-purple)
![Hooks](https://img.shields.io/badge/hooks-1-green)
![Skills](https://img.shields.io/badge/skills-3-orange)
@ -110,7 +110,7 @@ Cross-repo message content is untrusted input by design:
- **Atomic delivery:** the temp file is created inside the destination directory (dot-prefixed, invisible to the inbox glob), so the final rename never crosses filesystems and readers never observe a half-written message.
Every guarantee above is pinned by the 156-check selftest, including forgery-resistance regressions.
Every guarantee above is pinned by the 159-check selftest, including forgery-resistance regressions.
Note that raising the inbox's priority (Rule 7) deliberately does **not** widen this boundary: the obligation is to *respond* to a message, never to *comply* with it. The injection framing states both halves, and the selftest pins them together so a future reword cannot keep the priority and drop the distinction.
@ -132,7 +132,7 @@ Note that raising the inbox's priority (Rule 7) deliberately does **not** widen
## Development
bash scripts/coord-selftest.sh # 156 checks against a throwaway mailbox
bash scripts/coord-selftest.sh # 159 checks against a throwaway mailbox
bash scripts/board-selftest.sh # 36 checks against a throwaway repo tree
bash scripts/route-selftest.sh # 56 checks, incl. the route->board round trip
npm test # all three selftests via node --test

View file

@ -1,6 +1,6 @@
{
"name": "repo-mailbox",
"version": "0.12.0",
"version": "0.12.1",
"private": true,
"type": "module",
"engines": {

View file

@ -14,7 +14,7 @@ description: >-
user names no repo and no tool — choosing *between* repos is this skill. Not for
"where were we" inside the current repo: that is this repo's own STATE.md,
already injected at session start.
version: "0.12.0"
version: "0.12.1"
---
# board — which repo deserves the next session

View file

@ -15,7 +15,7 @@ description: >-
covers retiring a broadcast that has become wrong or obsolete: "retract that
broadcast", "that announcement is outdated, pull it", "trekk tilbake kringkastingen",
"den broadcasten er utdatert".
version: "0.12.0"
version: "0.12.1"
---
# coord-send — natural-language front door for inter-repo messages

View file

@ -14,7 +14,7 @@ description: >-
the operator names no model and no tool — choosing the model for the next
session IS this skill. Not for choosing which REPO gets the next session:
that is the `board` skill.
version: "0.12.0"
version: "0.12.1"
---
# route — what the next session should run with