ADR 0120: Primary work surface — Intercom or Editor (Agent / Editor analogue)¶
Status: Accepted · Implemented
Date: 2026-05-17
Related ADRs¶
| ADR | Role |
|---|---|
| 0017 | PFD / Forward / MFD topology, presentation, multi-window |
| 0021 | Attention anchors; Forward = forward field of view |
| 0010 | UI modes in TOML; place for “agent-central” preset |
| 0028 | %LocalAppData%\CascadeIDE\settings.toml |
| 0080 | Intercom — session channel, not “chat widget” |
| 0098 | Editor — powerful channel, not sole truth |
| 0044 | Skia host for agent chat surface |
| 0072 | Topic cards in overview/detail |
| 0119 | Slash commands in ChatInput — stronger when Intercom is central |
| 0121 | IOP: discipline of communication; Intercom as goal-centric hub; honest stream limits |
| 0074 | MFD density in a narrow column |
Outside ADR¶
| Document | Role |
|---|---|
| ui-ux/README.md | Current Flight line; legacy Focus/Balanced/Power — archive |
| iop-manifest-v1.md | IOP: Intercom communication hub; no promise to digest any inbound stream |
Summary¶
- New setting
primary_work_surface:intercom|editor(analogue of Agent / Editor in Cursor). - Defines what occupies the Forward anchor (forward field): full Intercom (chat + catalog + spine) or code editor.
- Secondary contour (MFD) shows the other surface (editor or shell pages) without losing features.
- Do not confuse with OS primary monitor (0017 § primary vs Forward).
- Product default:
editor; “like Cursor” preset —intercom. Ties to 0119. - With
intercom, the forward anchor is not a “message feed” but the communication hub around a goal (people + agents → intent → implementation), see 0121, iop-manifest-v1.md.
Context¶
Some users (including when working in Cursor with chat on the main screen) spend most of the session in agent dialogue. For them the cockpit metaphor “Forward = editor, chat on MFD” is inverted relative to real attention: center is thought and conversation, code on demand.
CIDE already has:
- three anchors PFD / Forward / MFD (0021);
- Intercom as product model (0080, 0072, 0096);
- configurable screen topology via
presentation(0017); - UI modes in TOML (0010).
Missing: an explicit “what is in the center” switch without manual monitor rearrangement and without changing the whole presentation string.
Problem¶
- Forward is mentally fixed as editor in the default layout — agent-central users perceive chat peripherally.
- Monitor confusion: “center screen” ≠ OS primary display — see 0017; need a separate
primary_work_surfaceaxis. - 0119 (slashes) and topic cards win when Intercom is already in the forward anchor; without 0120 architecture stays “chat on the side”.
- Risk of “removing the editor”: product goal is change default focus, not abandon code (0098).
Decision¶
1. primary_work_surface axis¶
Allowed values:
| Value | Forward anchor | Typical editor placement |
|---|---|---|
editor (CIDE default) |
Code editor (AvaloniaEdit) | MFD: Intercom / chat shell page |
intercom |
Intercom (full ChatPanel + Skia: overview, spine, detail) |
MFD: Editor as page or docked panel; PFD unchanged in meaning |
Invariant: both surfaces remain available; only the default attention anchor changes, like Agent / Editor toggle in Cursor.
2. Orthogonality to other axes¶
| Axis | Question | Relation to primary_work_surface |
|---|---|---|
presentation (0017) |
How many windows and P/F/M shares | Independent: (P+F+M) on one display and intercom in Forward |
| OS primary monitor | Where Windows puts taskbar | Does not set Forward; see 0017 §5 |
| UiMode / Flight (0010) | Panel visibility, capabilities | May narrow chrome (Dark Cockpit); does not replace anchor |
| Melody / Chords (0060) | M/P/F zone focus | Kept; focus_forward focuses forward anchor (chat or editor) |
3. UX contract for switching¶
- Explicit toggle in UI (toggle, menu item, optional hotkey) — labels
Intercom/EditororAgent/Editor(copy TBD in UX; data canon —intercom|editor). - Switching does not reset chat session or close open files; only Forward host and default MFD page change.
- State persisted in
settings.toml(0028).
4. Configuration (target schema)¶
# settings.toml (fragment)
[workspace]
primary_work_surface = "intercom" # "editor" | "intercom"
Optionally in UiModes/Flight.toml (or separate AgentCentral.toml preset):
primary_work_surface = "intercom"
# capabilities: wider chat, narrower IDE Health strip, …
Default when key missing: editor (compatible with current CIDE).
5. Relation to Intercom and 0119¶
When primary_work_surface = intercom:
- Forward shows topic catalog, spine, detail — 0072, 0096.
ChatInputis the natural session command line; slash commands (0119) become the primary path tobuild/test/card, not peripheral.
When editor — behavior as today; 0119 remains useful but chat need not be central.
5.1. Intercom-central ≠ endless stream¶
primary_work_surface = intercom does not mean “everything inbound in one feed” and does not promise that the product or agents will handle any volume of human messages — without structure, people cannot either (0121 § “Risks and boundaries”, iop-manifest-v1.md § “Honestly about human message volume”).
What central Intercom is for:
- lines of work (topic cards, spine) instead of chaotic chat;
- clarification batches and threads (0031);
- intent-first and slash/MCP as one contract (0119);
- the human in Forward is arbiter of intent and delta, not dispatcher of every message.
0120 changes the attention anchor; IOP and the topic catalog define how that anchor does not become noise.
6. Editor when Intercom-central¶
- Editor is not removed: move to MFD “Code” page / dock / split — layout detail in implementation.
- Go to definition, open file from chat, anchors 0080 — still move focus to editor (temporary or with surface switch), without breaking deep links.
- Semantic map / PFD need not move to Forward.
Non-goals¶
- Replacing the three-zone PFD / Forward / MFD model with “chat only”.
- Identifying
primary_work_surfacewith OS primary monitor. - Mandatory
presentationstring change on every Agent/Editor toggle. - Removing Editor mode or abandoning AvaloniaEdit in Forward forever.
- Endless feed as the target UX for Intercom-central — contradicts 0080, 0072, 0121.
Implementation anchors (plan)¶
| Component | Role |
|---|---|
settings.toml |
workspace.primary_work_surface |
MainWindow / MainGrid |
conditional host in Forward column |
MfdShellView / secondary pages |
second surface when intercom |
MainWindowViewModel |
property + switch command; save to settings |
IdeCommands (optional) |
set_primary_work_surface, toggle_primary_work_surface for MCP |
| 0119 | slash implementation — after or parallel with host swap |
Order:
- Setting + toggle + host swap in
MainWindow(nopresentationchange). - MFD editor page when
intercom. - TOML “agent-central” preset + UX docs.
- MCP / hotkey as needed.
Open decisions (before Accepted)¶
| # | Question | Direction |
|---|---|---|
| 1 | UI labels: Intercom vs Agent | Product: Intercom (0080); Cursor users — alias “Agent” on toggle |
| 2 | Editor on MFD: separate page vs dock | Page v1 (simpler parity with current shell) |
| 3 | Auto-switch to Editor on go-to-definition | Optional v2; v1 — explicit transition |
Diagram¶
flowchart LR
subgraph editor_mode [primary_work_surface = editor]
F1[Forward: Editor]
M1[MFD: Intercom page]
end
subgraph intercom_mode [primary_work_surface = intercom]
F2[Forward: Intercom]
M2[MFD: Editor page]
end
toggle[User toggle / settings.toml]
toggle --> editor_mode
toggle --> intercom_mode
Rejected alternatives¶
- Only change
presentationwithout a separate key — insufficient for one monitor and quick Agent/Editor toggle. - Chat always in Forward, editor only in popup — breaks MCP/debug parity and familiar MFD shell.
- New fourth “Intercom” anchor instead of Forward swap — bloats 0021 without need.
Change history¶
| Date | Change |
|---|---|
| 2026-05-17 | Proposed: primary_work_surface (intercom | editor), Forward/MFD swap, link to 0119. |
| 2026-05-17 | §5.1: Intercom-central = goal-centric communication hub; stream boundaries (0121, IOP manifest). |