macOS: live "Claude is working" indicator + Activity screen#66
Closed
JacquesDelaigue wants to merge 1 commit into
Closed
Conversation
Surface real Claude Code activity on the device, driven by Claude Code hooks -> ~/.clawdmeter/state.json -> the macOS daemon -> BLE -> firmware. Working indicator: - Splash "homes" to the "work coding" animation while a session runs (manual PWR-cycle still works, auto-reverts after 5s); a small "work coding" badge shows top-left on the Usage screen; the panel stays awake while working. Daemon sends a top-level "working" flag. Activity screen: - New third screen (tap cycles Splash -> Usage -> Activity -> Splash): a vertical scrolling list of live sessions, each row = project, model, context-window % bar, and a Claude-orange dot when that session is running. - Daemon sends a compact "sessions" array; context-% is computed in the hook from each session transcript's latest usage vs a model->window map. Transport: daemon writes with response (ATT long write) and the firmware requests a 517-byte MTU + 1024-byte RX buffer to carry the multi-session payload. The Claude Code hook (daemon/clawdmeter_hook.py) is adapted from @tobby168's PR HermannBjorgvin#22. macOS daemon only for now (the Linux/Windows daemons would need the same working/sessions fields to drive these screens). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JacquesDelaigue
added a commit
to JacquesDelaigue/Clawdmeter
that referenced
this pull request
Jun 7, 2026
…orgvin#66) Brings the macOS working-indicator + Activity screen work onto main as a merge commit (no squash) to preserve history. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two device features that surface real Claude Code activity (not just quota), driven by Claude Code hooks →
~/.clawdmeter/state.json→ the macOS daemon → BLE → firmware.1. "Claude is working" indicator
work codinganimation (the PWR button still cycles animations; auto-reverts after 5s), and a smallwork codingbadge appears top-left on the Usage screen. The panel stays awake while working."working"flag; firmware parses it. Backward compatible (old payloads unchanged).2. Activity screen
"sessions"array[{p,m,c,w}](≤5, size-guarded < 480 B); context-% is computed in the hook from each session's transcript usage vs a model→window map.How
daemon/clawdmeter_hook.py— hook writing per-session state (adapted from @tobby168's Activity screen: live Claude Code session state from hooks #22; adds context-% computation).daemon/claude_usage_daemon.py—read_working()/read_sessions()merged into the payload on a state-file change (pushed within ~5 s); switched to write-with-response (ATT long write) for the larger payload.firmware/—SCREEN_ACTIVITY+ scrolling list (ui.cpp), 3-way tap cycle, working-mode (splash.cpp),ActivityData/SessionData(data.h),sessionsparse (main.cpp),setMTU(517)+BLE_BUF_SIZE 1024(ble.cpp),-DLV_USE_FLEX=1.Scope / caveats
working/sessionsfields to drive these screens.🤖 Generated with Claude Code