Skip to content

Commit 2fa8218

Browse files
committed
release: 1.5.2
1 parent f012c0a commit 2fa8218

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to Token-Goat are documented in this file. Format follows Ke
44

55
## [Unreleased]
66

7+
## [1.5.2] - 2026-06-08
8+
9+
Three fixes: Codex hook wire-format compatibility, and two Windows coarse-`mtime` correctness issues in the cache and session layers.
10+
11+
### Codex hook responses now pass schema validation
12+
13+
Codex 0.137.0 validates every hook response against embedded JSON schemas with `additionalProperties: false`, so any unrecognised key causes "hook returned invalid … JSON output" for the entire response — including `SessionStart`, `PreToolUse`, and `PostToolUse`. The root cause was `_tg_elapsed_ms` (and sibling `_tg_handler`/`_tg_error` fields) added by the internal `dispatch()` function and then emitted verbatim. The `denormalize_response` Codex branch now strips all `_tg_*` keys before output. The same path also injects the required `hookEventName` const field into `hookSpecificOutput` — Codex requires it on every `hookSpecificOutput` shape and token-goat was not emitting it because Claude Code does not require it. A `_codex_hook_event_name()` helper resolves the correct value (e.g. `"pre-read"``"PreToolUse"`) from the hook registry. The old camelCase→snake_case key conversion (`_translate_hso_to_codex`) is no longer applied — Codex 0.137.0+ uses camelCase throughout `hookSpecificOutput`.
14+
15+
### Freshest cache entry survives its own store call's eviction
16+
717
Two Windows coarse-`mtime` correctness fixes. Both reproduce only when two writes land close enough together to share a filesystem timestamp — common on NTFS under load — which is why they surfaced as intermittent CI flakes rather than deterministic failures. Each ships with a deterministic regression test that fails on the pre-fix code and passes on the fixed code.
818

919
### Freshest cache entry survives its own store call's eviction

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "token-goat"
3-
version = "1.5.1"
3+
version = "1.5.2"
44
description = "Token optimizer for Claude Code, Codex CLI, opencode, and openclaw on Windows, macOS, Linux, and WSL. Image shrink, re-read dedup, and compaction assist run automatically; CLI commands (symbol, read, section, semantic, map) replace full-file reads with surgical slices."
55
readme = "README.md"
66
requires-python = ">=3.11,<3.15"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)