# Editor / IDE — `/exocore/editor` The Exocore IDE is a full Monaco-and-CodeMirror powered code editor with file explorer, integrated terminal (xterm + node-pty), package managers, AI assistant, GitHub pane, Drive pane, language servers, and a webview for live previews. Entry point: [`client/editor/coding.tsx`](../../client/editor/coding.tsx). Layout shell: [`client/editor/Layout.tsx`](../../client/editor/Layout.tsx). Every screenshot below was captured by [`scripts/capture-editor.ts`](../../scripts/capture-editor.ts) against a freshly seeded `exorepo-demo` (Node) project. Mobile shots come from a 414×896 iPhone profile; desktop shots from a 1440×900 Chromium 138 window. ## Per-frame docs (one MD per screenshot) Each frame in the gallery below has its own dedicated walkthrough — click the title to jump straight to it on GitHub: | # | Frame | Doc | |---|-------|-----| | 00 | Panel gate | [`00-panel-gate.md`](./00-panel-gate.md) | | 01 | Default editor view | [`01-editor-default.md`](./01-editor-default.md) | | 02 | Explorer · open file | [`02-editor-explorer-file.md`](./02-editor-explorer-file.md) | | 03 | Integrated terminal | [`03-editor-terminal.md`](./03-editor-terminal.md) | | 04 | Console pane | [`04-editor-console.md`](./04-editor-console.md) | | 05 | Webview / preview *(desktop)* | [`05-editor-webview.md`](./05-editor-webview.md) | | 06 | Problems pane | [`06-editor-problems.md`](./06-editor-problems.md) | | 07 | NPM sidebar | [`07-sidebar-npm.md`](./07-sidebar-npm.md) | | 08 | GitHub sidebar | [`08-sidebar-github.md`](./08-sidebar-github.md) | | 09 | Drive sidebar | [`09-sidebar-drive.md`](./09-sidebar-drive.md) | | 10 | AI sidebar | [`10-sidebar-ai.md`](./10-sidebar-ai.md) | | 11 | Code-history modal | [`11-history-modal.md`](./11-history-modal.md) | | 12 | Settings modal | [`12-settings-modal.md`](./12-settings-modal.md) | | 13 | Settings · theme switch | [`13-settings-theme-changed.md`](./13-settings-theme-changed.md) | | 14 | PyLib pane (Python project) | [`14-sidebar-pylib.md`](./14-sidebar-pylib.md) | ## Layout ``` ┌─ Title bar ───────────────────────────────────────────────┐ │ Exocore · project / file path · 🔍 cmd-K · 🌗 theme │ ├─ Sidebar tabs ─────┬─ Tabs (open files) ──────────────────┤ │ ▾ Explorer (📁) │ index.ts ✕ utils.ts ✕ README.md ✕ │ │ project tree ├─ Editor pane ────────────────────────┤ │ ▾ NPM (📦) │ Monaco (or CodeMirror per language) │ │ ▾ GitHub (🌿) │ with LSP completion / diagnostics │ │ ▾ Drive (☁) │ │ │ ▾ AI (🤖) │ │ ├────────────────── ├─ Bottom panel ───────────────────────┤ │ │ [problems] [console] [terminal] [webview] └────────────────────┴───────────────────────────────────────┘ Status bar — git branch · LSP · runtime · cursor ``` `SidebarTab = 'explorer' | 'npm' | 'github' | 'drive' | 'ai'` `BottomPanel = 'problems' | 'console' | 'terminal' | 'webview' | 'none'` ## Walkthrough ### 00 — Panel gate The first thing a fresh browser sees is the per-machine panel-devs gate (`/exocore/`). Until a panel admin (e.g. `Choruyt`) is registered, the rest of the site is locked behind this form. | Desktop | Mobile | |---------|--------| | ![Panel gate — desktop](../screenshots/editor/00-panel-gate.png) | ![Panel gate — mobile](../screenshots/editor/mobile/00-panel-gate.png) | ### 01 — Default editor view After login the editor opens onto the project root — Monaco shows a welcome banner and the explorer lists the seeded files. | Desktop | Mobile | |---------|--------| | ![Editor default — desktop](../screenshots/editor/01-editor-default.png) | ![Editor default — mobile](../screenshots/editor/mobile/01-editor-default.png) | ### 02 — Explorer file open Clicking a file in the explorer (here `index.js`) opens it in a new tab and streams diagnostics from the matching LSP. | Desktop | Mobile | |---------|--------| | ![Explorer file — desktop](../screenshots/editor/02-editor-explorer-file.png) | ![Explorer file — mobile](../screenshots/editor/mobile/02-editor-explorer-file.png) | ### 03 — Integrated terminal `KittyTerminal.tsx` wraps `xterm.js` over a WebSocket pty bridge (`routes/editor/shell.ts`). Multiple tabs and split panes are supported. | Desktop | Mobile | |---------|--------| | ![Terminal — desktop](../screenshots/editor/03-editor-terminal.png) | ![Terminal — mobile](../screenshots/editor/mobile/03-editor-terminal.png) | ### 04 — Console pane `ConsolePane.tsx` shows the project's runtime stdout/stderr from `routes/editor/runtime.ts`. The Start/Stop button spawns the configured `exocore.run` script. The desktop screenshot was captured mid-run; mobile shows the empty pane (running the dev server inside the headless mobile profile detaches the page session). | Desktop | Mobile | |---------|--------| | ![Console — desktop](../screenshots/editor/04-editor-console.png) | ![Console — mobile](../screenshots/editor/mobile/04-editor-console.png) | ### 05 — Webview / preview (desktop only) When the runtime detects a bound HTTP server it surfaces the URL inside an embedded `