Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
677244c
feat(coc): read-only native Copilot CLI sessions dashboard view
plusplusoneplusplus Jun 12, 2026
818ffda
Improve Copilot Sessions panel UI
plusplusoneplusplus Jun 13, 2026
493acff
Make Copilot Sessions panel more compact
plusplusoneplusplus Jun 13, 2026
c282895
Dedup native Copilot sessions against CoC process store
plusplusoneplusplus Jun 13, 2026
95f3166
Deep-link Copilot Sessions and hide background-job sessions
plusplusoneplusplus Jun 13, 2026
beebde0
feat(coc): add compact LLM tool parameter summarization util + contra…
plusplusoneplusplus Jun 13, 2026
8187894
feat(coc): wire compact LLM tool param metadata into workspace config…
plusplusoneplusplus Jun 13, 2026
2b56735
feat(coc): compact expandable param summaries in LLM Tools settings
plusplusoneplusplus Jun 13, 2026
d2796fb
feat(coc): parse native Copilot session-state events.jsonl into rich …
plusplusoneplusplus Jun 13, 2026
494dd72
feat(coc): reconstruct native Copilot session detail conversation (AC…
plusplusoneplusplus Jun 13, 2026
6a9274b
feat(coc): render native Copilot session detail as a rich chat transc…
plusplusoneplusplus Jun 13, 2026
b28ca74
feat(coc): add Dreams tab to Knowledge nav group (AC-01)
plusplusoneplusplus Jun 13, 2026
3c9f5de
feat(coc): relocate Dreams provider activity into the Dreams tab (AC-05)
plusplusoneplusplus Jun 13, 2026
d72eb71
feat(coc): move dreams.enabled toggle into the Dreams tab (AC-03)
plusplusoneplusplus Jun 13, 2026
683a7ac
Add Dreams idle interval admin setting
plusplusoneplusplus Jun 13, 2026
04cada9
Add Dreams run defaults to admin tab
plusplusoneplusplus Jun 13, 2026
4788d07
Fix Dreams admin defaults dirty tracking
plusplusoneplusplus Jun 13, 2026
607d737
test(coc): cover LLM tools param affordance keyboard a11y + narrow-sc…
plusplusoneplusplus Jun 13, 2026
f3af238
docs(coc-knowledge): refresh Copilot Sessions tab for rich-transcript…
plusplusoneplusplus Jun 13, 2026
dc7ecb6
test(coc): render real ConversationTurnBubble for native reconstructe…
plusplusoneplusplus Jun 13, 2026
c36c349
test(coc): cover panel→mapper→real-bubble native transcript render path
plusplusoneplusplus Jun 13, 2026
a3067dc
fix(coc): make embedded Dreams admin panel scrollable
plusplusoneplusplus Jun 13, 2026
9f78962
Hide summary-only Copilot title sessions
plusplusoneplusplus Jun 13, 2026
39f265a
Add native CLI session parsers
plusplusoneplusplus Jun 13, 2026
9be7078
Add native CLI session providers
plusplusoneplusplus Jun 13, 2026
dc3c408
Wire native CLI session routes
plusplusoneplusplus Jun 13, 2026
b1869cd
Add CLI sessions dashboard tab
plusplusoneplusplus Jun 13, 2026
b605616
Harden Codex native session image parsing
plusplusoneplusplus Jun 13, 2026
71688e8
Deduplicate native CLI session list rows
plusplusoneplusplus Jun 13, 2026
cb2a76e
Consolidate native CLI sessions flag
plusplusoneplusplus Jun 13, 2026
106d692
Tighten Claude native session workspace scoping
plusplusoneplusplus Jun 13, 2026
c03f594
Default CLI sessions to Copilot
plusplusoneplusplus Jun 13, 2026
5f61f74
Test native CLI session HTML escaping
plusplusoneplusplus Jun 13, 2026
8d6507d
Move CLI Sessions sub-tab between Activity and Git
plusplusoneplusplus Jun 13, 2026
85b8d02
Capture Codex sub-agent tool calls
plusplusoneplusplus Jun 13, 2026
81906b0
Capture Claude sub-agent tool calls
plusplusoneplusplus Jun 13, 2026
8252410
Fix CI failures from new feature flags and Windows path encoding
plusplusoneplusplus Jun 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/skills/coc-knowledge/references/admin-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Cross-field constraints belong in `CLIConfigSchema`/`validateConfigWithSchema()`

The `spaHtml` function in `packages/coc/src/server/index.ts` reads the RuntimeConfigService snapshot on every page request, so feature-flag changes (e.g. `terminal.enabled`) take effect on the next browser reload — no server restart required.

Work Items expose live flags through this path: `workItems.hierarchy.enabled` enables the hierarchy board, `workItems.sync.enabled` enables remote provider integration, `workItems.aiAuthoring.enabled` enables AI-assisted authoring, and `workItems.workflow.enabled` gates the durable Work Items/Goals workflow command center. Sync UI helpers treat provider integration as enabled only when both hierarchy and sync flags are true; provider credentials stay external and are not admin config fields. The durable workflow flag is disabled by default and should gate new Work Items/Goals workflow behavior so existing Chat and Work Items behavior stays unchanged while the flag is off. Pull Requests exposes `pullRequests.enabled`, `pullRequests.suggestions`, and `pullRequests.autoClassifyTeam` through Admin -> Configure -> Features; auto-classifying Team PRs is disabled by default. Dedicated mode flags such as `forEach.enabled`, `mapReduce.enabled`, and `dreams.enabled` live as top-level namespaces and are disabled by default. `dreams.enabled` is the global Dreams gate; each workspace must also opt in through its `PerRepoPreferences.dreams.enabled` preference before dream generation can run. Additional Dreams config-file knobs tune automatic idle scheduling and analysis policy: `dreams.idleCheckIntervalMs`, `dreams.minIdleMs`, `dreams.confidenceThreshold`, `dreams.maxCandidates`, `dreams.conversationLimit`, and `dreams.timeoutMs`. Experimental dashboard/chat flags live under `features.*`; `features.gitCrossCloneCherryPick` enables the cross-clone cherry-pick commit context-menu modal and is enabled by default, `features.sessionContextAttachments` enables drag/drop session-context attachments in chat composers and is disabled by default, `features.ralphMultiAgentGrill` enables the Ralph grilling question-planning setup card, separate grill-agent calls, dedupe/provenance metadata, and grouped consolidated questions, and `features.commitChatLens` enables desktop review-chat lens placement for supported commit and PR chat surfaces. `features.ralphMultiAgentGrill` and `features.commitChatLens` are disabled by default. `features.commitChatLensDormantMode` (`'ghost'` | `'pill'`, default `'ghost'`) controls how the lens recedes when the cursor leaves: ghost fades to near-transparent with scale-down, pill collapses to a compact status pill. `features.autoAgentProviderRouting` is edited from Admin -> AI Provider, enables Auto provider routing, and is disabled by default.
Work Items expose live flags through this path: `workItems.hierarchy.enabled` enables the hierarchy board, `workItems.sync.enabled` enables remote provider integration, `workItems.aiAuthoring.enabled` enables AI-assisted authoring, and `workItems.workflow.enabled` gates the durable Work Items/Goals workflow command center. Sync UI helpers treat provider integration as enabled only when both hierarchy and sync flags are true; provider credentials stay external and are not admin config fields. The durable workflow flag is disabled by default and should gate new Work Items/Goals workflow behavior so existing Chat and Work Items behavior stays unchanged while the flag is off. Pull Requests exposes `pullRequests.enabled`, `pullRequests.suggestions`, and `pullRequests.autoClassifyTeam` through Admin -> Configure -> Features; auto-classifying Team PRs is disabled by default. Dedicated mode flags such as `forEach.enabled`, `mapReduce.enabled`, and `dreams.enabled` live as top-level namespaces and are disabled by default. `dreams.enabled` is the global Dreams gate; each workspace must also opt in through its `PerRepoPreferences.dreams.enabled` preference before dream generation can run. Admin -> Knowledge -> Dreams renders `dreams.enabled`, the restart-required `dreams.idleCheckIntervalMs` editor, and idle-run defaults for `dreams.provider`, `dreams.model`, and `dreams.timeoutMs`; interval and timeout are entered in minutes and persisted to the global config as milliseconds. Additional Dreams config-file knobs tune automatic idle scheduling and analysis policy: `dreams.minIdleMs`, `dreams.confidenceThreshold`, `dreams.maxCandidates`, and `dreams.conversationLimit`. Experimental dashboard/chat flags live under `features.*`; `features.gitCrossCloneCherryPick` enables the cross-clone cherry-pick commit context-menu modal and is enabled by default, `features.sessionContextAttachments` enables drag/drop session-context attachments in chat composers and is disabled by default, `features.ralphMultiAgentGrill` enables the Ralph grilling question-planning setup card, separate grill-agent calls, dedupe/provenance metadata, and grouped consolidated questions, `features.nativeCliSessions` enables the read-only provider-switched CLI Sessions surface over native Copilot/Codex/Claude stores and is disabled by default, and `features.commitChatLens` enables desktop review-chat lens placement for supported commit and PR chat surfaces. `features.ralphMultiAgentGrill`, `features.nativeCliSessions`, and `features.commitChatLens` are disabled by default. `features.commitChatLensDormantMode` (`'ghost'` | `'pill'`, default `'ghost'`) controls how the lens recedes when the cursor leaves: ghost fades to near-transparent with scale-down, pill collapses to a compact status pill. `features.autoAgentProviderRouting` is edited from Admin -> AI Provider, enables Auto provider routing, and is disabled by default.

The AI provider admin card stores `defaultProvider` as a top-level concrete fallback key. It accepts only `copilot`, `codex`, or `claude` and is used for provider-omitted flows when Auto routing is disabled; individual chat payloads can still set `payload.provider`, and follow-ups continue with the provider recorded on the original process. `features.autoAgentProviderRouting` is the sole user-controlled Auto enablement switch. When it is true, provider-omitted new chats, tasks, and API-created work route through `agentProviderRouting.auto` by default; explicit provider selections still win. Auto routing profile configuration lives under `agentProviderRouting.auto`, with the default ordered profile `claude -> codex -> copilot`, normal thresholds `33/33/10`, matching weekly guard thresholds, and fallback `copilot`. The Admin -> AI Provider -> Provider routing subtab contains the Auto enable toggle, ordered rule editor, fallback selector, weekly-guard help text, and current-selection preview; Admin -> Configure -> Features does not expose a second Auto routing toggle.

Expand Down
25 changes: 22 additions & 3 deletions .github/skills/coc-knowledge/references/dashboard-spa.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ spa/client/react/
│ ├── chat/ # Chat UI: ChatDetail, ChatListPane, ConversationArea
│ ├── dreams/ # Workspace Dreams review panel with feature/opt-in states, queue-backed run-now task summary, provider-attributed Activity/Admin AI Provider visibility, filters, plain-language card guidance, source evidence links, and card lifecycle actions
│ ├── memory/ # Memory V2 route, facts/review/episodes tabs, repo memory settings section
│ ├── native-copilot-sessions/ # Read-only CLI Sessions tab over native Copilot/Codex/Claude stores (see CLI Sessions Tab)
│ ├── notes/ # Notes UI: NoteEditor, Mermaid zoom/pan, sidebar, multi-root dropdown with modifier/range root selection and bulk root removal (useNotesRoots)
│ ├── pull-requests/ # PR dashboard: attention groups, provider-derived PR helpers, shared provider-id/displayName Team author matching, Team auto-classification triggers, real diff-stat queue badges/risk, deterministic review summary, BatchCommandPanel
│ └── terminal/ # Terminal UI: TerminalView, pin/unpin
Expand Down Expand Up @@ -520,13 +521,21 @@ The legacy "Tools" popover has been migrated into the Admin page's left
sidebar, but there is no longer a generic Tools group. The Admin sidebar is
grouped by user task: Configure, Knowledge, Connections, Operations, and
Developer / Internals. Embedded tool rows keep stable ids (`memory-toggle`,
`skills-toggle`, `logs-toggle`, `stats-toggle`,
`skills-toggle`, `dreams-admin-toggle`, `logs-toggle`, `stats-toggle`,
`servers-toggle`) and `data-tab` still carries the matching dashboard route;
Servers is shown only when `isServersEnabled()` is true.
Servers is shown only when `isServersEnabled()` is true. The Knowledge group's
**Dreams** row (`dreams-admin-toggle`, route `#dreams-admin`) renders
`features/dreams/DreamsView.tsx` and is the admin home for global Dreams config:
the live `dreams.enabled` toggle, `dreams.idleCheckIntervalMs` edited in minutes
with a restart hint, idle-run defaults for provider, model, and timeout
(`dreams.provider`, `dreams.model`, `dreams.timeoutMs`), and the relocated
**Dreams provider activity** queue + history section
(`features/dreams/ProviderActivitySection.tsx`); that section no longer lives on
the AI Provider page. It is distinct from the per-workspace `DreamsPanel`.

Clicking an embedded tool row dispatches `SET_ACTIVE_TAB` and updates
`location.hash` to the corresponding top-level route (`#memory`, `#skills`,
`#logs`, `#stats`, `#servers`). The Router maps every embedded tool
`#dreams-admin`, `#logs`, `#stats`, `#servers`). The Router maps every embedded tool
tab plus `'admin'` itself to a single `<AdminPanel />` render, so the admin shell
(sidebar + breadcrumb + right pane) stays mounted across navigation.
`AdminPanel` switches on `state.activeTab` — when it matches an embedded tool
Expand Down Expand Up @@ -566,6 +575,16 @@ Ralph activity deep-links mount `RalphWorkflowPane`, which shows a unified task

