v2.3.1 — Doc sync + menu polish + canvas guard
Audit-driven patch. Three Opus reviewers found a handful of stale statements and rough edges after the 2.0 -> 2.3 release sequence; this ships the fixes in one cohesive pass.
Fixed
- Stale docs. `SKILL.md` frontmatter and two "2x retina" bullets updated to the current 4× pipeline. `README.md` cleaned in four places (intro paragraph, "What's new" table — now includes a v2.2 column —, Export menu description, and technical-details section).
- Canvas-size clamp. `rasterize()` now picks the largest integer scale in `{4,3,2,1}` whose target canvas fits under 16 Mpx. Default diagrams stay at 4×; very large viewBoxes (~1600×1200+) step down automatically instead of producing blank canvases on older iOS Safari.
- `?openExport=1` font race. `setTimeout(open, 60)` replaced with `document.fonts.ready.then(open)` + double `requestAnimationFrame`. No more flash on slow connections.
Added
- Export menu separators. Two `
` dividers split the menu into Copy / Raster / Vector. "Copy PNG" / "Download PNG" are no longer visually adjacent. - "Copy PNG" renamed to "Copy to clipboard" (PNG moved to hint badge). Destination is now in the primary label.
- Print CSS polish. `@page { size: landscape; margin: 1.5cm; }`, summary cards become a 2-column grid in print (no orphans), container width lifted, `page-break-inside: avoid` added alongside `break-inside: avoid`.
Install
Claude.ai: Settings → Capabilities → Skills → + Add → upload `archify.zip`.
Claude Code CLI:
```bash
rm -rf ~/.claude/skills/archify
unzip archify.zip -d ~/.claude/skills/
```
See CHANGELOG.md for line-by-line detail.