> ## Documentation Index
> Fetch the complete documentation index at: https://vibex.peatboy.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Code workbench

> Browse, search, edit, and preview workspace files.

The code workbench puts the file tree, search, editor, Git diff, and content previews in one window. Every file operation is bounded by the current workspace.

## File tree and search

Open the file tree from the **Files** icon in the right sidebar:

1. Expand workspace directories, or type a file name to jump straight to it (type-ahead).
2. Use **Search workspace files** to search by content; you can toggle **Match case**, **Match whole word**, and regular expression mode.
3. Click a file to open it in a preview tab. Several tabs can sit side by side or in splits.

The file tree context menu offers **New File**, **New Folder**, **Cut**, **Copy**, **Paste**, **Copy Relative Path**, **Copy Absolute Path**, **Copy File Name**, **Rename**, **Delete**, and the **Open In** submenu (**Editor** / **Default App** / **Terminal** / **Native Terminal** / **File Manager**). You can also drag and drop files to move them.

Search never modifies files on its own. Large files, undecodable content, and paths outside the workspace are rejected by the file service.

## Editing and saving

* Edit text directly in the editor.
* Use **Save file** to save the current file (`cmd-s`).
* Autosave is on by default: an edited file is written back after a typing pause (1000 ms by default) and when the editor or window loses focus. In **Settings → Workbench** you can switch to **Manual** (the `cmd-s` shortcut is the only way to save) or **On focus change**, and adjust the idle delay.
* The toolbar toggles **soft wrap** and **whitespace** display.
* The status bar shows `Ln N, Col N`, the total line count, language, encoding (`UTF-8` / `UTF-8 BOM` / `Binary`), line endings (`LF` / `CRLF` / `Mixed EOL`), and file size.
* The title bar shows **Modified** (unsaved changes), **Saving**, or **Saved**.

<Note>
  The editor has **no** Save As: saving always writes back to the original path. There is also no in-file find bar — `cmd-f` opens **Find in conversation**.
</Note>

### Large files and read-only

These files open read-only and are marked **Large file - read only** or **Binary - read only** in the title bar:

* Larger than 8 MiB
* More than 50,000 lines
* Truncated content
* Content detected as binary

## Editor protection and recovery

Each editor buffer tracks the saved content, the external revision, and the local revision at the same time. Save requests use optimistic concurrency control: if the content on disk has already changed, the save fails with `file_external_revision_changed` instead of overwriting silently.

Tabs with unsaved changes prompt **Save or discard the dirty editor before closing it** when you close them; with autosave on, the pending edit is written first and the tab closes without interrupting you. Switching workspaces is blocked the same way.

After the authoritative runtime restarts, Vibex restores unsaved buffers. They are still marked **Modified**, still need an explicit save, and never overwrite files on disk automatically. When the file has been deleted on disk, the title bar shows **Deleted - recovery buffer**.

<Warning>
  Deleting a file changes the workspace. Check Git status before you delete, and copy the content or create a commit first if you need to.
</Warning>

## Content preview

| Type            | Extensions                            | What you can do                                                                                         |
| --------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| Markdown        | `md` `mdx` `markdown`                 | Rendered view with code blocks, tables, task lists, footnotes, math, and diagrams (Mermaid / PlantUML). |
| Images          | `png` `jpg` `jpeg` `gif` `webp` `svg` | Preview the image.                                                                                      |
| PDF             | `pdf`                                 | Native PDF preview with **Fit width**, 50%–200% zoom, and page jumping.                                 |
| Office          | `docx` `xlsx` `ods` `pptx`            | Read-only content preview.                                                                              |
| Audio and video | `mp4` `mp3` `wav`, and more           | **Not played in the app**; handed to the system default app.                                            |
| Other           | Every other text format               | Opens in the editor.                                                                                    |

The Markdown preview offers a **Contents** outline, **Copy document text**, per-block **Copy code** / **Copy diff**, diagram source viewing, and full screen. Workspace-relative links open inside the preview; external links go to the system browser.

Office previews are a **read-only extracted view**, not a faithful rendering:

* `docx` — headings and paragraphs.
* `xlsx` / `ods` — **the first worksheet only**, up to 80 rows × 20 columns.
* `pptx` — slide text, up to 200 slides.

PDF previews are read-only too, with no search, annotations, or forms.

### Formats that cannot be previewed

| Format                 | What happens                                                                  |
| ---------------------- | ----------------------------------------------------------------------------- |
| `.bmp`                 | Shows **Unsupported file**.                                                   |
| `doc` `xls` `ppt`      | Reports `office_legacy_format_unsupported`; convert to a modern format first. |
| `odt` `odp`            | No handler.                                                                   |
| `.html`                | Opens as highlighted source text; **the page is not rendered**.               |
| `.json` `.yaml` `.csv` | Opens as source text with no formatting or table view.                        |
| `.ipynb`               | Opens as JSON text, not as a notebook.                                        |

<Info>
  Syntax highlighting covers Rust, TypeScript/TSX, JavaScript, JSON, Markdown, TOML, YAML, Python, Go, Java, CSS, HTML, and Shell. Other languages display as plain text.
</Info>

## Image editing

The image editor is for **annotating images you attach before sending them**, not a general editor for image files in the workspace. Open it from **Edit image** in the Composer attachment area.

Available tools: **Crop**, **Brush**, **Text**, **Rectangle**, **Circle**, **Arrow**, **Mosaic**, and **Undo edit** / **Redo edit**. Zoom runs from 25% to 400%, and you can pan by dragging.

* macOS: `cmd-z` to undo, `cmd-shift-z` to redo.
* Windows/Linux: `ctrl-z` to undo, `ctrl-shift-z` to redo.

Saving re-encodes the image as **PNG**; you cannot choose another format, and there is no rotate, scale, flip, or layers.

## Preview tabs and splits

Drag a tab, or use **Split right** / **Split down** in the tab menu, to split the view; you can drag the split boundary to resize it. Code, diffs, terminals, and documents can all share one window.

**Pop out preview window** in the panel header rehosts the whole multi-tab panel in a window of its own, and **Dock preview into the main window** brings it back. The panel entity never changes hands, so every open tab, editor buffer, and terminal moves with it, and exactly one panel exists at a time. Closing the detached window hands the panel back to the workbench column instead of taking it down; closing the panel closes its window. The detached window keeps the shell's editor actions, so `cmd-s` and go-to-line still work there.

Full screen gives the panel the workbench column, so the sidebar and the right rail keep their place, their width, and their activity bar, and the rail keeps its resize handle.

**Settings → Workbench** has a **Preview window** option that chooses where the panel opens by default: **Inline** (the default, inside the workbench column) or **Separate window**. The header's pop-out and dock controls write the same preference.

Closing a tab does not delete a file or a terminal — it only closes the current view.

## Tab actions

* Hover a file or diff tab to see its full path.
* Tab context menu: **Close tab**, **Close other tabs**, **Close tabs to the left**, **Close tabs to the right**, **Close all tabs**, **Split right**, **Split down**, **Pin tab** / **Unpin tab**, **Reveal in Files**, **Open In**.
* A pinned tab must be unpinned before it can close. When you close other tabs, pinned tabs and unsaved tabs stay open.
* `cmd-w` closes the current preview tab; `cmd-tab` / `cmd-shift-tab` and `cmd-pageup` / `cmd-pagedown` cycle through tabs. Terminal tabs do not use these shortcuts.

For the complete shortcut list, see [Shortcut reference](/docs/en/reference/shortcuts).