The repo-scoped Dreams tab (`features/dreams/DreamsPanel.tsx`) is a dedicated review surface separate from Work Items. It is included in repo tab strips only when the global `dreams.enabled` feature flag is on, then requires the workspace `preferences.dreams.enabled` opt-in before calling Dreams routes. Once enabled, it lists visible cards by default, supports status filters for hidden lifecycle history, exposes a manual **Run dream now** action, shows run summaries/no-new-dreams states, links source process turn ranges back to the Activity conversation route, and offers card lifecycle actions: approve, dismiss, record conversion, and supersede. Approved cards also expose an explicit **Take next action** dialog: skill/prompt cards can queue an Ask-mode skill-hardening task, user-workflow cards can save to Notes or Memory V2, and product cards can create a new Work Item or append the recommendation to an existing Work Item. Each next action runs only after the dialog submit and then records the resulting artifact as a dream conversion.

## CLI Sessions Tab

The repo-scoped `CLI Sessions` tab (`features/native-copilot-sessions/NativeCopilotSessionsPanel.tsx`, exported as `NativeCliSessionsPanel`) is a read-only provider-switched view of native Copilot, Codex, and Claude Code CLI sessions for the active workspace. It is gated by `features.nativeCliSessions` / `nativeCliSessionsEnabled` (disabled by default; `useNativeCliSessionsEnabled()` tracks live runtime-config updates), reads through `coc-client`'s `nativeCliSessions` domain, and registers as the `cli-sessions` repo sub-tab while accepting the legacy hidden `copilot-sessions` key for old links. The panel renders a two-pane layout on wide screens (searchable session list left at a clamped ~42% width, selected-session detail right) and stacked single-pane navigation on narrow screens. A provider switcher defaults to Copilot for legacy compatibility and selects Copilot, Codex, or Claude; the header uses the shared `ProviderBadge` palette (Copilot green, Codex indigo, Claude coral), a provider-specific native-session label, and a read-only badge whose tooltip shows the selected provider's local store path.

