Skip to content

Writ v0.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Jul 18:42
15be9f6

What's changed

Features

  • feat(site): make the demo editor continue lists and toggle checkboxes (#14) (21ec7f8)
  • feat(editor): markdown writing experience (#15) (eeccf9d)
  • feat(settings): show the storage database path with reveal and copy (f23c5fc)
  • feat(settings): searchable settings with command palette indexing (#4) (7263547)
  • feat(site): rebuild the landing and unify the site on one design system (#3) (a46f93a)
  • feat(site): rebuild the site (#162) (81ea026)
  • feat(editor): editor and preview font zoom (3f013de)
  • feat(search): full-text results panel with snippets and line numbers (#160) (5010d36)
  • feat(inbox): watched-folder files listed in the sidebar (#159) (0efa2d0)
  • feat(prompt): variable count and live token estimate in the fill modal (#158) (e958ea1)
  • feat(editor): add language, encoding, and cursor fields to the status bar (#157) (3dd735b)
  • feat(inbox): open new files from a watched folder as they arrive (#147) (8ec7d56)
  • feat(files): file-size policy with large-file mode and binary hex view (#146) (90aab59)
  • feat(files): one-click Make Writ default app for .md and .html (macOS) (#145) (dde18ea)
  • feat(cli): writ command-line surface (#144) (f0dae56)
  • feat(workspace): open a folder as workspace with sidebar file tree (#143) (6affa2d)
  • feat(recovery): wire crash-recovery infrastructure into the running app (#142) (aeaa5c0)
  • feat(prompt): token estimate, copy as prompt, fill placeholders (#140) (e032a7c)
  • feat(editor): live markdown typography for .md buffers (#141) (fd4e1f1)
  • feat(settings): unified Settings modal with Cmd+, shortcut (#136) (b77f82c)
  • feat(theme): app-wide light theme across every surface (#132) (07c36f1)
  • feat(ui): designed empty state for the cold sidebar (#133) (a00d14c)
  • feat(editor): find/replace overlay with live match count (#118) (f27a472)
  • feat(preview): KaTeX math via bundled offline runtime (#121) (94f4e67)
  • feat(preview): render mermaid diagrams from a bundled offline runtime (#116) (38e90fa)
  • feat(transforms): composite pipelines plus trailing-trim, final-newline, punctuation-spacing (#117) (af8c0e0)
  • feat(preview): markdown renderer with theme inlining and empty-panel guard (#114) (79194a8)
  • feat(preview): split-pane preview surface (iframe over writ-preview://) (#96) (c96365b)
  • feat(preview): rendering pipeline with HTML renderer and protocol handler (#93) (62cea1f)
  • feat(preview): per-window state, registry, and writ-preview:// substrate (#92) (527e6d1)
  • feat(xplat): file-association open via argv + single-instance forwarding (#73) (87e8a20)
  • feat(ui): app-wide typography pass with Inter for chrome (#52) (03abb67)
  • feat(sidebar): IDE Active section + time-bucketed History, empty-buffer guard & reclaim (#51) (7730e0e)
  • feat: in-app updater (signed, consent-based, store-driven) (#50) (7a42c42)
  • feat(statusbar): transient saved / persistent save-failed indicator (9595281)
  • feat(sidebar): group history by Today / Yesterday / This Week / date (7854993)
  • feat(search): leading icon, shortcut hint, and live result count (4920149)
  • feat(tabbar): scrollable strip with readable min-width and accent active state (b869a13)
  • feat(a11y): modal focus safety + destructive-action confirmation (8ef6721)
  • feat(palette): usage-weighted ranking, recent section, inline shortcut editor, reactive statusbar chip (d5db314)
  • feat(plugin): transform registry v1 with 4 built-in transforms + palette wiring (8856b35)
  • feat(ui): theme system, integrated titlebar, palette polish, window fixes (82cdea7)
  • feat(ui): polish statusbar, tabs, chrome, and command palette (83654bd)
  • feat(sidebar): docked Cmd+S toggle with persisted open state (ef7c23e)
  • feat(release): pkg installer with quit-then-install, dmg alongside (42e8694)
  • feat(site): theme polish (bccbf5f)
  • feat(updater): trigger update check on launch (ac54f1f)
  • feat(updater): user-initiated update check shows result dialogs (ffbd019)
  • feat(menu): add Writ application menu with Check for Updates (93d3b08)
  • feat(site): add first-time install notes for unsigned mac and win (6e24e7b)
  • feat(site): real app icon, hero/proof screenshots, copy trim (416fc3b)
  • feat(site): OG images, /privacy and 404 page polish (f15aee5)
  • feat(site): comparison and proof sections, /download and /changelog pages (fc94d2f)
  • feat(site): design system pass with four themes, FOUC script, motion islands (483c62e)
  • feat(packaging): manifests and release-bump workflow (c36bc8f)
  • feat(site): Astro landing site and GH Pages workflow (85b9a87)
  • feat(updater): register tauri-plugin-updater in builder chain (e84a6d9)

Fixes

  • fix(release): cover tauri v2 updater artifacts and staple the dmg (#31) (15be9f6)
  • fix(settings): route the storage path copy through the storage store (e925dd6)
  • fix(storage): log the reveal failure before returning the user message (4618e16)
  • fix(editor): classify open mode by line shape to keep large opens responsive (2642c14)
  • fix(window): log window-geometry persist failures (b34f4fe)
  • fix(site): describe the update check accurately (cbf77a4)
  • fix(site): correct the 404 page pointers (d7b9614)
  • fix(site): show only the real release history on the changelog (6e3a96f)
  • fix(site): resolve favicon links against the base path (dc6c990)
  • fix(site): give the header ticker facts the page does not already say (fa5fce8)
  • fix(app): log collect_buffer_contents failures in the periodic snapshot (90bb837)
  • fix(cli): escape the sidecar path in the privileged install script (a3b0666)
  • fix(open): keep Writ out of the default HTML and web-link path (#1) (e89edf5)
  • fix(site): render the capability deck server-side (#163) (9b3ada2)
  • fix(storage): atomic history clear, broader test coverage, doc parity (#153) (5592f18)
  • fix(cross-platform): restore native watcher backends and gate the menu to macOS (#151) (dab5a92)
  • fix(storage): harden persistence and write atomicity (#150) (f4358fc)
  • fix(inbox): align watcher with the file-size policy (#149) (2eec551)
  • fix(input): make sidebar toggle global so Cmd+S works from the editor (#134) (1403dcd)
  • fix(input): scope app shortcuts to editor focus; drop dead double-tap engine (#130) (cd9aeed)
  • fix(preview): find inside the rendered preview (#129) (5cbf308)
  • fix(preview): sync source and preview scrolling in split view (#128) (6961ffa)
  • fix(preview): stop the last-tab/close webview freeze and the watcher self-write echo storm (#127) (81ba414)
  • fix(preview): stop stale-cache flash on tab switch by gating render on loaded buffer id (#126) (dd7dca5)
  • fix(editor): stop tab double-click from also maximizing the window (#125) (8e30389)
  • fix(preview): re-resolve layout when a rename changes a buffer's renderability (#123) (2abea77)
  • fix(preview): stop tab-close freeze with the preview pane open (#124) (9f0f945)
  • fix(window): grant window-action capabilities and add fullscreen control (#120) (4baafc2)
  • fix(window): stop wry drag-drop nil-pasteboard panic (#113) (#115) (6f0331d)
  • fix(preview): render scratch buffers whose title carries a renderable extension (#98) (ae9f81c)
  • fix(window): persist window position and flush geometry on quit (#94) (ba4b599)
  • fix(arch): uninstall keyboard handler on App cleanup (#90) (be5497b)
  • fix(a11y): announce toasts via aria-live container; role=alert on errors (#85) (7e75316)
  • fix(a11y): aria-label + focus outline on TabBar close control (#83) (d362a5b)
  • fix(a11y): real button + focus-within reveal for sidebar row actions (#80) (3ffe21b)
  • fix(a11y): persistent aria-live regions for save status and update banner (#87) (f367154)
  • fix(a11y): accessible name on toast dismiss button (#84) (3c04291)
  • fix(a11y): accessible name on TabBar new-tab button (#82) (c1c3b31)
  • fix(a11y): keyboard-operable sidebar rows (role=button, Enter/Space) (#78) (31f8f43)
  • fix(security): gate open_file and save_to_source on server-side path origin (#86) (6798bc8)
  • fix(security): sanitize buffer title and derive on-disk filename from UUID (#81) (dd6175d)
  • fix(autosave): persist empties on buffer-switch and flush on window-close (#79) (921f287)
  • fix(hotkey): parse config chord with platform-aware CmdOrCtrl mapping (#70) (901e232)
  • fix(watcher): content-fingerprint ignore stamps to prevent dropping real external edits (#68) (a455343)
  • fix(storage): rename-into-place writes for buffer content + save_to_source (#67) (e1b4273)
  • fix(buffers): flush autosave before close to prevent last-edit loss (#69) (8bbadd0)
  • fix(events): load the buffer when opening a file via OS or dialog; restore search results for open buffers (#49) (5569fd8)
  • fix(search): drop misleading borrowed shortcut hint from search box (bf7dfb2)
  • fix(titlebar): add 12px left gutter so traffic lights clear the first tab (3df4ee5)
  • fix(core): rename FTS handling, watcher ownership, mutex logging, event-bus bridge (f708757)
  • fix(search): restore FTS5 content search and wire into palette (7f169df)
  • fix(ci): drop unsupported matrix reference in job-level if (ec3dca3)
  • fix(release): gate APPLE_ID/APPLE_PASSWORD/APPLE_TEAM_ID on secrets too (2378f17)
  • fix(release): only export APPLE_CERTIFICATE/WINDOWS_CERTIFICATE when set (8252091)
  • fix(ci): collapse dependabot skip rule into a single-line if (91ffeac)
  • fix(release): load Tauri updater key + password automatically in preflight (d61ae10)
  • fix(release): matrix build for unsigned RC (77cdfbf)
  • fix(site): v2 quality pass and download link wiring (4375873)
  • fix(ci): site deploy and version-bump scoping (7eefdf6)
  • fix(site): linux deb/AppImage filenames use capital Writ_ to match release assets (e8e1006)
  • fix(ci): packages workflow downloads Writ_ AppImage and deb to match release assets (f0eb1d3)
  • fix(ci): site sync uses universal mac dmg key (a0ee452)
  • fix(packaging): AUR bump script writes capital Writ_ AppImage URL (ec6c1e4)
  • fix(site): align install one-liners with packaging configs (10dc478)
  • fix(site): use universal mac dmg in download manifest (46d2667)
  • fix(install): match capital Writ_ AppImage filename (d9a34cb)
  • fix(site): correct verification copy and use SHA256SUMS (2328f0a)
  • fix(packaging): AUR PKGBUILD uses capital Writ_ prefix to match release assets (494bdc6)
  • fix(install): order OS check before arch + update brew/winget hints (b6d31c0)
  • fix(release): normalize linux bundle names to lowercase (b7b8a9d)
  • fix(packaging): document winget manual PR + launch-day delay (8a1887f)
  • fix(packaging): homebrew cask uses universal dmg (e73031a)
  • fix(editor): wire language extensions, reconfigure on tab rename (9cc0031)
  • fix: OS file open handler (81840f8)

Other

  • release: v0.1.0 (#24) (1789a42)
  • docs: cleanup (da9e39d)
  • docs(readme): update content (47b20ed)
  • chore: drop stale file references from the dependabot comment and ADR-021 (dced230)
  • docs(readme): point downloads at the release page, drop missing media and star history (ad688fc)
  • test(theme): accept composite site tokens in the preset integrity test (4689455)
  • refactor(app): deduplicate the active-buffer memo and basename helper, mark singleton signals (0fb45d4)
  • refactor(editor): route autosave and language detection through the editor store (695b687)
  • docs(changelog): correct the default-app scope and crate count (73ef450)
  • docs(changelog): bring the unreleased notes up to what actually ships (b68e28e)
  • chore(site): drop unused wasm and token build steps (7ca3f13)
  • chore(repo): stop tracking the node_modules symlink and ignore generated artifacts (99c0461)
  • refactor(preview): recover poisoned mutexes instead of panicking (e02b3fc)
  • refactor(recovery): make pull-based recovery canonical, with coverage and font fixes (#155) (59ab03d)
  • chore(release): build the writ CLI sidecar before bundling (#154) (9a1bce2)
  • perf: optimize sidebar, search, autosave, and startup paths (#152) (e1fd789)
  • test(settings): fake-timer coverage for default-app re-query path (#148) (7178785)
  • test(perf): criterion benchmarks and budget gate for transforms and storage (#139) (d8146b7)
  • docs(adr): renumber search controller and fix cross-references (#135) (89e3252)
  • refactor(theme): route every surface through design tokens; enforce WCAG AA (#131) (b0a7488)
  • test(preview): exfil-denial suite, URL-parser fuzz, threat model (#112) (37a589e)
  • chore(preview): scope the preview surface and lock the document CSP (#95) (58eaba7)
  • refactor(arch): os-window store + tauri window wrappers; route components through store (#89) (b6c6028)
  • refactor(events): complete bus migration; menu, config, buffer-external go through bridge (#91) (4c3971e)
  • chore(clippy): silence intentional state-doc unused_assignments in window_state test (#88) (8105bad)
  • docs(adr): 011 preview trust model + verification suite (#76) (e95f787)
  • docs(adr): 010 workspace primitive, writ-workspace:// protocol (#75) (7fd16cc)
  • docs(adr): 009 preview surface, content-type renderer registry (#74) (207a18b)
  • docs(recovery): mark snapshot/dirty-shutdown infrastructure as unwired (#72) (f8e1003)
  • docs: code quality review and fix order (#65) (657f026)
  • refactor(sidebar): drop redundant Active Tabs section (8ea5f71)
  • refactor(core): buffers store, language registry, bulk close, ready event, perf instrumentation (8048895)
  • docs(adr): plugin runtime, text transform registry (84bcbd6)
  • chore(clippy): use sort_by_key with Reverse for history ordering (#39) (6fb20d9)
  • chore(updater): defer launch-time check to avoid UI race (e78583d)
  • chore(release): add release automation script (2fa91d4)
  • docs(packaging): plain-language note for filename changes (f365a0f)
  • docs(changelog): consolidate notes under unreleased (e577c31)
  • chore(gitignore): trim ignore comments (0410b77)
  • chore(release): bump to 0.1.0-rc.1 (d291e40)
  • chore(tauri): wire updater public key (b9b219c)
  • chore(scripts): tweak triage-dependabot script (39339c6)
  • chore(ci): pause dependabot until launch (64cc5cd)
  • ci: cut macOS/Windows from dependabot PRs and slow dependabot to monthly (0775d36)
  • style(rust): apply cargo fmt for newer stable rustfmt rules (e6d53e1)
  • chore(ci): group dependabot updates and add triage script (7ffde1b)
  • chore(deps)(deps-dev): bump jsdom from 29.0.1 to 29.1.0 (#15) (8cfa9a4)
  • docs(packaging): canonical artifact names use capital Writ_ (8261811)
  • revert(release): drop dead local rename step (79a13bd)
  • perf(site): replace MotionOnView with CSS + IntersectionObserver (ac312d9)
  • docs(writ-core): tighten redundant BufferManager::new rustdoc (bdb506e)
  • docs(writ-storage): add rustdoc and strict lints (48235d2)
  • docs(writ-core): add rustdoc and strict lints (827dd8c)
  • docs(writ-plugin): add rustdoc and strict lints (e78e7f6)
  • test(config): exclude editor metadata and site/ from vitest glob (1400e67)
  • test(stores,services): align autosave + config tests with current impl (ad08c8a)
  • docs(changelog): correct crate list and keyboard shortcuts (87b77dc)
  • docs(readme): rewrite README as landing page (51e57da)
  • ci(release): release pipeline and Tauri updater config (f36884b)
  • chore: repo hygiene and metadata (587ffea)
  • chore: tidy workspace files and config (7b1f55e)
  • test: add TypeScript test suite (e780419)
  • chore: initial scaffold (8c015aa)