Linelark Notepad Studio
What shipped in 1.17.0.
An 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
.linelarkvaultfile. A password unlocks it, a recovery key issued at creation is the way back in without one, and on a Mac that has Touch ID it can be opened with a fingerprint or your login password. - Nothing in it becomes a document, and that is the feature rather than a note about the implementation. Tabs, session snapshots, the 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. So this is not an encrypted file type the editor opens; opening the extension routes away from the editor entirely rather than making a tab of it.
- A random 256-bit content key is wrapped by each credential, rather than the documents being encrypted with your password. That is what makes changing the password instant, makes the recovery key an alternative to it rather than a second factor, and makes Touch ID a third door onto one room. The local door is the data-protection Keychain under user presence, so macOS enforces the authentication as the key is retrieved — not this app asking a question in front of a read nothing is stopping. It is device-only and never synchronized, because the password and the recovery key are what carry a vault to another Mac, and a Keychain that syncs is a vault that has left.
- It locks on the window closing or minimizing, 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 and coordinated, 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 moves the file to the Trash, in that order — a failure at the Keychain has to leave the file where it is rather than delete it and strand a key nothing can ever name again. Deleting the file in the Finder is still yours to do, and still leaves that key behind; this is the route that leaves nothing.
Bookmarked files
- The document icon on a tab is now a button — grey when the file is not kept, blue when it is — with ⇧⌘D and File ▸ Bookmark This File saying the same thing from the keyboard. The unsaved dot moved onto the ✕, which is the button that would throw that work away.
- The side panel gained a pane of its own, with folders you make rather than folders on disk: the four files a bug lives in across three projects is exactly the grouping a filesystem cannot express. Rows are dragged into folders or above one another, dropped in from the folder tree or the Finder, and searched by the bookmark’s name or the file’s.
- The library is yours, not a window’s, so it is the same list in every window. It follows a rename made in the folder tree and forgets a file deleted there, while a file that is merely not there — an unmounted volume, a branch switched away — is drawn as missing and kept.
The titlebar says which project
- A window opened on a folder or a
.code-workspaceread “Linelark” in the titlebar regardless, exactly as an empty one did, so two windows on two projects were told apart by clicking into them. It now carries the project’s own name — the workspace’s, the folder’s, or “3 Folders” for several with no name between them — and follows a root being added or removed while you watch.
Space previews a row in the folder tree
- The rows this editor cannot open — an image, a PDF, an archive, a
.docx— had exactly one thing they could do when clicked: put up a dialog explaining that the file does not look like text. That warning is about saving, and it is right for every route that ends in a tab, but as the whole of what such a row offers it stood between you and the one useful thing there was to do with it. - Space previews the selected row with Quick Look, exactly as it does in the Finder, and Space or Esc closes it again. Those rows now select on a click rather than opening, which is what makes Space the way in rather than the second thing tried. Only while the folder tree has the keyboard — with an editor focused, Space is a character you are typing.
A split terminal asks what it is about
- Splitting the terminal took the binding of the shell it came from and started in whatever directory that shell had
cd’ed to, which read as the panel guessing rather than answering. The new column now puts up the same chooser a first shell is asked — this file, or which project folder — beside the pane it split from. That pane keeps the keyboard throughout; only the new column asks.
Known limits in 1.17.0
- A vault holds up to 5 MiB of encoded documents in this first version.
- Changing the password or issuing a new recovery key rewraps the same content key rather than replacing it, so rotation is the answer to a credential you no longer trust and is not an answer to the key itself having escaped. Re-keying has to demand the password, issue a new recovery key and ask for Mac unlock to be enrolled again, and it is not in this release.
- Touch ID and Mac-password unlocking need a build signed with a provisioning profile, which the download here is; a vault still opens with its password and recovery key everywhere else, and a build without one now says so in those words rather than reporting a missing entitlement.
- Quick Look is offered for the rows the editor cannot open. A text file opens on the click that selected it and has nothing left for Space to show.
- There is still no watchdog over a plugin’s own script: one that never returns hangs the app, because the only way to interrupt it is private API that cannot ship on the App Store.
- Code folding and recorded macros remain roadmap items with no promised date.
