Z Usage Monitor 1.1.0 — family hardening: key in the environment, replay #24
Loading…
Reference in a new issue
No description provided.
Delete branch "oss-oo/z-family-hardening"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The family update for Z Usage Monitor 1.1.0, part 1: what Claude Usage Monitor 1.0.3 and ChatGPT Usage Monitor 1.1.0 learned, checked against Z's data model first.
Security
Z_USAGE_API_KEY) instead of--api-keyon argv, where every local process could read it through/proc. The helper takes no key on its command line any more;ZAI_API_KEY, the key file and the ZCode app stay the automatic sources (the settings tooltip now names them in their real order).[redacted].Robustness
http.client.HTTPException, also inside the error-body read), unsendable keys and non-UTF-8 history, key, ZCode config or telemetry files no longer end in a traceback; a one-line catch-all closesmain().formatTimestamp,formatLocalDate,formatActivityBucketRange.0600.Replay: a failing monitor API replays the last good snapshot of the same key (
last-snapshot.json, 0600, truncated SHA-256 fingerprint, two hours = twice the longest interval, windows past their reset dropped, deleted when that key is rejected, no history sample). The applet adopts a replay only into an empty applet or over a held replay, keeps the error line, skips the green confirmation, ends a held replay on a plain failure, refreshes at the replay's expiry and compares the first fresh snapshot against the first replay (weekly resets, notifications).Deliberately not ported
x.xx%below 10%, whole percents from 10%, a bare0%(now pinned by tests).levelandCREDIT_LIMITwindows only).Validation
make verifygreen (83 Python tests, 13 cjs suites, translations, icons, shellcheck, social preview); all suites green under clock shifts of 0, ±30 days, +1 and +5 years.main(GLib null guards:dateTime is null; transport, replay and launcher tests by construction).Gio.SubprocessLauncherprobe: the helper's/proccmdline during an open request carries no key; the fixture received it as theAuthorizationheader.README screenshots are refreshed in the release PR (they date from 1.0.6; z's CI does not check them).
🤖 Generated with Claude Code