Skip to content

Latest commit

 

History

History
147 lines (130 loc) · 10.4 KB

CHANGELOG.md

File metadata and controls

147 lines (130 loc) · 10.4 KB

Changelog

Unreleased

  • Render GitHub-flavored alerts (> [!NOTE], [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION]) as styled callouts with light/dark palettes that follow the theme toggle and, when JavaScript is disabled, the OS color scheme.
  • Support YAML front matter: a --- block at the very start of the document is hidden from the rendered output, and its title: value (plain, quoted, or containing colons) becomes the page title, ahead of the existing H1 and filename fallbacks. Recognition is conservative and GitHub-like — only at document start, non-empty, first line non-blank — so --- blocks elsewhere in a document still render as visible content.

0.6.1 - 2026-07-22

  • Add a native Android app that opens Markdown through the system document picker or file/share intents and renders it offline through mdo's existing Rust renderer and sanitizer.
  • Add Android debug, release-APK, App Bundle, and lint coverage to CI, plus optional secret-backed APK/AAB signing and publication in tagged releases.
  • Add upstream store metadata, a no-data-collection privacy policy, and preparation material for F-Droid and Google Play submissions.
  • Publish the Android preview as signed ARM64 APK and AAB assets alongside the desktop archives in the GitHub Release.
  • Render the docs site with stock mdo output, keep Markdown links useful on GitHub while rewriting them to HTML at site-build time, and retain the custom faux-browser styling only on the homepage.
  • Upgrade ammonia to 4.1.4 to address RUSTSEC-2026-0213.

