Skip to content

v3.46.0 — Mermaid font-swap check, safer framework-upgrade, figure-skill scripts split into packages

Choose a tag to compare

@MatrixFounder MatrixFounder released this 16 Oct 11:11
· 13 commits to main since this release

Full Changelog: v3.41.0...v3.46.0

Covers v3.42.0 – v3.46.0 (TASK 121–126). Details: CHANGELOG.md.

Added

  • Font-swap check in the Mermaid render check (v3.42.0). render_check.py redraws HTML labels in GitHub's font, light and dark. The new font_swap check fails a label that the swapped font pushes past its box, its node's border or the figure's edge.
  • MA-LABEL-14 warns on <small> in flowchart, state and ER labels.

Changed

  • New Mermaid settings lines. Flowchart, state, ER, class and requirement figures carry "themeCSS": "foreignObject { overflow: visible; }". Mindmap has its own line. MA-SET-06 checks themeCSS.

  • A node's second line is plain text after <br/>, never <small>.

  • framework-upgrade counts local allow rules (v3.43.0). It reads .claude/settings.json, .claude/settings.local.json, ~/.claude/settings.json and the allowed-tools of skills and commands. A rule added during the run that runs a changed file stops the run.

  • framework-upgrade checks what a change runs. Each allowed command that runs changed code runs between two SHA-256 listings of the tree. An unexpected write fails the check. A change under .git or in a user file stops the run.

  • Scripts of mermaid-authoring-guidelines split into packages (v3.44.0 – v3.46.0), one module per section, moved verbatim:

    • mermaid_model.py → package mermaid_model/
    • svg_geometry.py → thin file over svg_geometry_parts/
    • lint_mermaid.py → thin CLI over lint_mermaid_parts/

    Imports and command lines are unchanged. Tests pin the module order and allow only standard-library imports.

  • light-mode 1.1 admits a behaviour-preserving split of an auxiliary skill's script.

Fixed

  • The render check and the lint print and write no raw control characters. Text and --json output escape non-printable characters; Cyrillic prints as is.
  • measure_text.mjs cuts labels at 120 code points, so a long label with an emoji no longer stops the run.
  • A lone surrogate no longer stops a corpus render.
  • A bare python3 -m pytest from the repository root collects and leaves the live session state alone.
  • The quick-reference figure in System/Docs/WORKFLOWS.md is redrawn as two figures.
  • The skill-testing example runs as a script. query_model reads OPENAI_API_KEY only.

Upgrade notes

  • A figure with the old settings line gets MA-SET-06 and MA-LABEL-14 warnings and fails font_swap. Fix: copy the new settings line and replace <small> second lines with plain text.
  • Committed corpus renders carry the old instrument hash, so the next corpus run renders them again.