01 · Setup
Install and update
- Choose a release from the versioned download page, or download the current Linelark Notepad Studio 1.19.0 disk image.
- Open the DMG and drag Linelark Notepad Studio into Applications.
- Eject the disk image, then open Linelark from Applications.
shasum -a 256 Linelark-Notepad-Studio-1.19.0.dmgExpected: ca28b8334c746470fecf4d9e2e970fae62badadbee37f48d47a9997ad00d5ca7Studio checks for a newer release at launch and at most every six hours. When there is one, an Update button appears at the leading edge of the titlebar, counts the download up, and opens the image once it has verified its digest and Developer ID signature; you drag Linelark across as you did the first time. There is no button when the running version is the published one. Help ▸ Check for Updates… asks immediately, and the Mac App Store edition has neither, because Apple updates it.
02 · Start
First run
A window with nothing open shows the welcome page: Recent Files and Recent Projects side by side, because carrying on with a file and going back to a project are different questions. Under them, Make This a Development Environment names the five plugins that supply what an editor is usually expected to have—GitHub, Build and Run, Launcher, Document Preview, and Compare Files. Clicking a name installs it through the reviewed catalog, with the same checksum and permission questions Get Plugins… asks; installed ones drop out of the list, and the section goes with the last of them. None of them is required.
Open a file or choose a folder. A folder adds the side panel with its tree, open files, function list, search results, and any panel a plugin contributes. Linelark detects the language, encoding, and line endings; each remains overridable from the menus or status bar.
Help ▸ Welcome to Linelark brings the page back at any time, and the switch on it decides whether a launch starts there.
The Mac App Store edition is sandboxed: no terminal, no git, and no network for plugins, so it fetches no code and recommends only the two plugins that work inside the sandbox—clicking one opens its page here instead. Studio is the complete direct-download edition.
03 · Navigate
Essential shortcuts
04 · Preserve
Encoding and line endings
Linelark detects eleven encodings and LF, CRLF, or CR line endings. Saving preserves the detected format unless you explicitly convert it.
- If text looks wrong, use Reinterpret as before editing or saving.
- Use the encoding menu to convert a document intentionally.
- Whole filenames and shebangs participate in language detection alongside extensions.
05 · Locate
Folder search
Open a folder, show the find bar, then switch the scope from This File to In Files. Add a filter such as *.swift and click any result to open it in the focused pane.
Find in Files skips binary files and files larger than 4 MB, and caps a search at 5,000 hits. Replace in Files confirms the match and file counts before writing, preserves encoding and line endings, and skips open files with unsaved edits.
06 · Arrange
Panes and tabs
Choose a preset with View ▸ Editor Layout, then drag dividers to resize. Drag tabs between strips, or open the same document in several panes. Shared views use one buffer and undo history but keep independent selections and scroll positions.
The pane layout and its tabs return on relaunch. Reducing the number of panes folds surplus tabs into the last remaining pane.
07 · Arrange
Windows and workspaces
File ▸ New Window (⇧⌘N) opens a second window with its own tabs, panes, folder root, find state, shells, and plugin panels, standing on the welcome page so there is something to pick from. Every window that was open at quit is restored, in order, at the size and position it had; closing one forgets that window rather than the session.
Closing the last tab leaves the window standing on that same page—the folder tree, the shells, and the agent it was holding stay with it. ⌘W again, with nothing left to close but the window, closes it. Close All empties a window without closing it, and a tab’s own ✕ never takes the window with it.
Opening a folder — or a multi-root .code-workspace file — from Finder, the Dock, or open -a loads it as the project it describes, in a window of its own, so a second project never lands on top of the one you are in; an empty window is filled rather than left behind. A double-clicked file still joins the window you used last. Add another root with File ▸ Add Folder to Workspace…, remove one from its context menu, build one from nothing with File ▸ New Workspace…, and write a portable workspace file with File ▸ Save Workspace or Save Workspace As….
Panels and their heights belong to the window. Word wrap, line numbers, whitespace, the document map, the theme, and the status bar are app-wide and change everywhere at once.
Folder search honours boolean files.exclude and search.exclude globs from an opened workspace file, and fields Linelark does not interpret — settings, tasks, launch configuration — are written back unchanged. The workspace page covers the format in full.
09 · Studio
Terminal safety
The Studio terminal is a real login shell, not a simulated command box. Commands have the same access and consequences they would have in Terminal.app. Review commands before running them, keep secrets out of shared output, and avoid destructive operations unless you know their exact target.
- Every shell is bound to something you chose: the tab’s file, or one of the folders in the workspace. A file terminal starts in that file’s folder and closes with the tab — unless you pin it (Terminal ▸ Pin Terminal to Keep It Open), in which case it keeps running and is taken back over when the file is reopened.
- A project terminal is pinned by definition and outlives the tabs around it; closing a workspace leaves it running.
- Terminal ▸ New Terminal (⌃⇧N) starts another shell in place of the one on screen, and the header’s ⇄ re-aims this one at a different file or project. Once two are open, every running shell is listed down the side of the panel.
- Terminal ▸ Split Terminal (⌃⇧5) divides the panel into up to three shells. A split is a second shell on the same binding, started in the directory the one it came from is currently in.
- Hiding the panel (⌃`, the titlebar switch, or its ⌄) leaves every shell running; ending one is Terminal ▸ Close This Terminal. Terminal ▸ Terminal at Full Height fills the window and puts the panel back afterwards.
- Terminals are not saved with the session. A relaunch starts with no shells, and a split column is not restored.
$LINELARK_FILEis fixed when that shell starts. Restart the shell after Save As to refresh the path and working directory.- Clean tabs reload after terminal tools edit them; tabs with unsaved edits are protected.
- Claude Code integration is opt-in and explains the hook before writing to
~/.claude. - The terminal fits between the side panels by default, so the folder tree keeps its full height; Terminal ▸ Terminal Between Side Panels, or the titlebar’s layout switch, runs it across the full width instead.
- A model proxy can follow your shells. Preferences ▸ Terminal ▸ Model Proxy runs CLIProxyAPI from the first terminal to the last, so Claude Code or Codex pointed at it can use models from the other accounts you signed in to there. It is off by default; the status bar’s Proxy dot starts or stops it, and with no proxy installed it links to EasyCLIProxyAPI, which installs and configures it. A proxy started elsewhere is used, never stopped for you.
10 · Studio
The agent in the dock
Studio runs Claude Code in the right dock — one headless session per window, started and stopped from the titlebar, with the conversation restored per window after a relaunch. It runs the claude you have installed, found on your login PATH, and says so plainly when there is none.
- It reads your buffers, not your disk. Each window opens its own MCP server on a Unix socket and hands over the open tabs, the active buffer, the selection, a line range, and the find bar’s own search — so the answer is about the edits you have not saved yet.
- Every write is shown and asked for. An edit arrives as a card carrying the diff the buffer would become. Approving it lands an ordinary undoable edit in the buffer, so ⌘Z puts it back and you decide when to save.
- What the conversation has cost is on screen in the panel and in the titlebar. Interrupt ends a turn and keeps the conversation; Stop ends the process.
- Starting a turn by itself — after a save, after a file opens, or on a timer — is off until you switch each trigger on.
- The same socket reaches shells in the terminal panel as
$LINELARK_MCP_SOCKET, so aclaudeyou start yourself can read the editor too. - Studio only: the sandboxed Mac App Store edition cannot spawn a process or open a socket, so the dock is absent there. The agent guide lists every tool on the socket.
11 · Extend
Install plugins
Choose Plugins ▸ Manage Plugins… ▸ Get Plugins… to browse reviewed releases, or click one of the recommendations on the welcome page. Linelark verifies the catalog’s published size and SHA-256 checksum, checks the ZIP structure and manifest, then stages the installation so an existing version can be restored if replacement fails.
- Read what each plugin declares before installing it: whether it runs commands, changes git, or reaches the network, plus the hosts and credential fields it asks for. Running commands is named first because it is the heaviest — a command can do anything you can do.
- Each declaration is its own switch in Manage Plugins, granted separately from the install.
- Use Plugins ▸ Install Plugin… for a local
.linelarkpluginfolder or.linelarkplugin.ziparchive. That one works in both editions; Get Plugins… is Studio’s, because it fetches over the network. - Manage Plugins shows load failures, permissions, versions, and the latest 200 log lines.
- Read the developer guide to build your own against plugin API generation 12.
12 · Protect
The encrypted vault
File ▸ Vault…, or the side panel's Vault button, opens a window of its own: its own plain-text editor, its own commands, its own .linelarkvault file. Both editions have it.
Nothing in it becomes a document, and that is the feature rather than an implementation note. Tabs, session snapshots, unsaved-buffer backups, Recent Files, plugin previews and the agent's view of your editor are each somewhere plain text would otherwise land, and every one of them is reached by a file being an ordinary document. Opening a .linelarkvault routes away from the editor rather than making a tab of it.
- Three ways in. A password, a recovery key issued when the vault is created, or — on a build signed with a provisioning profile, which the direct download is — Touch ID and your Mac password. A random 256-bit content key is wrapped by each credential rather than the documents being encrypted with your password, which is why changing the password is instant and why the recovery key is an alternative to it rather than a second factor.
- It locks itself on closing or minimizing the window, on sleep, on screen lock, on switching user, and after 1, 5, or 15 idle minutes, clearing the documents, the key, the text view and its undo stack.
- Only ciphertext is ever written, atomically, debounced while you type and flushed by every way of leaving. A write that fails keeps the encrypted state in memory, says so, and refuses the quit rather than losing what you typed.
- Security ▸ Delete This Vault… retires the enrolled Mac key and its Keychain reference and then trashes the file, in that order — a failure at the Keychain leaves the file where it is rather than stranding a key nothing can name again. Deleting the file in the Finder still leaves that key behind.
Encryption protects stored documents from being read in the Finder or from a copied vault. It does not conceal the vault file's existence or size, protect an already-compromised Mac, or stop someone reading an unlocked screen. A vault holds up to 5 MiB of encoded documents. The local Touch ID key is device-only and never synchronized — the password and the recovery key are what carry a vault to another Mac.
13 · Recover
Restore and recovery
Linelark snapshots untitled documents and unsaved edits while you type. Tabs, pane layouts, dirty buffers, and every window that was open come back after a normal quit or crash. Recent files are pruned when their files disappear.
They are saved with the session as line numbers rather than offsets, so a file edited while Linelark was closed keeps its bookmarks where the lines went; a line that no longer exists is dropped rather than clamped onto the end. Bookmarks are shared between views of one buffer and move with your edits.
Terminals are the deliberate exception: they are not saved with the session, and a relaunch starts with none.
14 · Resolve
Troubleshooting
- The file opens as garbled text.
- Choose Reinterpret as and select the original encoding before saving.
- A terminal starts in the old folder.
- Restart that tab’s shell after Save As; its working directory is chosen at shell start.
- The agent will not start.
- Studio runs your own Claude Code. Install the
claudecommand and make sure a login shell finds it — the same PATH the terminal panel starts with. - A plugin did not load.
- Open Manage Plugins. Linelark keeps failed plugins visible with their validation or runtime error and a per-plugin log. A plugin asking for a newer API generation than this Linelark has is refused with a message saying so.
- A workspace opened with an empty sidebar.
- Only local folders in a
.code-workspaceare opened. A root on a remote or virtual filesystem is ignored, and a missing path stays unavailable until it can be reached again. - A plugin I enabled is missing in my other window.
- Each window loads its own copy of every plugin. Use Plugins ▸ Reload Plugins in that window.
- The folder tree missed a disk change.
- The watch reports local volumes, so a project on a network share may produce nothing. Use Refresh in the panel header, a folder context menu, or View ▸ Refresh Folder Tree.
- An external edit did not replace my buffer.
- Linelark will not silently reload a tab containing unsaved work. Save or discard your changes first.
