mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-28 00:53:45 +08:00
9d1f0d4171
* cabana: connect palette theme, rounded cards, floating page switch Move the jotpluggler port's connect palette into a shared theme module (ui/theme.h/.cc) and apply it to all of cabana: Palette struct for dark and light, applyTheme fills ImGui and ImPlot styles, readableCurveColor and sectionTitle for reuse by the analysis workspace. Drop the old DarkTheme constants and per-theme color branches in widgets. Docked panels are borderless with content in rounded bordered cards; custom-drawn rects use the style radii. The detail widget's bottom tab bar is replaced by a floating Messages/Logs pill. * cabana: scrollbar and menu contrast, page switch below the page The scrollbar grab uses the border color on the window-colored track. Selection colors are stronger so an open menu reads as blue in both themes and the hovered item is visible in light mode. The Messages/Logs pill sits in a strip below the page instead of covering its last rows. * cabana: even spacing around the page switch, steady top menu highlight * cabana: inner spacing before the clear button of a clearable input * cabana: center the page switch below the page, space the signal row buttons * cabana: logs table cells padded and bordered like the messages table * cabana: recess the signals card in the window color * cabana: one button vocabulary Three button shapes, all one frame height with the style padding and rounding: ImGui::Button for framed text, iconButton for a framed square icon, toolButton for a flat square icon (or flat text). Adjacent buttons are ItemInnerSpacing apart, groups ItemSpacing apart. Tool bars drop their private padding and 1 px spacing, the signal row, chart header, detail header, logs export and signal selector buttons all use the shared sizes, and the page switch is built from the same style values. * cabana: center the glyph ink in square icon buttons * cabana: framed tool buttons and plain icon glyphs toolButton is now iconButton with an optional text, so every button in the app is framed. Boxed glyphs (plus-square, x-square, dash-square, arrow-*-square, window-stack) are replaced by their plain variants (plus-lg, trash, arrows-collapse, box-arrow-*, window-plus), the light x/plus/dash by their -lg forms, the chart menu by three-dots-vertical and the toolbar overflow by chevron-double-right. * cabana: draw square button glyphs at 80% so full bleed icons keep a margin * cabana: signal values in the mono font * cabana: center square button icons on their atlas ink, snapped to framebuffer pixels * cabana: draw square button glyph quads directly, AddText truncates the position * cabana: right align the messages and signals tool bars to the table edge, full size collapse button * cabana: detail header and tab scroll buttons flush with the right edge * cabana: header and footer strips, gap above the panels, video splitter as a separator The menu bar and the status bar are strips in the surface color with a separator line towards the panels, and the dockspace sits one item spacing below the menu bar, matching the spacing above the status bar. The video/charts splitter draws the same 1 px separator line as the dock splitters, centered in a gap as tall as the side padding, and a double click snaps the video back to its natural height. * cabana: top menus flush with the menu bar, 2 px video splitter without double click * cabana: dropdowns continue the menu bar, splitter in the border color, row button gap Top level menus draw no top border and square top corners, and the menu bar leaves its separator out under the open dropdown. The video splitter uses the border color like the dock splitters. The signal row buttons keep one inner spacing before the scrollbar. * cabana: dropdowns share the bar's 1 px border line, messages toolbar spacing matches the video card * cabana: tool bar groups, framed dropdown buttons, chart content flush with the tool bar Tool bar items are ItemSpacing apart and the items of a group (a button pair, a separator and its neighbor) ItemInnerSpacing apart, instead of a private 1 px spacing. The dropdown buttons are framed like the other buttons. The video time is a plain mono readout that toggles on click. Chart cards have no horizontal margin so their header and plot line up with the tool bar above. * cabana: chart list spacing: gap above the scroll area, charts clear of the scrollbar, even legend gaps * cabana: loop and speed buttons grouped like the playback buttons * cabana: survive narrow panels and small windows Stress tested by dragging the column and video splitters to their limits and shrinking the window to 640x480. Fixes: the messages tool bar and the message detail header overflow into the >> menu instead of clipping (the view button and the name stay); the binary view keeps a minimum cell width and scrolls sideways; the Messages/Logs switch drops to icons when the strip is too narrow; the camera keeps its last frame across reconnects, so a video restored from a collapsed splitter while paused is no longer black. * cabana: range slider spans the charts >> menu, remove all and float as menu entries * cabana: the charts card keeps its tool bar row or collapses, like the video at the other end * cabana: uniform >> menus: dropdowns become submenus, the time readout an action entry * cabana: video/charts splitter gap matches the column splitters * cabana: drop unused lambda capture in chart type menu Claude-Session: https://claude.ai/code/session_01XTFaJpf235LeHBmyFRgeJ1 * cabana: the menu bar and the status bar stay in full screen * cabana: simplify theme helpers and toolbar actions * cabana: preserve panel width for overflow edit dialog * cabana: keep message editor usable in narrow panels * cabana: group heatmap modes in a dropdown * cabana: trim redundant restyle comments * cabana: fix review findings from the restyle - set the caret and other unset colors so the light theme has no white caret - tolerate float error in the toolbar fit check to stop spurious overflow - restore the full screen chrome hiding - clear stale camera frames when the server changes, keep them across a collapse - cache icon glyph ink bounds instead of scanning the atlas every frame - drop dead plot_bg and ImPlot globals, add a badge palette role - add toolbarMenu and use toolbarAction for the remove message item - derive the signal view button size seed from the font and style * cabana: remove remaining redundant comments