This release rebuilds session state persistence on SQLite, which makes restoring your windows and tabs noticeably faster and keeps writes incremental instead of rewriting everything on every change. It also adds tab organization with renaming and color tags, and rounds out the Markdown preview with local image support.
New features & functional improvements
- Per-tab color tags. Tabs can now be tagged with a color from the tab context menu, choosing from red, green, blue, yellow, magenta and cyan (each in a regular and a light variant) plus the theme's accent and primary colors. The tag is persisted with the session, so it survives restarts and cross-window tab transfers. A new application setting controls how the tag is displayed, either by coloring the tab text or as a separate marker.
- Rename unsaved tabs. Unsaved buffers are no longer stuck as "Untitled". A rename dialog, reachable from the tab context menu, lets you give a scratch tab a meaningful title. The renamed title is also used as the file name when the tab is shared with another device, instead of a generic placeholder.
- Local images in the Markdown preview. The preview now renders images referenced by relative or absolute local paths, not just remote URLs. Paths are resolved against the document's own directory, so a note referencing
./assets/diagram.pngdisplays correctly. - Markdown preview width limit. A new Markdown setting caps and centers the preview column instead of letting text stretch across the full window width. Enabled by default, and toggleable in the editor settings page.
- Copy and select-all in the Markdown preview. The preview gains a right-click context menu with copy and select-all, so rendered text can be lifted out without switching back to the source.
- Warning before closing unsaved large files. Large files are deliberately excluded from persisted session state, which previously meant unsaved changes to them could disappear silently on close. Closing such a tab, or a window containing one, now raises a confirmation dialog first.
- Setting to skip persisting unsaved buffers. A new application setting disables writing unsaved buffer content into the session database. Useful if you would rather not have scratch content stored on disk at all. Enabled by default, so the existing restore behaviour is unchanged.
Performance & technical improvements
- Session state now lives in SQLite (
state.db) instead of a JSON file, with one row per window and per tab. Writes are incremental and keyed on stable window and tab identifiers, so a change to one tab no longer rewrites the entire state. Buffer content is guarded by a content fingerprint and only rewritten when it actually changed. - State writes are throttled and de-duplicated through a dedicated writer mailbox on its own thread, and buffer flattening is deferred to that thread rather than blocking the UI.
- Deactivating a server profile no longer blocks the UI while the sync connection tears down.
- Sync internals consolidated: the initial sync, restart, and progress paths were deduplicated, legacy v1 endpoint support was removed, and the pre-0.8 configuration and keychain migrations were dropped.
- GPUI stack updated to the latest editor input APIs, with deprecated interfaces removed.
- Numerous small improvements.
Security
- SSH
known_hostsis now appended to rather than rewritten wholesale. The previous behavior rewrote the entire file when recording a new host key, which risked losing entries written by other tools.
Bug fixes
- Caret and scroll position are now preserved when a file is reloaded after an external edit, instead of jumping back to the top of the document.
- The file watcher no longer emits duplicate notifications for a single external change.
- The Markdown toolbar correctly wraps the current selection, including when the selected text contains non-ASCII characters.
- The Markdown preview no longer crashes on inline newlines or
<br>tags. - Color highlighting no longer applies the wrong offset for color functions at the start of a line.
- Theme changes now propagate to the resizer and scrollbar colors.
- Pending shares stay queued across an SSE reconnection instead of being dropped, so reconnection completes quickly.
- Window creation failures are reported instead of being silently dropped, and a missing settings tab is handled gracefully rather than panicking.
Breaking changes
- This version removes the support of V1 APIs to Fulgurant, therefore an update of Fulgurant to its latest version (v0.8.1) is recommended.
Full Changelog: v0.10.0...v0.11.0