diff --git a/CHANGELOG.md b/CHANGELOG.md index 49497f1..d40ac30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,84 @@ All notable changes to this project are documented in this file. +## 0.11.0 - 2026-10-26 + +### Breaking: stricter CLI parsing + +Scripts relying on input silently accepted by 0.10.0 must correct it before upgrading. The following now exit with code 2: + +- Unknown or misspelled `--flags`, such as `--captur=50` (#346). +- Flags belonging to another subcommand, such as `send --capture=50` (#348). +- Boolean flags with values other than `true` or `false`, such as `--enter=1`; use `--enter=false` to disable a flag (#338). +- Invalid `--diagnostics` intervals, including non-numeric, non-positive, `false`, and values above 2147483 seconds (#342). + +### Added + +- Added a bundled `omp` (Oh My Pi) pattern set for `pluk watch --cli=omp`. +- `pluk watch` now warns once on stderr when the `--cli` name has no pattern set, and `pluk patterns --cli=` reports `no pattern set` instead of printing an empty set. + +### Changed + +- `pluk attach` now writes its progress, warnings and status messages to stderr, and the JSONL event schema is documented in the README as a stable surface. +- Releases publish to npm via Trusted Publishing (OIDC) through the `npm` GitHub Environment; the `NPM_TOKEN` secret is no longer used (#303). + +### Fixed + +- Diagnostics written to stderr no longer carry ANSI colour codes unless stderr is a TTY and `NO_COLOR` is unset; a small leveled `log()` helper is added in `src/diagnostics.ts`. +- `pluk sessions` no longer reports STATE/CLI as unknown when `raw_output` events (from `pluk attach` with raw capture) flood the log tail; raw lines are skipped when sizing the tail window. +- `pluk patterns` and `pluk subscribe` now derive the builtin CLI fallback list from `BUILTIN_PATTERNS`, so it includes codex and aider and cannot drift. +- `pluk subscribe` and `pluk watch` now reject an empty `--filter=` value with an error (exit 2) instead of silently ignoring it. +- `pluk watch` now emits `raw_output` events when no pattern set exists for the chosen `--cli`, as its warning promises, without needing `--include-raw`. +- Log rotation now also enforces `PLUK_LOG_MAX_BYTES`: after trimming to `PLUK_LOG_KEEP_LINES`, the oldest kept lines are dropped until the log fits under the byte cap, so it no longer stays over the cap and gets rewritten every 30s. +- `pluk patterns` now honors `--patterns-dir`, so a custom pattern set is shown (and its CLI names listed) instead of a false "no pattern set". +- `tool_call_started` events no longer cut an emoji or other astral character in half at the 120-character `input_preview` limit; truncation now counts code points, so the preview never ends in an invalid lone surrogate. +- `tool_call_started` events no longer cut a ZWJ emoji sequence, flag or base-plus-combining-mark character in half at the 120-character `input_preview` limit; truncation now counts grapheme clusters. +- `pluk sessions` no longer shows `NaNd ago` (or sorts a session first) when a log event carries an unparseable `ts`; such timestamps are ignored for last activity. +- `pluk attach` no longer word-splits `pluk`/`rationguard` paths resolved from `PATH` when they contain spaces; the resolved path is shell-quoted so the pipe-pane, rationguard spawn, and watcher cleanup pattern see a single word (#274). +- Bare value-taking flags (e.g. `pluk send s --text hello`, `--run-dir /tmp/x`, `--filter x`) are now rejected with exit code 2 and a `--flag=` hint instead of being parsed as the string `true` (which typed `true` into the agent pane); fixes #278. +- Log rotation now applies the `PLUK_LOG_MAX_BYTES` cap even when the log has fewer than `PLUK_LOG_KEEP_LINES` lines (#283). +- `pluk watch --capture=` now rejects fractional intervals such as `--capture=1.5`, accepting only positive integers as documented (#291). +- `tool_call_completed` events now report `duration_ms` in milliseconds (`(2.3s)` → `2300`) instead of passing the on-screen seconds figure through unchanged (#294). +- `pluk subscribe` without `--from-beginning` no longer replays the kept tail of the log as new events when the log is rotated before the first new line arrives; the subscriber now remembers the last line already in the file at start-up and resumes after it. +- `pluk send --session=` / `pluk-send --session=` no longer drops a positional text word that happens to equal the session name; the leading positional is treated as the session only when `--session` is absent. +- `pluk sessions` now prints the `LAST ACTIVITY` and `EVENTS` headings with a gap between them and aligns every row with its column heading; the table matches the README example again. +- `pluk attach --rationguard` now scopes its stale-watcher reap (`pgrep -f`) to the invoking user's processes, so another user's process with a matching command line no longer makes `kill` fail and abort the attach before the rationguard watcher starts. +- `pluk attach --cli=copilot` now launches the standalone `copilot` CLI (the `gh copilot` extension was retired) and `--dangerous` maps to `--allow-all-tools` for it. +- `pluk --help`, `pluk sessions` and `pluk patterns` no longer emit ANSI colour codes when stdout is not a TTY or `NO_COLOR` is set; previously only stderr was gated. +- `pluk attach` now wires `tmux pipe-pane` before launching the CLI, so start-up output (trust dialog, login prompt, model line) is classified instead of lost (#331). +- Document the real `PLUK_RUN_DIR` default (`$XDG_RUNTIME_DIR/pluk`, else `/tmp/pluk-`) in the README and the session-monitoring runbook (#333). +- `pluk send` no longer loses a trailing `;` (tmux treats an argument ending in `;` as a command separator); the text now reaches the pane byte-for-byte (#335). +- Boolean flags such as `--enter`, `--literal`, `--verbose` and `--dangerous` now reject values other than `true`/`false` (e.g. `--enter=1`) with exit 2 instead of silently turning the flag off; `--flag=false` is the explicit off spelling. +- `pluk attach` now warns on stderr when `--command`, `--cli-args` or `--dir` are passed for a tmux session that already exists, instead of silently ignoring them (#340). +- `watch`/`subscribe --diagnostics=SECS`: a non-numeric, non-positive or `false` value (`abc`, `0`, `-5`, `5min`, `false`) used to silently run at the 60s default; it is now rejected with exit 2, as are values above 2147483 s that would overflow `setInterval` (#342). +- Cap very large finite periods passed to the `startDiagnostics` library API at Node's maximum timer delay (2147483.647 seconds) instead of overflowing into a 1 ms reporting loop; the CLI already rejects out-of-range `--diagnostics` values with exit 2 (#344). +- `pluk` now rejects unknown or misspelled `--flags` (e.g. `--captur=50`, `--entr`) with an error (exit 2) instead of silently ignoring them. +- `pluk watch --capture` now bounds each `tmux capture-pane` poll with a timeout so a hung tmux server is counted as a capture failure (visible in `--diagnostics`) instead of freezing the watcher silently (#353). +- `pluk attach --rationguard` no longer aborts a half-wired session when a stale watcher PID has already exited before `kill`; stale watchers are reaped per PID, already-gone PIDs are ignored, and other kill failures print a warning and continue. +- `pluk attach --dangerous` now passes `--yolo` to gemini and `--yes-always` to aider; a CLI with no known auto-approve flag now prints a warning even without `--verbose`. +- `pluk attach --dangerous` now launches goose with `GOOSE_MODE=auto` instead of the nonexistent `--non-interactive` flag, which made goose exit on an unknown argument. +- Subscriber tail mode preserves a partially written event at startup and delivers it once its terminating newline is appended, instead of dropping it. +- Classifier reports the tool name for Claude tool lines such as `● Bash(ls)` instead of mistaking the one-word argument for a `(kind)` suffix. +- attach: the `--dangerous` restart hint for an existing session now includes `--cli-args` (#370). +- `pluk attach` now validates the CLI command and arguments before creating the tmux session, so a bad `--cli-args` (e.g. an unterminated quote) is reported as a usage error (exit 2) instead of leaving an orphaned session with pipe-pane attached. +- `pluk sessions` now widens the SESSION and CLI columns to fit the longest value, so rows with long session or CLI names stay aligned with the header (#375). +- attach: `splitShellWords` keeps explicitly empty quoted arguments (`""` / `''`) instead of dropping them, so `--cli-args`/`--command` argv is no longer shifted (#381) +- `pluk attach --rationguard` now also kills existing watchers that were started with a custom `--rationguard-bin`, so re-attaching no longer stacks duplicate watchers. +- `pluk attach` rejects invalid `--rebuttal` values with exit code 2 before touching tmux, and warns when `--rebuttal` or `--rationguard-bin` is ignored without `--rationguard` (#280). +- Reject flags that belong to another subcommand with exit 2 and a command-specific help hint instead of silently ignoring them (including flags passed to `version`). Valid invocations are unchanged; help now lists all supported per-command flags, and a table-driven unit test checks every command against the flag union (#348). +- Mark `command_received` as reserved in the event documentation: `pluk send` / `pluk-send` does not currently emit it. +- Keep `Classifier.commandReceived()` sequence numbers in an independent, increasing command counter without changing subsequent classified or raw-output event sequence numbers. +- `pluk attach --cli=omp --dangerous` now passes `--approval-mode yolo` as two arguments; previously omp received a single `--approval-mode yolo` token and the flag had no effect. +- `pluk --help` and the README no longer point to a Go pluk binary; the `subscribe` help line now names `pluk watch` as the usual publisher. +- `--help` / `-h` after a subcommand (for example `pluk watch --help`) now prints usage and exits 0 instead of being ignored. +- `--help` anywhere is always treated as a help request (as it was before, via `parseArgs`), even inside `pluk send` text. A bare `-h` after the `send` session positional is passed through as text. +- `pluk watch --capture --include-raw` now emits `raw_output` events (once per changed frame) instead of silently ignoring the flag. +- `pluk watch` now warns on stderr when `--pane` is passed without `--capture`, and `--capture=` (empty value) is rejected with exit 2 instead of silently selecting stream mode. + +### Security + +- `SECURITY.md` now names `security@hivecommons.dev` (the organization's published `security.txt` contact) as the primary channel for reporting vulnerabilities, so the policy has a working private route whether or not GitHub private vulnerability reporting is enabled for the repository. + ## 0.10.0 - 2026-10-10 ### Added diff --git a/changelog.d/added-omp-patterns.md b/changelog.d/added-omp-patterns.md deleted file mode 100644 index d22d158..0000000 --- a/changelog.d/added-omp-patterns.md +++ /dev/null @@ -1,2 +0,0 @@ -- Added a bundled `omp` (Oh My Pi) pattern set for `pluk watch --cli=omp`. -- `pluk watch` now warns once on stderr when the `--cli` name has no pattern set, and `pluk patterns --cli=` reports `no pattern set` instead of printing an empty set. diff --git a/changelog.d/changed-diagnostics-to-stderr.md b/changelog.d/changed-diagnostics-to-stderr.md deleted file mode 100644 index 6a178f8..0000000 --- a/changelog.d/changed-diagnostics-to-stderr.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach` now writes its progress, warnings and status messages to stderr, and the JSONL event schema is documented in the README as a stable surface. diff --git a/changelog.d/changed-publish-trusted-publishing.md b/changelog.d/changed-publish-trusted-publishing.md deleted file mode 100644 index 0871bd6..0000000 --- a/changelog.d/changed-publish-trusted-publishing.md +++ /dev/null @@ -1 +0,0 @@ -- Releases publish to npm via Trusted Publishing (OIDC) through the `npm` GitHub Environment; the `NPM_TOKEN` secret is no longer used (#303). diff --git a/changelog.d/fixed-221.md b/changelog.d/fixed-221.md deleted file mode 100644 index 30d1e3a..0000000 --- a/changelog.d/fixed-221.md +++ /dev/null @@ -1 +0,0 @@ -- Diagnostics written to stderr no longer carry ANSI colour codes unless stderr is a TTY and `NO_COLOR` is unset; a small leveled `log()` helper is added in `src/diagnostics.ts`. diff --git a/changelog.d/fixed-235.md b/changelog.d/fixed-235.md deleted file mode 100644 index 7605bfc..0000000 --- a/changelog.d/fixed-235.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk sessions` no longer reports STATE/CLI as unknown when `raw_output` events (from `pluk attach` with raw capture) flood the log tail; raw lines are skipped when sizing the tail window. diff --git a/changelog.d/fixed-239.md b/changelog.d/fixed-239.md deleted file mode 100644 index 4e087bc..0000000 --- a/changelog.d/fixed-239.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk patterns` and `pluk subscribe` now derive the builtin CLI fallback list from `BUILTIN_PATTERNS`, so it includes codex and aider and cannot drift. diff --git a/changelog.d/fixed-243.md b/changelog.d/fixed-243.md deleted file mode 100644 index 8259090..0000000 --- a/changelog.d/fixed-243.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk subscribe` and `pluk watch` now reject an empty `--filter=` value with an error (exit 2) instead of silently ignoring it. diff --git a/changelog.d/fixed-244.md b/changelog.d/fixed-244.md deleted file mode 100644 index 4786bac..0000000 --- a/changelog.d/fixed-244.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk watch` now emits `raw_output` events when no pattern set exists for the chosen `--cli`, as its warning promises, without needing `--include-raw`. diff --git a/changelog.d/fixed-248.md b/changelog.d/fixed-248.md deleted file mode 100644 index f115950..0000000 --- a/changelog.d/fixed-248.md +++ /dev/null @@ -1 +0,0 @@ -- Log rotation now also enforces `PLUK_LOG_MAX_BYTES`: after trimming to `PLUK_LOG_KEEP_LINES`, the oldest kept lines are dropped until the log fits under the byte cap, so it no longer stays over the cap and gets rewritten every 30s. diff --git a/changelog.d/fixed-256.md b/changelog.d/fixed-256.md deleted file mode 100644 index b8e87f4..0000000 --- a/changelog.d/fixed-256.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk patterns` now honors `--patterns-dir`, so a custom pattern set is shown (and its CLI names listed) instead of a false "no pattern set". diff --git a/changelog.d/fixed-263.md b/changelog.d/fixed-263.md deleted file mode 100644 index 695f464..0000000 --- a/changelog.d/fixed-263.md +++ /dev/null @@ -1 +0,0 @@ -- `tool_call_started` events no longer cut an emoji or other astral character in half at the 120-character `input_preview` limit; truncation now counts code points, so the preview never ends in an invalid lone surrogate. diff --git a/changelog.d/fixed-265.md b/changelog.d/fixed-265.md deleted file mode 100644 index 1d4f308..0000000 --- a/changelog.d/fixed-265.md +++ /dev/null @@ -1 +0,0 @@ -- `tool_call_started` events no longer cut a ZWJ emoji sequence, flag or base-plus-combining-mark character in half at the 120-character `input_preview` limit; truncation now counts grapheme clusters. diff --git a/changelog.d/fixed-270.md b/changelog.d/fixed-270.md deleted file mode 100644 index 542bef5..0000000 --- a/changelog.d/fixed-270.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk sessions` no longer shows `NaNd ago` (or sorts a session first) when a log event carries an unparseable `ts`; such timestamps are ignored for last activity. diff --git a/changelog.d/fixed-274.md b/changelog.d/fixed-274.md deleted file mode 100644 index d450871..0000000 --- a/changelog.d/fixed-274.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach` no longer word-splits `pluk`/`rationguard` paths resolved from `PATH` when they contain spaces; the resolved path is shell-quoted so the pipe-pane, rationguard spawn, and watcher cleanup pattern see a single word (#274). diff --git a/changelog.d/fixed-278.md b/changelog.d/fixed-278.md deleted file mode 100644 index 2105280..0000000 --- a/changelog.d/fixed-278.md +++ /dev/null @@ -1 +0,0 @@ -- Bare value-taking flags (e.g. `pluk send s --text hello`, `--run-dir /tmp/x`, `--filter x`) are now rejected with exit code 2 and a `--flag=` hint instead of being parsed as the string `true` (which typed `true` into the agent pane); fixes #278. diff --git a/changelog.d/fixed-283.md b/changelog.d/fixed-283.md deleted file mode 100644 index 44186a2..0000000 --- a/changelog.d/fixed-283.md +++ /dev/null @@ -1 +0,0 @@ -- Log rotation now applies the `PLUK_LOG_MAX_BYTES` cap even when the log has fewer than `PLUK_LOG_KEEP_LINES` lines (#283). diff --git a/changelog.d/fixed-291.md b/changelog.d/fixed-291.md deleted file mode 100644 index 6a5b605..0000000 --- a/changelog.d/fixed-291.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk watch --capture=` now rejects fractional intervals such as `--capture=1.5`, accepting only positive integers as documented (#291). diff --git a/changelog.d/fixed-294.md b/changelog.d/fixed-294.md deleted file mode 100644 index 34e3618..0000000 --- a/changelog.d/fixed-294.md +++ /dev/null @@ -1 +0,0 @@ -- `tool_call_completed` events now report `duration_ms` in milliseconds (`(2.3s)` → `2300`) instead of passing the on-screen seconds figure through unchanged (#294). diff --git a/changelog.d/fixed-297.md b/changelog.d/fixed-297.md deleted file mode 100644 index 798b840..0000000 --- a/changelog.d/fixed-297.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk subscribe` without `--from-beginning` no longer replays the kept tail of the log as new events when the log is rotated before the first new line arrives; the subscriber now remembers the last line already in the file at start-up and resumes after it. diff --git a/changelog.d/fixed-301.md b/changelog.d/fixed-301.md deleted file mode 100644 index df4009e..0000000 --- a/changelog.d/fixed-301.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk send --session=` / `pluk-send --session=` no longer drops a positional text word that happens to equal the session name; the leading positional is treated as the session only when `--session` is absent. diff --git a/changelog.d/fixed-317.md b/changelog.d/fixed-317.md deleted file mode 100644 index 46db9c4..0000000 --- a/changelog.d/fixed-317.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk sessions` now prints the `LAST ACTIVITY` and `EVENTS` headings with a gap between them and aligns every row with its column heading; the table matches the README example again. diff --git a/changelog.d/fixed-322.md b/changelog.d/fixed-322.md deleted file mode 100644 index 1e71f7c..0000000 --- a/changelog.d/fixed-322.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach --rationguard` now scopes its stale-watcher reap (`pgrep -f`) to the invoking user's processes, so another user's process with a matching command line no longer makes `kill` fail and abort the attach before the rationguard watcher starts. diff --git a/changelog.d/fixed-325.md b/changelog.d/fixed-325.md deleted file mode 100644 index a839eb5..0000000 --- a/changelog.d/fixed-325.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach --cli=copilot` now launches the standalone `copilot` CLI (the `gh copilot` extension was retired) and `--dangerous` maps to `--allow-all-tools` for it. diff --git a/changelog.d/fixed-326.md b/changelog.d/fixed-326.md deleted file mode 100644 index 737479e..0000000 --- a/changelog.d/fixed-326.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk --help`, `pluk sessions` and `pluk patterns` no longer emit ANSI colour codes when stdout is not a TTY or `NO_COLOR` is set; previously only stderr was gated. diff --git a/changelog.d/fixed-331.md b/changelog.d/fixed-331.md deleted file mode 100644 index 4d4c5e8..0000000 --- a/changelog.d/fixed-331.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach` now wires `tmux pipe-pane` before launching the CLI, so start-up output (trust dialog, login prompt, model line) is classified instead of lost (#331). diff --git a/changelog.d/fixed-333.md b/changelog.d/fixed-333.md deleted file mode 100644 index a4145a0..0000000 --- a/changelog.d/fixed-333.md +++ /dev/null @@ -1 +0,0 @@ -- Document the real `PLUK_RUN_DIR` default (`$XDG_RUNTIME_DIR/pluk`, else `/tmp/pluk-`) in the README and the session-monitoring runbook (#333). diff --git a/changelog.d/fixed-335.md b/changelog.d/fixed-335.md deleted file mode 100644 index 4a338cb..0000000 --- a/changelog.d/fixed-335.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk send` no longer loses a trailing `;` (tmux treats an argument ending in `;` as a command separator); the text now reaches the pane byte-for-byte (#335). diff --git a/changelog.d/fixed-338.md b/changelog.d/fixed-338.md deleted file mode 100644 index 063a604..0000000 --- a/changelog.d/fixed-338.md +++ /dev/null @@ -1 +0,0 @@ -- Boolean flags such as `--enter`, `--literal`, `--verbose` and `--dangerous` now reject values other than `true`/`false` (e.g. `--enter=1`) with exit 2 instead of silently turning the flag off; `--flag=false` is the explicit off spelling. diff --git a/changelog.d/fixed-340.md b/changelog.d/fixed-340.md deleted file mode 100644 index d9c9d13..0000000 --- a/changelog.d/fixed-340.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach` now warns on stderr when `--command`, `--cli-args` or `--dir` are passed for a tmux session that already exists, instead of silently ignoring them (#340). diff --git a/changelog.d/fixed-342.md b/changelog.d/fixed-342.md deleted file mode 100644 index 861a878..0000000 --- a/changelog.d/fixed-342.md +++ /dev/null @@ -1 +0,0 @@ -- `watch`/`subscribe --diagnostics=SECS`: a non-numeric, non-positive or `false` value (`abc`, `0`, `-5`, `5min`, `false`) used to silently run at the 60s default; it is now rejected with exit 2, as are values above 2147483 s that would overflow `setInterval` (#342). diff --git a/changelog.d/fixed-344.md b/changelog.d/fixed-344.md deleted file mode 100644 index 736081e..0000000 --- a/changelog.d/fixed-344.md +++ /dev/null @@ -1 +0,0 @@ -- Cap very large finite periods passed to the `startDiagnostics` library API at Node's maximum timer delay (2147483.647 seconds) instead of overflowing into a 1 ms reporting loop; the CLI already rejects out-of-range `--diagnostics` values with exit 2 (#344). diff --git a/changelog.d/fixed-346.md b/changelog.d/fixed-346.md deleted file mode 100644 index 764ce18..0000000 --- a/changelog.d/fixed-346.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk` now rejects unknown or misspelled `--flags` (e.g. `--captur=50`, `--entr`) with an error (exit 2) instead of silently ignoring them. diff --git a/changelog.d/fixed-353.md b/changelog.d/fixed-353.md deleted file mode 100644 index 240bdad..0000000 --- a/changelog.d/fixed-353.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk watch --capture` now bounds each `tmux capture-pane` poll with a timeout so a hung tmux server is counted as a capture failure (visible in `--diagnostics`) instead of freezing the watcher silently (#353). diff --git a/changelog.d/fixed-355.md b/changelog.d/fixed-355.md deleted file mode 100644 index 9d8476e..0000000 --- a/changelog.d/fixed-355.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach --rationguard` no longer aborts a half-wired session when a stale watcher PID has already exited before `kill`; stale watchers are reaped per PID, already-gone PIDs are ignored, and other kill failures print a warning and continue. diff --git a/changelog.d/fixed-360.md b/changelog.d/fixed-360.md deleted file mode 100644 index 8972f14..0000000 --- a/changelog.d/fixed-360.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach --dangerous` now passes `--yolo` to gemini and `--yes-always` to aider; a CLI with no known auto-approve flag now prints a warning even without `--verbose`. diff --git a/changelog.d/fixed-362.md b/changelog.d/fixed-362.md deleted file mode 100644 index 12dc156..0000000 --- a/changelog.d/fixed-362.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach --dangerous` now launches goose with `GOOSE_MODE=auto` instead of the nonexistent `--non-interactive` flag, which made goose exit on an unknown argument. diff --git a/changelog.d/fixed-365.md b/changelog.d/fixed-365.md deleted file mode 100644 index 30a7eae..0000000 --- a/changelog.d/fixed-365.md +++ /dev/null @@ -1 +0,0 @@ -- Subscriber tail mode preserves a partially written event at startup and delivers it once its terminating newline is appended, instead of dropping it. diff --git a/changelog.d/fixed-367.md b/changelog.d/fixed-367.md deleted file mode 100644 index 127147a..0000000 --- a/changelog.d/fixed-367.md +++ /dev/null @@ -1 +0,0 @@ -- Classifier reports the tool name for Claude tool lines such as `● Bash(ls)` instead of mistaking the one-word argument for a `(kind)` suffix. diff --git a/changelog.d/fixed-370.md b/changelog.d/fixed-370.md deleted file mode 100644 index 68e491e..0000000 --- a/changelog.d/fixed-370.md +++ /dev/null @@ -1 +0,0 @@ -- attach: the `--dangerous` restart hint for an existing session now includes `--cli-args` (#370). diff --git a/changelog.d/fixed-372.md b/changelog.d/fixed-372.md deleted file mode 100644 index 700a38e..0000000 --- a/changelog.d/fixed-372.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach` now validates the CLI command and arguments before creating the tmux session, so a bad `--cli-args` (e.g. an unterminated quote) is reported as a usage error (exit 2) instead of leaving an orphaned session with pipe-pane attached. diff --git a/changelog.d/fixed-375.md b/changelog.d/fixed-375.md deleted file mode 100644 index 39f46e2..0000000 --- a/changelog.d/fixed-375.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk sessions` now widens the SESSION and CLI columns to fit the longest value, so rows with long session or CLI names stay aligned with the header (#375). diff --git a/changelog.d/fixed-381.md b/changelog.d/fixed-381.md deleted file mode 100644 index d6f5c1f..0000000 --- a/changelog.d/fixed-381.md +++ /dev/null @@ -1 +0,0 @@ -- attach: `splitShellWords` keeps explicitly empty quoted arguments (`""` / `''`) instead of dropping them, so `--cli-args`/`--command` argv is no longer shifted (#381) diff --git a/changelog.d/fixed-attach-existing-watcher-kill.md b/changelog.d/fixed-attach-existing-watcher-kill.md deleted file mode 100644 index 01642e7..0000000 --- a/changelog.d/fixed-attach-existing-watcher-kill.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach --rationguard` now also kills existing watchers that were started with a custom `--rationguard-bin`, so re-attaching no longer stacks duplicate watchers. diff --git a/changelog.d/fixed-attach-rationguard-flags.md b/changelog.d/fixed-attach-rationguard-flags.md deleted file mode 100644 index c5f0a88..0000000 --- a/changelog.d/fixed-attach-rationguard-flags.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach` rejects invalid `--rebuttal` values with exit code 2 before touching tmux, and warns when `--rebuttal` or `--rationguard-bin` is ignored without `--rationguard` (#280). diff --git a/changelog.d/fixed-cli-flag-contract.md b/changelog.d/fixed-cli-flag-contract.md deleted file mode 100644 index 6dfac91..0000000 --- a/changelog.d/fixed-cli-flag-contract.md +++ /dev/null @@ -1 +0,0 @@ -- Reject flags that belong to another subcommand with exit 2 and a command-specific help hint instead of silently ignoring them (including flags passed to `version`). Valid invocations are unchanged; help now lists all supported per-command flags, and a table-driven unit test checks every command against the flag union (#348). diff --git a/changelog.d/fixed-command-received-reserved.md b/changelog.d/fixed-command-received-reserved.md deleted file mode 100644 index 70abaed..0000000 --- a/changelog.d/fixed-command-received-reserved.md +++ /dev/null @@ -1,2 +0,0 @@ -- Mark `command_received` as reserved in the event documentation: `pluk send` / `pluk-send` does not currently emit it. -- Keep `Classifier.commandReceived()` sequence numbers in an independent, increasing command counter without changing subsequent classified or raw-output event sequence numbers. diff --git a/changelog.d/fixed-omp-dangerous-flag.md b/changelog.d/fixed-omp-dangerous-flag.md deleted file mode 100644 index f9fdaae..0000000 --- a/changelog.d/fixed-omp-dangerous-flag.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk attach --cli=omp --dangerous` now passes `--approval-mode yolo` as two arguments; previously omp received a single `--approval-mode yolo` token and the flag had no effect. diff --git a/changelog.d/fixed-stale-go-binary-refs.md b/changelog.d/fixed-stale-go-binary-refs.md deleted file mode 100644 index 4ef0805..0000000 --- a/changelog.d/fixed-stale-go-binary-refs.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk --help` and the README no longer point to a Go pluk binary; the `subscribe` help line now names `pluk watch` as the usual publisher. diff --git a/changelog.d/fixed-subcommand-help.md b/changelog.d/fixed-subcommand-help.md deleted file mode 100644 index 283c146..0000000 --- a/changelog.d/fixed-subcommand-help.md +++ /dev/null @@ -1,2 +0,0 @@ -- `--help` / `-h` after a subcommand (for example `pluk watch --help`) now prints usage and exits 0 instead of being ignored. -- `--help` anywhere is always treated as a help request (as it was before, via `parseArgs`), even inside `pluk send` text. A bare `-h` after the `send` session positional is passed through as text. diff --git a/changelog.d/fixed-watch-capture-include-raw.md b/changelog.d/fixed-watch-capture-include-raw.md deleted file mode 100644 index a7503cc..0000000 --- a/changelog.d/fixed-watch-capture-include-raw.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk watch --capture --include-raw` now emits `raw_output` events (once per changed frame) instead of silently ignoring the flag. diff --git a/changelog.d/fixed-watch-pane-capture-flags.md b/changelog.d/fixed-watch-pane-capture-flags.md deleted file mode 100644 index 4dbffc1..0000000 --- a/changelog.d/fixed-watch-pane-capture-flags.md +++ /dev/null @@ -1 +0,0 @@ -- `pluk watch` now warns on stderr when `--pane` is passed without `--capture`, and `--capture=` (empty value) is rejected with exit 2 instead of silently selecting stream mode. diff --git a/changelog.d/security-321.md b/changelog.d/security-321.md deleted file mode 100644 index fbbe692..0000000 --- a/changelog.d/security-321.md +++ /dev/null @@ -1 +0,0 @@ -- `SECURITY.md` now names `security@hivecommons.dev` (the organization's published `security.txt` contact) as the primary channel for reporting vulnerabilities, so the policy has a working private route whether or not GitHub private vulnerability reporting is enabled for the repository. diff --git a/package-lock.json b/package-lock.json index a4fa888..489e060 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@hivecommons/pluk", - "version": "0.10.0", + "version": "0.11.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@hivecommons/pluk", - "version": "0.10.0", + "version": "0.11.0", "license": "Apache-2.0", "bin": { "pluk": "dist/cli.js", diff --git a/package.json b/package.json index e357c31..f8d2597 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hivecommons/pluk", - "version": "0.10.0", + "version": "0.11.0", "description": "Pluk structured events from AI agent terminal output \u2014 classify, subscribe, and react to JSONL event streams", "type": "module", "engines": {