diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index e0adbbe..2b01083 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -18,7 +18,7 @@ "name": "work-system", "source": "./plugins/work-system", "description": "Generic task and worktree workflow system for Claude Code. Manage tasks as markdown files, work in isolated git worktrees, and track progress through the full lifecycle.", - "version": "1.8.0" + "version": "1.8.1" }, { "name": "pr-flow", diff --git a/.claude/knowledge/_index.md b/.claude/knowledge/_index.md index e4e9e89..9b63ae1 100644 --- a/.claude/knowledge/_index.md +++ b/.claude/knowledge/_index.md @@ -12,7 +12,7 @@ - `features/statusline-integration.md` — Status-line segments: plugins can't own `statusLine.command`; marker-block injection; the `[ks …]` + `[ws …]` two-segment coexistence and ws's never-block-on-network PR cache - `features/herdr-kickoff-automation.md` — herdr `herdr-launch.sh`: `launch` (`/kickoff`) + `resume` (`/continue ` reopens an `/exit`-closed tab) - `features/herdr-close-automation.md` — `/close` in herdr: cwd-tab teardown, plugin SessionEnd hook, the one TUI-exit primitive, detached self-exit onto idle -- `features/herdr-tab-glyphs.md` — Task-state glyphs (`○ ● ◇ ◆ ✓`) on herdr tab names: `states` mode inside the self-contained renderer (no sibling), sync-vs-`--cached` PR refresh per caller, exact-cwd rename rules, soft pr-flow shim +- `features/herdr-tab-glyphs.md` — Task-state glyphs (`○ ● ◇ ◆ ✓`) + main-root `◉` on herdr tab labels: `states` mode in the self-contained renderer, sync-vs-`--cached` PR refresh per caller, exact-cwd rename rules, soft pr-flow shim - `features/task-archiving-on-close.md` — `/close` archives (not deletes) the task file; adaptive commit + ff-push to main - `features/swarm-backend-adapter.md` — Verified codex/grok CLI facts (schema-enforced JSON, effort mapping, stdin hang, model-aware grok readiness) behind `swarm`'s adapter script - `features/swarm-review-pipeline.md` — `/swarm:review` P2 pipeline (skill↔Workflow wiring, family-consensus, minimal security) + P5 `--fix`/`--loop` (in-session orchestration between workflow runs; deterministic termination + close-out box in `loop-closeout.py`) + `--pr` (review a PR diff, post via `gh` under the user's identity so pr-flow's `claude`-author poll ignores it; publish path is deterministic `pr-post.py`: per-cell sanitizer + stale-head gate + post) diff --git a/.claude/knowledge/features/herdr-tab-glyphs.md b/.claude/knowledge/features/herdr-tab-glyphs.md index e399ef2..047f587 100644 --- a/.claude/knowledge/features/herdr-tab-glyphs.md +++ b/.claude/knowledge/features/herdr-tab-glyphs.md @@ -8,10 +8,13 @@ prime: false # herdr Tab State Glyphs -work-system prefixes each task tab's herdr agent name with the task's state +work-system prefixes each task tab's herdr **tab label** with the task's state glyph (`○` not-started · `●` active · `◇` in review · `◆` approved · `✓` merged), so the sidebar mirrors the `[ws …]` statusline (e.g. `● close-herdr`, -`◇ ks-label`, `◆ ready-pr`). `◆` (open PR whose `reviewDecision == APPROVED`, +`◇ ks-label`, `◆ ready-pr`). A tab at the **main repo root** gets `◉` — the +Manager hub among the task satellites (`○` was rejected: it already means +not-started). `◉` is stateless and non-exclusive: it marks the *location*, so +every tab at the main root carries it. `◆` (open PR whose `reviewDecision == APPROVED`, ready to `/merge`) is the one state needing a second `gh` field beyond `state`: the PR cache carries `headRef\tstate\treviewDecision`, and an old two-column cache row degrades safely to `◇` (empty field 3 is never `APPROVED`). @@ -25,7 +28,7 @@ surfaces source — is **blocked by the renderer's self-containment contract**: in the same file*: `ws-statusline.sh states ` prints `\t\t` per backlog task from the very `task_state()` / `glyph_of()` functions the render path aggregates. One file — the surfaces -cannot drift. `herdr-tab-glyph.sh` only *applies* the result to agent names. +cannot drift. `herdr-tab-glyph.sh` only *applies* the result to the tab label. ## Sync vs cache-only PR refresh @@ -55,20 +58,55 @@ was shipped and caught in review. ## Renamer rules (herdr-tab-glyph.sh) -- **Trigger points:** stamped at launch (`herdr-launch.sh prefix`, both modes — - the Claude *session name* stays plain; glyphs would clutter `/resume`); - re-stamped by `refresh` on `/status`, `/list`, `/close` (remaining tabs, main-repo - path — `$PWD` may be the just-removed worktree) and pr-flow's `/open`, - `/merge`, `/cycle`, `/check`. -- **Matching:** exact realpath equality `agent.cwd ==
/.claude/worktrees/` - (same philosophy as `herdr-teardown.sh`): an unrelated agent cd'd into a - worktree subdir is never renamed; agents outside task worktrees are never - touched. Rename targets the `pane_id`; `herdr agent list` exposes `cwd`, - `name`, `pane_id` per agent (verified live 2026-07-16). +- **The glyph lives in the TAB LABEL — one namespace, and it is not the obvious + one.** herdr has two independent names per tab: `tab rename