Every version is digitally signed, archived, and available through the
web installer. You can always roll back to any previous release.
InksPet follows semantic versioning. Major versions
introduce new agent states or breaking changes to the hook protocol.
Minor versions add display features or new LED effects.
Patch versions ship bug fixes only โ always safe to install.
v1.1.1
Patch release โ Claude desktop Hardware Buddy window now shows device stats
(battery, heap, uptime, approvals, denials, level) instead of "No response". The root cause
was a non-standard fw field and a missing bat.mA in our {cmd:"status"}
ack โ strict schema parsers on the desktop side silently dropped the whole frame.
Recommended upgrade for anyone running v1.1.0.
๐ Fixed
Status ack now strictly conforms to REFERENCE.md โ removed the non-spec fw field, added bat.mA (reads 0 since the device has no current shunt)
Added diagnostic log line that prints the serialised ack payload โ future schema drifts surface in pio device monitor
v1.1.0
Native Bluetooth LE integration with the official Claude desktop app โ
pair your device as a Hardware Buddy over LE Secure Connections, receive live session
snapshots (running / waiting / tokens_today / recent transcript), approve tool calls
with the physical buttons, and watch GIF character packs render on the e-paper with
1-bit dithering. Full Chinese text rendering on the HUD.
๐ก Bluetooth / Claude Desktop
NimBLE Nordic UART Service advertises as Claude-XXXX, fully implements the Hardware Buddy protocol โ snapshot, turn events, time sync, owner name, status ack, unpair
LE Secure Connections + Passkey pairing โ device is DisplayOnly, the 6-digit passkey renders on the e-paper when macOS prompts for it; bond survives reboot
Physical-button approval flow โ when Claude requests a tool permission, the InksPet shows the tool name + target and A/B/C physically answer once/always/deny, routed back to Claude over BLE as {cmd:permission,decision:once|deny}
Buddy HUD on the e-paper shows upstream-authoritative fields: one-line msg summary, Today: X.XK tokens, up to 3 recent transcript entries, bonded indicator in the footer
Folder push โ drag a GIF character pack onto the Hardware Buddy window and InksPet receives it over BLE, writes to LittleFS, hot-swaps the renderer
๐จ Display
Chinese text rendering โ Buddy HUD and permission screen auto-switch to u8g2_font_wqy12_t_chinese2 when content contains multi-byte UTF-8; UTF-8-safe truncation prevents tofu on boundary overflow
GIF character pack player โ AnimatedGIF decoder piped into a 1-bit Bayer-8ร8 dithered framebuffer so colour GIFs degrade gracefully on the monochrome panel; idle array rotation honours manifest
HUD de-duplication โ snapshot keepalives fire every ~10s even when nothing changed; display skips the refresh if the fingerprint is identical (protects e-paper lifetime)
๐ Reliability
Permission source tagging โ BLE-originated approvals now reply over BLE, HTTP-originated approvals reply over the webhook, fixing cross-channel decision leakage when both transports are connected
Idle snapshots (running=0 waiting=0) no longer fabricate a THINKING state โ stale sessions age out via the existing 30s timeout
ArduinoJson buffer 4KB โ 6KB to accommodate larger turn events
๐ฆ Footprint
Flash: 31% โ 41% (+10 percentage points, mostly NimBLE stack, still ample headroom on 4MB flash)
Version bump to validate the release pipeline. No functional changes from v1.0.1.
๐ง Internals
Version bump only โ confirms end-to-end build, packaging, and web installer pipeline is working correctly
v1.0.1
Display quality fix โ the e-paper panel no longer fades after repeated updates.
The screen now redraws only when content actually changes, keeping refreshes to a minimum and contrast consistently sharp.
๐ฅ Display
Replaced partial refresh with full refresh โ eliminates the progressive contrast fade (screen going lighter) that appeared during long working sessions
Content-change detection: display skips a refresh cycle when state, agent, tool, file, and task progress are all unchanged โ no wasted refresh on identical frames
Session elapsed time now shown only when the agent reaches Completed state (total task duration), rather than updating every 10 seconds during work
Fixed: _forceFullRefresh flag was silently ignored in Time Mode after wake from hibernate
Fixed: double full-refresh immediately after waking from idle hibernate (anti-ghosting timer now resets on wake)
๐ง Internals
Removed dead fullRefresh() / partialRefresh() stub methods that were no-ops
Extracted buildAgentDisplayInfo() helper โ state-change callback and periodic refresh now share a single implementation
Removed 10-second periodic refresh timer that triggered unnecessary screen updates
v1.0.0
First public release of InksPet firmware โ Clawd the crab lives on your EleksCava e-paper display,
reacting in real time to Claude Code and other AI coding agents.
Pixel-art states, RGB LED sync, physical button approval, and a zero-config web dashboard.
Open-source hardware schematics & firmware under MIT license
Install or upgrade โ pick any version from the
web installer, accept the terms, and click Install.
Current firmware is auto-erased before the new version is written, so
downgrading is always safe.
Future versions will appear here. Follow the
GitHub repository
for release notifications.