Skip to content

Commit d5433bf

Browse files
committed
docs(ghook): document statusline 0.3.1 release
1 parent 05a7f1a commit d5433bf

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,21 @@ All notable changes to gobby-cli are documented in this file.
77
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
88
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

10+
## [0.3.1] — gobby-hooks
11+
12+
### Added
13+
14+
#### gobby-hooks
15+
16+
- **Claude statusline handler**`ghook --gobby-owned --cli=claude --type=statusline` now handles Claude Code statusline ticks directly in Rust. The handler bypasses the normal enqueue-first hook dispatch path, extracts the same token-usage payload as the legacy Python statusline middleware, posts it to `/api/sessions/statusline`, and preserves downstream statusline stdout bytes without adding a newline.
17+
- **Statusline parity fixtures** — Added golden JSON fixtures under `crates/ghook/tests/fixtures/statusline/` so Claude statusline input-to-daemon-payload parity is machine-checkable and survives removal of the Python reference in a later Gobby-side phase.
18+
19+
### Changed
20+
21+
#### gobby-hooks
22+
23+
- **Statusline failure semantics** — Malformed statusline JSON, missing `session_id`, daemon POST failures, and downstream command failures all exit successfully so Claude's statusline display is not broken by telemetry issues. Daemon POSTs use a short background worker wait, and downstream forwarding has a bounded timeout.
24+
1025
## [0.3.0] — gobby-hooks
1126

1227
### Added
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# ghook Statusline Phase 1
2+
3+
## Scope
4+
5+
This plan covers only the Rust-side `gobby-cli` work for Claude Code
6+
statusline handling. Gobby/Python installer migration, rollback bake, and
7+
eventual Python handler deletion are tracked outside this repository.
8+
9+
## Implemented
10+
11+
- `ghook --gobby-owned --cli=claude --type=statusline` is routed before the
12+
generic hook enqueue/POST flow.
13+
- The statusline path writes downstream stdout bytes directly and does not
14+
use the shared JSON hook emitter.
15+
- The handler extracts the Claude statusline usage payload and posts it to
16+
`/api/sessions/statusline` with best-effort failure semantics.
17+
- The crate version is bumped to `0.3.1` so the Gobby installer can probe for
18+
statusline-capable `ghook` binaries before switching statusline config.
19+
20+
## Parity Contract
21+
22+
Golden fixtures live in `crates/ghook/tests/fixtures/statusline/`:
23+
24+
- `full-input.json` -> `full-payload.json`
25+
- `defaults-input.json` -> `defaults-payload.json`
26+
27+
These fixtures capture the stable wire contract from Claude statusline stdin
28+
to the daemon payload. Missing or falsy `session_id` produces no daemon POST.
29+
Missing `cost`, `model`, or `context_window` fields use the same defaults as
30+
the legacy Python middleware.
31+
32+
## Validation
33+
34+
Required checks before release:
35+
36+
- `cargo test -p gobby-hooks`
37+
- `cargo test -p gobby-hooks --no-default-features`
38+
- `cargo clippy -p gobby-hooks --all-targets -- -D warnings`
39+
- `cargo build --release -p gobby-hooks`
40+
41+
Local install is intentionally out of scope. Do not copy the built artifact to
42+
`~/.gobby/bin/ghook` as part of this phase.

0 commit comments

Comments
 (0)