Skip to content

Room redesign: server rooms rail + chat-panel polish#357

Merged
91jaeminjo merged 8 commits into
mainfrom
polish/room
Jun 16, 2026
Merged

Room redesign: server rooms rail + chat-panel polish#357
91jaeminjo merged 8 commits into
mainfrom
polish/room

Conversation

@WilliamKarolDiCioccio

Copy link
Copy Markdown
Collaborator

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

  • New compact rooms rail (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 via api.getRooms() with loading / error-with-retry states. Creating rooms is deferred — this lists only.
  • Rail footer ⋮ menu folds in the account identity (avatar + name + email, best-effort GET /api/user_info; Guest when unauthenticated) plus Network Inspector and Versions — relocated out of the thread sidebar's (now removed) bottom section.
  • Back to Lobby stays in the thread sidebar top (common nav, deliberately kept out of the menu).
  • Wide layout: rail | thread sidebar | chat. Narrow: both panels fold into the drawer; chat is the body.
  • Room info + documents moved to the header's top-right corner (the anchor for a future right-hand side panel). The "weird" files chip (icon + "N room · N thread" label + chevron) is now a simple icon button — count moved to its tooltip; still toggles the same attached-files panel. The composer's document filter is unchanged.

Earlier polish (same branch)

  • Thread list inset on all sides; prominent filled "New Thread" CTA; conversation column capped + centred at SoliplexBreakpoints.desktop on ultrawide.

Chat panel cleanup

  • Message controls (copy / thumbs / inspect) get internal padding (breathing room + real tap targets); bubble→controls gap widened.
  • User messages align right, assistant left; the trailing bottom corner tightens toward the author (bottom-right user / bottom-left assistant).
  • Execution (events) card rounded at md to match bubbles (was sm), uniform on all corners.
  • Completed steps / done tool activities now use SymbolicColors.success (were colorScheme.primary); failures keep colorScheme.error.

Notes

  • Avatar colors use HSL-from-hash, not a literal swatch table — a fixed hex palette would violate the no-hex-literal rule outside soliplex_design; a baked brand palette would need a design-system token (deferred).
  • The CopyButton padding change lives in shared lib/src/shared/copy_button.dart, so it also applies wherever else it's used.

Verification

  • flutter analyze clean; full suite green (1656), incl. new room_rail_test.dart.

🤖 Generated with Claude Code

WilliamKarolDiCioccio and others added 8 commits June 15, 2026 21:19
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>
@91jaeminjo 91jaeminjo merged commit 8b99963 into main Jun 16, 2026
6 checks passed
@91jaeminjo 91jaeminjo deleted the polish/room branch June 16, 2026 19:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants