Files
wehub-resource-sync 5b99bf6bca
CI / test (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:34:54 +08:00

6.7 KiB

Changelog

All notable changes will be documented here. Format: Keep a Changelog. Versioning: Semantic Versioning.

[Unreleased]

GFM pass: closing the gaps between Edmund and the GFM spec in both edit and read mode.

Added

  • Setext headings (Title underlined by ===/---) render in edit mode
  • Indented code blocks (4 spaces or a tab, after a blank line) render in edit mode
  • HTML <!-- comments -->: dimmed in edit mode, hidden in read mode (previously showed as literal text in read mode)
  • <small> added to the rendered HTML whitelist (both modes)
  • <img src alt width height> renders the image in both modes, at its declared size (one dimension alone scales proportionally); remote/local image policy applies as for markdown images
  • Autolinks (GFM extension): bare www.…, http(s)://…, and email addresses become links in both modes, with CMD+click to follow
  • Inline styling (bold, code, links, ==marks==, …) now renders inside table cells in edit mode; column widths align on the styled text, not the raw source
  • Inline styling inside headings keeps the heading's font size (# **bold** and code``), for ATX and setext headings
  • Raw HTML renders in read mode per GFM (§4.6/§6.10) with the tagfilter extension (§6.11) plus hardening: on* event-handler attributes and javascript:/vbscript: URLs stripped, and a script-src 'none' CSP on the page (JS was already disabled)
  • HTML blocks (all seven GFM §4.6 start conditions) parse as blocks in edit mode and show as colored source
  • Full GFM §6.10 inline tag grammar in edit mode: hyphenated tag names, single-quoted/unquoted attribute values, > inside quoted values, and PI/declaration/CDATA tokens
  • Multi-backtick code spans in edit mode ( a`b ) style with their real delimiter length
  • Loose vs tight lists in read mode: tight lists drop the <p> wrapper inside items per GFM §5.3
  • Link title attributes carry into read-mode/exported HTML

Changed

  • Read mode no longer escapes unknown HTML — GFM passthrough (with tagfilter + hardening) replaces the escape-by-default whitelist
  • A --- line directly under a paragraph is now a setext h2 underline per GFM, no longer a thematic break — put a blank line between the paragraph and --- to keep the rule
  • ==highlight== now follows GFM-style flanking: content can't begin or end with whitespace (== spaced == stays literal)
  • Setext heading content spans the whole preceding paragraph run (Foo\nbar\n--- is one h2), matching GFM Example 51
  • Interior blank lines stay inside an indented code block (GFM Examples 82/87)

Fixed

  • Tables whose delimiter row cell count differs from the header are no longer parsed as tables in edit mode (GFM Example 203)
  • Backslash-escaped pipes (\|) are cell content, not column separators (GFM Example 200)
  • The ATX heading closing sequence (# foo ###) hides like other delimiters instead of showing in the heading (GFM 4.2)
  • A newline inserted at a display-math block boundary no longer leaves a stray centered line (separator newlines now reset when adjacent blocks restyle)

[0.1.4] - 2026-07-09

Various small fixes and improvement and new round of grind at the delete caret drift. I think it actually worked this time, but don't quote me on it.

Added

  • CMD+=, CMD+-, and CMD+0 to zoom in/out/reset. Also in View menu
  • External images rendering in editor
  • Block external images setting in Settings > Advanced

Changed

  • Rename "Source Mode" to "Show Source in Editor" in app and button menu. Removed icon from button menu.
  • Opening an existing file closes the last opened Untitled window with no edit history
  • Move Automatic updates to Settings > General
  • Apply Settings > Appearance > Max content width to read mode

Fixed

  • Images have extra bottom padding when editor is not in full screen
  • Images do not resize with max content width if the user changes the setting when the app is open
  • Tables overflow handled by horizontal scroll
  • Callouts have an extra line at the bottom when they are the last element of a file
  • Footnotes rendering in edit mode and linking between inline marker and content in read mode
  • Math environments \begin{}...\end{} padding offset in edit mode
  • Math environments \begin{}...\end{} rendering in read mode
  • Delete caret drift, round 7 (docs) #156

[0.1.3] — 2026-07-04

Fixed

  • Delete caret drift with reproduction (docs) #156

[0.1.2] — 2026-07-03

Polishing the editor and trying to have Fable 5 fix all the big bugs while I still have it with me.

Changed

  • Redo now jumps to where changed text was instead of caret
  • Removed old code for identity mapping, etc., using ponytail-review

Fixed

  • Updater #158
  • Icon display for callouts with custom titles (docs)
  • Undo/redo viewport glitches from TextKit 2 (docs)
  • Delete caret drift (docs) #156

[0.1.1] — 2026-06-29

Added

  • Thematic Break ---/*** in the Format menu
  • Remember window size: new document windows reopen at the size of the last one.

Changed

  • Max content width is now an absolute physical width (cm / in) with a max-width cap and a cm/in unit toggle.
  • Typewriter Mode renamed to Typewriter Scroll

Fixed

  • Typewriter Scroll no longer jumps the viewport when you click to reposition the caret — it re-centers only while typing.

[0.1.0] — 2026-06-27

First public release.

  • Live WYSIWYG preview — Typora/Obsidian style
  • GFM support — bold, italic, strikethrough, tables, task lists, fenced code with syntax highlighting, blockquotes, alerts
  • Extended syntax — ==highlights==, WikiLinks, [^footnotes], Obsidian-flavored callouts and comments
  • Math — inline ($…$) and display ($$…$$) rendering via SwiftMath
  • Native macOS UI — AppKit editor, SwiftUI settings panel, full Dark Mode support
  • Keyboard-first — configurable shortcuts, no required mouse interaction
  • Auto-update — Sparkle 2.x with EdDSA-signed appcast; checks on launch
  • Open source — Apache 2.0