Skip to content

Releases: P4suta/aozora-flavored-markdown

0.4.1 - 2026-06-21

Choose a tag to compare

@github-actions github-actions released this 21 Jun 10:13
Immutable release. Only release title and notes can be modified.
v0.4.1
c68a84f

Release Notes

The project was renamed from afm to aozora-flavored-markdown for its
first crates.io release (ADR-0015). The
descriptive crate name (aozora-flavored-markdown,
binary aozora-flavored-markdown) is decoupled from the short, stable
aozora-md brand used for the rendered HTML CSS classes (aozora-md-*), env
vars (AOZORA_MD_*), Docker tags, and the aozora-md.diagnostics.v1
diagnostics schema — see
ADR-0016. The version is
aligned with the sibling aozora crate at 0.4.1, and Options::afm_default()
is replaced by Options::default() (the dialect preset is now the Default).

Added

  • just setup — one-shot first-time setup (build the dev image,
    install git hooks, run just doctor, run the tests); idempotent, so
    it doubles as a "get back to green after a pull" command.
  • just snapshot-review / just snapshot-accept — drive cargo insta for the snapshot tests that just test (nextest) leaves
    pending but does not apply.
  • just prop-seed SEED — replay a single proptest failure from the
    seed nextest prints on its FAIL line.
  • Grouped just menu — every recipe carries a [group(...)], so a
    bare just lists recipes by area (build / test / lint / docs / …);
    the destructive nuke is now guarded behind [confirm].
  • Contributor Troubleshooting + Your first change guide in
    CONTRIBUTING.md — the common Docker / cargo-lock / sccache /
    rust-analyzer-in-container / WSL snags with their fixes, and a six-step
    first lap through the inner loop.
  • PR area auto-labeler (actions/labeler) — tags a PR area: cli /
    markdown / wasm / book / dev / ci / documentation from the
    paths it touches. Non-blocking and not a required check.
  • stdin input for aozora-flavored-markdown render / aozora-flavored-markdown check — pass - as the input
    path to read the document from standard input (cat in.md | aozora-flavored-markdown render -), honouring --encoding sjis on the piped byte stream. The -
    placeholder was already documented but previously errored.
  • aozora-flavored-markdown render -o <file> / --output — write HTML straight to a file
    instead of redirecting stdout (- keeps stdout); strict failures write
    nothing.
  • --color auto|always|never for error reports — auto honours
    NO_COLOR and CLICOLOR_FORCE and otherwise follows the stderr TTY; an
    explicit always/never wins over the environment.
  • -v/-q verbosity flags — set the default log level without
    reaching for RUST_LOG (which still overrides them when set).
  • --format human|json machine-readable diagnosticsjson emits a
    stable aozora-md.diagnostics.v1 envelope (code / severity / source /
    message / span / line / column) for editors, CI gates, and LSP
    bridges. check writes it to stdout (pipe into jq); render keeps
    stdout for HTML and writes JSON to stderr. Schema and stability are
    pinned by ADR-0012.
  • aozora-flavored-markdown completions <shell> — generate a completion script for bash,
    zsh, fish, powershell, or elvish.
  • --help now shows an EXAMPLES section covering stdin, -o,
    strict JSON checks, and completion install.
  • Release archives now bundle the shell completions and the aozora-flavored-markdown.1
    man page
    (under completions/ and man/). Regenerate the committed
    assets with just dist-assets; just ci drift-checks them.
  • Runnable doctests on the aozora-flavored-markdown public API — every public
    entry point (render_to_string, render_to_ir, render_blocks_to_ir,
    serialize, Options::default, html::render_to_string) now
    carries a compiled, asserted example. just test-doc is wired into
    just ci and a CI job so the examples can never silently rot.
  • crates.io publication readinessaozora-flavored-markdown and aozora-flavored-markdown-cli are now
    publishable to crates.io (verified via cargo publish --dry-run). A manual
    publish-crates.yml workflow publishes the two-crate ladder
    (aozora-flavored-markdownaozora-flavored-markdown-cli). Policy is captured in
    ADR-0014 and
    ADR-0015.

