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>
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>
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>
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>
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>
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>
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>
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.
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.
Fixestt-a1i/archify#580
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>
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.
- 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>
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>
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.
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.
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>