Skip to content

Writ v0.4.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 11:59
· 790 commits to main since this release
5f63fbb

What's changed

Features

  • feat(startup): stop Writ starting inside a synced folder (83834cd)
  • feat(quit): write pending notes before the app exits (6d99f51)
  • feat(autosave): cap scheduled writes at one per note per second (7699a6c)
  • feat(autosave): raise the idle debounce to one second (b3a991a)
  • feat(core): decide when the shutdown path stops waiting for a flush (b19b5e1)
  • feat(notes): open a note by name with Cmd+Shift+O (8b629dd)
  • feat(notes): watch the notes folder and rebuild the index at startup (c178d20)
  • feat(storage): index notes by path and reconcile the folder (b0175ac)
  • feat(render): hide yaml frontmatter in the markdown preview (3f06124)
  • feat(notes): notes folder settings and the migration report (4616d30)
  • feat(notes): create, rename, trash and copy notes from the app and the cli (d17bedd)
  • feat(storage): give a stopped save a code and stop before an evicted file (9cda3ce)
  • feat(storage): refuse a save that would overwrite a newer file on disk (5d7fb75)
  • feat(storage): make the file on disk the only copy of a note (c2971ab)
  • feat(storage): add migration 040 with the path-keyed index schema and a rollback copy (9bd04a2)
  • feat(notes): add the notes folder root, title sanitiser and containment (a4ee423)

Fixes

  • fix(preflight): rebuild the mac sidecars before the tests run (89c53b5)
  • fix(tests): compare the rebased notes path as a path (6813fb2)
  • fix(tests): spell the notes root fixtures with a drive on windows (e93244a)
  • fix(cli): write the notes root as a toml literal string in the config test (2977098)
  • fix(tests): gate the host platform import in the startup guard test (0676105)
  • fix(tests): compile the watcher path test on every platform (8aa9021)
  • fix(startup): title-case the sync container and cover dot names (dbfcef5)
  • fix(startup): name the sync service a CloudStorage container belongs to (b5d9dd1)
  • fix(startup): judge the data folder by where it will land (c4b2219)
  • fix(startup): check both spellings of the data folder (125d678)
  • fix(quit): answer AppKit only once the flush has finished (12064a7)
  • fix(ui): say note, not buffer, in the close save-failure log (d2f861e)
  • fix(quit): flush pending notes when macOS terminates the app (c69934b)
  • fix(ui): say note, not buffer, in the quit save-failure log (052abb2)
  • fix(quit): run the flush on every macOS quit gesture (06b98b5)
  • fix(storage): take the snapshot heartbeat to two minutes (c103d9a)
  • fix(storage): prune the row of a note that stops being indexable (4d50d5d)
  • fix(notes): point the index and the watcher at the moved folder (630d8be)
  • fix(storage): re-key the notes index when the folder moves (49b810f)
  • fix(palette): open a content hit that has no tab by its path (65ac4f4)
  • fix(storage): keep the notes index off files the save path skips (1406647)
  • fix(notes): clear the folder fallback when the notes folder moves (8ef9e71)
  • fix(notes): keep the notes folder out of writ's data folder at startup (8357073)
  • fix(notes): refuse emptying the archive into itself (04712de)
  • fix(notes): refuse a notes folder inside writ's data folder (d75b32d)
  • fix(notes): six defects in the folder move and the migration report (c8b77a8)
  • fix(settings): open on the section the nav rail leads with (56e7580)
  • fix(notes): drop the unwired deletable check and scope the rename wording (e356e58)
  • fix(notes): keep the trash off apple events and surface a stopped rename (96f1f43)
  • fix(storage): leave a recovered file alone when it already holds the text (629f877)
  • fix(storage): never open an evicted file to compare it against a snapshot (4fd1271)
  • fix(storage): stamp every write Writ makes and guard the relaunch restore (8d6b673)
  • fix(storage): keep the migration report from forgetting an earlier run (64f97e1)
  • fix(storage): settle the notes migration and keep generated documents out of search (bf1fd32)
  • fix(storage): keep generated documents out of the notes folder (b9a68c3)
  • fix(storage): retry a note the migration could not place (93d72c8)

Other

  • chore(licences): cover the crates 0.4 added (d20486b)
  • chore(release): bump version to v0.4.0 (83216e2)
  • test(notes): accept either refusal for a destination that climbs into the data folder (c0a245b)
  • test(notes): expect the canonical spelling the app stores for a copied note (90c78a2)
  • test(startup): expect the canonical spelling the app produces (a38ab49)
  • chore(release): sync Cargo.lock with the 0.3.5 bump (ca13253)
  • test: make the load-sensitive tests deterministic (42054cf)
  • docs(adr): record files as the only copy, the 1.0 direction and the design system (cf92bb6)
  • test(startup): pin the repro the guard used to walk past (aaec08f)
  • test(storage): report a p99 the sample count can carry (5c8df1e)
  • test(startup): cover the data folder verdict directly (2263f40)
  • test(startup): pin the report the location check writes (cff0486)
  • test(storage): measure what F_FULLFSYNC would cost a save (0bceb1e)
  • test(quit): keep the menu id test on macos (f1d57b9)
  • test(storage): port the search tests onto the notes index (c2011a1)
  • test(notes): pin the refusal for a destination two levels below the data folder (eb893c3)
  • test(notes): mint a note file inside the awkward notes folder (4858c8b)
  • test: widen the mount project and reorder the perf gate (d30fe9e)
  • test: enforce the moved perf budgets from the gate (ed480a5)
  • refactor(watcher): key ignore stamps by canonical path (c0c7c19)
  • test: make the load-sensitive tests deterministic (f0fd6e6)
  • test(strings): scan every crate source and skip log arguments by call, not line (d2a7bec)
  • test(strings): inflect banned words off the stem when they end in e (e4532c7)
  • test(strings): widen the banned-word guard to error text and inflections (f8e217b)
  • test(strings): guard user-visible strings against retired vocabulary (18ccc44)

Full Changelog: v0.3.5...v0.4.0