Changed

  • just ci is faster without dropping a gate. The non-compile gates
    (deny / audit / book-build) run in a background lane that
    overlaps the compile lane, and the redundant check step plus the
    duplicate fmt-check / typos / strict-code runs that lint
    bundled are removed. Same 18 gates; warm-cache wall-clock ~35 s
    → ~23 s. The compile lane stays sequential (one shared cargo target
    lock).
  • just recipes are container-aware — no more docker-in-docker. Run
    inside the dev/ci image (a just shell, a VS Code devcontainer, or a
    GitHub Codespace, where AOZORA_MD_IN_CONTAINER=1), recipes invoke their
    tool directly instead of nesting a second docker compose run. The
    devcontainer now targets the full-tool ci image, so the complete
    just ci runs inside Codespaces, and postCreateCommand installs the
    git hooks.
  • just strict-code now permits reasoned #[allow(..., reason = "…")]
    (Rust 1.81+) and forbids only bare #[allow] — matching the
    clippy::allow_attributes_without_reason lint the workspace already
    enforces, which the previous blanket ban contradicted. It also adds an
    .expect() regression tripwire over aozora-flavored-markdown source (baseline 8)
    and the cargo-deny allow-wildcard-paths policy for path-only
    internal dev-deps.
  • CI collapses to a single ci-success required check. A
    dorny/paths-filter changes job skips the Rust compile/test/lint
    matrix on docs-only PRs, and a terminal ci-success aggregator gates
    on every job's result, so branch protection requires just ci-success
    (plus CodeQL) — adding or renaming a job no longer needs a settings
    change. The lint job is now a parallel matrix (fmt-check / clippy /
    typos / strict-code), and the completions/man drift check
    (dist-assets-check) and doctests (test-doc) are first-class CI jobs.
  • Public IR enums IrBlock / IrInline are now #[non_exhaustive]
    (ADR-0013) so a future
    青空文庫 notation can be added as a new variant without breaking external
    Rust matches. The serde/JSON contract is unchanged; the variant-
    completeness witnesses moved into aozora-flavored-markdown (the owning crate). The
    ADR index now also lists the previously-missing ADR-0012.
  • aozora is now a crates.io registry dependency (0.4.1) instead of a
    git-rev pin — required for aozora-flavored-markdown to be publishable. comrak keeps its
    vendored path locally but publishes against the identical registry 0.52.0.
    cargo xtask new-adr now renders docs/adr/0000-template.md (full MADR
    section set) instead of a hard-coded subset.
  • MSRV raised to Rust 1.96.0, aligning rust-toolchain.toml, the workspace
    rust-version, clippy.toml, the mise/CI pins, and the README badge with the
    rust:1.96.0 dev-image base (which previously forced a redundant 1.95.0
    rustup install). Dependabot now ignores the Docker rust base so a bump
    can't silently advance the MSRV.

Fixed

  • aozora-flavored-markdown --strict now exits with code 2, distinct from generic
    failures (code 1), matching the documented exit-code table; its
    --help text now describes "any lexer diagnostic" instead of the
    stale "unknown annotation" wording.
  • Dead CLAUDE.md link in the README (the file is personal and not
    committed); readers are pointed at CONTRIBUTING.md and docs/adr/.

Internal

  • Aozora sentinel splicing moved from byte-stream post-processing to
    AST-level mutation
    (crates/aozora-flavored-markdown/src/post_process.rs
    ast_splice.rs). The splicer now mutates comrak's typed AST in place
    (replacing each sentinel with a NodeValue::Raw node) and lets
    comrak::format_html emit the final HTML in one pass, rather than
    re-scanning a flat HTML byte stream with the former multi-pass Cow
    pipeline. This supersedes the multi-pass design described under
    [0.4.0] and withdraws the fully-fused aho-corasick follow-up noted
    there — the separate secondary passes it would have fused no longer
    exist as distinct scans.

Install aozora-flavored-markdown-cli 0.4.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/P4suta/aozora-flavored-markdown/releases/download/v0.4.1/aozora-flavored-markdown-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/P4suta/aozora-flavored-markdown/releases/download/v0.4.1/aozora-flavored-markdown-cli-installer.ps1 | iex"

Download aozora-flavored-markdown-cli 0.4.1

File Platform Checksum
aozora-flavored-markdown-cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
aozora-flavored-markdown-cli-x86_64-apple-darwin.tar.xz Intel macOS checksum
[aozora-flavored-markdown-cli-x86_64-pc-windows-msvc.zip](https://github.com/P4suta/aozora-flav...
Read more

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Jun 06:34
Immutable release. Only release title and notes can be modified.
v0.4.0
b2dcf36

[0.4.0] - 2026-06-14

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 29 Apr 18:37
Immutable release. Only release title and notes can be modified.

[0.3.0] - 2026-04-29

Added

  • release: V0.2.6 — fenced code block fix + Tier-A defensive guard + 96% coverage restore

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 29 Apr 18:05
Immutable release. Only release title and notes can be modified.

[0.2.6] - 2026-04-29

Added

  • release: V0.2.6 — fenced code block fix + Tier-A defensive guard + 96% coverage restore

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 29 Apr 17:30
Immutable release. Only release title and notes can be modified.

[0.2.5] - 2026-04-29

Added

  • release: V0.2.5 — heading promotion + stack-balanced container splice

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 29 Apr 16:33
Immutable release. Only release title and notes can be modified.

[0.2.4] - 2026-04-29

Changed

  • V0.2.4 — borrowed-AST migration + comrak vanilla restoration

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 28 Apr 09:56

[0.2.3] - 2026-04-28

Release

  • Bump workspace to v0.2.3 + slim release matrix to 3 platforms (drop Intel macOS + linux-musl)