You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ghook 0.2.1:
- Short-circuit when GOBBY_HOOKS_DISABLED=1 is set so daemon-spawned ACP
subprocesses (gemini --acp, qwen --acp) don't register phantom sessions
via inherited SessionStart hooks. Returns {} with exit 0 before enqueue,
POST, or terminal-context capture.
- Carry GOBBY_ACP_CHILD through terminal_context.capture() so the daemon's
SESSION_START handler can still recognize ACP subprocesses even if the
env short-circuit didn't fire.
- Extend extract_reason() to check hookSpecificOutput.permissionDecisionReason
(and .reason inside that object) after the top-level fallback keys. Modern
Claude Code PreToolUse deny responses put the reason inside hookSpecificOutput;
is_blocked() already recognized the nested shape, so extract_reason() was
asymmetric and surfaced bare "Blocked by hook" instead of the daemon's
actual message.
gsqz 0.4.2:
- Floor CompressionResult::savings_pct() at 0.0 so a badly-matched pipeline
that grows output doesn't report negative savings to the daemon.
Gobby-Task: #139
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+18Lines changed: 18 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,24 @@ All notable changes to gobby-cli are documented in this file.
7
7
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
8
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
10
+
## [0.2.1] — gobby-hooks
11
+
12
+
### Fixed
13
+
14
+
#### gobby-hooks
15
+
16
+
-**Drop phantom ACP session registrations** — `ghook` now short-circuits when `GOBBY_HOOKS_DISABLED=1` is set in the process environment, returning `{}` with exit 0 before any side effect (no enqueue, no POST, no terminal-context capture). Daemon-spawned `gemini --acp` / `qwen --acp` subprocesses inherit the host CLI's SessionStart hook; this env flag lets the daemon mark them so they don't register phantom sessions.
17
+
-**`gobby_acp_child` in terminal_context** — `terminal_context.capture()` now includes `gobby_acp_child` (read from `GOBBY_ACP_CHILD`). The daemon's SESSION_START handler uses it as a second line of defense to recognize and drop registrations from ACP subprocesses even if the env short-circuit didn't fire.
18
+
-**Surface nested `permissionDecisionReason` in block messages** — `extract_reason` now also checks `hookSpecificOutput.permissionDecisionReason` (and `.reason` inside that object) after the top-level fallback keys. Modern Claude Code PreToolUse deny responses carry the reason inside `hookSpecificOutput`; `is_blocked` already recognized the nested shape, but `extract_reason` didn't — so denies surfaced as the bare "Blocked by hook" fallback instead of the daemon's actual message.
19
+
20
+
## [0.4.2] — gsqz
21
+
22
+
### Fixed
23
+
24
+
#### gsqz
25
+
26
+
-**Floor `savings_pct` at 0%** — when compressed output ends up larger than the original, `CompressionResult::savings_pct()` now returns `0.0` instead of a negative percentage. Prevents negative savings values from being reported to the daemon.
0 commit comments