Aquí hi ha 15 versions de Skriuw, des de 6 de juliol del 2026 fins a l’actual, 0.53.0. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 0.53.0Darrera versió | 25 d’octubre del 2026 | — | 64 bits MSI Notes de la versióChanges since v2-v0.52.0
- chore(v2): release v2-v0.53.0
- feat(v2): open first visits on Welcome with an embedded Books board (#558) |
| 0.52.0 | 21 d’octubre del 2026 | — | 64 bits MSI Notes de la versióChanges since v2-v0.51.0
- chore(v2): release v2-v0.52.0
- ci(mobile): install the Gradle NDK with a retry before the Android jobs (#556)
- docs: date the 0.52.0 changelog and fold in the unreleased entries (#557)
- feat(v2): open a first browser visit on the starter Books board (#555)
- feat(v2): bundle Inter Variable as the app font (#554)
- feat(v2): seed a starter Books database for new visitors (#553)
- perf(v2): update database view rows and arrangement incrementally on property edits (#552)
- fix(v2): sync, restore and editor correctness fixes, plus note-switch perf (#551)
- feat(site): feature overview, plainer architecture and performance docs (#550)
- chore(v2): remove kreasz development tools (#548)
- feat(v2): mobile references and trash screens, canonical browser origin, AI menu overlap (#547)
- feat(v2): database views over note properties (#545)
- fix(web): restore the compact shell and tighten mobile and PWA behavior (#546)
- chore(site): post analytics events to /_ra/ to skip the trailing-slash redirect (#542)
- perf(v2): gate the perf harness and cut per-frame work for the stable release (#544)
- feat(site): decision record pages, platforms rework and SEO routing (#543)
- feat(site): route-template pageviews and conversion events for Spoar (#541)
- feat(site): track marketing pages with the v2 analytics SDK (#540) |
| 0.51.0 | 12 d’octubre del 2026 | — | 64 bits MSI Notes de la versióChanges since v2-v0.50.0
- chore(v2): release v2-v0.51.0
- fix(toast): anchor the toast stack to the visual viewport (#539)
- feat(editor): link bare domains with a known top-level domain (#538)
- feat(site): heading anchors and a table of contents on shared notes (#536)
- feat(sharing): publish images with shared notes (#537)
- fix(sharing): stop sharing notes moved to the trash (#535)
- fix(site): make links in shared notes and docs visibly links (#534)
- feat(v2): math macros, paste and mhchem, starter guides, and one settings copy module (#533)
- chore(sync): apply D1 migrations as part of the deploy scripts (#532)
- ci: apply D1 migrations on Worker deploys and run the native gate on every PR (#531) |
| 0.50.0 | 8 d’octubre del 2026 | — | 64 bits MSI Notes de la versióHighlights
Opening files keeps them in sync (#524). Opening a Markdown, MDX or text file from the file manager imports it as a note. Opening the same file again later updates that note:
- If only the file changed, the note takes the file's text.
- If only the note changed, the note is kept.
- If both changed, the note opens right away and a dialog asks whether to keep the note, use the file, or keep both.
- A file that was moved is recognised by its contents.
.txt files can now be opened. Imported titles come from frontmatter title:, then a leading # heading, then the file name, and notes keep their file's created and modified times. MDX imports without loss: components and import/export lines become mdx code blocks, and inline tags and {expressions} become inline code. This applies to folder imports too.
Account deletion (#525). Settings, Account & sync can permanently delete your cloud account, its synced workspace, your shared notes and every Skriuw workspace on this device. The sign-in record is removed only after the cloud data is purged. Copies on other devices stay until they are cleared there. Details in ADR-0056.
Clean up empty notes (#525). "Clean up empty notes" in the command palette, or the row under Settings, Data & recovery, moves every note with no body beyond its title to the trash, with one undo. Pinned, locked, journal, commented and parent notes, and notes with properties or decorations, are never touched.
Settings
- Search matches the text of every row, not just section names, and shows the matching row under the result. Multi-word searches prefer sections that contain the whole phrase (#523).
- Keyboard focus fades in as a soft fill instead of an outline, across the settings dialog and the media preview. Theme cards, fields and the search box lift their border on focus, and buttons press in slightly. The switch is redrawn with a filled track (#523).
Command palette
- Themes are one picker. Press Space on any "Theme:" row to list only themes, and Backspace to go back (#525).
- Settings, Appearance, Command palette size offers Default, Roomy and Large (#525).
Mobile
- Sign in from the account sheet. The app stores the credential in the platform keystore, opens the account's own workspace and syncs it through the native core on Android and iOS. Switching accounts remounts the workspace, and returning to the app catches up on remote changes (#527).
- Lock settings open from a Security row in the account sheet. Notes and folders in the tree have a Lock/Unlock action and show a lock marker (#526).
Fixes and polish
- Desktop: the splash is part of the main window instead of a separate window, and a file opened from the file manager is already the active note on the first frame (#525).
- Shared controls outside settings show keyboard focus with a border colour instead of an outline ring (#525).
Site
- Release notes on the changelog render with marked. A generated comment in one older release no longer shows as text (#519).
- The site code is reorganised into flat modules. Pages look the same (#519, #521).
Full changelog: v2-v0.49.0...v2-v0.50.0 |
| 0.49.0 | 3 d’octubre del 2026 | — | 64 bits MSI Notes de la versióHighlights
Due dates and recurring tasks (#499, #507). Type due: followed by a date and a space on a checklist line to give it a due date: due:2026-10-12, due:today, due:fri, due:in_3_days. Type every:week (or every:daily, every:weekday, every:2_weeks, every:month) to make it repeat. Checking off a repeating item keeps it done and adds the next one right below it, and one undo reverts both.
- Dates and rules show as chips after the line. Enter or a click turns a chip back into editable text, Delete clears it.
- The Tasks view now groups by Overdue, Today, Upcoming, No date and Completed earlier, names each task's source note, and has a date button per row (D on a focused row).
- Markdown uses the Obsidian Tasks signifiers, so vaults stay portable: - [ ] Water plants 🔁 every week 📅 2026-10-01. Details in ADR-0054.
Math (#503). Inline and block math rendered with KaTeX. Use /math or /inline, mod+alt+e for inline and mod+alt+shift+e for a block, or type $$ on its own line and press Enter. Markdown uses $...$ and $$ fences, like Obsidian, GitHub and Pandoc. KaTeX loads only when a note contains math, and $ still opens the people menu. Formulas are searchable.
Focus mode and typewriter scrolling (#504). mod+shift+f hides the rail, sidebar, inspector, toolbar and tabs and leaves just the note. Exit with the same keys or Escape. Optional dimming of everything but the current paragraph is under Settings, Editor, Focus. mod+shift+y keeps the caret centred while you type, in both the rendered and the raw Markdown editor.
Unlinked mentions (#500). The Relationship Explorer lists other notes that mention the current note's title as plain text. Open one to land on the mention, press L to turn it into a note link, or use Link all. Undo restores every note in one step.
Daily word goal (#501). Set a journal word goal from the ring in the day header or under Settings, Editor, Journal. The header shows progress, days that met the goal are marked in the calendar, and Stats gains Goal days and Goal streak. Changing the goal never rewrites past days.
Account
- Signed-in accounts show a Facehash avatar, stable per account on every device (#505). Settings, Account & sync, Avatar switches back to initials.
- Signing in keeps you on the page you were on (#478).
- Signing out leaves the account's workspace in both the browser and the desktop app (#480). On desktop the app restarts into a workspace no account owns; the account's notes stay on disk and return on the next sign-in.
Fixes
- Locking a note or folder now closes it immediately. Before, it stayed readable until the idle timer or "Lock notes now" (#508).
- Desktop: a saved window size larger than the screen is fitted back to the monitor on launch. An oversized window could push the editor off screen and leave the main section looking empty (#511).
- Desktop: the sync push thread no longer panics with "Could not automatically determine the process-level CryptoProvider". Live sync updates no longer fall back to polling because of it (#511).
- A task's checkbox and its text stay on one line (#494).
- A task whose title ends in formatted text, such as bold, keeps its task link after reopening the note (#499).
Site
- The header shows the signed-in user's menu (#479) and floats on scroll (#482).
- The download button picks the visitor's operating system (#483).
- New hero preview (#477) and better changelog contrast (#481).
Under the hood
- The workspace app is restructured into layered modules with enforced public APIs (#510, ADR-0055). Command ids, shortcuts and hints are unchanged. With an empty query, the palette's Actions group is now ordered by module.
- The search index rebuilds once after updating, so math can be searched.
- The sync service's test config typechecks in its own package (#506).
Full changelog: v2-v0.48.0...v2-v0.49.0 |
| 0.48.0 | 30 de setembre del 2026 | — | 64 bits MSI Notes de la versióChanges since v2-v0.47.0
- chore(v2): release v2-v0.48.0
- feat(v2): open files from the OS, rebindable Quit, remote import images, pinned AI run card (#502)
- feat(site): framed homepage design across the whole site (#490) |
| 0.47.0 | 27 de setembre del 2026 | — | 64 bits MSI Notes de la versióHighlights
Share a note as a public link (#496). Pick "Share note as a public link…" in the command palette, or "Share as link…" (S) in a note's context menu, to publish it as a read-only page at skriuw.com/s/<id>/.
- Each link is either a frozen snapshot you refresh with "Update shared copy", or follows your edits a few seconds after you stop typing.
- "Stop sharing" removes the page on its next load. Publishing the same note again keeps its link.
- Sharing needs a Skriuw account. It does not turn on sync.
- Shared text is stored on Skriuw's server without end-to-end encryption, even when your sync is encrypted. The dialog says so before the first upload.
- Images and drawings are left out, and locked notes can't be shared.
- Details in ADR-0052.
Package channels moved
Self-hosted channels now live in the skriuw organization (#489):
- Scoop: scoop bucket add skriuw https://github.com/skriuw/scoop-bucket
- apt and dnf: https://skriuw.github.io/packages/. If you added the old remcostoeten.github.io/skriuw repository, switch to the new URL. The install commands are on skriuw.com/download.
- Homebrew, AUR, winget and Snap are unchanged.
Other changes
- The reduce-motion setting, which no longer had any effect, is removed. Workspaces that still store it open unchanged (#492).
- skriuw.com is now a Next.js site with a changelog page, a nested feature outline in the docs, and condensed AI docs (#475, #476, #488).
- Contributor tooling: scripts moved to tools/scripts/, a component storybook, and EAS builds of the Rust core for the mobile app (#475, #488, #493). |
| 0.46.0 | 19 de setembre del 2026 | — | 64 bits MSI Notes de la versióHighlights
One local workspace per cloud account (#378, ADR-0046). Signing into a second account on the same install no longer dead-ends on "this workspace is linked to another cloud workspace". The first account to sign in keeps the notes you wrote before you had an account; another account opens a workspace of its own and the app restarts (desktop) or reloads (browser) onto it. Switching back is lossless. Account settings gain a "Notes on this device" row that says which account the open notes belong to, and a failed browser session resume now reports its real reason instead of a generic "session ended".
Skriuw on a phone behaves like an app (#380, #381, ADR-0047). The platform back gesture closes the sheet, dialog, or palette on top and otherwise leaves the app; tab bar taps never stack history. Settings fills the screen, every dialog stays above the keyboard and pulls down to close from its grabber or header, and toasts swipe away. When the browser can install Skriuw, a one-line strip above the tab bar says so — Install or Not now, remembered for that browser.
Journal quick capture and mood trend (#379). Installed browser builds get "New journal entry" and "New note" home-screen shortcuts and appear in the system share sheet: shared text or a link becomes a new note with the page title as its heading. The sidebar Stats tab shows the last 30 days of moods as a bar strip with a one-line trend ("Mostly good, lifting lately"). Touch targets across the toolbar, Search, toasts, and dialogs grow to 44px.
Settings sidebar regrouped (#377) into sections so the growing list of surfaces stays scannable.
Also
- README describes sync as end-to-end encrypted (ADR-0043 shipped in 0.45.0).
- The keyboard-workflow and account-switch browser e2e suites run from scripts/check-wasm.sh.
Upgrading
No migrations, no cloud Worker changes. Existing installs keep their workspace; it becomes the signed-in account's on the next sign-in. |
| 0.45.0 | 18 de setembre del 2026 | — | 64 bits MSI Notes de la versióEverything since v0.44.0. This release is about notes that stay private, an editor you can drive without leaving the home row, and a browser build you can install on a phone.
Private by construction
- End-to-end encrypted sync (ADR-0043, #363). Note titles, bodies, tags, people, properties, tasks, media, and even the operation type are sealed on the device before push and opened after pull. The service orders and accounts for opaque bytes. One per-workspace key is derived from a recovery code that is shown once and never stored; a second device joins by typing the code alone.
- Locked notes (ADR-0044, #373). Lock a note behind a workspace PIN or passphrase with a one-time recovery code. This is real encryption at rest: no snapshot, archive, search row, task, reference, or history capture carries a locked body, and locked notes replicate as ciphertext. Losing both the secret and the recovery code makes locked bodies unreadable for good, and the setup dialog says so. Migration 0027_note_lock.sql.
Modal Vim editing
One vimMode setting (mod+alt+i, or Toggle Vim mode in the palette) makes both editors modal (ADR-0042, #367).
- The rendered editor gets a Vim layer built for the block document: normal, insert, visual, and visual-line modes, counts, operators with motions and text objects, f/t and / search, registers including the system clipboard, dot repeat, macros, and :w, :q, :N, :noh, :s.
- The raw Markdown view moves to CodeMirror and runs its Vim extension with the same : commands. j/k move by wrapped screen rows.
- Jump to line counts what you see (#372). "Line N of M", :N, and NG count wrapped rows in the rendered editor, so the same number lands on the same content in both editors. Very large, virtualized documents still count Markdown lines.
Diagrams
- Rendered Mermaid fences (ADR-0045, #374). Sequence, state, class, and ER fences, plus flowcharts the editable block does not claim, render a themed read-only preview inside the code block, with a Preview/Source toggle (mod+alt+p), a full-viewport expand with pinch and pan, and a visible error line that keeps the last good render. /sequence, /state, /class, and /er insert a template. The fence stays the only stored form, and the renderer loads as a lazy chunk.
- AI Diagram action (#375). Select text and have AI draw a flowchart, sequence, state, class, or ER diagram from it; Insert diagram places the fence below the selection. A reply that does not render is sent back once for repair. Every AI result now draws its Mermaid fences in the run card, and the card itself is restyled: state dot in the header, a filled primary action with key caps, quiet secondary actions.
Search
- Full-text content search (ADR-0041, #362, closes #341). The SQLite FTS5 index now projects prose instead of raw Markdown, ranks title hits above body hits, highlights matches in the palette, detects when it has drifted from the workspace, and can rebuild itself in one transaction. Verified in the browser build too.
Phone and tablet
- Installable browser build (ADR-0040, #366). /app/ is now an installable, offline-capable app. A new build is offered as a reload, never swapped under a running session, and persistent storage is requested once the workspace opens.
- Compact touch shell (ADR-0041, #366, #368). Below 900px the app is one content column over a bottom tab bar; the tree and inspector become edge drawers that follow your finger 1:1 with rubber-band overscroll, settle on a flick, and close on a scrim tap or a note pick.
Journal
- Start from a template (#376). An empty entry offers the built-in and personal templates; the pick is remembered, so the next empty day is a single press. Browsing days never creates an entry.
- On this day (#376). Under the editor: entries from a week ago, a month ago, and the same date in earlier years, with mood and an excerpt.
- Phone day view (#376). Previous/Next day buttons, a horizontal swipe across the heading to step a day, and the five moods on one row.
- Faster nav |
| 0.44.0 | 9 de setembre del 2026 | — | 64 bits MSI Notes de la versióEverything since v0.43.0. This release is about AI you can see and steer, notes you can reuse, and a browser build that can recover from a broken database instead of dead-ending.
AI runs are visible work
AI is no longer something that happens behind a modal (ADR-0040, #358).
- A standing entry point. An Ask AI launcher sits in the editor whenever the AI opt-in gate is open. With nothing selected it opens on the caret, so whole-note actions (summarise, outline, suggest a title, extract tasks, suggest tags) no longer require selecting text they ignore.
- One anchored, non-modal menu. The AI menu is a popover over the range it is about and swaps in place with the bubble and link menus. Actions that need nothing from you start on the click that chose them. The three that need an instruction (change tone, translate, custom) get a second pane in the same popover, with a live preview of the exact payload.
- Runs report themselves. Every run shows three labelled stages (sending, waiting, generating), a skeleton where the text will land, elapsed time, and a stall note after six seconds naming which half is quiet. A failure marks the stage it failed in and names its one recovery move. Stop works in every in-flight phase and no longer waits on an acknowledgement a dead transport never sends.
- One card for every outcome. The word diff for a replacement, the plan checklist for tasks and tags, the proposed line for a title. Only a replacement strikes its range through.
- Fixed: the result card could dismiss itself the tick it opened, and a torn-down effect could leave a run holding a disposed stream.
Voice dictation
Speech-to-text behind the AI opt-in gate (ADR-0039, #339).
- Record from the editor with a live level meter; the transcript is inserted as one undoable transaction.
- Optionally reformat the transcript through the completion pipeline with two new built-in prompts, Clean transcript and Structure transcript (prompt library v3). A failed format falls back to the raw text.
- Groq (Whisper) and Gemini transcribe behind the existing credential and consent gate. Audio bytes are staged over IPC and the provider call runs off the main thread.
- Audio-only microphone access now works on Linux (WebKitGTK permission request answered).
Reuse your own notes
Personal templates and saved searches, both device-local and bounded (ADR-0038, #353).
- Save note as template registers an ordinary note as a template source. Copies keep its properties, default to its folder, expand {{date}}, and get fresh task and block ids. The source stays editable; removing it from the picker never deletes it.
- Saved searches live in the sidebar and re-evaluate live against current notes. Title text and tag: / person operators keep their meaning across restart, archive round-trips, and preference reset.
Editor
- Compact selection toolbar (#359). Twenty-one controls become ten: highlight, alignment, and block type each collapse behind one trigger that shows the value in force. Submenus stay inside the window, flip above the toolbar when needed, and are fully keyboard-operable (ArrowDown opens, Escape/Tab return). Highlights can finally be removed with None instead of re-pressing the same colour. The Ask AI entry gets a liquid-metal treatment that respects prefers-reduced-motion and falls back to a plain button.
- Block gutter is now a setting (#271, #356). Settings → Editor → Blocks toggles the drag handle live, without an editor remount. With it off, every gutter action stays reachable via Alt+Arrow, the slash menu, and the block context menu.
- Raw Markdown view: wrapped lines get aligned line numbers and correct j/k movement.
- Task lists: better checkbox accessibility, keyboard navigation, and focus retention.
- The first # / @ keystroke on large workspaces is ~18 ms faster (collator warm-up moved out of the hot path).
Media
- Named media with bulk delete (#289, #356). The settings media library gets an inline name and description per item, and multi-select dele |
| 0.43.0 | 5 de setembre del 2026 | — | 64 bits MSI Notes de la versióEverything since v0.41.0, the last published release. v0.42.0 was tagged but never published, so its changes ship here too.
Sync converges by itself
Connected devices now reach the same workspace without anyone being asked to choose, and nothing anyone typed is discarded (ADR-0037).
- No conflict dialogs. The conflict review surface, the conflict sync status, and the resolve-conflict command are gone. A note edited on two devices while both were offline is now a note, not a prompt.
- Deterministic merge. A remote document write is decided against the greatest server sequence this device has already incorporated for that note, plus whether an unsequenced local write is still pending — never against the device-local revision counter or a base sequence the two devices can disagree about. Two devices reading the same log always make the same decision.
- Losing bodies are kept. Note history gained provenance (local / remote / superseded); a body that lost a merge is written into that note's history as "Version from another device (superseded)" rather than dropped.
- Export stopped failing closed. Portable export no longer refuses to run because of sync state elsewhere in the workspace.
- Migration 0023_automatic_convergence.sql rebuilds history_outbox and sync_received_operations, drops the conflict tables, and adds dangling-reference tracking. Forward-safe; existing conflict rows migrate to superseded records carrying their reason.
Measured propagation floor with the network removed: p50 0.82 ms, p95 0.94 ms in release builds (benchmark).
Account and save reliability
- A cloud session that dies is now propagated from the sync coordinator to every account surface, so the app stops offering a dead token.
- Sign-in connects sync in the background; when that fails, the failure is now visible instead of leaving a workspace signed in and quietly not syncing.
- Saves retry against the winning revision before surfacing an error, and a failed save offers an explicit retry rather than losing the attempt.
- A commit gate serializes remote reconciliation against local commits without ever making an optimistic renderer update wait.
- Sync flushes on visibility and connectivity changes instead of waiting out its poll interval.
- Stale sync epochs are purged on connect, fixing outbox sequence collisions after a workspace was re-provisioned.
- The cloud worker reads request bodies under a hard byte bound; an oversized or understated body is cut off instead of buffered.
Editing
- Whole-note ink annotation layer (#336): pen, highlighter, line, rectangle, ellipse, eraser, and select/move over the entire note surface, versioned on the document root.
- Inline comment threads now have hover previews, Tab-to-reply, and a fully keyboard-operable popover.
- Version history diffs pair edited lines by similarity and can expand hidden context, so a reworded paragraph reads as an edit instead of a delete plus an insert (#350).
- Revision stats on the history view; AI model lists are fetched from the provider instead of hardcoded.
- Sidebar pinned chips (#352).
- Checklist task promotion now happens in the same transaction as the save that triggers it.
- Fixed: stacked code blocks had no gap between them.
Browser runtime
- Multiple tabs of the same workspace are now allowed.
- The last open note is restored across a browser reload.
Elsewhere
- Canonical Skriuw landing page with social preview metadata (#337).
- Animated icons resolve through one keyed module.
Addresses #343–#349. |
| 0.28.0 | 2 d’agost del 2026 | — | 64 bits EXE (NSIS) Notes de la versióWhat's new in 0.28.0
Undo for deletes
- Deleting a note or folder from the sidebar now shows an undo toast; press mod+Z or click Undo to restore it immediately.
- New "Show toasts" setting to control confirmation toasts.
Shortcuts
- Editor-bound shortcuts moved to a single registry with explicit route scopes, so custom bindings apply consistently inside the editor (rich and raw markdown modes) and never fire on the wrong screen.
- Editor search shortcuts and focus handling improved; the shortcut cheat sheet reflects the new scopes.
Coverage for the shortcut system grew with dedicated route-scope and editor-binding test suites (804 renderer tests green). |
| 0.26.0 | 28 de juliol del 2026 | — | 64 bits EXE (NSIS) |
| 0.18.0 | 9 de juliol del 2026 | — | 64 bits EXE (NSIS) |
| 0.16.0 | 6 de juliol del 2026 | — | 64 bits EXE (NSIS) |