Releases: ZGhey/tokibean
Release list
Tokibean 码豆 0.6.1
chore: 0.6.1
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Tokibean 码豆 0.6.0
Tokibean 码豆 0.5.1
v0.5.1 — labels you can read, and a Settings window that opens
Font size (Settings → General): the pet's bubble and its status tag can now be
Small / Normal / Large, and Normal is a notch bigger than the old fixed size —
which is what they should have been all along. Existing installs pick up the new
default.
Making that work meant widening the canvas (200 → 288). The tag needed ~98px even
at its old size and only had 68px beside the pet, so it never really sat there: it
was clamped back across the pet's head, and bigger text only made that visible.
The pet stays centred and does not move on upgrade. The moon, the stars and the
festivals are now composed around the pet rather than the canvas corner — they had
been drifting off with it.
Settings opened from the panel sometimes did nothing, and opening it once from the
tray appeared to fix it forever. Neither was what it looked like: a freshly built
window was never shown or focused, and as an Accessory app we don't come to the
front on our own. It was being born behind whatever you were looking at.
Codex: the panel no longer tells you to approve hooks you have already approved,
and now tells you when an upgrade re-armed Codex's trust gate — which Codex itself
reports as Completed while running nothing.
Tokibean 码豆 0.5.0
v0.5.0 — one pet, two agents
Tokibean now watches Codex alongside Claude Code: one pet aggregating every
agent and session, one quota card each (never normalized — Claude's 5-hour
block and Codex's own window are different quantities), and setup moved out of
the daily panel into Settings.
Codex's quota comes free from its own local rollout logs — no login, no API.
Installing its hooks also cleans up the copies Codex's importer made of
Tokibean's Claude hooks, which would otherwise have counted your Codex work as
Claude's.
The internal name claude-pet is gone. Upgrading is silent: the old config
directory is adopted, connected account and all.
Tokibean 码豆 0.4.6
Release v0.4.6: fix pet jumping when the panel opens (macOS)
Clicking the pet made it flash ~197px up and snap back before the panel
appeared, and the panel's top rows (billing badge + mode select) were clipped.
Cause: macOS resized the window on open, and any resize that moves the window's
TOP edge shows one stale webview frame — the window geometry lands immediately
but WKWebView keeps painting the old layout for a frame, so the pet is drawn at
its old offset-from-top, i.e. (fullH - collapsedH) px too high. Making the
move+resize atomic (set_window_rect) does not help: the stale frame is the
webview's, not the window's. Windows had already solved this by pre-allocating
the full height and never resizing; macOS now does the same.
- main.rs: pre-allocate FULL_H on macOS too, restore from the layout-independent
pet anchor (pet_anchor_y, migrated from the old window top-left), keep the
anchor correct in the Moved backstop, and use the pet-strip click-through rule. - main.js: split IS_WIN_DRAG into PREALLOC (Win+mac layout) and IS_WIN_DRAG
(Windows manual drag only). - style.css: #panel gets flex: none — the flex column shrank it inside the still
collapsed window, so the measured height was too small and the panel's top rows
were clipped.
Verified frame-by-frame with a 60fps screen recording driven by a real OS click:
pet's on-screen position is now constant across open and close (was 197px up for
one frame).
Tokibean 码豆 0.4.5
Fix v0.4.5: pet invisible on first launch after upgrading to 0.4.4
0.4.4 shrank the default collapsed window (340 -> 255 logical px, the
new 0.75 default scale). pos_y is the window's TOP-LEFT but the pet is
drawn at the window's BOTTOM, so the shorter window lifted the pet off
its saved spot — and macOS, unlike Windows, had no on-screen clamp at
startup. A pet saved near a screen edge therefore landed off-screen and
was completely invisible. Changing the size in Settings brought it back
only because applyScale() ends with clampToScreen().
- pet_scale becomes Option. None marks a config written before the
size setting existed, whose position was saved against a 340px-tall
collapsed window. On first run we migrate pos_y by the height delta so
the pet's feet stay exactly where the user left them, then stamp the
resolved scale. - macOS startup now clamps the restored position so the pet lands on a
real monitor (picking the monitor under the pet's centre, not the
window's top-left, since the window has transparent headroom above the
pet; falls back to the primary monitor). Mirrors the clamp Windows has
had. The clamped position is persisted, so we don't re-clamp an
unreachable position on every launch. - Hoist the shared geometry (default scale, base/canvas sizes, window
width) into config.rs constants so the Rust startup path and main.js
can't drift apart. - applyScale() now un-hides the canvas in a finally block, so a throwing
resize can't leave the pet permanently invisible.
Reproduced with a pre-0.4.4 config (no pet_scale, pos 2818,2124): pet
found on no display before the fix, visible after.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Tokibean 码豆 0.4.4
Release v0.4.4: adjustable pet size
Add a pet size setting (Settings window dropdown): Small 0.5 / Normal
0.75 / Large 1.0 / Extra large 1.25. Only the pet scales — the usage
panel keeps its size. The pet grows in place from its feet and the
change applies live via config-changed.
Every step keeps the art-pixel size (S=4 x scale x dpr) an integer, so
the pixel art stays crisp. Rendering: the canvas CSS box and logical
space stay at the design 200x184, so pet.js and every skin are
untouched (they still read canvas.clientWidth === 200); the backing
buffer is rendered at dpr x scale and the enlargement is a CSS
transform, so backing density matches the on-screen size 1:1 with no
resampling.
All window geometry (collapsed height, width, Windows pre-allocated
height, click-through solid strip) is now derived from cfg.pet_scale in
both the Rust startup path and main.js's recomputeGeom().
Also bound the click-through solid strip to the pet's actual width
rather than the full window width, so the empty margins beside a
smaller pet pass clicks through.
Note: the default scale is 0.75, so existing installs (no pet_scale in
config) get a smaller pet after upgrading, and the collapsed window is
shorter (340 -> 255), which shifts the restored position slightly.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Tokibean 码豆 0.4.3
Release v0.4.3: quiet hooks when pet offline + internal deep-module refactor
- Hooks no longer print "hook error" in Claude Code when the pet is closed
(fire-and-forget POST now swallows a failed curl). - Internal refactor: extracted pure projection / fetch_policy / wsl modules
and the first test suite (0 → 31 tests, 0 warnings); behavior-preserving. - Added mattpocock/skills agent config under docs/agents/.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Tokibean 码豆 0.4.2
Release v0.4.2: smooth night moon — phase-accurate crescent, no dark disc
Replace the per-pixel moon (blocky lit/#3a3a4a-shaded disc) with the original
night-scene's clean smooth crescent look — a warm #f3e7a6 lit lune, no dark
disc and no glow — while keeping real phase accuracy. The terminator is a
half-ellipse (rx = R·cos θ) so it tracks new → crescent → half → gibbous →
full and back, sign-flipping crescent↔gibbous at the quarters.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Tokibean 码豆 0.4.1
Release v0.4.1: multi-session fixes — working outranks attention, stable project names, background-subagent clones, named 30s bubble
- Priority flip: working > attention, so a session waiting on input no longer hides the
ones actively working (the pet used to freeze on "waiting"/resting while work was happening) - Panel + bubble now show a stable PROJECT name (git repo root → package manifest → folder)
instead of the raw cwd subdir, which changed as a session cd'd around - Subagent mini-clones: count on PreToolUse(Agent), drop on SubagentStop — background subagents
(Claude Code v2.1.198+) return from the Agent tool immediately, so PostToolUse popped the clone
at launch. Adds the SubagentStop hook (users reinstall hooks + restart Claude Code to pick it up) - Attention bubble names the waiting project ("X needs you") and lasts 30s instead of 120s
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com