docs/design/2026-08-03-web-shell-channel-session-sidebar.md
Daemon-managed channels create ordinary workspace sessions with
sourceType: "channel", but the Web Shell sidebar intentionally requests only
the default session catalog. A session started from DingTalk, Feishu, or
another channel therefore cannot be opened from the sidebar even though it is
stored in the selected workspace.
Add a two-option source switch above the sidebar's project session list:
sourceType: "default" and remains the initial selection.sourceType: "channel".The switch is shown only when the daemon advertises
session_source_metadata. Older daemons keep the current unfiltered request
and do not show a control they cannot support.
The selected source is applied consistently to active, pinned, archived, and secondary-workspace session requests. Existing session rows, workspace sections, grouping, search, polling, and open-session actions are reused. Because channel sessions can be created by external messages without a Web Shell mutation event, the expanded Channels list uses the active-session poll interval instead of the 30-second idle interval.
When the selected workspace also advertises channel_management, the Channels
catalog joins each session's immutable channel instance name (sourceId) to
the current channel configuration and groups sessions by config.type. The
type catalog supplies the platform label, so multiple instances of the same
platform share one collapsible section. Sessions whose instance no longer
exists remain visible under Other channels. If the catalog is unavailable, the
list keeps its existing fallback instead of hiding sessions. Channel type grouping
overrides user-defined session groups in the Channels view; Tasks keeps its
existing organization behavior. Secondary workspaces resolve their own
workspace-scoped channel catalog.
Channel adapters still prepend their model-facing instructions and contextual history. The daemon prompt carries the user-authored text separately as transcript display metadata, so live and replayed Web Shell messages do not expose that hidden context and channel session titles derive from the same visible text.
session_source_metadata.sourceType: "default".sourceType: "channel" for primary and
workspace-qualified lists.