Room redesign: server rooms rail + chat-panel polish#357
Merged
Conversation
Layout polish on the room screen, continuing the design-system sweep. - Thread sidebar: pad the thread list (it sat flush against the panel's top/bottom borders) and give the top action row real breathing room (s1 -> s2 all-round). - "New Thread" is now the primary call to action: SoliplexButton.filled in an Expanded slot so it fills the row to the right of the compact "Lobby" back link. Previously a low-emphasis text button that read as no more important than the back link. - Cap the conversation column (message timeline + chat input) at SoliplexBreakpoints.desktop (840) and centre it, so it stays readable on ultrawide displays instead of stretching edge to edge. A no-op below the cap, so narrow/mobile layouts are unchanged. - Design-system adoption: replace the hardcoded wide breakpoint literal (600) with SoliplexBreakpoints.tablet, and the raw document-chip Wrap spacing (4) with SoliplexSpacing.s1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Switch the thread list padding from vertical-only to all-round so a selected tile's highlight no longer makes edge contact on the horizontal panel borders. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implements Erik's "AMIA room" redesign: a compact, always-visible rooms rail to the left of the thread sidebar. - New RoomRail (ui/room_rail.dart): a Discord-style rail listing the current server's rooms as initial avatars, each tinted by a stable hash of the room name (roomAvatarColor); the selected room carries a leading bar. Creating rooms is deferred — this lists only. Rooms are fetched in RoomScreen via api.getRooms() with loading/error/retry. - The rail footer is a single ⋮ menu folding the account identity (icon + name + email, from /api/user_info, best-effort) and the developer utilities (Network Inspector, Versions). These three moved out of the thread sidebar's bottom, which is now gone. - "Back to Lobby" stays where it is (thread sidebar top) — common navigation, deliberately kept out of the menu. - Room info moved to an icon button beside the room name in the chat header (top-left). - Layout: wide = rail | thread sidebar | chat; narrow = both panels fold into the drawer, chat is the body. ThreadSidebar loses onNetworkInspector/onVersions/onRoomInfo/roomName. Note: avatar colors use HSL-from-hash rather than a literal swatch table to honour the no-hex-literal rule outside soliplex_design; a baked brand palette would need a design-system token (deferred). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Prep for the future right-hand side panel (documents / info), which will toggle from the top-right corner. - Room info icon button moves from beside the room name to the top-right corner, grouped with the documents control. - The "weird" files chip (leading icon + "N room · N thread" label + expand chevron in a container) becomes a simple icon button (folder_outlined; spinner while uploading, error glyph on failure). The count moves from a visible label to the button's tooltip; tapping still toggles the same attached-files panel. The thread's document filter in the composer is unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The room-info/documents buttons sat mid-row: a Flexible title beside a Spacer split the free space between the title's slot and the spacer, stranding the buttons in the gap. Use an Expanded title and drop the Spacer so the title consumes the leading space and the buttons pin right. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Message controls (copy / thumbs / inspect) were bare 20px icons with no padding: add s1 padding inside each so they breathe and get a real tap target, and bump the bubble→controls gap to s2. - Align user messages to the right, assistant to the left (per-message crossAxisAlignment; the controls row shrinks to its content so it tracks the bubble's edge). - Speech-bubble corners: tighten the trailing bottom corner toward the author — bottom-right for the user, bottom-left for the assistant; the other three stay at the md radius. - Execution (events) card: round it at md to match the message bubbles (was sm); it keeps uniform rounding on every corner. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Completed steps and done tool activities painted their check_circle with colorScheme.primary; a successful result is a status and belongs to SymbolicColors.success (matching the quiz "correct" treatment). Failures keep colorScheme.error; the thinking-completed accent stays tertiary (reflection, not a pass/fail outcome). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The file-panel's persisted-upload check_circle used colorScheme.primary; a successfully uploaded file is a success result -> SymbolicColors success. Keeps it consistent with the room-info upload list, which gets the same migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jun 16, 2026
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.
Reworks the room screen per Erik's "AMIA room" mockup, plus a design-system polish sweep of the chat panel. Frontend-only; no behavioural changes to agent/thread logic.
Layout & navigation
ui/room_rail.dart) — always-visible, Discord-style list of the current server's rooms as initial avatars, each tinted by a stable name-hash (roomAvatarColor). Selected room gets a leading bar; the name is in a tooltip. Rooms are fetched viaapi.getRooms()with loading / error-with-retry states. Creating rooms is deferred — this lists only.GET /api/user_info; Guest when unauthenticated) plus Network Inspector and Versions — relocated out of the thread sidebar's (now removed) bottom section.rail | thread sidebar | chat. Narrow: both panels fold into the drawer; chat is the body.Earlier polish (same branch)
SoliplexBreakpoints.desktopon ultrawide.Chat panel cleanup
mdto match bubbles (wassm), uniform on all corners.SymbolicColors.success(werecolorScheme.primary); failures keepcolorScheme.error.Notes
soliplex_design; a baked brand palette would need a design-system token (deferred).CopyButtonpadding change lives in sharedlib/src/shared/copy_button.dart, so it also applies wherever else it's used.Verification
flutter analyzeclean; full suite green (1656), incl. newroom_rail_test.dart.🤖 Generated with Claude Code