Commit Graph
793 Commits
Author SHA1 Message Date
tt-a1i a4a52850ec fix(lifecycle): preserve grid routes for compatible port pins 2026-09-27 22:18:07 +08:00
tt-a1i 99a0859435 fix(labels): fit source-backed rows in default v1 event states 2026-09-27 16:56:03 +08:00
tt-a1i 9d00f4e502 Merge remote-tracking branch 'origin/dev' into feat/lifecycle-redesign 2026-09-27 16:45:58 +08:00
tt-a1i cc8e44c41f fix(lifecycle): honor pinned ports and keep source badges clear 2026-09-27 16:45:58 +08:00
Friend A baffbdd3ff Merge pull request #576 from outlier27-cell/docs/406-cordis-js-expression
docs(dsh): explain cordis patch execution boundary
2026-09-27 15:26:52 +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
tt-a1i 64da9d39f5 Merge pull request #584 from tt-a1i/codex/dev-review-fixes
fix: make Lifecycle starter deliverable and verify ZIP toolchain
2026-09-27 10:04:35 +08:00
tt-a1i e0f4da3fad Merge latest dev translation catalog update and rebuild archive 2026-09-27 09:53:55 +08:00
tt-a1i fc65287b75 Merge pull request #586 from tt-a1i/codex/spanish-catalog-data
refactor(i18n): supply Spanish through reusable translation data
2026-09-27 09:47:43 +08:00
tt-a1i 21d4a852a7 Merge latest dev and rebuild package with upstream localization 2026-09-27 09:44:48 +08:00
tt-a1i 8efbfcd193 refactor(i18n): supply Spanish through reusable translation data 2026-09-27 09:39:04 +08:00
tt-a1i 01919c4b8b Merge pull request #457 from uygnoey/feat/korean-locale
feat(i18n): accept reusable Viewer UI translations as data
2026-09-27 09:31:26 +08:00
tt-a1i b67cd579d1 Scope reusable localization independently of font bundling 2026-09-27 09:21:17 +08:00
tt-a1i 96ca7864a9 Merge dev and retain reusable translation catalogs for PR 457 2026-09-27 09:14:47 +08:00
tt-a1i 9f010bb211 Merge latest dev and regenerate delivery artifacts 2026-09-27 09:02:28 +08:00
Friend A 7e98e282c0 Merge pull request #581 from sunsunsun-java/codex/issue-580-remove-share-card
fix(viewer): remove ordinary share card exports
2026-09-27 00:50:45 +08:00
tt-a1i 1f426e4202 test: align toolchain guard diagnostic expectations 2026-09-27 00:46:42 +08:00
sunsunsun 16b2ca55ef test(viewer): isolate route animation completion from fallback
The 860ms cleanup may run before a delayed 780ms CSS animation finishes. Hold cleanup timers only in the real animationend assertion, retain separate fallback coverage, and reproduce a busy first frame with a 350ms delay.
2026-09-27 00:41:07 +08:00
tt-a1i 62088d6b8e fix: resolve dev starter and verification regressions 2026-09-27 00:35:12 +08:00
uygnoey 8af0480672 docs(skill): stop pointing the agent at examples/locales; translate per diagram
examples/locales/*.json are translation examples only. SKILL.md,
references/authoring-contract.md, and schemas/README.md no longer mention
them; the agent translates meta.translations from the English source
(catalogKeys() + translateMessage('en', key)) fresh for each diagram.
The skill-metadata test now asserts the skill does not reference them.
Rebuilt archify.zip.
2026-09-27 01:15:46 +09: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
uygnoey cb1c15e49d Merge remote-tracking branch 'upstream/main' into feat/korean-locale 2026-09-27 01:05:46 +09: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
uygnoey 4293db81b5 fix(i18n): drop doubled counter word in ko finder status; scope example catalogs as format references
The ko finder nouns already started with 개, so the status templates
rendered "12개 중 3개 개 노드". Remove 개 from the three *.noun keys and
put the noun first: "{noun} {available}개 중 {visible}개" / "{noun} {available}개".
Mirrored in the Korean test fixture.

SKILL.md described examples/locales/ as reusable catalogs to copy. They are
format references only; the authoring agent translates meta.translations
for each diagram itself. Rebuilt archify.zip.
2026-09-27 00:53:44 +09:00
tt-a1i c3c61fec11 Merge pull request #566 from tt-a1i/feat/viewer-uiux
feat(viewer)!: refined reader shell, Viewer-style figures, and no guided views
2026-09-26 22:58:38 +08:00
tt-a1i 9ae021f1cd Merge remote-tracking branch 'origin/dev' into feat/viewer-uiux
# Conflicts:
#	archify.zip
#	archify/SKILL.md
2026-09-26 22:58:12 +08:00
tt-a1i 421d7f4360 Merge pull request #579 from tt-a1i/feat/architecture-clarity
feat(architecture): place and route for clearer layouts
2026-09-26 22:40:10 +08:00
tt-a1i 66180500ac Merge remote-tracking branch 'origin/dev' into feat/architecture-clarity
# Conflicts:
#	archify.zip
2026-09-26 22:39:41 +08:00
tt-a1iandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 45ef2da0a1 feat(architecture): place and route for clearer layouts
Most tangled Architecture drafts come from node placement, which the
router cannot change. Give authors a concrete placement procedure and
turn existing route evidence into node moves.

- Authoring defaults classify relationships (main path, branch/store,
  return, second entrance, fan-out) before placement, with a measured
  fan-out side length.
- check records which node a crossing pair shares and which node sides
  face more neighbours than they have ports; a passing finalize receipt
  turns this into node-move hints.
- The Skill allows one bounded, position-only repair when crossings
  remain, with a fresh evidence directory and a restore path.
- Automatic routing steps fan-out siblings into free parallel channels
  and reaches a blocked row of neighbours through one vertical side.

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

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-26 22:37:30 +08:00
Friend A 9f3f99f193 Merge pull request #574 from goatliamia/perf/compile-speed
perf(compile): index the repeated scene scans in the workflow compiler and architecture label placement
2026-09-26 18:42:19 +08:00
sunsunsun 720619c848 fix: preserve validation and memory bounds in compile optimizations
Keep repository evidence diagnostics in source order and batch-check path-only
references without loading their contents. Preserve the per-file read limit
and fallback behavior for oversized or failed batches.

Restore near-zero geometry semantics, bound text measurement caching, and
remove the redundant brand-loading gate and duplicate distance calculation.
Rebuild the canonical ZIP and add four regressions.

Validation: npm test passed (2307 pass, 0 fail, 84 skipped); 47 fixed inputs
match dev output, exits and diagnostics. Three representative before/after
performance cases retain the compile gains with identical output.
2026-09-26 17:56:18 +08:00
杨嘉伟 7caefb72d6 Merge remote-tracking branch 'origin/dev' into docs/406-cordis-js-expression 2026-09-26 15:24:20 +08:00
杨嘉伟 37cf535442 Merge remote-tracking branch 'origin/dev' into docs/406-cordis-js-expression
# Conflicts:
#	integrations/deepseek-harness/test/docs-contract.test.mjs
2026-09-26 12:10:38 +08:00
杨嘉伟 8e4b701a7a Revert "docs: feature Archify in Kimi Work alongside existing sponsors (#543)"
This reverts commit 9e35d2b0b3.
2026-09-26 11:08:55 +08:00
杨嘉伟 bb0e5e35e2 docs(dsh): explain cordis patch execution boundary 2026-09-26 10:55:17 +08:00
goatliamia 789d838f89 fix(evidence): let the verification loop keep every diagnostic in order
The first batch version normalized every cited path before the batch, so a later invalid path could be reported before an earlier missing file. Path normalization now happens without diagnostics during collection, and the ordered verification loop reports the same first diagnostic as before the batch existed. A document whose first citation is missing while a later one has an invalid path now reports file-missing again; the batch remains a pure optimization.
2026-09-26 04:38:46 +08:00
goatliamia a7c78d2603 chore(release): rebuild archify.zip with the shared grid module 2026-09-26 04:25:08 +08:00
goatliamia 20eea19558 fix(review): bound the spatial grids and keep cached routes read-only
The review of the indexing changes found five inputs that could go wrong. An unbounded coordinate could push a cell index past the safe integer range, where incrementing it no longer advances, or name more cells than the grid is worth; both grids now come from one shared createSpatialGrid that keeps such an item out of the buckets, still offers it to every query, and returns all items when the query range itself cannot be walked. A whitespace-only brand was skipped before the preparer could report it as unknown, so the gate now uses the preparer own truthiness check. The evidence prefetch validated every path before the first line-range check, which could reorder the first diagnostic; the same checks now run in source order while the objects are collected. The normalized route cache returned a shared mutable array, so cached arrays are frozen and documented as read-only.
2026-09-26 04:24:59 +08:00
goatliamia a84e4504a7 chore(release): rebuild archify.zip for the renderer changes 2026-09-26 03:48:51 +08:00
goatliamia 1d76cd7629 perf(labels): ask only the nearby route segments whether they mask a position
The mask test compared every candidate label position against every route segment. The segments now go into a uniform grid once and a candidate asks only the cells it covers, with the bounded clearance deciding the rest. The automatic-label suite and the geometry suite pass, all nineteen corpus documents stay identical, and the DSH diagram renders byte-identically. A doubled architecture document drops from 0.68s to 0.51s and an eight-fold one from 2.37s to 1.19s.
2026-09-26 03:06:56 +08:00
goatliamia 9cdcdb9d22 perf(geometry): skip a clearance the axis gap already rules out
The label placement asks for a segment-to-rectangle clearance only to compare it with a threshold, and it asked millions of times: an axis gap larger than the threshold proves the distance cannot be smaller, so the exact distance is never computed. The exact function also stopped building its four corner arrays on every call. All nineteen corpus documents stay identical, the geometry suite passes, the DSH diagram renders byte-identically, and a doubled architecture document drops from 1.07s to 0.64s with an eight-fold one from 6.45s to 2.13s.
2026-09-26 03:06:56 +08:00
goatliamia e2c44ce522 perf(evidence): read every cited blob in one Git session
Verification ran two git processes per citation: one for the object type and one for the content. A sixty-five citation diagram therefore spawned about a hundred and thirty processes, and on Windows that dominated the whole render. One cat-file --batch session now answers all of them and the checks read from memory, with the per-citation calls kept as a fallback when the batch session fails. The DSH diagram renders in 0.69s instead of 7.47s with byte-identical output, and all nineteen corpus documents stay identical.
2026-09-26 03:06:56 +08:00
goatliamia 8dab254681 perf(workflow): keep routed endpoints per node for the port search
Each port candidate search walked every routed path to find the ones with an endpoint at the node; registration now records those per node, so the search reads only the routes that touch it. Nineteen documents keep identical bytes and diagnostics; the 384-node compile drops from 0.85s to 0.81s and the 768-node one from 1.55s to 1.34s.
2026-09-26 03:06:56 +08:00
goatliamia fe168a5810 perf(workflow): skip label clearance work an axis gap already rules out
Both directions of the placed-label check computed a segment distance for every nearby label and route; a gap of four pixels on either axis proves no segment can violate the clearance, so the per-segment loop is skipped. The routed-item bounds come from the ones the grid insert already computed. Nineteen documents keep identical bytes and diagnostics; both measured sizes improve by a little over two percent.
2026-09-26 03:06:56 +08:00
goatliamia 04050111fe perf(workflow): test the cheap selective predicates before the expensive ones
Measured over one 384-node compile: the legend check costs 40ms and rejected five of ten thousand candidates, the frame border check 27ms with none, while the label-versus-node check rejects 55 percent in 26ms and the endpoint-node check 51 percent in 39ms. Every predicate is pure, so their order cannot change the result and only decides how many candidates reach the expensive ones. The 384-node compile drops from 0.94s to 0.86s and the 768-node one from 1.71s to 1.61s.
2026-09-26 03:06:56 +08:00
goatliamia 088fbcac32 perf(workflow): assemble the enumerated routes in one pass
Every candidate in the automatic set was built as an array and then normalized, nine per evaluation. joinRoutePoints applies the same normalization while assembling and seeds the cache, so later predicates read it straight away. Nineteen documents keep identical bytes and diagnostics; the 384-node compile drops from 1.03s to 0.92s and the 768-node one from 1.98s to 1.68s. A second change that normalized once inside the endpoint side check was measured and reverted for showing nothing.
2026-09-26 03:06:56 +08:00
goatliamia f6a1d36b79 perf(workflow): query scene obstacles and route interactions instead of walking them
The scene label obstacles now join the same grid when they are built, and both the scene-obstacle check and the interaction metrics ask for what is near the candidate; the metrics keep registration order so the floating-point sums are unchanged. The first attempt shipped without publishing the scene obstacles, which the identity check caught by making two rejected dense documents pass; a second difference turned out to be a stale artifact in the verifier itself, which now clears the output before each run. With both fixed, nineteen documents are identical again and the 768-node compile drops from 4.86s to 1.98s.
2026-09-26 03:06:56 +08:00
goatliamia 684d5cced2 perf(workflow): answer the outside-right fallback without rescanning the scene
That path walked every node and every routed path twice per edge to find the rightmost obstacle and the label-deficit push. The node edge is computed once, the routed edge is maintained as routes are registered, and the deficit now asks the grid for the obstacles that can reach the label rectangle. Nineteen documents keep identical bytes and diagnostics; the 768-node compile drops from 7.1s to 5.0s.
2026-09-26 03:06:56 +08:00
goatliamia 45d59f2ac8 perf(geometry): normalize a route in one pass
The filter, dedupe and collinear collapse now run in a single loop without the intermediate arrays or the argument spread. Nineteen documents keep identical bytes and diagnostics; the 384-node compile drops from 2.34s to 2.06s and the 768-node one from 8.67s to 8.06s.
2026-09-26 03:06:56 +08:00
goatliamia ba1b0fda4d perf(workflow): query the scene instead of rescanning it
Three scans became queries or cached values: the label-versus-node check asks the grid, the label clearance deficit asks the grid and accumulates in registration order so the floating-point sum is unchanged, and the scene label obstacles and composition frames are built once per compile instead of once per candidate (the frames are also filtered to those a candidate can reach). Nineteen documents across all five types keep identical bytes and diagnostics. The 768-node compile drops from 14.1s to 8.7s and the fitted growth exponent from about 1.86 to about 1.55.
2026-09-26 03:06:56 +08:00