feat(app): 0.1.5 UI polish — sidebar collapse, chat pane min/max, About version, lucide icons#356
Closed
fujibee wants to merge 2 commits into
Closed
feat(app): 0.1.5 UI polish — sidebar collapse, chat pane min/max, About version, lucide icons#356fujibee wants to merge 2 commits into
fujibee wants to merge 2 commits into
Conversation
…ut version, lucide icons Three 0.1.5 backlog items bundled into one PR (koit: these are all minor display-type changes, ship together): - Sidebar (team pane) collapses to a 44px icon-only rail so panes get more width. Rail: agmsg mark (click to expand) → + (new team/agent, same menu as full view) → team icon (click opens a team-switch popup, replacing the <select>) → spacer → app-user avatar (also expands) + a direct settings button. Spawning/messaging isn't offered from the collapsed rail at all (koit: acceptable trade-off). The collapse toggle sits in its own slim strip level with the overlaid macOS traffic lights when expanded; the collapsed state has no separate toggle button there since it would overlap the lights at 44px wide — expanding is via the mark/avatar instead. - App-user chat pane gets Windows-style minimize/maximize header buttons (3 states: normal / minimized — history collapses away, leaving just the composer row, fixing the "my own messages show twice" fatigue real users reported once the room already shows everything / maximized — fills the whole content area, hiding the team room and agent panes for a focused 1:1 view). Session-only state, no persistence. - About dialog now shows both the app version and the bundled agmsg-core version (e.g. "0.1.4 (core 1.1.6)") — previously just "Name: agmsg" with no version at all on Windows. A single combined string in AboutMetadata.version (not muda's separate version/ short_version fields, which map to different, platform-divergent About-panel slots) so both platforms show identical text. The bundled-core reader is a new agmsg::pinned_core_version() helper, shared with agmsg_core_version_status's "pinned" field so the two can never disagree. (About dialog's ICON stays the OS default on Windows regardless — muda 0.19.3 hardcodes MB_ICONINFORMATION / TD_INFORMATION_ICON there, ignoring AboutMetadata.icon entirely; not fixable from app code, confirmed by reading muda's Windows impl.) - Introduces lucide-react for the new icons this round touches (sidebar collapse/team/settings, chat min/max/restore) rather than more ad-hoc unicode glyphs/hand-drawn SVGs (koit) — also swapped the pre-existing expanded-view settings gear for the same Settings icon so both sidebar states match. Broader replacement of older glyphs (pane/tab close ×, tab arrow ▸) is out of scope for this pass.
…hide interaction Show Team Room: companion to Show User Chat — toggles the team-room tab itself (not just its content) via a new TeamRoomVisible state on the Rust side, mirrored to the frontend the same way showUserChat already is. Switching it off while the room tab is active falls back to whichever pane tab is active, or an empty-state hint if none exist yet. Also fixes both View-menu checkboxes going stale after a language switch (menu rebuild previously hardcoded them back to checked regardless of actual state) via try_state, since the very first menu-build call happens before either state is registered. Also folds in the co1 static-review fix for #356: maximizing the chat pane hides tabs/stage based on chatPaneState alone, so turning off Show User Chat while maximized left tabs/stage hidden too with no chat controls left to recover from — gated the hidden condition on showUserChat as well.
fujibee
added a commit
that referenced
this pull request
Jul 13, 2026
…m Room toggle, About version, lucide icons (#377) * feat(app): 0.1.5 UI polish — sidebar collapse, chat pane min/max, About version, lucide icons Three 0.1.5 backlog items bundled into one PR (koit: these are all minor display-type changes, ship together): - Sidebar (team pane) collapses to a 44px icon-only rail so panes get more width. Rail: agmsg mark (click to expand) → + (new team/agent, same menu as full view) → team icon (click opens a team-switch popup, replacing the <select>) → spacer → app-user avatar (also expands) + a direct settings button. Spawning/messaging isn't offered from the collapsed rail at all (koit: acceptable trade-off). The collapse toggle sits in its own slim strip level with the overlaid macOS traffic lights when expanded; the collapsed state has no separate toggle button there since it would overlap the lights at 44px wide — expanding is via the mark/avatar instead. - App-user chat pane gets Windows-style minimize/maximize header buttons (3 states: normal / minimized — history collapses away, leaving just the composer row, fixing the "my own messages show twice" fatigue real users reported once the room already shows everything / maximized — fills the whole content area, hiding the team room and agent panes for a focused 1:1 view). Session-only state, no persistence. - About dialog now shows both the app version and the bundled agmsg-core version (e.g. "0.1.4 (core 1.1.6)") — previously just "Name: agmsg" with no version at all on Windows. A single combined string in AboutMetadata.version (not muda's separate version/ short_version fields, which map to different, platform-divergent About-panel slots) so both platforms show identical text. The bundled-core reader is a new agmsg::pinned_core_version() helper, shared with agmsg_core_version_status's "pinned" field so the two can never disagree. (About dialog's ICON stays the OS default on Windows regardless — muda 0.19.3 hardcodes MB_ICONINFORMATION / TD_INFORMATION_ICON there, ignoring AboutMetadata.icon entirely; not fixable from app code, confirmed by reading muda's Windows impl.) - Introduces lucide-react for the new icons this round touches (sidebar collapse/team/settings, chat min/max/restore) rather than more ad-hoc unicode glyphs/hand-drawn SVGs (koit) — also swapped the pre-existing expanded-view settings gear for the same Settings icon so both sidebar states match. Broader replacement of older glyphs (pane/tab close ×, tab arrow ▸) is out of scope for this pass. * feat(app): Show Team Room toggle in the View menu; fix chat-maximize/hide interaction Show Team Room: companion to Show User Chat — toggles the team-room tab itself (not just its content) via a new TeamRoomVisible state on the Rust side, mirrored to the frontend the same way showUserChat already is. Switching it off while the room tab is active falls back to whichever pane tab is active, or an empty-state hint if none exist yet. Also fixes both View-menu checkboxes going stale after a language switch (menu rebuild previously hardcoded them back to checked regardless of actual state) via try_state, since the very first menu-build call happens before either state is registered. Also folds in the co1 static-review fix for #356: maximizing the chat pane hides tabs/stage based on chatPaneState alone, so turning off Show User Chat while maximized left tabs/stage hidden too with no chat controls left to recover from — gated the hidden condition on showUserChat as well. * fix(app): view-menu checkboxes now actually reflect Show Team Room / Show User Chat state Two related bugs surfaced testing the new Show Team Room toggle: 1. The frontend's showTeamRoom/showUserChat state defaulted to true unconditionally with no way to query the real value on mount. Rust holds the only durable copy of these flags, so a webview remount that doesn't restart the Rust process (Vite HMR during tauri dev, or any future webview reload) would silently diverge — the frontend resets to true while Rust and the menu checkbox keep whatever was last set. Added a view_visibility query command the frontend now calls once on mount to seed its state from Rust instead of guessing. 2. Hiding Team Room or User Chat from the frontend (tab/chat-header right-click) never updated the native menu's checkbox. Root cause: Menu::get()/Submenu::get() only search a menu's own direct children, never nested submenus — since these checkboxes live inside the View submenu, app.menu().get(TEAM_ROOM_MENU_ID) can never find them, so set_checked() silently no-op'd. This was invisible when toggling from the native menu itself (macOS already flips the checkbox's own visual state on click, regardless of whether our code's call landed), but any external sync attempt failed outright. Now holds Arc-cloned handles to both CheckMenuItems in managed state (ViewMenuCheckboxes, rebuilt alongside the menu on every language switch) so every call site (on_menu_event and both set_*_visible commands) flips the actual item directly instead of re-searching a tree that doesn't contain it.
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
Three 0.1.5 backlog items, bundled into one PR (all minor display-type changes, shipped together by owner decision):
<select>) → spacer → app-user avatar (also expands) + settings button. Spawning/messaging is not offered from the collapsed rail (accepted trade-off). The collapse toggle sits level with the macOS traffic lights when expanded; the collapsed state expands via the mark/avatar instead (a 44px-wide toggle would overlap the lights).AboutMetadata.version(not the separate version/short_version fields, which map to platform-divergent About-panel slots) so both platforms show identical text. The bundled-core reader is a newagmsg::pinned_core_version()helper shared withagmsg_core_version_status'spinnedfield so the two can never disagree. The Windows About icon stays OS-default regardless — muda 0.19.3 hardcodes MB_ICONINFORMATION / TD_INFORMATION_ICON, ignoringAboutMetadata.icon(confirmed in muda's Windows impl); not fixable from app code.Also introduces lucide-react for the icons this round touches (sidebar collapse/team/settings, chat min/max/restore) rather than more ad-hoc unicode glyphs, and swaps the pre-existing settings gear for the same Settings icon so both sidebar states match. Broader glyph replacement (pane/tab close ×, tab arrow ▸) is out of scope.
Testing
tsc --noEmitpass,pnpm test81/81 pass,cargo test21/21 pass (on this head, re-verified today)