Skrive 1.1.0
Skrive 1.1.0 is a foundation release. It is the largest re-architecture of the app's internals since the move to React, and it deliberately changes nothing about how Skrive looks or feels — every editor behavior is at parity with 1.0.3. The visible change is a single security hardening; the rest is groundwork.
If you are upgrading from 1.0.3: nothing in your workflow changes, your projects and settings are untouched, and there is nothing you need to do.
What changed for you
- Symlink-aware path containment. Skrive now resolves every file path against the real project root: a symbolic link inside a project that points outside it can no longer be followed out of the project folder, for reads, writes, or image serving. The impact is low for a local, single-user editor where you chose the folder yourself — but it is the correct boundary, and it is now enforced and covered by tests.
- Everything else behaves exactly as before. Backlinks, project search, dead-link and orphan detection, rename-with-references, autosave, external-change detection, image paste, and history all work identically to 1.0.3. This release changes no editor behavior by design.
Under the hood
The work behind this release re-draws the line between the editor and the system layer so the editor is no longer tied to any one host.
- One typed contract. Every message between the editor and the system now flows through a single versioned envelope with a closed set of error codes and a tested transport boundary, replacing a scatter of ad-hoc channels. This is the groundwork that lets the same editor run in other environments, including a future web embed.
- Text analysis moved into the editor. The link graph, project search, and frontmatter schema inference now run in a dedicated background worker off one batched project snapshot, rather than in the system process. The system layer no longer parses Markdown at all — it is reduced to filesystem, project, history, and OS primitives.
- Clipboard through the OS. Rich copy from the preview now goes through the operating-system clipboard instead of a browser API, so it keeps working across more environments.
- Housekeeping. Removed the dead Tauri and Svelte code carried over from the original prototype stack, and added a cross-implementation parity corpus that pins the system contract command-by-command.
Verification
- 326 editor tests, 68 system-layer tests (including a new symlink-containment suite covering five distinct escape attempts), 65 shared-contract tests, and a 26-case parity corpus that replays green.
- Validated on a signed, notarized packaged build before tagging.
- No changes to the on-disk file format. Upgrading is safe and reversible.