github akitaonrails/FrankMD v1.11.0

2 hours ago

v1.11.0

Released: 2026-10-25

Feature release: five community contributions plus security maintenance. Changes since v1.10.0 (87dc8a6..1140679).

Features

  • Surround selected text with typed markers (#251, closes #246): selecting text and typing *, _, backtick, ~, ^, or = wraps it with matching Markdown markers while keeping the inner text selected (repeat for bold/highlight). CommonMark-safe backtick delimiters, one undo step per operation, IME/paste/Vim/empty-cursor behavior preserved.
  • Accessible preview image overlay (#252, closes #247): click (or Enter/Space) a preview image to open it full-viewport; close via button, Escape, or backdrop with focus restored. Scheme-validated URLs, no sanitizer relaxation, trigger buttons injected post-sanitize with WeakMap click authorization.
  • Visual custom theme editor (#253, closes #248): Settings → General → Customize theme — base theme + 35 color roles with live preview, contrast warnings, Cancel/Escape restore. Server-side validation accepts strict hex colors only (no arbitrary CSS/URLs); persisted via the existing UI-keys-gated config path. CONFIG_VERSION 6.
  • Home with shared recent files (#250, closes #245): the logo opens a Home view listing the ten most recent notes, shared across browsers via .fed (paths + timestamps only, never content). Layered path validation (containment, .md-only, symlink/size guards), lock-protected atomic rewrites, rename/move/delete remapping, explicit clear.
  • Create items in the selected folder (#249, closes #244): New Note/Folder target the single selected Explorer folder (root otherwise); explicit context-menu destinations preserved; Hugo templates excluded.

Security

  • Vendored dompurify 3.4.16 → 3.4.17: clears three published advisories (critical SAFE_FOR_TEMPLATES bypass, high IN_PLACE incomplete fix, low SMIL/PARSER_MEDIA_TYPE skip). FrankMD's sanitizer config uses none of the affected modes; upgraded regardless. Dual-CDN byte-verified.
  • crass 1.0.7 → 1.0.8 (GHSA-pq4g-8rxf-4g29, transitive via actionview).

Dependency maintenance

  • aws-sdk-s3 1.235.0 (core 3.260.0), ruby/setup-ruby pinned to v1.331.0 (tag-verified SHA).

Known issues

  • #254: DraftRecoveryTest (system) fails on rename/move flows — pre-existing since at least v1.10.0, invisible to hosted CI (system tests not in the CI job). Filed with evidence for a dedicated fix.

Test Coverage

  • 1,142 Ruby tests (4,385 assertions), 2,200 JavaScript tests (95 files); full bin/ci and hosted CI green on the release tree.

Don't miss a new FrankMD release

NewReleases is sending notifications on new releases.