Repository navigation
Writ v0.6.0
Text a save could not write now survives a crash, and the preview shows a document in a sandbox with its scripts off until they are allowed for that file. Typing and Find keep up in large files because a keystroke no longer copies the whole document, editor settings apply, and the sidebar shows the notes folder. Requests to AI providers carry only what each accepts, a program asking for files is announced where it can be answered, and releases are signed in their own jobs on current dependencies.
Added
- When a save cannot reach the file (read-only, locked, unmounted, not downloaded, or timed out), the text is kept until a later save lands, and the next launch after a crash or quit writes it beside the note as a
(recovered …)copy. - A new note the notes folder will not take keeps its text in the tab under a message naming the file and the folder, with Save As….
- A previewed file's scripts stay off until they are allowed for that file, with the
Scripts offfield in the status bar or Preview: Toggle scripts for this file, and a file another program replaces has them turned off again. - Change language… in the palette sets a file's syntax language and keeps it through closing and relaunching; Detect automatically goes back to the file name.
- A file over 50 MB shows a progress bar while it reads, after the question that names its size.
- Find says "Invalid pattern" for a regular expression that does not compile and "Pattern too complex" for one it gives up on.
- A program that asks Writ for files is announced in the window, as in "Claude Code wants to read your folder.", with Approve reading, Approve reading and writing and Don't allow.
- Settings, Apps, Connected programs lists programs waiting for an answer under Waiting for you, and the toolbar's programs mark shows a dot while one waits.
- View, Program Activity opens the activity panel while Connected programs is on.
Changed
- Settings no longer has Allow HTML files to run their scripts, which was on by default; scripts are allowed per file.
- The restore toast at launch counts only the files whose text it wrote back.
- Find counts matches in large files without holding up typing, showing a running count with
+until it settles, and searches again only the part that changed. - A keystroke no longer copies, sends or hashes the whole document, so typing keeps up in large files with word, character and token counts on, and a file in large-file mode shows
≈counts until the exact ones land. - Spell check re-checks only the paragraph being edited.
- A file over 500 MiB is refused with a message naming its size and the limit, and a tab whose file grew past it shows that message with Try again.
- Tags, links, headings and properties come from
.mdand.markdownfiles only; the first launch after the update reads the notes folder once to drop the entries.txtfiles had added. - The sidebar's Files section shows the notes folder whenever no other folder is open, with New file and Show folder in Finder while the folder is empty.
- Selecting a tag filters the notes folder's tree, with a
#tagchip in the Files heading that clears it, and with Files folded or another folder open the tag lists its files under its own row. - A provider with no model chosen starts on its default model when its list has it, then on a suggested model the list has, then on "No model" with the list open; Ollama or LM Studio with one model installed starts on that one.
- Default and suggested models are current for each provider, such as
gpt-6-lunaon OpenAI andclaude-sonnet-5-5on Anthropic, and the OpenAI list shows chat models only. - An error from a provider that rejects a parameter names it, as in "the model does not accept the max_tokens parameter".
- OpenRouter Connect answers stray requests to its local listener with a 404 and keeps waiting, and the browser page appears once the key is exchanged.
- Program activity describes each call in words, as in "Claude Code asked to open plan.md · Allowed", folds repeated reads into one row with a count, and shows known programs by their names.
- A program refused because Connected programs is off, or because it is waiting for approval, is told which and where in Settings to change it.
- tauri 2.12.3, tao 0.37, wry 0.57.0, harper 2.11 and rmcp 3.5, built with Rust 1.99.0.
- Release builds run without access to signing keys, signing happens in its own jobs, and every asset carries a build-provenance attestation that
gh attestation verify <asset> --repo ibrahemid/writchecks. - Each release attaches CycloneDX SBOMs for the app, the
writcommand and the frontend, andSHA256SUMS.txt.minisig, a minisign signature over the checksums made with the updater key. - The Windows MSI is still unsigned.
Fixed
- A network share that stopped answering held up saves in every other tab; other tabs keep saving now.
- A document in the preview could reach the network through a script, a resource hint, a meta refresh or a frame, and take a note's text with it; the preview now shows it in a sandboxed frame, and a file whose scripts are off sends nothing out.
- The preview was blank on Windows; HTML, Markdown, Mermaid diagrams and math draw there now.
- Find kept counting the previous tab after a tab switch; the count and highlights follow the tab in front now.
- Word wrap and Tab size in Settings, Editor had no effect; they apply to open files at once now.
- A
.txtfile holding a code fence was coloured as that language;.txtand.textfiles open as plain text now. - Opening a file over 50 MB on Windows, or one with a colon in its name, asked about the wrong size and opened the wrong path; both open as asked now.
- A tab restored at launch, or a file reopened from History, read a file over 50 MB without asking; it asks first now.
- Cancel on the large-file question was reported as a failed open; it leaves no message now.
- A link to a missing file in the notes folder was answered as a file Writ may not open; it reads "Couldn't open spec.md: it does not exist." now.
- While a large notes folder was being read, as on the first launch after an update, quick open,
[[completion, backlinks and Cmd+N waited behind the read; they answer during it now. - Notes in a folder a
.gitignorelists, or invendor,buildorcoverage, were missing from search, links and backlinks; the notes folder now skips only.git,.obsidian,.trash,.stfolder,.stversionsand temporary files. - A download still arriving in the watched folder opened as a
.crdownloadtab; the finished file opens once instead. - The outline, links, backlinks, graph and tags missed Writ's own saves, renames, new notes and deletes; they follow them now.
- Recent's times stopped advancing while the sidebar stayed open; they advance now.
- Chat and Rewrite on current OpenAI and Anthropic models failed with a 400 because Writ sent
max_tokensor a temperature those models reject; each host now gets the parameters it accepts. - Together's model list did not load; Together now runs at api.together.ai, and the first send after the update asks to allow that host.
- Stop before the first word of a reply did not end the request, and the next message was refused with "A reply is still arriving."; Stop ends it at once now.
- Applying a chat edit to a note with CRLF line endings wrote LF lines; the note keeps its line endings and final newline now.
What's changed
Features
Fixes
- fix(preview): sandbox the document frame, per-file script opt-in, Windows preview URLs (#289) (941c3cb)
- fix(sidebar): show the notes folder, filter it by tag, refresh after own writes (#286) (23f14df)
- fix(ai): request bodies per host, model seeding, loopback state, stop token (#283) (f76c18b)
- fix(editor): apply word wrap and tab size, lazy grammars, typed open outcomes (#282) (3945888)
- fix(mcp): announce waiting programs and approve them in Settings (#281) (0d0ebcc)
Other
- chore(release): bump version to v0.6.0 (#295) (7ffd4f2)
- chore(release): bump version to v0.6.0-1 (#293) (307a6f5)
- perf(editor): no whole-document work per keystroke (#291) (b6bbbff)
- chore(scripts): quick gate mode (#290) (b660746)
- perf(editor): native find scan and an editor perf gate (#288) (49e6c17)
- chore(release): sign and publish in their own jobs, attest every asset (#284) (fb44b6a)
- refactor(storage): notes index behind a writer and readers, notes walk policy (#285) (f2f1768)
- chore(deps): tauri 2.12, cargo-deny and lockfile guards in CI (#279) (867466c)
- chore(packaging): bump to v0.5.1 (#278) (fb50bc6)
Full Changelog: v0.5.1...v0.6.0