Editor
edit <file> opens a plain-text editor in its own tab:
edit src/main.ts
edit notes/new-idea.md the path doesn't have to exist yetThe tab shows the file's name, size, and location in a header, with the editable buffer below. Typing, arrow keys, Home/End, PageUp/PageDown, mouse clicks and selection, and paste all work as you'd expect. A dirty dot (●) appears next to the filename whenever there are unsaved changes.
You can also land in an editor by clicking a file.ts:42-style link in any transcript — the file opens with the cursor already on that line, centered in view — or from the file navigator with Shift+Enter on a file.

Saving

Ctrl+S / Cmd+S writes the buffer to disk. On success a brief "Saved" flash appears in the header; on failure the error is shown there and the dirty dot stays.
If the path didn't exist when you ran edit, the file shows a size of "unknown" and isn't created until your first save.
Closing with unsaved changes
Closing a dirty editor tab — × button, Cmd+W/Ctrl+W, or close — asks first: "Do you want to save changes to this file?" with Save (the default), Don't Save, and Cancel. Press y to save and close, n to close without saving, or Escape to keep editing. The dialog is modal; input elsewhere is blocked until you choose.
Syntax highlighting

Markdown, JavaScript, TypeScript, and JSON files are colored by syntax, chosen by file extension; anything else renders as plain text. Highlighting keeps up with your edits without slowing typing down, and is skipped for very large buffers (over 10,000 lines or 1 MB) so they stay responsive.
One theme applies to every editor tab at once. Switch it with syntax theme <name>, or run bare syntax theme for a picker — the choice persists across restarts. See Application commands.
Lifecycle
Editor tabs are live views: they aren't restored by janus --relaunch, so save before quitting. The buffer, cursor, undo history, and scroll position do survive tab switches within a session.