Releases: tiagojct/loomings
Release list
v1.2.0
v1.1.0
v1.1.0 — performance, Glauca/Try-Works themes, icon fix, correctness …
v1.0.3
[1.0.3] — 2026-06-15
Internals patch from the launch-readiness audit (Tier 2). No new features
in the editor itself; what changes here is correctness, security, and one
small View-menu addition.
Added
- Line numbers toggle in View menu. Persisted across launches.
- Strict-ish Content Security Policy. The shipped build now restricts
resource loading toself, the Tauri IPC scheme, andapi.github.com
for the update check. Previously the policy was disabled entirely. - Unit tests for the update-check version parser. Covers
v-prefix
stripping, pre-release suffixes (-rc.1,-beta), build metadata
(+build.42), and rejects malformed input.
Fixed
- Close-window race condition. The previous double-tap-close guard
kept its state in a Rust-side mutex with a 2-second window. A second
close request landing in that window was force-accepted regardless of
the unsaved-confirm result. The state machine is gone — Rust now
unconditionally intercepts every close request and waits for an
explicitconfirm_quitfrom the frontend before exiting. - Cold-launch race between Apple Events and the JS event listener.
When opening Loomings by double-clicking a.mdfile from Finder on
the very first launch, the file path could arrive before the renderer
had attached itsfile-openedlistener, dropping the file silently.
The path is now cached on the Rust side and drained by the JS init
flow once listeners are ready. Warm-launch "Open With" while the app
is already running takes the direct emit path as before. - Tokio worker starvation during update check. The synchronous
ureqGET to GitHub Releases ran on a tokio worker thread, blocking
it for up to 5 seconds and starving every other IPC command. The
call now runs ontauri::async_runtime::spawn_blockingso the worker
thread stays free for IPC during the network round-trip. - Silent file-watcher failures. If the OS denied the watch
registration (sandbox, network filesystem, missing capability), the
failure was swallowed and external-edit detection was quietly dead.
Failures now flash in the statusbar.
v1.0.0
First stable release. The app has been complete enough to use daily for
some time; this version is the line in the sand.
Install
macOS (Apple Silicon) — Homebrew:
brew install --cask --no-quarantine tiagojct/loomings/loomingsThe --no-quarantine flag is required because the build is unsigned.
Modern Homebrew adds the com.apple.quarantine xattr by default; without
the flag, Sequoia and Tahoe Gatekeeper refuse to launch the app with
"Loomings.app is damaged." If you have already installed without the
flag, fix the existing copy with:
xattr -dr com.apple.quarantine /Applications/Loomings.appDirect downloads are attached below for all platforms (.dmg,
.msi/.exe, .deb, .AppImage, .rpm). For unsigned macOS direct
downloads, run the same xattr command after moving the app into
/Applications.
Editor
- Real markdown syntax in the editor — bold, italic, headings (H1/H2/H3/H4
visually distinct), inline code, links. - Markdown shortcuts: ⌘B / ⌘I wrap selection, ⌘` for code, ⌘K for link.
Toggle-aware: pressing again unwraps. - Smart list auto-continue:
-,*,+,1., and>extend on Enter;
pressing Enter on an empty list item exits the list. - Smart typography: straight quotes → curly,
--→ em-dash,...→
ellipsis. Toggle in View menu. - YAML frontmatter detection —
---blocks at document start render dimmed. - Native undo, IME, paste-as-plaintext, scroll, selection (CodeMirror 6).
Navigation
- Outline palette (⌘P) — fuzzy-jump to any heading with ↑↓ Enter Esc.
- Find/Replace (⌘F) — CodeMirror search panel with regex, case sensitivity,
replace. - Recent files menu (File → Open Recent), last 10 files persisted.
- Cursor position (
Ln 5, Col 12) in statusbar. - Now opens
.qmdand.rmdfiles alongside.md,.markdown, and.txt.
Writing flow
- Focus mode (⌘⇧D) — dims everything outside the current sentence (not
just the paragraph). - Preview (⌘⇧P) — full markdown-it rendering with sanitized URLs.
- Word goal (⌘⇧G) — 7 presets cycle: off → 250 → 500 → 750 → 1000 → 2000 →
5000. Progress shows in the statusbar. - Column-width cycle (⌘⇧W) — wide (900px) / normal (660px) / narrow (500px).
Themes
- Pequod navy (dark) + Pequod parchment (light) + system-follow mode.
- Cycle theme (⌘⇧T). All surfaces share the same palette: editor, syntax
highlighting, preview, modals, statusbar, titlebar.
Files
- Auto-save 2 seconds after last edit, for named files.
- Crash-recovery scratch buffer — last buffer restored on next launch.
- External file watcher (
notify-debouncer-mini) — prompts reload if the
current file changes on disk. - Double-tap-close guard: requires two close attempts within 2 seconds to
prevent accidental data loss.
App
- About modal (Help menu) and a populated macOS native About panel with
name, version, MIT license, website, copyright. - Open Example (Help menu) — opens the bundled chapter 1 of Moby-Dick,
the chapter the app is named for. - Update check — checks GitHub Releases on launch and on demand (Help →
Check for Updates). Notification-only; downloads stay on the releases
page. Avoids breaking unsigned builds with mid-install quarantine.
Builds
- 4-platform CI on tag push: macOS arm64, macOS x64, Linux x64, Windows x64.
- Bundle outputs:
.dmg(macOS),.exe+.msi(Windows),.deb+
.AppImage+.rpm(Linux). - Releases attach all platform installers to a single tagged release.