The list supports text query, session-ID, branch, date-range filters, and pagination. Codex and Claude use on-demand substring search over JSONL transcripts and report `searchIndexAvailable: false`; when a query is active the panel explains that there is no native search index. Copilot delegates to the native SQLite provider and reports its native search-index availability. Each list row shows a short session-ID chip, updated timestamp, two-line summary preview, repository/cwd, optional match snippets, and right-aligned turn-count and branch pills; the selected row gets a left accent bar. The selected session is deep-linked through the URL hash (`#repos/{wsId}/cli-sessions/{provider}/{sessionId}`, parsed/built via `parseNativeCliSessionDeepLink`/`buildNativeCliSessionHash`) so selections survive refresh/back-forward and are shareable; `#repos/{wsId}/copilot-sessions/{sessionId}` is parsed as a legacy Copilot provider link.

The list route deduplicates against the Activity tab: native sessions whose provider session ID matches a CoC process `sdk_session_id` for the workspace (resolved via `ProcessStore.getSdkSessionIds(workspaceId)`) are hidden, and the response `deduplicatedCount` drives a `native-sessions-deduplicated` hint reading `N sessions hidden — already tracked in CoC Activity`. Automated Copilot background-job sessions whose first turn matches `BACKGROUND_JOB_PROMPT_PREFIXES` are hidden by default and counted in `backgroundJobCount`, which drives a `native-sessions-background-hidden` hint. The panel renders distinct disabled/unavailable (`store-missing`/`store-invalid`)/loading/empty/error states per provider.

