feat: Add "Quiet Library" batched word-by-word transition#711
feat: Add "Quiet Library" batched word-by-word transition#711wonkybutt wants to merge 12 commits into
Conversation
- Added quietLibrary strategy to backend API schemas and models - Updated Next.js UI transition settings and translation dictionary - Implemented _send_quietlibrary_transition in board_client.py for word-by-word diffing - Offloaded transition logic to a background thread to prevent UI blocking - Enforced a 14.5s request delay to bypass hardware debounce timers and ensure mechanical flap rotation completes - Fixed duplicate key formatting errors in docker-compose.yml
Changes to the docker-compose were made for debugging. They are not part of the feature. Signed-off-by: wonkybutt <vidarr@mac.com>
feat: Add "Quiet Library" word-by-word transition
- Modified quietLibrary transition to strictly isolate word boundaries - Subdivided word updates into payload batches of 6 or fewer characters - Prevents excessive simultaneous mechanical flap noise - Ensures batches never span across two separate words - Maintains the mandatory 14.5s hardware debounce delay between chunks
feat(transitions): limit quietLibrary updates to 6 chars per batch
…rate quietLibrary
fix(transitions): restore original file structure and correctly integ…
chore: add docker-compose.yml to version control
|
Hey @wonkybutt thanks for the contribution! I think this is a really great idea but am also trying to think of the best way to implement this. The transitions you're trying to extend relate directly to the Vestaboard's local API and parameters it receives when we set them to various things like row transition. So because these classes are meant to mirror what Vestaboard provides I'm not sure it's the right spot for this to live long term. But what I'm thinking is there is a need for some filter/animation/sequencer (Not sure on a name yet) that allows you to do just what you're trying to do, provide a frame by frame update, at a given interval, to produce an effect. Anyways, give me a bit to noodle on this and I might want to build upon this idea if thats ok with you. Thanks again! |
+1 |
|
@wonkybutt just an update here. We're going to expose transitions that can be extended via plugin. The idea here is that you can write plugins that will transition your Vestaboard from one state to another. That puts the keys in your hands for how to handle updates coming in during a transition, as well as other config settings for your transition since I think everyone is going to want to tweak things per plugin. Anyways stay tuned it's on our roadmap. |
|
@jeffredodd Oh awesome! I was just starting to think about sending specific transitions based on different content. Looking forward to see what's possible! |
Description
This pull request introduces the
quietLibrarytransition strategy, designed to update the board with the minimum possible mechanical noise. The behavior is modeled after the split-flap board in the Qantas First Class lounge at the Sydney airport, where the display updates methodically one word at a time to maintain a quiet environment.To achieve this specific acoustic profile on the Vestaboard hardware, a custom row-by-row, word-by-word diffing algorithm was implemented.
List of Modifications:
14.5sdelay is enforced between network requests.board_client.pyis offloaded to a background thread. This prevents the Next.js web interface from blocking or timing out.quietLibrarystrategy is added to backend API schemas, Next.js UI transition settings, and the translation dictionary (en.json).docker-compose.ymlfile to ensure local testing environments spin up correctly.Related Issue
N/A
Type of Change
Checklist