Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Real Conversation Layout — part 3 (the compact clamp and the code map)

The last details of the Real Conversation Layout: how the cold-mount fetch interacts with the compact clamp, and a map of the code the whole feature lives in. Part 1 covers the visible layout and its setting; part 2 covers how the panel decides what to render.

What it is

The closing details of the Real Conversation Layout: the interaction between the cold-mount fetch and the compact clamp, and a map of the code the feature lives in. Read real-conversation-layout.md for the visible layout and real-conversation-layout-part-2.md for the rendering rules; this part is the remaining edge and the implementation pointers.

Where to find it

Nothing to open. This part describes background behaviour and where the code lives, so it has no menu, button or setting — the layout's own toggle is described in part 1.

How it behaves

How the cold-mount fetch interacts with the /compact clamp

With the layout on, cold-mount fetches the whole session history (no /compact clamp, no row-window limit) in lite shape. The clamp was a workaround for the wall-of-noise problem — once auto-continues and tool chatter are gone, the real conversation is small enough that loading it whole is faster than maintaining the clamp + the "Load older" plumbing. Lite shape keeps the payload small because each row carries summary_prose instead of content.

With the layout off, the cold-mount path falls back to the prior behavior — /compact-clamped on desktop, mobile-windowed on mobile, lite shape preserved.

This is not a reversal of the load-older-pill-restored postmortem. That postmortem's pill existed because the clamp hid real messages; the new layout hides nothing among real messages, so the pill has nothing to do (R7 of the build contract). The decision is enforced by the lint tests at tests/unit/lint/session-history-elegant-contract.test.ts and tests/unit/lint/lite-warmer-coverage.test.ts, which were updated in the same branch to allow the layout's decoupled useCompactClamp / useLite shape.

For agents

Where it lives in code

What Where
Pure aggregator buildRealConversationTurns() src/renderer/src/lib/real-conversation-turns.ts
Incremental prefix-reuse wrapper buildTurnsIncremental() (byte-identical streaming fast path; kill switch AMC_DISABLE_INCREMENTAL_TURNS=1) src/shared/incremental-real-conversation-turns.ts
Turn presentation wrapper (merged-vs-plain shape pick + CompactingIndicator) src/renderer/src/features/sessions/TurnGroup.tsx
Per-turn merged bubble (header toggle + expansion panel + final-answer body + thinking timer) src/renderer/src/features/sessions/MergedTurnBubble.tsx
MessageBubble slot props that the merged bubble drives (headerIdentitySlot + aboveBodySlot) src/renderer/src/components/ui/MessageBubble/MessageBubble.tsx
Inter-compaction activity bubble (rev-11; only used by renderSystemEntry after rev-13) src/renderer/src/features/sessions/TurnActivityBubble.tsx
Live elapsed-time timer hook (ticks once a second while in-flight) src/renderer/src/hooks/useThinkingTimer.ts
Compact elapsed formatter (5s / 1m 45s / 12m / 1h 2m) formatThinkingElapsed in src/renderer/src/lib/utils.ts
List renderer for turns src/renderer/src/features/sessions/RealConversationList.tsx
Cold-mount render branch + load-older suppression src/renderer/src/features/sessions/SessionPanel.tsx
Cold-mount fetch path (drops clamp when layout is on, keeps lite) src/renderer/src/features/sessions/useSessionPanel/useSessionHistoryLoader.ts
Settings field on AppSettings src/shared/types.ts (realConversationLayoutEnabled?: boolean, default true)
Zod field on updateSettingsSchema src/shared/ipc-schemas.ts
Settings UI toggle row src/renderer/src/features/settings/sections/performance/PerformanceSettings.tsx (PERFORMANCE_DEFINITIONS entry, id real-conversation-layout)
Settings-search synonyms src/renderer/src/features/settings/settings-search-index.ts
Lazy per-turn content fetch (reused) SESSION_GET_TURN_CONTENT IPC — see lazy-content-load.md
Real-reply classifier — primary signal has_tool_activity column on conversation_messages — see lazy-content-load.md
Real-reply classifier — kill-switch fallback isRealMessageProse in src/renderer/src/components/ui/agent-message-heuristics.ts
Final-message marker ([[OMNISCIO_FINAL]], opt-in) — toggle + nudge finalMessageMarkerEnabled (Settings → Features) + FINAL_MESSAGE_MARKER_NUDGE / resolveFinalMessageMarkerPrompt in src/main/process/spawn-build.ts
Final-message marker — detection (shared split honored by all 3 walkers) FINAL_MESSAGE_RE / splitOnFinalMessageMarker in src/shared/agent-content-markers.ts; contract summary-prose-contract.md § Final-message marker
Implicit dev-pipeline gate boundary (all 6 gates) — a ## <phase-emoji> <circle> <title> gate header folds the wrap-up above it like [[OMNISCIO_FINAL]] when the [DEV-PIPELINE | GATE n | …] marker is present splitOnFinalBoundary / isDevPipelineGateHeader / hasDevPipelineGateMarker in src/shared/agent-content-markers.ts; contract summary-prose-contract.md § Implicit dev-pipeline gate boundary
Dev-pipeline gate stepper (render-only) — the trailing [DEV-PIPELINE | GATE n | verdict] marker renders as the full 8-disc pipeline display track (bundled-standards gates lit in-track; unknown user customs get a single-disc badge) GatePipelineStepper in src/renderer/src/components/ui/GatePipelineStepper.tsx; parser parseTrailingGateMarker in src/shared/agent-content-markers.ts; contract gate-stepper-contract.md
Build contract .claude/memory/project_real_conversation_layout.md

Related

Start at real-conversation-layout.md for the layout itself and its settings toggle, then real-conversation-layout-part-2.md for how the panel decides what to render. Together the three cover the feature end to end.

Last verified 2026-10-05