Downright / Changelog

Version truth, in public.

Entries come from the native app's pinned CHANGELOG.md. The page keeps the source commit and generation date in its payload.

Subscribe to RSS
1.0.232026-11-13
Fixed

Permission prompts, such as "Read a file from outside this document's folder?", respond to clicks again. Clicks inside the floating Tasks, History, and Document panels no longer land beside the button you pressed. In a short window the prompt keeps every choice visible and separate, scrolling its explanation instead of squeezing the buttons together, and long file names are shortened in the middle so their extension stays readable. ([#56](https://github.com/ezzy1630/Downright/issues/56))

The current release is generated from the native app payload. The website publishes live document surfaces, not screenshots.

Fixed

Math renders more of the LaTeX written for KaTeX, MathJax, Typora, and Obsidian instead of showing the formula's source. Newly supported: \dfrac, \tfrac, \cfrac, \operatorname, \boldsymbol, \not=, \iint, \big(, \middle|, \tag{1}, \label, and \&; align, align*, equation, gather*, gathered, multline, array, and smallmatrix blocks; and symbols such as \leqslant, \implies, \therefore, \varnothing, and \checkmark. Chinese, Japanese, and Korean text inside \text{} now appears instead of disappearing, as do typed symbols such as α and ≤. ([#55](https://github.com/ezzy1630/Downright/issues/55))

1.0.222026-11-03
Fixed

Completed image loads now refresh the visible text surface, replacing stuck loading placeholders. Documents with many local images load pictures when they are visible instead of during offscreen layout. Hovering no longer starts repeated loads that can evict the visible picture. Image dimensions survive pixel-cache eviction, and the cache accounts for downsampled pixels correctly. Adjacent image-only lines keep independent image fragments. Unreadable local pictures settle on a missing-image message.

1.0.212026-11-03
Added

A one-time GitHub star suggestion after five document opens and ten minutes of foreground reading. It waits for idle input, leaves editing focus alone, and keeps eligibility and dismissal state entirely on your Mac.

Added

Local PlantUML rendering for plantuml and puml code fences in the Mac app, alongside existing Mermaid diagrams. No Java installation, WebView, or diagram server is required. Source Focus keeps the original diagram text editable. External includes and downloaded libraries stay disabled; Finder previews retain PlantUML fences as code.

Fixed

Code block backgrounds no longer cover text selection. Selected text uses a contrasting foreground so syntax colours cannot disappear into the highlight.

Fixed

Theme changes during an edit wait for the current parse, preventing a crash from applying the previous document revision's ranges to the new text.

Maintenance

Updated Sparkle to 2.10.1 across SwiftPM, Xcode, and release signing tools, with a consistency check that prevents partial dependency updates.

Maintenance

Updated the pinned GitHub Actions cache and artifact upload actions.

Maintenance

Shared release validation now runs source budgets, native acceptance, and updater acceptance concurrently and requires all three before publication. Added retained diagnostics, explicit skipped coverage, and fixed-seed source and editing checks.

1.0.202026-10-28
Fixed

Editing and deleting words in document mode preserve the reading position and caret alignment, including in large documents. Stale queued repairs no longer override newer edits or selections, and repeated scroll repairs no longer accumulate fractional position errors.

Fixed

Deferred layout repairs during typing restore the reading position before drawing, avoiding a forced repaint of the intermediate viewport.

1.0.19
Fixed

Editing and deleting words in document mode preserve the visible reading position, including in large documents. Queued layout repairs no longer restore stale positions after a newer edit or selection.

Fixed

Scrolling keeps visible text aligned with caret placement and word deletion.

1.0.182026-10-27
Added

Inline Markdown images and linked HTML badge rows in the Mac reader. Remote images load only after View → Load Remote Images grants the current document; animated images start paused with Play/Pause controls.

Added

Full width and finite 60-120 character reading measures, carried through reader profiles, HTML export, and Quick Look previews.

Changed

Faster parsing, diffing, syntax highlighting, and decoration. An initial Apple M4 release snapshot improved ten pipeline cases by 30-72%; later conservative comparisons exceeded 25% in seven cases, so that percentage goal is not consistently certified across all ten. [Measurements and limits](https://github.com/ezzy1630/Downright/blob/main/Docs/PERFORMANCE.md#release-pipeline-comparison-2026-10-27) include raw runs and distinguish source-edit timing from visible rendering.

Changed

Lower large-document allocation and layout costs, including compact parsed spans, lazy paragraph presentation, bounded task-panel layers, and shorter lifetimes for parser and mode-transition buffers. The below-150-MB interactive session target remains uncertified; the latest 126.2 MB result covers opening the stress document only.

Fixed

List ornaments retain their marker and interaction metadata after editing continuation paragraphs and undoing the edit, including nested callouts.

Fixed

Source presentation keeps the text view wide enough for its text container.

Fixed

Clicking rendered links works with hidden Markdown syntax, including links on the first line and in later paragraphs.

Fixed

Split panes retain the current document’s remote-image permission. Opening a different file revokes permission without rebuilding stale image ranges.

Maintenance

CI reuses compatible build graphs while retaining source tests, release performance budgets, and packaged-app checks. Automatic CI runs on main; feature branches can run it manually.

1.0.17
Added

Choose what happens when the last document closes in Settings → General → When the last document closes: Show start window, Quit Downright, or Do nothing. Show start window remains the default. ([#42](https://github.com/ezzy1630/Downright/issues/42))

Changed

Reading width follows your choice. Settings → Typography → Measure (characters) now supports 60-110 characters, including reader profiles and HTML export. The default stays at 70; narrow windows fit the column to the available space without overriding the saved setting. ([#41](https://github.com/ezzy1630/Downright/issues/41))

Changed

Faster parsing of long Unicode-heavy lines and outline searches, with lower memory use for large documents. Hidden syntax and split panes materialize layout as needed. [Performance measurements and remaining limits](https://github.com/ezzy1630/Downright/blob/main/Docs/PERFORMANCE.md) distinguish source-edit timing from whole-app rendering and peak memory.

Fixed

Local Markdown links open inside Downright. Sibling paths, encoded filenames, and heading fragments resolve correctly. Back/Forward restores the document and reading position, and failed or cancelled opens leave history unchanged. ([#43](https://github.com/ezzy1630/Downright/issues/43))

Fixed

Deleting an accidental edit clears the save prompt. Returning to the exact saved text by editing or undo clears the edited state without saving. Pending external-file conflicts are still protected.

Fixed

Blank document and split-pane rendering on macOS 26, split reopening and saved split-state restoration, and reading-position jumps during navigation and resizing.

Fixed

Find Next keeps moving through matches after the Find bar closes and refreshes its results when the text changes.

Fixed

Autosave waits for an idle period after the latest edit. Discard keeps implicit saves suppressed until a fresh edit, including after a cancelled quit.

Fixed

Exact-artifact installation reports staging failures and preserves the previous app if the replacement cannot complete.

Maintenance

Updated Sparkle to 2.10.0 with matching build and release-tool pins.

1.0.02026-08-07
Added

Live editing with byte-for-byte file fidelity (§3.1): read → parse → write round-trips a document exactly, including CRLF/CR line endings, BOM, UTF-16/32, and mixed endings; nothing is normalised that cannot be faithfully restored.

Added

Structural zoom, document outline, reader profiles, and a density rail.

Added

Inline rendering for math (LaTeX), mermaid diagrams, callouts, tables, task lists, wikilinks, and file/path tokens with resolution.

Added

Themes: built-in light/dark palettes plus VS Code / Shiki theme import, and a custom theme store.

Added

No-mutation decoration engine: keystroke → updated render at a budgeted p95 of 8 ms on a 5k-line document (§12), measured by drbench.

Added

Local AI assistance (optional, on-device) with sibling-document scanning, change tracking, and an external-edit conflict bar.

Added

Session restore with per-document state (mode, zoom, fold, scroll, sidebar), native tabs, jump history, command palette, keybindings, and vim keys.

Added

Quick Look preview and Finder thumbnails for Markdown documents.

Added

down CLI for rendering and editing from the terminal, plus the reusable MarkdownCore and MarkdownRender packages.

Added

Front matter editor, table editor, document health checks, tidy pass, smart paste, review sidecars, asset doctor, and diagnostics.

Added

Plain-text fallback: files are opened and rendered; nothing is ever evaluated (.mdx/.qmd executable chunks are rendered as text).

Added

Regression probes locking the mermaid text orientation against the library's known-good render path (MermaidOrientationProbeTests, GeometryProbeTests).

App payload 605c9280e13c. Generated 2026-11-13.

Keyboard shortcuts
⌘KCommand palette
⌘⇧EFlip the window to its source
SpaceQuick Look the focused file card
1–5Structural zoom level
← → ↑ ↓Divider, zoom, rail, palette
EscClose whatever opened