142 Commits
Author SHA1 Message Date
tt-a1i 5c1607ee74 Merge dev after #592 and regenerate combined diagram artifacts 2026-09-28 12:16:48 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> aa9a27eeb7 fix(viewer): cap a narrow SVG to its share beside a docked rail
The narrow-diagram cap was computed from a reader width that already
includes the docked rail and its gap, so moving the notes beside a narrow,
tall diagram gave the SVG another 308px and doubled its scale. The cap now
subtracts the docked rail's share; the shell keeps its desktop floor.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-28 09:15:24 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> cf326adcbf fix(viewer): keep relationship labels at the 6px floor in a first-screen fit
Dropping the primary-label floor let a narrow, tall architecture with titles
only shrink until its 8px relationship labels projected to 5.45px, failing
the browser readability gate. The reader's minimum scale now counts context
relationship labels in every layout: declared wide readers hold them to the
requested floor as before, and all other readers to the 6px hard floor.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-27 23:34:53 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 7abfa28f86 fix(sequence): place the legend below late content and rebuild the README proof
A valid late message with a note (y=477 on a 560px canvas) still drew
lifelines and its note into the legend band, because the lifeline end was
lifted to the content bottom. The legend now sits 12px below all timeline
content: a renderer-sized canvas grows to keep that gap, an authored showcase
canvas fails with the exact height to set, and lifelines stop above the
legend. The cache-miss example grows from 560 to 580px accordingly. The
README live proof is rebuilt from the updated gallery scene.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-27 23:32:32 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 5f39beac52 fix(viewer): keep a desktop reader shell around narrow tall diagrams
Fitting a narrow, tall diagram to the first screen shrank the whole page
shell to the SVG width, so the title wrapped under the toolbar and the zoom
controls clipped. The shell now keeps the desktop reader floor and the SVG
is centred at its fitted width.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-27 23:24:11 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> dfc84483c7 fix(viewer): fit the whole diagram on the first screen with notes below
With summary notes below the diagram, the adaptive reader held primary
labels at 12px, so a tall architecture overflowed a 14-inch laptop screen
(OpenPI: 947px diagram in a 711px budget) and the reader could not see it
whole. The first screen now fits the complete diagram and its controls down
to the renderer's declared readable text floor; zoom restores detail, and
only a graph taller than that floor allows still scrolls.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-27 23:09:26 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> d0223da881 fix(sequence): keep lifelines out of the legend and match label colors
Sequence lifelines ran down through the legend band, and message labels
used their own palette: default messages had green labels like the main
request path and async traces had orange labels on purple lines, so the
legend contradicted the drawing. Lifelines now stop at the timeline content
above the legend, colored lines share their color with their labels, and the
legend names the emphasis and default variants by meaning.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-27 22:39:56 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> e1eab5c8da feat(lifecycle): schema v2 grid layout, UML state marks, and readable source badges
Lifecycle diagrams generated from real repositories looked tangled: lower
bands used a column grid offset from the main rail, fixed 36px gaps could not
hold reciprocal transitions or labels, the implied rail doubled authored main
transitions, and the runtime source badge sat on the lifecycle sigil.

Schema v2 renders one row per lane on a shared column grid with a dedicated
orthogonal router, adaptive gaps, and vertical row headers. Start and final
states get UML marks explained by the legend, decision no longer shares the
failure color, and label layout reserves the source badge. Schema v1 keeps
its exact state geometry.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-27 12:51:54 +08:00
sunsunsun e6aa4ebb03 fix(examples): refresh README architecture viewers
Regenerate the three maintained README architecture examples from their JSON sources so they no longer expose ordinary Share Card and Copy Share Card actions. Add a regression against the checked-in examples. Authored nodes, edge paths and labels are preserved; automatic Viewer layout follows the current renderer.

Follow-up for tt-a1i/archify#580.
2026-09-27 00:09:58 +08:00
sunsunsun ed9409ed2b fix(viewer): remove ordinary share card exports
Remove Share Card and Copy Share Card from the export menu, their ordinary export APIs, and unused rendering fallbacks. Preserve full-diagram exports and route/reach cards, update regression coverage, and regenerate affected examples and packaged artifacts.

Fixes tt-a1i/archify#580
2026-09-26 23:56:36 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> c93d16485a feat(viewer): notes below the diagram by default, first screen for the diagram
The right rail hid below-the-fold content on laptops and its index was
clipped to the diagram height. Notes now default below the diagram and
the right rail is an opt-in that the reader remembers.

- Bottom: cards keep one full-width row; the node index is one panel whose
  groups flow into columns, with the placement toggle in its header.
- The first screen is budgeted for the diagram and its controls only; in
  bottom mode primary labels may drop to the rail's 12px floor to fit, and
  taller graphs still scroll.
- The navigation dock lifts to the viewport floor while the stage runs
  below it; stage-rail decisions and receipts use its resting position.
- Right rail: runs past a short diagram down to the viewport floor instead
  of scrolling its index inside the diagram's height.
- visual-check excludes bottom notes from the one-screen fit and measures
  the dock at rest, matching the Reader; tests follow the new rules.
- Fix a README test still expecting the removed #view=dispatch-path link.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-26 00:01:24 +08:00
sunsunsun 3ed5eec06f fix(viewer): restore outline focus after route selection ends
Use the live Route phase to distinguish a refused endpoint from a stale
Finder context. Completed and cleared routes now allow outline focus;
active source/target picking still preserves refused selections. Extend
the Finder browser regression to cover both completed and cleared routes.

Update the MCO README proof assertions to require supported presentation
and reach links instead of the retired chapter URL, fixing the CI failure.
Regenerate Viewer artifacts, gallery digests, the delta receipt and ZIP.
Reuse the unchanged README GIF with its original capture hashes/revision
and an explicit source-equivalence rationale in the receipt.

Validation: the old outline failed four result/idle cases; all eight
source/target/context combinations pass after the fix. The old README
assertion failed and the corrected proof test passes. Local npm test had
2232 passes, 83 skips, and one stale GIF-receipt failure; after updating
that receipt, the affected suites pass (11 passed, one optional MCO skip).
ZIP rebuild bytes match. Browser regressions run in PR CI.

Ablation: removed the redundant Finder-history guard after verifying that
live Route phase alone preserves the acceptance cases. No new abstraction.
2026-09-25 20:20:52 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 397b28a4cf fix(viewer): address PR #566 review findings
- Node index: a Route pick the Finder refuses no longer falls back to
  focus, which cleared the active Route.
- Schemas keep accepting retired meta.views (ignored) so existing
  schema 1/2 files still validate, per the 2.x compatibility contract.
- Rail comfort check measures node label sizes directly, so the 12px
  default-collapse rule covers all five diagram types.
- Rail choices live in memory first; blocked localStorage no longer
  freezes collapse/expand/placement.
- Escape-collapsing the overlay rail returns focus to the reveal control.
- Oversized raster exports downscale below 1x instead of allocating a
  canvas over the pixel cap.
- README and Gallery drop removed chapter-playback links and copy;
  README demo captures and live-proof GIF re-recorded on the new shell.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-25 19:05:46 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> fca0dc2f91 feat(viewer)!: refined reader shell, Viewer-style figures, and no guided views
UI/UX only, re-cut from dev so no renderer or authoring-rule changes ride
along (those made diagrams noisier in real use and were dropped).

- Reader shell: system UI type, grouped toolbar that scrolls with the page,
  refined style/export menus and navigation dock (Guide on "?", Map only
  when zoomed), plain-language Path copy and compact picking panel.
- Summary rail with node index for every diagram: right by default,
  collapsible, movable to the bottom, remembered per browser, and
  collapsed when docking would shrink primary text below 12px.
- Raster exports reproduce the Viewer page without controls (title row,
  canvas card, margins); background now covers non-zero viewBox origins.
- Canvas keeps dev's diagram colors and strokes; classic adds only a quiet
  dot field and lifted nodes.
- Remove guided views and story playback (breaking): meta.views is no
  longer accepted and fails with "remove unsupported property views".
- Skill: each diagram request goes into .archify/<type>-<slug>-<timestamp>/.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-25 17:20:44 +08:00
杨嘉伟 52703cfe98 Merge remote-tracking branch 'origin/dev' into fix/469-lock-exported-svg-theme
# Conflicts:
#	archify.zip
#	docs/assets/archify-live-proof.gif
#	docs/assets/archify-live-proof.json
#	docs/gallery.html
#	docs/gallery/manifest.json
2026-09-24 20:40:08 +08:00
杨嘉伟 c9b88cc77c chore(examples): sync web app reader metadata 2026-09-24 20:24:34 +08:00
杨嘉伟 6ea06c49a5 Merge remote-tracking branch 'origin/dev' into fix/469-lock-exported-svg-theme
# Conflicts:
#	archify.zip
#	docs/assets/archify-live-proof.gif
#	docs/assets/archify-live-proof.json
#	docs/gallery.html
#	docs/gallery/manifest.json
#	examples/checkout-platform-delta.html
#	examples/checkout-platform-delta.receipt.json
2026-09-24 20:23:51 +08:00
sunsunsun c8942ed70e fix(workflow): separate shared routes and preserve constrained geometry 2026-09-24 17:24:29 +08:00
tt-a1i 1c1e47ad21 Fix viewer flash when switching dark and light themes (#553)
* fix(viewer): prevent flash during theme switches

* test(viewer): cover width stability on theme switch
2026-09-24 15:03:39 +08:00
杨嘉伟 999a2764bf chore(examples): refresh checkout delta artifact 2026-09-24 10:36:50 +08:00
杨嘉伟 4b19ded731 fix(viewer): honor fixed SVG export themes 2026-09-24 10:06:28 +08:00
tt-a1i 6598913c07 build: refresh readable architecture viewer and package artifacts 2026-09-23 17:34:33 +08:00
tt-a1i 27d5791102 fix(viewer): preserve fitted height with compact toolbar clearance 2026-09-23 17:12:04 +08:00
tt-a1i 7665d78420 build: refresh diagrams and package for compact header clearance 2026-09-23 17:06:08 +08:00
杨嘉伟 da2c6478cc chore(examples): refresh checkout delta artifact 2026-09-23 13:53:23 +08:00
tt-a1i 3155a7ec51 fix(architecture): preserve route clarity during automatic planning 2026-09-23 13:22:17 +08:00
杨嘉伟 e9a8224f35 fix(viewer): add fixed SVG theme exports 2026-09-23 13:05:46 +08:00
tt-a1i dc7bf091d5 chore: refresh viewer-dependent proof artifacts 2026-09-23 12:04:37 +08:00
tt-a1i 5b58c8bb88 fix(viewer): keep node masks opaque during hover trace 2026-09-23 11:54:29 +08:00
tt-a1i ffd68ef220 feat(check): predict fixed-width viewport overflow before the browser gate
A canvas whose viewBox ratio is below the 1.55 wide threshold and that
declares no intrinsic-height fit renders at the full reader width, so its
1440x900 page height is a function of the viewBox alone: 1346px wide SVG
plus 126px of fixed chrome (187px with guided views). Such a candidate
passes validate, deliver and check and only fails at visual-check, after
the author has spent the whole delivery round; both maintainer replays of
a year-long holiday timeline lost most of their time exactly here.

Compute that height in the shared checker and report it as
composition/viewport-height with the maximum viewBox height at the current
width, the minimum width at the current height, and the architecture
escape hatch (omit meta.viewBox). The prediction matches Chrome to the
pixel on the three gallery artifacts that fail visual-check today
(972/1683/934px SVG). It is a warning in every profile for now, as
CONTRIBUTING asks of a new rule, so existing artifacts and the gallery
build keep passing while showcase authors see the non-zero warning count.

Regenerate examples, gallery, showcase, compare artifact, MCO case and
archify.zip for the settled reader template; the synthetic checker
fixtures use a 240x154 canvas so the new rule stays out of unrelated
composition tests.
2026-09-22 17:38:10 +08:00
tt-a1i 83d10786af build: regenerate examples, gallery, showcase, and skill archive
Re-render the checked-in examples and gallery artifacts from the combined
renderer and viewer source, rebuild the Checkout compare artifact and the
MCO case/showcase against their pinned repository, and rebuild archify.zip
with Node 22. The Chrome pipe transport test now derives the first-command
timeout from CHROME_STARTUP_TIMEOUT_MS instead of the former 15s literal.
2026-09-22 16:03:46 +08:00
tt-a1i a7c7e6271e Allow readable vertical scroll for tall diagrams 2026-09-22 12:17:41 +08:00
tt-a1i 1b7aa692f5 Fit compiler-measured architectures to desktop height 2026-09-22 12:17:08 +08:00
05bc389ad1 fix(renderers): clear labels without rejecting existing diagrams
Adapt the selective semantic-sigil clearance from #220 and stage-header
measurement from #257, retaining the sequence header fix already in dev
from #425. Cover workflow v1/v2 and preserve authored boxes, routes,
complete text, node font sizes and existing input acceptance.

Use a separate text row when narrow labels cannot share the icon rail;
fit only the decorative icon for deliberately short fixed boxes. Wrap
long stage titles when the node-free header space allows it.

Refs #199, #220, #257, #425

Co-authored-by: Souptik Chakraborty <62941615+Souptik96@users.noreply.github.com>
Co-authored-by: 276970789 <276970789@qq.com>
2026-09-21 22:57:08 +08:00
user01010111 89c2618da9 fix: preserve intrinsic dimensions in exported SVGs 2026-09-20 10:23:53 +12:00
sunsunsun 6ee68078a0 fix: close Windows path contract review gaps 2026-09-18 22:10:08 +08:00
tt-a1i b6f6d2356f Merge PR #362 into dev with isolated atlas navigation and browser gate 2026-09-17 04:07:20 +08:00
tt-a1i b6467a8551 fix(viewer): retain compact Passport close placement with drag handle 2026-09-17 03:24:02 +08:00
tt-a1i cbe0da316f build(examples): preserve Checkout showcase regeneration profile 2026-09-17 03:19:18 +08:00
tt-a1i 321ef6f383 build(examples): preserve showcase profile when refreshing Checkout Delta 2026-09-17 03:18:21 +08:00
tt-a1i 0e1612a4e7 fix(viewer): combine movable Passport with intrinsic reader fit 2026-09-17 03:17:17 +08:00
tt-a1i d895f23a7d fix(workflow): integrate intrinsic stack measurement and reader fit with dev 2026-09-17 03:12:57 +08:00
tt-a1i fd6f37dcf4 Refresh Delta provenance integration with reviewed renderer batch 2026-09-17 02:07:01 +08:00
tt-a1i 417655ff81 Preserve legacy provenance receipts in Delta rendering 2026-09-17 02:01:17 +08:00
tt-a1i 9782a6787a Keep structural accents unchanged when coloring edge labels 2026-09-17 01:56:53 +08:00
tt-a1i d3ce15e9a5 Regenerate combined renderer and Viewer artifacts 2026-09-17 01:51:00 +08:00
tt-a1i af87ba86eb Regenerate Checkout comparison for updated Passport timing 2026-09-17 01:39:47 +08:00
tt-a1i 0e5cbabc0e Integrate synchronous Passport placement into dev Viewer source 2026-09-17 01:28:23 +08:00
tt-a1i a9af527c2d Merge remote-tracking branch 'origin/dev' into codex/pr425-dev-integration
# Conflicts:
#	archify.zip
#	docs/assets/archify-live-proof.gif
#	docs/assets/archify-live-proof.json
#	docs/gallery.html
#	docs/gallery/manifest.json
2026-09-17 00:06:13 +08:00
逺坂凛andtt-a1i 3d972342c5 fix(delta): preserve baseline relationship arrowheads (#434)
Co-authored-by: tt-a1i <2801884530@qq.com>
2026-09-16 22:50:40 +08:00