Tabs and undo
Dirty markers, per-tab undo, close others, close all, and drag reordering.
All editions
Complete feature index
Folder-wide search, crash restore, multi-root workspaces, column editing, a terminal in every tab, and reviewed plugins. This is the whole list.
Read the documentationPrecise operations on the file in front of you.
Dirty markers, per-tab undo, close others, close all, and drag reordering.
All editions69 curated language definitions with language-aware comments and keywords.
All editionsLine numbers, current-line highlight, indent guides, and bracket matching.
All editionsAuto-indent, paired brackets and quotes, selection wrapping, and block indent.
All editionsDuplicate, delete, move, join, sort, deduplicate, and remove empty lines.
All editionsRectangular selection with ⌥-drag and text or number sequences with ⌥⌘C.
All editionsLine and block comment toggles, case conversion, and trailing-space cleanup.
All editionsComplete nearby identifiers and language keywords with ⌃Space or ⌥Esc.
All editionsOptionally offer the same completions a third of a second after you stop typing. Off until you ask for it.
All editionsUndo, redo, cut, copy, paste, comment, indent and a column-selection switch, each live only when it would do something.
All editionsOptional checking for Normal Text, Markdown, LaTeX and NFO files. Off by default, and never enabled in code.
All editionsA colour-aware document map and bookmarks toggled from the gutter.
All editionsWord wrap, visible whitespace and EOLs, zoom, overwrite mode, and printing.
All editionsStep back to the document you came from with ⌘[ and forward again with ⌘], for each pane separately.
All editionsShow a ↵ where the window’s width broke a long line, and only on the lines it actually broke.
All editionsLet the caret stand past the end of a line, so moving down a ragged block keeps the column it started in.
All editionsBytes, line endings, and language stay as they were.
Open one file or a folder with tree, open-file, function, and search views.
All editionsFile ▸ Vault… opens a window of its own, with its own editor and its own `.linelarkvault` file. Nothing inside it becomes a document, so it never reaches tabs, session snapshots, Recent Files, or the agent.
All editionsA password, a recovery key issued when the vault is created, or Touch ID and your Mac password on the direct download. Each unwraps the same content key, so changing the password is instant.
All editionsOn closing or minimizing its window, on sleep, on screen lock, on switching user, and after 1, 5, or 15 idle minutes — clearing the documents, the key, and the undo stack.
All editionsUTF-8, UTF-16, Latin-1, Windows code pages, Mac Roman, Japanese encodings, and ASCII.
All editionsCorrect a mistaken encoding before saving or converting the document.
All editionsDetect and preserve LF, CRLF, or CR, with explicit conversion from the menu.
All editionsRecognise extensions, whole filenames such as Makefile, and shebang lines.
All editionsDetect on-disk edits and reload clean tabs when the file changes elsewhere.
All editionsCopy absolute or workspace-relative paths, cut, copy, paste, rename, and move to the Trash from the folder tree.
All editionsA renamed or moved file keeps its buffer, unsaved edits, undo history, bookmarks, and search results.
All editionsThe confirmation names every affected open tab and warns explicitly when one holds unsaved changes.
All editionsBring back layouts, tabs, untitled documents, and unsaved edits after quit or crash.
All editionsJump to the first nine tabs with ⌘1–⌘9.
All editionsA file written by a command, a branch switch or a git pull reaches the folder tree without a refresh.
All editionsThe Finder’s gesture inside the folder tree, through the confirmation that names every open tab it affects.
All editionsJump from a tab or a Find in Files result to that file’s row in the tree.
All editionsOpen the buffer against what is saved as a two-column diff, before keeping what something else changed.
All editionsGo from one match to a whole folder.
Match case, whole word, regular expressions, wrap-around, and selection scope.
All editionsReuse capture groups with $1-style replacement references.
All editionsCount matches, highlight every occurrence, and clear marks independently.
All editionsSearch the open folder with file filters and click a result to open it.
All editionsPreview exact file and match counts before writing while preserving file formats.
All editionsSearch one subtree without closing or replacing the workspace you have open.
All editionsHonour files.exclude and search.exclude globs from an opened .code-workspace.
All editionsPut related files next to each other.
Use two or three columns, two rows, or a four-pane grid with draggable dividers.
All editionsMove a tab directly from one pane strip to another.
All editionsOpen one file in several panes with shared text and independent scroll positions.
All editionsMove focus or send the active tab between panes from the keyboard.
All editionsRestore the pane arrangement and its tabs when the app relaunches.
All editionsOne project per window, and a workspace format other editors already write.
⇧⌘N opens a window with its own tabs, panes, folder root, find state, and shells.
All editionsEvery window open at quit returns, in order, at the size and position it had.
All editionsOpen a folder or a multi-root .code-workspace as the project it describes, with its root aliases.
All editionsAdd or remove roots, then write a portable .code-workspace with relative folder paths.
All editionsSettings, tasks, and launch configuration are round-tripped untouched rather than dropped on save.
All editionsThe side panel, right dock, and terminal belong to a window; editing preferences stay app-wide.
All editionsClosing the last tab leaves the window standing on its welcome page; ⌘W again closes the window.
All editionsRecent files and recent projects side by side, and the plugins that make this a development environment.
All editionsA folder or .code-workspace opened from Finder never lands on top of the project you are already in.
All editionsA real login shell, tied to the current tab.
Start a login shell in the folder containing the tab’s file.
StudioRun full-screen programs with mouse reporting, 256 colours, and true colour.
StudioUse the login environment even when Linelark starts from Finder.
StudioRead the current file path from $LINELARK_FILE in each terminal session.
StudioDivide the panel into up to three shells with ⌃⇧5, each on the same binding as the one it came from.
StudioBind a shell to a workspace folder instead of a file, and switch between the shells already running.
StudioKeep a file’s shell alive past its tab; reopening that file takes the pinned shell back over.
StudioOpt in to a SessionStart hook that supplies the active file path.
StudioStart another terminal with ⌃⇧N; once two are open, every running shell is listed down the side of the panel.
StudioPoint the panel at a different file or project without going back through the picker.
StudioFill the window with the terminal, and put the panel back where it was afterwards.
StudioClaude Code in the right dock, reading the buffer rather than the disk.
A headless claude for each window, started and stopped from the titlebar, and restored with that window.
StudioA per-window MCP server hands over the open tabs, the active buffer, the selection and a line range.
StudioA search runs through the editor’s own engine over the text as typed, rather than over the last version written to disk.
StudioA change arrives as the diff the buffer would become, and lands as one undoable edit you decide when to save.
StudioThe running total sits in the panel and in the titlebar, so a turn behind a closed dock still says what it is spending.
StudioEnd the turn and keep the conversation, or end the process.
StudioStart a turn after a save, after a file opens, or on a timer — each off until you ask for it.
StudioA claude you start in the terminal panel gets the same tools, through $LINELARK_MCP_SOCKET.
StudioSmall JavaScript tools, with no browser runtime behind them.
Run commands in isolated JavaScriptCore contexts against a versioned editor API, with timers and promises.
All editionsA plugin describes a panel and Linelark draws it with the same native controls the built-in panels use.
All editionsSwap a document between its source and a plugin’s rendering with ⇧⌘V, separately in each pane.
All editionsPlugin-generated text opens as a read-only tab with find, highlighting, and panes — and never reaches disk.
All editionsA plugin’s unified diff opens as two aligned files, with optional merge arrows down the middle.
All editionsInstall a plugin folder or .linelarkplugin.zip you already have, in either edition.
All editionsBrowse immutable releases with declared capabilities, sizes, and SHA-256 checksums before installing.
StudioA catalog install re-checks the published size and SHA-256 before anything is extracted.
StudioRequests reach only the https hosts the manifest declared and you switched on; a stored secret is never returned to the plugin.
StudioRead branch, status, history, and diffs; stage, commit, pull, and push once git write is declared and granted.
StudioA declared and granted plugin types command lines at a shell you can read, stop with ⌃C and answer.
StudioA separate declaration and switch runs one command with no shell and hands back its status and output.
StudioA plugin describes a drawing it laid out itself and Linelark paints it on the editor’s theme — Mermaid, PlantUML and draw.io.
All editionsNative controls, five themes, and a build that says when it is out of date.
Choose Light, Dark, or Follow System at any time.
All editionsPaper, Mist, Midnight, Tide, and Plum are original high-contrast palettes.
All editionsChoose a monospaced font, size, tab width, and individual editor toggles.
All editionsBuilt with SwiftUI and AppKit, without a bundled browser runtime; Studio is a 8.7 MB download.
All editionsLaunches quickly, avoids continuous project indexing, and restores your place when you return.
All editionsRuns natively on macOS 14 or newer, on Apple silicon and Intel.
All editionsA button beside the title, only when there is one; the image’s Developer ID signature is checked before it is offered.
Studio