Overlay GUI: grouped, keyboard-driven on-device control#39
Merged
Conversation
Reorganize the debug overlay into focusable groups toggled by F1–F7 with a backtick master toggle, multiple visible at once. Esc closes a dialog or hides the overlay and never quits. Add DRM character input so dialog text fields are typeable on the mouseless rig, keyboard-driven create dialogs for stimuli (rect/circle/ellipse/grating) and animations, an animations list with arm/disarm/trigger, and focusable VTL fire buttons. Photodiode/wireframe move into the System group; demo spawn (D) only fires while the overlay is hidden. WIP: windowed visual pass not yet done. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G4wdxVhGBJ7yt1kDQpGkfV
…owed DRM error - Panels now lay out horizontally based on visible-count column positions (320px slots) instead of absolute group index, eliminating gaps and overlap. Each panel gets a default_width(310) constraint on first show. - F-key press surrenders egui's current focus before the new panel claims it, so Tab events queued in the same batch navigate the newly focused panel. - Plain F1–F7: show_group (always makes visible + focuses; idempotent). Shift+F1–F7: hide_group (hides panel; auto-hides overlay when none remain). AppKey::SelectGroup replaced by ShowGroup / HideGroup on both backends. - --windowed now exits with a clear error when DRM mode would be selected (no DISPLAY / WAYLAND_DISPLAY set). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
clip_rect is the physical panel boundary, which sits outside the content inner_margin. max_rect is the content area start, so the old StrokeKind::Inside border overlapped the first content column. Also switches group_frame to Frame::side_top_panel so inner_margin is correct, and drops the redundant custom stroke. Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019eqNJz6vowBYWeBRJBUQzZ
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.
Summary
Brings the on-device egui overlay to a usable production state for operating the stimulus server at the rig without an external client. The overlay becomes a set of grouped, keyboard-driven panels with creation dialogs for stimuli and animations, plus the input-handling fixes needed to make it work reliably on both the winit and DRM/console backends.
What changed
Overlay UI
Input handling