The detail pane reconstructs the selected session as a rich CoC chat transcript rather than a plain text dump. The unified detail endpoint (`GET /api/workspaces/:id/native-cli-sessions/:sessionId?provider=...`) returns provider-tagged metadata, `storePath`, `searchIndexAvailable`, and an always-present `conversation: ReconstructedConversationTurn[]`. Copilot reconstruction prefers the native `session-state/<id>/events.jsonl` log and falls back to flat `session-store.db` turns; Codex and Claude reconstruction comes from defensive JSONL parsers that skip malformed or unknown records and preserve user/assistant messages, tool start/complete/failed timeline items, thinking/reasoning, data-URL images, and model metadata when present. Codex `event_msg` user-message image metadata is merged into the matching user turn; `local_images` paths are shown as read-only markdown references because the existing chat image gallery only renders data URLs. The SPA maps each turn to `ClientConversationTurn` via `nativeConversationTurns.ts` (`toClientConversationTurns`, folding assistant `thinking` into a leading markdown blockquote since `ClientConversationTurn` has no reasoning field) and renders one read-only `ConversationTurnBubble` per turn under a `native-session-conversation` card (`Conversation (N)`) with the selected provider passed through for avatar coloring. The whole feature is strictly read-only: no input box, streaming, resume, follow-up, archive, pin, delete, retry, or turn actions are exposed; stored HTML/scripts never execute.

## Memory Route

The top-level `#memory` route is embedded in the Admin shell's Knowledge group and renders `MemoryV2Panel` in the right pane. The panel root owns the stable `#view-memory` id. `MemorySubTab` values are `facts`, `review`, `episodes`, and `settings`; hash links such as `#memory/review` and `#memory/settings` select the matching V2 tab. The legacy memory-config panel is not rendered on the Memory route (the tool-call/explore cache has been removed). Repo settings still use `RepoMemorySection` for repo-scoped bounded memory and raw memory inspection.
Expand Down
Loading
Loading