Skip to content

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

@brendandebeasi

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions