Archify 3.0 — Clearer diagrams, verified delivery
Archify 3.0 brings a redesigned diagram reader, clearer layout and routing, and a delivery workflow that verifies the generated artifact before handing it back. It follows the integrated changes and real-project trials on dev.
What changed
- A redesigned reader. Notes sit below the diagram by default. The reader fits the diagram and controls to the first screen where its readability floors allow, with zoom for detail and scrolling when necessary. Narrow diagrams also retain a usable page layout.
- Clearer diagrams. Architecture and Workflow placement and routing handle fan-out, return paths, labels and shared corridors more carefully. Lifecycle v2 introduces lane/column layout, state marks and better source-badge spacing while retaining schema-v1 geometry support.
- Sequence diagrams that use their canvas. Legends sit below all timeline content, can wrap into multiple rows, and no longer intersect lifelines. Message labels follow their line colors. Measured width advice guides one bounded spread repair for new unpinned diagrams, including participants with brand logos.
- Verified delivery across all five types. Repository-backed sources, artifact provenance, composition checks and browser checks participate in the delivery workflow. Windows path handling, reproducible packages and cross-platform smoke checks have been hardened.
- Viewer translations supplied as data. English and Simplified Chinese remain built in;
meta.translationssupplies other Viewer languages without adding renderer-specific locale branches.
Upgrading from 2.x
- Guided/story views and ordinary share-card exports have been removed. Use the overview, Route, Lens and canonical exports. Existing
meta.viewsdata is accepted but ignored; already-generated standalone HTML retains its embedded viewer. - Existing schema-v1 inputs remain supported. Use Lifecycle v2 for new diagrams when its grid layout fits the task; converting existing v1 files is not required.
- Viewer translations and authored diagram text are separate: translating the Viewer does not translate node names or message labels.
- The Skill still runs on Node.js 18 or newer. The canonical ZIP is built with the pinned Node 22 toolchain; users do not need that packaging toolchain to run it.
Validation and remaining limits
The integrated batch passed full Node-version, browser/WebM, Windows path, cross-platform package and DSH checks. Real-project trials also informed the legend, first-screen and Sequence-width fixes. Automated checks are not a guarantee of perfect composition: complex branching workflows may still need authoring repairs, some layouts retain crossings, and software-oriented legends may need adjustment for non-software subjects.
Use the attached archify.zip for the canonical Skill package. See the 3.0.0 changelog for the detailed changes and contributor attribution.
中文摘要
Archify 3.0 更新了图形查看器、布局与路由、Lifecycle v2,以及生成后的交付检查。时序图的图例会避开消息和生命线,宽画布留白也会给出有次数限制的修复建议。
升级时请注意:引导视图和普通分享卡导出已移除;旧的 meta.views 数据仍可读取,但不再展示。已有 v1 图形输入继续支持,已经生成的独立 HTML 不会被升级自动改写。复杂流程仍可能需要调整,自动检查通过不等于每张图都无需视觉审查。
What's Changed
- chore(release): publish v2.16.0 update manifest by @tt-a1i in #216
- fix(site): localize page identity and diagram filters by @sunsunsun-java in #219
- Clarify visual-check as automated browser evidence by @sunsunsun-java in #233
- chore(ci): migrate GitHub Actions off deprecated Node 20 runtime (fixes #217) by @yunaremaia in #224
- fix(packaging): normalize line endings (fixes #144) by @yunaremaia in #202
- test(zip): invoke build-zip.sh via bash on Windows by @alivirgo in #132
- fix(docs): add DeepSeek Harness to installation table by @RedHeartSecretMan in #231
- fix: preserve license provenance in distributions by @tt-a1i in #265
- fix: ship third-party mark notices by @tt-a1i in #267
- fix(preview): fall back to polling after watcher errors by @MohammedThowfiq in #275
- docs: clarify visual evidence requirements by @sunsunsun-java in #300
- fix(cli): reject unknown options and extra positionals in render by @tt-a1i in #303
- fix(sequence): validate segment label canvas containment (fixes #297) by @hasak21 in #299
- fix(cli): prevent non-HTML output overwrites without restricting directories by @tt-a1i in #322
- fix(checker): flush large artifact receipts before exiting by @jackie-cqz in #321
- fix(cli): keep JSON argument failures machine-readable by @QiuLsG in #331
- fix(dsh): prepare reproducible 0.2.0 adapter with current Skill snapshot by @YunyueLi in #345
- chore: add advisory CodeRabbit contribution reviews by @tt-a1i in #348
- fix: accept credentialed HTTPS remotes for repository evidence and redact diagnostics by @scs0209 in #333
- docs: align contribution and bot review with change impact by @tt-a1i in #346
- fix: keep packaged examples within desktop reader by @zhouyuanxinand in #325
- feat(evidence): support Gitee and local-only repositories by @sunsunsun-java in #354
- fix(viewer): embed the viewer font so delivered pages stay self-contained by @276970789 in #256
- docs: remove expired sponsor placements by @tt-a1i in #378
- refactor(viewer): modularize source while preserving standalone HTML by @sunsunsun-java in #381
- docs: add Supercode to README Sponsors by @tt-a1i in #386
- docs: add spacing above Supercode badge by @tt-a1i in #393
- fix(packaging): make the canonical archify.zip reproducible on Windows by @i-so-late in #385
- chore(review): reduce repeated CodeRabbit evidence requests by @tt-a1i in #394
- fix(cli): reject invalid arguments in remaining commands by @ooiuuii in #307
- docs: restore EverMind below Supercode by @tt-a1i in #414
- fix(checker): scope finite_svg to numeric attributes (#372) by @apetcu in #373
- test: fix Windows archive spawning and motion preference reloads by @i-so-late in #409
- fix(delta): report brand and locale changes in architecture comparisons by @kapelame in #415
- fix(compare): validate captured input snapshots by @To3akaRin in #404
- fix(benchmark): reject malformed visual defect lists before passing runs by @nbt0 in #402
- fix(diagnostics): stop truncating large renderer receipts on a pipe by @henry201605 in #374
- fix(evidence): ignore replacement refs for pinned sources by @To3akaRin in #421
- docs: add review skill and streamline contribution guidance by @tt-a1i in #435
- chore(review): focus CodeRabbit on material evidence gaps by @tt-a1i in #436
- fix(viewer): handle Object.prototype names as semantic IDs by @asts-top in #424
- fix(compare): retain backups after incomplete rollback by @To3akaRin in #439
- fix(viewer): declare UTF-8 encoding in exported SVG documents by @luxiaoyu in #417
- fix(workflow): report resolved quality profile in SVG by @Ai-Eastern in #437
- fix(delta): preserve baseline relationship arrowheads by @To3akaRin in #434
- fix(deps): unstick the fast-uri override from a version that is itself vulnerable by @multicam in #347
- test: integrate Windows fixture portability fixes by @tt-a1i in #442
- test: make checkout Git isolation portable on Windows by @ouchihao in #318
- test: load workflow migration preload via a file URL by @ouchihao in #319
- test: exercise preview graceful shutdown on Windows by @ouchihao in #320
- test: make clean staging mode checks portable by @Bortlesboat in #349
- test(viewer): avoid intrusive pre-document storage observation by @tt-a1i in #443
- fix(guide): cover layout repair scenarios by @Inference1 in #371
- fix: integrate reviewed renderer and CLI maintenance into dev by @tt-a1i in #441
- fix(brand-capture): read a bounded head instead of capping the whole page by @korjavin in #122
- docs: add reusable diagram prompts and project updates by @tt-a1i in #128
- docs: add scenario-first README chooser by @ketpatil77 in #134
- fix(renderer): isolate compiler imports from CLI diagnostics by @NaCr05 in #418
- fix(checker): handle large clearance receipt sets by @mekhovov in #426
- fix(renderer): classify and format authoring failures at their source by @tt-a1i in #396
- chore: remove unused proof artifacts and archive research notes by @Jrudani21 in #383
- fix(benchmark): validate node labels after identity binding by @nbt0 in #422
- fix(sequence): keep participant labels clear of header icons by @mekhovov in #425
- fix(ci): run sequence header checks with provisioned Chrome by @tt-a1i in #445
- feat: generate and deliver contributor cards for merged PRs by @YunyueLi in #412
- docs: link security reporting from all README contribution sections by @cyberspace-cs in #444
- fix(text-fit): preserve conservative width estimates for VS15 by @tt-a1i in #446
- docs(skill): treat the initial node budget as guidance by @ljcjeans-dev in #364
- fix(text-fit): keep a wide base wide when VS15 asks for text presentation by @therahul-yo in #411
- docs(agents): define scoped live-installation boundaries by @dliu120 in #247
- test: reset Motion storage before navigation through CDP by @tt-a1i in #448
- feat: add GitHub Copilot as an agent-switcher target by @Steven-Harris in #288
- chore(security): require immutable workflow dependencies by @simaba in #163
- docs(skill): use measured, bounded repairs for coupled routes by @sanpatricky in #338
- fix(diagnostics): identify unreadable nodes and overflowing workflow lanes by @tt-a1i in #353
- fix(diagnostics): identify nodes in desktop readability failures by @yearth in #355
- feat(visual-check): add --out-dir to write sidecars outside the artifact's folder by @julianwirawan-hash in #290
- fix(viewer): position semantic passport chip synchronously before paint (#200) by @sx4im in #207
- Add a Skill-only Hermes Agent install path by @Sayujaya14 in #285
- fix(renderers): align authored route checks, edge colors and lifecycle focus by @tt-a1i in #449
- fix(lifecycle): hide decorative rail during semantic interactions by @sacloudy in #253
- fix(renderers): align relationship labels with edge colors by @Beverly621 in #166
- fix(checker): preserve explicitly authored straight route intent by @tt-a1i in #397
- fix(delta): surface repository provenance changes by @To3akaRin in #416
- fix(ci): share required browser regressions with releases by @tt-a1i in #440
- perf: index label route clearance candidates by @seekskyworld in #210
- refactor(architecture): extract connection routing into routing.mjs by @AzScep in #266
- feat(renderers): keep edge labels inside the canvas by @Rererr in #236
- fix(workflow): fit implicit vertical stacks without inflating every lane by @zhouyuanxinand in #255
- feat(viewer): make Semantic Passport movable by @sacloudy in #254
- docs(showcase): add verified Astron Agent runtime map by @FenjuFu in #188
- fix(architecture): infer endpoint side from the dominant axis, not the bare dx sign by @dajiaohuang in #379
- Improve showcase sequence readability and add explicit layered reading by @RedHeartSecretMan in #362
- feat(evidence): extend repository evidence to every diagram type by @samiksha-shreya in #389
- feat(i18n): add Spanish (es) as a supported Viewer locale by @jptamayo76 in #377
- fix(delivery): reject stale artifacts after failed deliver by @GUYUEFANGYUAN8 in #380
- Defer Atlas from dev while retaining sequence readability by @tt-a1i in #460
- fix(preview,viewer): canonicalize Windows watchers and extract viewer CSS by @rollroyces in #403
- fix: unify Windows path contracts and publication safety by @sunsunsun-java in #476
- fix: preserve intrinsic dimensions in exported SVGs by @user01010111 in #484
- fix(opener): pass Windows targets through PowerShell environment by @asts-top in #471
- fix: preserve literal dollar sequences in architecture comparisons by @iflov in #459
- fix(preview): close owned connections during forced shutdown by @To3akaRin in #455
- fix(brands): decode icon URLs and respect HTML head contexts by @To3akaRin in #456
- fix(workflow): apply shared cross-collection contracts in the compiler by @gold-beyond in #462
- docs: add community links by @yijiez666-alt in #487
- ci: skip unrelated checks for README-only changes by @tt-a1i in #490
- docs: refresh README branding and interactive community showcase by @tt-a1i in #491
- docs: use compact official Trendshift badge by @tt-a1i in #492
- docs: sync website logo and favicon with README identity by @tt-a1i in #493
- docs: welcome broader everyday uses in README introduction by @tt-a1i in #494
- feat: migrate website to Astro while preserving visual parity by @tt-a1i in #495
- fix(renderers): clear labels while preserving existing diagram inputs by @tt-a1i in #503
- docs: explain explicit via endpoint coordinates by @6iKUN6 in #500
- docs(workbuddy): document WorkBuddy manual install without a switcher tab by @Teamirni in #178
- feat: support domain-specific node icons across diagram modes by @tt-a1i in #507
- fix: prevent large-input renderer crashes (dev port of #505) by @tt-a1i in #509
- fix: stabilize dev and reconcile main integration by @tt-a1i in #516
- fix: 加固 DSH 发布流程的版本固定与打包脚本校验 by @Momoyeyu in #513
- fix(brands): negotiate identity response encoding by @To3akaRin in #515
- docs(dsh): explain host activation expression by @tt-a1i in #504
- docs: replace legacy logos in brand previews by @tt-a1i in #517
- docs: sync current brand previews to dev by @tt-a1i in #518
- docs: restore README hero below the tagline (dev) by @tt-a1i in #520
- docs: restore README hero below the tagline by @tt-a1i in #519
- perf(architecture): route, label, and fit first drafts without manual repairs by @tt-a1i in #510
- feat(cli): finalize verified delivery with capture-free browser evidence by @tt-a1i in #523
- fix(cli): account for every measured browser theme state by @tt-a1i in #524
- fix: reduce authoring retries and fit default sequence/dataflow canvases by @tt-a1i in #528
- docs: add Japanese README by @eltociear in #190
- docs: remove Raven-specific ZIP install guidance by @tt-a1i in #529
- docs: remove Raven-specific ZIP install guidance from main by @tt-a1i in #530
- Fix arrow flashing through nodes on hover exit by @tt-a1i in #532
- docs: feature Archify in Kimi Work alongside existing sponsors by @tt-a1i in #543
- fix(workflow): center implicit vertical edge labels by @ooiuuii in #545
- fix(architecture): preserve composition quality in the fast authoring path by @tt-a1i in #537
- Fix viewer flash when switching dark and light themes by @tt-a1i in #553
- fix(lifecycle): preserve transitions with notes only by @To3akaRin in #550
- fix(lifecycle): prevent transition labels from obscuring band titles by @tt-a1i in #556
- fix(workflow): improve routing clarity and separate shared arrowheads by @sunsunsun-java in #558
- fix(viewer): add fixed SVG theme exports by @outlier27-cell in #536
- perf(compile): index the repeated scene scans in the workflow compiler and architecture label placement by @goatliamia in #574
- feat(architecture): place and route for clearer layouts by @tt-a1i in #579
- feat(viewer)!: refined reader shell, Viewer-style figures, and no guided views by @tt-a1i in #566
- fix(viewer): remove ordinary share card exports by @sunsunsun-java in #581
- feat(i18n): accept reusable Viewer UI translations as data by @uygnoey in #457
- refactor(i18n): supply Spanish through reusable translation data by @tt-a1i in #586
- fix: make Lifecycle starter deliverable and verify ZIP toolchain by @tt-a1i in #584
- docs(dsh): explain cordis patch execution boundary by @outlier27-cell in #576
- feat(lifecycle): schema v2 grid layout, UML state marks, and readable source badges by @tt-a1i in #589
- fix(sequence): keep lifelines out of the legend and match label colors by @tt-a1i in #592
- fix(viewer): fit the whole diagram on the first screen with notes below by @tt-a1i in #593
- fix(website): replace stale hero story links by @outlier27-cell in #577
- fix(geometry): clear float rounding at the solver's exact node minimum by @aashish254 in #591
- fix(sequence): flag unused canvas width and guide bounded spread repair by @tt-a1i in #595
- Promote tested dev batch to main by @tt-a1i in #596
- Release Archify v3.0.0 by @tt-a1i in #597
New Contributors
- @alivirgo made their first contribution in #132
- @RedHeartSecretMan made their first contribution in #231
- @MohammedThowfiq made their first contribution in #275
- @hasak21 made their first contribution in #299
- @jackie-cqz made their first contribution in #321
- @QiuLsG made their first contribution in #331
- @scs0209 made their first contribution in #333
- @zhouyuanxinand made their first contribution in #325
- @276970789 made their first contribution in #256
- @i-so-late made their first contribution in #385
- @ooiuuii made their first contribution in #307
- @apetcu made their first contribution in #373
- @kapelame made their first contribution in #415
- @To3akaRin made their first contribution in #404
- @nbt0 made their first contribution in #402
- @henry201605 made their first contribution in #374
- @asts-top made their first contribution in #424
- @luxiaoyu made their first contribution in #417
- @Ai-Eastern made their first contribution in #437
- @multicam made their first contribution in #347
- @ouchihao made their first contribution in #318
- @Bortlesboat made their first contribution in #349
- @Inference1 made their first contribution in #371
- @korjavin made their first contribution in #122
- @ketpatil77 made their first contribution in #134
- @NaCr05 made their first contribution in #418
- @mekhovov made their first contribution in #426
- @Jrudani21 made their first contribution in #383
- @cyberspace-cs made their first contribution in #444
- @ljcjeans-dev made their first contribution in #364
- @therahul-yo made their first contribution in #411
- @dliu120 made their first contribution in #247
- @Steven-Harris made their first contribution in #288
- @sanpatricky made their first contribution in #338
- @yearth made their first contribution in #355
- @julianwirawan-hash made their first contribution in #290
- @sx4im made their first contribution in #207
- @Sayujaya14 made their first contribution in #285
- @sacloudy made their first contribution in #253
- @Beverly621 made their first contribution in #166
- @AzScep made their first contribution in #266
- @Rererr made their first contribution in #236
- @FenjuFu made their first contribution in #188
- @dajiaohuang made their first contribution in #379
- @samiksha-shreya made their first contribution in #389
- @jptamayo76 made their first contribution in #377
- @GUYUEFANGYUAN8 made their first contribution in #380
- @rollroyces made their first contribution in #403
- @user01010111 made their first contribution in #484
- @iflov made their first contribution in #459
- @gold-beyond made their first contribution in #462
- @yijiez666-alt made their first contribution in #487
- @6iKUN6 made their first contribution in #500
- @Teamirni made their first contribution in #178
- @Momoyeyu made their first contribution in #513
- @eltociear made their first contribution in #190
- @outlier27-cell made their first contribution in #536
- @goatliamia made their first contribution in #574
- @uygnoey made their first contribution in #457
- @aashish254 made their first contribution in #591
Full Changelog: v2.16.0...v3.0.0