Skip to content

ADR 0120: Primary work surface — Intercom or Editor (Agent / Editor analogue)

Status: Accepted · Implemented
Date: 2026-05-17

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

  1. Forward is mentally fixed as editor in the default layout — agent-central users perceive chat peripherally.
  2. Monitor confusion: “center screen” ≠ OS primary display — see 0017; need a separate primary_work_surface axis.
  3. 0119 (slashes) and topic cards win when Intercom is already in the forward anchor; without 0120 architecture stays “chat on the side”.
  4. 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 / Editor or Agent / 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.
  • ChatInput is the natural session command line; slash commands (0119) become the primary path to build / 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_surface with OS primary monitor.
  • Mandatory presentation string 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:

  1. Setting + toggle + host swap in MainWindow (no presentation change).
  2. MFD editor page when intercom.
  3. TOML “agent-central” preset + UX docs.
  4. 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

  1. Only change presentation without a separate key — insufficient for one monitor and quick Agent/Editor toggle.
  2. Chat always in Forward, editor only in popup — breaks MCP/debug parity and familiar MFD shell.
  3. 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).