# πŸ—‚οΈ DeepSeek Harness Workspace Studio Plugin (Left–Center–Right Three-Pane Layout) English | [δΈ­ζ–‡](README.md) This bundle replaces the DeepSeek Harness Web root layout with **three panes from left to right: a left sidebar (session/workspace selector + file-tree view switch) Β· a highlighted file view and guarded editor Β· chat**. The file browser pane sits left of the chat by default and can be moved to its right in Workspace Settings β†’ Browsing & preview; the file tree no longer owns a pane: it is fused into the left sidebar and toggled against the session list via the buttons at the top. The session header's **Mind map** button enters **mind-map mode** anytime: the conversation branch tree opens as a tab in the preview area while the chat stays visible and usable on the right. It preserves the existing sidebar, conversation, details, and global-overlay Slot contracts, so the built-in plugins keep owning new-session creation, session lists, settings, chat, tool details, and approvals. Tool details open as a right-side drawer over the three-pane layout instead of consuming a permanent pane. ## πŸ“Έ Screenshots | ![Three-pane layout overview](image/image-1.png) | ![Mobile-mode conversation column](image/image-2.png) | |---|---| ## ⭐ Four Core Capabilities | # | Capability | What it buys you | |---|---|---| | 1 | πŸ—‚οΈ **Workspace browsing and preview tabs** | Browse the workspace like an IDE next to the chat: file tree, per-session preview tabs, 14 encodings, and rendered Markdown / HTML / image / PDF / Office document views | | 2 | ✏️ **Open-and-edit built-in editor** | CodeMirror 6 edits on open, every keystroke lands in a staging draft, and saving three-way merges against the disk β€” it **never silently overwrites** | | 3 | 🧭 **Conversation branch mind map** | Turn one conversation line into a freely branching map: fork a new branch at any turn, manage branch sessions in one place, watch streaming output live | | 4 | 🎯 **Editor context injection** | The open file or the selected code enters the conversation as `` / ``, so the model sees exactly what you picked | ### 1️⃣ Workspace Browsing and Preview Tabs - The file tree is fused into the **left sidebar**, whose top row switches between **Sessions / File Explorer** views. The Workspace file tree appears automatically when the current Session belongs to a Workspace (also recognized when the Session `cwd` equals its path), sorting directories before files, expanding incrementally, and refreshing on demand. Expanded state **persists per session** and comes back after a reload; the tree's scroll position is also restored after a refresh re-lists the directories (preview-tab scroll positions ride the same per-session snapshot). - **Preview tabs are saved per Session**: close them, drag to reorder, scroll the tab strip with the wheel, and they survive reloads. Right-click a tab to **pin** it (pin icon, sorts first, and **Close Other Tabs** only closes unpinned ones) or to **open it outside the GUI** (an HTML tab goes through **Open the file in your browser**, which lets the system default browser open the file itself; every other text file, Markdown included, still opens in a new tab). Unsaved edits show a `Β·` after the tab label and after the filename in the preview panel title. - **A single file-tree click opens a temporary tab (italic); a double-click keeps it**: a single click is only a preview β€” clicking another file adds no tab, it swaps that italic tab for the new file in place; a **double-click** (or double-clicking the italic tab in the strip, pinning it, or starting to edit it) turns it into a real tab. There is at most one temporary tab at a time, a displacement never swallows unsaved work (a tab with edits is promoted first), and tabs restored after a reload are always permanent. Search results and chat file-opens keep opening permanent tabs. - **View-as menu** (driven by a renderer registry, the same lineage as the Harness right-Sidebar document preview): Markdown switches between **source editing / rendered preview** and **opens in the rendered preview by default** (GFM: tables, task lists, strikethrough); HTML switches between **source editing / page preview** and **opens in the page preview by default** β€” the frame is given a one-shot, Host-issued token as its base URL, so the **browser itself resolves every relative URL**: `` (static and script-generated alike), `srcset`, `video[poster]`, stylesheet `url()`, fonts and media, `