Skip to content

[Feature] Restore in-sidebar channel list (or make it optional vs the popover) #587

Description

@brendandebeasi

Summary

The chat/conversation switcher in the agent portal is now a popover (PortalHistoryPopover) rather than a persistent list. For users with many channels per agent, this loses at-a-glance visibility into unread state, recently-active channels, and which conversation is currently selected. A persistent list (or at least an option to enable one) would close that gap.

Current state

  • interface/src/routes/AgentChat.tsx is a 5-line shim that renders <PortalPanel agentId={…} />
  • Channel/conversation switching lives in interface/src/components/portal/PortalHeader.tsx:116-130 as a PopoverRoot wrapping PortalHistoryPopover — click-to-open dropdown
  • The sidebar (interface/src/components/Sidebar.tsx:67-74) only exposes top-level agent sub-nav: Chat | Channels | Memory | Skills | Schedule | Config — no per-channel entries
  • This was introduced in commit c53a1e38 (2026-04-04, "SpaceUI migration: sidebar redesign…") which redesigned the sidebar to a fixed-shape accordion. Prior to that, channels were visible directly in the sidebar.

Proposed change

User-configurable switcher style:

  • New setting (Settings → Appearance, or per-agent): Channel switcher: sidebar | popover (default: keep current popover to avoid surprise; or flip if maintainers prefer)
  • When sidebar, render channel list under the agent in Sidebar.tsx with last-message preview + unread badge, similar to the pre-c53a1e38 layout
  • When popover, keep today's PortalHistoryPopover exactly as-is
  • Persist setting in localStorage (or per-user once [Feature] Multi-user accounts + role-based access control for the API/dashboard #584 lands)

Related

Open questions

  • Was the popover an intentional simplification, or a side-effect of the SpaceUI migration? If the latter, should the default be sidebar for power users with >5 channels per agent?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions