Skrive v0.1.1
The first post-alpha release. Four dogfood-driven additions to make daily writing flow smoother, plus the supporting plumbing each one needed.
Drag-and-drop image import
Drop an image onto the editor and Skrive copies it into a project-relative attachments/ folder, inserts a Markdown image at your cursor, and renders it inline. Filenames are preserved; collisions get a -1 / -2 suffix.
- A subtle dashed outline appears on drag-enter so the drop target is unambiguous.
- Source paths are written source-file-relative (e.g.
../attachments/foo.pngfrom a file inchapters/), so the markdown renders correctly in Skrive, GitHub, and any other reader. - Filenames with spaces (screenshot defaults like
Screenshot 2026-04-29 at 6.25.48 PM.png) are URL-encoded automatically. - When a drag source doesn't include a real file path — common for browser, Slack, and Photos.app drags that carry URLs instead — Skrive surfaces a quiet notice instead of failing silently.
Tab indents and outdents list items
Tab and Shift-Tab inside a -, *, +, 1., or 1) list now nest and unnest the item — what writers expect from Word, Notion, Bear. The gesture is gated on list context so Tab on a prose line falls through to default (which matters: a 4-space prose indent silently becomes a CommonMark code block).
Multi-line selections nest as a group when every line is a list line.
Rename-as-path
In the rename modal (F2 on a tab or Rename… in the sidebar), typing a path with / separators now moves the file into that subdirectory. Intermediate folders are created if missing.
docs/foo.md→ moves the file into adocs/subfolder of its current location.- A "Moves to: …" hint appears under the input so typos surface before commit.
- Inbound link rewriting reuses the same machinery as in-place renames; references update across the project automatically.
Inline image preview
 now renders as the actual image both in the editor (inline thumbnail) and in the preview pane (full size). Image URLs are resolved against the source file's directory, normalized for . and .., URL-decoded, and converted into asset-protocol URLs the webview can fetch.
A console warning surfaces the resolved URL on load failure, so when an image doesn't render the path it tried is one click away.
Upgrade notes: existing image markdown that you typed by hand with literal spaces in URLs won't render until the spaces are encoded as %20. Re-dropping the image is the fastest fix.