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.
I use LLMs to find items for me all the time and it's great. I still have to use my human capacities for consideration and kindness as well as my deep understanding for the people in my life who I care about to suggest what gift I might want to get them. I still need to care. The people in my life have very specific needs and finding the right vendor for a gift involves a lot of searching and reading. Not to mention navigating the brilliant tariffs that have recently made shopping such a joy. LLM tools turn this 3-5h process into a 5 minute exploration.
I'm glad to see this being made mainstream. Hopefully nobody imagines that this will let them care less about people in their lives, since we need a lot more people to care about each other in my opinion.
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!