Built in Rust with btleplug for BLE. The hardware is a $25 iDotMatrix 64x64 LED panel from AliExpress — you send it GIF frames over Bluetooth and it plays them on loop.
The interesting part ended up being the state machine. Claude Code fires PermissionRequest and PreToolUse within ~100μs of each other, out of order, and PostToolUse fires after every tool call (not just approvals). Getting the display to not flicker took more iterations than I'd like to admit.
Built in Rust with btleplug for BLE. The hardware is a $25 iDotMatrix 64x64 LED panel from AliExpress — you send it GIF frames over Bluetooth and it plays them on loop.
The interesting part ended up being the state machine. Claude Code fires PermissionRequest and PreToolUse within ~100μs of each other, out of order, and PostToolUse fires after every tool call (not just approvals). Getting the display to not flicker took more iterations than I'd like to admit.
MIT licensed: https://github.com/terraboops/lfg
brew tap terraboops/tap && brew install lfg
Happy to answer questions about the BLE protocol, the sprite system, or the state machine!