0.6.0 - 2026-07-18

  • --open now fails honestly: when the browser launch fails after a successful render, mdo exits non-zero and prints the error plus the surviving rendered path to stderr. mdo-open propagates the child's exit status instead of always reporting success. On Linux, a desktop opener that spawns but exits non-zero (no browser handler configured) is treated as a failure rather than a silent success.
  • Watch mode survives atomic editor saves: --watch observes the parent directory and filters events to the target file, so temp-file-rename saves (Vim, VS Code, and similar editors) no longer kill the watch. Save bursts are debounced into a single re-render, and a failed render keeps the watch alive.
  • Standards-correct file:// URLs for <base href>: reserved and non-ASCII characters in source paths (spaces, #, %, ?, Unicode) are percent-encoded, and Windows drive letters, UNC paths, and \\?\ extended-length prefixes are handled. Paths that cannot form a valid URL omit the tag instead of emitting a broken one, so relative images and links keep working from awkward directory names.
  • New --verbose flag reports render-workflow timings (read, markdown, sanitize, assemble, write, total — and browser-launch initiation with --open) on stderr only. The generated HTML is byte-identical with and without it; no timing or diagnostic information ever appears in the page.
  • Quieter generated documents: remove the visible "Generated by mdo" footer, version, render date, and render duration from full-document output. Provenance is now carried only by <meta name="generator" content="mdo <version>">.
  • Show the source file's filesystem modification time in full-document output (Source modified: …) with a machine-readable <time datetime> attribute; the line is omitted (and rendering still succeeds) when the timestamp is unavailable. Bare output is unchanged.
  • Theme toggle improvements: state-aware aria-label and tooltip, live OS theme tracking until a manual choice is made, safe localStorage handling on file:// pages, reserved padding so the button does not cover content on narrow screens, hidden when printing, and restylable/hidable from custom --css via #theme-toggle.
  • Setup now detects its own file-manager integration and stays idempotent: interactive setup greets an already-configured user honestly and offers one decision — leave unchanged (default) or reinstall. Detection asks a single question (is mdo's own handler registration present?) with no partial, stale, or system-wide state inference; uninstall still touches only mdo-owned resources. Fuller integration-state management was considered and deferred (ADR 0004).
  • Documentation: rewrite the README around Open Markdown as HTML and move detailed platform, CSS, and maintainer material into focused pages under docs/ (usage.md, file-manager-integration.md, custom-css.md, maintaining.md).
  • Changelog: restore the missing 0.3.0 section. The 2026-05-29 rename release shipped as tag v0.3.0 and crates.io mdo-cli 0.3.0 but was recorded here under a 0.2.0 heading; it is now labeled 0.3.0, and a 0.2.0 section for the pre-rename 2026-05-12 release has been reconstructed from git history.
  • CI: Windows now runs the full test suite (previously compile-only). Registry install/uninstall is split into a unit-tested plan builder and a thin executor, so no test touches the real registry.

0.5.0 - 2026-07-10

  • Restore conventional CLI behavior for no-argument mdo: print a short Open Markdown as HTML landing page and exit successfully, while mdo --help retains the full CLI reference. Rename the onboarding command from --tour to --setup and keep the whole flow, including its welcome-sample verification, available through the double-clickable mdo-setup companion.

  • Linux: add a visible, per-user mdo Setup application-menu launcher. It remains available when the separate Open as HTML file-handler integration is uninstalled, and normal setup runs repair it if necessary.

  • Replace the mdo-setup multi-dialog onboarding with a launcher for the single-screen mdo --setup: Linux opens a terminal emulator ($TERMINAL or a known one such as gnome-terminal/konsole/xterm, with a zenity/kdialog/yad fallback notice), and Windows opens the same styled Windows Terminal (wt) setup as no-file mdo-open.exe, falling back to a new console when wt is unavailable. This drops the chain of [OK] dialogs in favor of the one-screen, single Y/N setup and avoids the dialog-dismiss and missing-backend failures of the old flow.

  • Exit non-zero from mdo when a one-shot render fails (refused symlinked output, temp-dir setup failure, or conversion failure) so scripts and the docs pipeline can detect errors; --watch keeps running.

  • Linux: fall back through gio open / gnome-open / kde-open / wslview when xdg-open is missing, and reap the launcher so it does not linger as a zombie during long --watch sessions.

  • Linux: only report "is now the default Markdown handler" when xdg-mime actually succeeds (otherwise print the manual command), and drop the no-op gtk-update-icon-cache calls.

  • Do not treat a heading inside a fenced code block as the document title.

  • docs/install.sh: warn and show how to add the install directory to PATH when it is not already present, matching install.ps1.

  • Reword the welcome-sample tip to match what setup installs (right-click → Open as HTML) instead of implying double-click works by default.

0.4.0 - 2026-06-17

  • Add --css support for appending custom CSS after mdo's embedded defaults, plus bundled CSS for restoring vendored simple.css typography.
  • Soften mdo's default heading typography and move that typography layer into a reusable release asset.
  • Rebuild the docs site through mdo's runtime CSS pipeline and add checked-in Markdown sources for the generated pages.
  • Move shared rendering, temp-output, browser-launch, tour-sample, and file-manager helpers into src/lib.rs.
  • Add mdo-setup.exe, a Windows GUI-subsystem onboarding/setup entrypoint that can install Explorer integration without opening a terminal.
  • Teach Windows mdo-open.exe no-file launches to open mdo --tour in Windows Terminal (wt) using the One Half Light color scheme, centered on the active display, with mdo-setup.exe as a fallback.
  • Add Linux mdo-setup onboarding via desktop dialog helpers (zenity, kdialog, or yad) and include it in Linux release archives.
  • Teach Linux mdo-open to launch mdo-setup when opened directly with no file arguments.
  • Add a first-run tour and welcome sample that can verify the browser-opening flow without changing source folders.
  • Harden Windows browser launches, temporary output paths, and generated HTML handling.
  • Add package-manager starter manifests and public project metrics pages.

0.3.0 - 2026-05-29

Released as tag v0.3.0 and crates.io mdo-cli 0.3.0 (0.2.0 was already taken by the pre-rename release below); this section was previously mislabeled 0.2.0.

  • Rename the project from md2htmlx to mdo.
  • Rename the Rust binary from md2htmlx to mdo.
  • Rename the Windows no-flash wrapper from md2htmlx-open to mdo-open.
  • Publish the crates.io package as mdo-cli; install with cargo install mdo-cli.
  • Update Windows Explorer integration to use mdo registry entries, %LOCALAPPDATA%\mdo\md.ico, and the Open as HTML verb.
  • Update Linux file-manager integration to use the Open as HTML label and remove duplicate Nautilus Scripts entries.
  • Update --open temp output paths from %TEMP%\md2htmlx\<hash>\ to %TEMP%\mdo\<hash>\.
  • If you previously installed the Windows Explorer integration, run the old version's scripts/uninstall-explorer.ps1 before upgrading. The new uninstaller also removes the legacy registry entries when present.
  • Add explicit MIT and Apache-2.0 license files.
  • Add release-preflight CI for formatting, linting, tests, and crate packaging.
  • Add tag-driven GitHub Release automation for native binary archives and checksums.
  • Add a GitHub Pages site under docs/ with install instructions, usage examples, and migration notes.
  • Add GitHub Pages deployment automation for the static docs/ site.
  • Set mdo as the default binary for cargo run.

0.2.0 - 2026-05-12

Released as tag v0.2.0, before the rename, while the project was still named md2htmlx. Reconstructed from git history.

  • Rename the fork to md2htmlx.
  • Produce standalone HTML5 documents styled with embedded simple.css by default.
  • Make convert-and-exit the default; watch mode becomes opt-in via --watch.
  • Add --bare for fragment-only output.
  • Add a light/dark mode toggle to non-bare HTML output.
  • Add --open: render to a temp directory and launch the system default browser.
  • Add Windows Explorer integration with a no-flash md2htmlx-open launcher.