Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
a645acc
docs: link Archify updates on X
tt-a1i Aug 27, 2026
bc1af2f
docs: keep X link within README budget
tt-a1i Aug 27, 2026
16492f6
fix(renderers): align relationship labels with edge colors
Beverly621 Aug 28, 2026
c9579f1
chore(security): require immutable workflow dependencies
simaba Aug 28, 2026
d154408
fix(brand-capture): read a bounded head instead of capping the whole …
korjavin Aug 26, 2026
09ed28d
build(zip): rebuild archify.zip for the bounded-head brand capture fix
korjavin Aug 29, 2026
f3da4c4
fix(viewer): position semantic passport chip synchronously before pai…
sx4im Aug 30, 2026
ed27416
perf: index label route clearance candidates
seekskyworld Aug 30, 2026
5b12bcd
fix: guard unsafe route index coordinates
seekskyworld Aug 30, 2026
bca9add
build: refresh distributable archive
seekskyworld Aug 30, 2026
e0c6525
Merge upstream main and resolve workflow pinning conflicts
simaba Aug 31, 2026
cc4095f
docs(agents): require explicit install consent
dliu120 Aug 31, 2026
c5acbc6
fix(lifecycle): hide decorative rail during semantic interactions
Sep 1, 2026
3d5502c
feat(renderers): keep edge labels inside the canvas
Rererr Aug 29, 2026
0be0b07
fix(renderers): measure containment from the viewBox origin and the l…
Rererr Aug 31, 2026
4e22f71
fix(renderers): close the adjacent gaps around label containment and …
Rererr Aug 31, 2026
a8ce525
Merge current main and update action-pin contract tests
simaba Sep 1, 2026
7821209
fix(test): accept and verify immutable action pins
simaba Sep 1, 2026
6f0cceb
docs: add scenario-first README chooser
ketpatil77 Aug 27, 2026
e5a6474
refactor(architecture): extract connection routing into routing.mjs
AzScep Sep 1, 2026
e7dd6f4
chore(release): rebuild archify.zip for the routing module
AzScep Sep 1, 2026
87993ef
feat: add Skill-only Hermes Agent install path
Sayujaya14 Sep 3, 2026
fc24c46
feat: add GitHub Copilot as an agent-switcher target
Steven-Harris Sep 3, 2026
ac3dfa5
feat(visual-check): add --out-dir to write sidecars outside the artif…
julianwirawan-hash Sep 3, 2026
84107d2
Merge remote-tracking branch 'origin/main' into fix/edge-label-varian…
Beverly621 Sep 4, 2026
67a94e9
Merge remote-tracking branch 'origin/main' into fix/edge-label-varian…
Beverly621 Sep 4, 2026
29caf65
Merge remote-tracking branch 'origin/main' into fix/edge-label-varian…
Beverly621 Sep 5, 2026
8a3138b
test: make checkout Git isolation portable on Windows
Sep 5, 2026
16ef0cd
test: load workflow migration preload via a file URL
Sep 5, 2026
9022f99
test: exercise preview graceful shutdown on Windows
Sep 5, 2026
6b1fdf2
feat(skill): add plan-first mode for manual edge routing
sanpatricky Sep 7, 2026
3aafd47
docs(authoring-contract): add batch-planning exception for shared spa…
sanpatricky Sep 7, 2026
46ff532
test: make clean staging mode checks portable
Bortlesboat Sep 8, 2026
62e7c4d
fix(visual-check): explain workflow viewport overflow with lane measu…
tt-a1i Sep 8, 2026
4fc9212
Merge main and rebuild the workflow diagnostic package
tt-a1i Sep 8, 2026
bd61c21
Merge remote-tracking branch 'upstream/main' into codex/windows-migra…
Sep 8, 2026
005a75d
Merge remote-tracking branch 'upstream/main' into codex/issue-144-win…
Sep 8, 2026
d140f6e
Merge remote-tracking branch 'upstream/main' into codex/windows-previ…
Sep 8, 2026
39b0b42
fix(diagnostics): identify nodes in desktop readability failures
yearth Sep 8, 2026
30809bf
docs(SKILL): point fast path at viewport budget and legal path above …
ljcjeans-dev Sep 8, 2026
d6539ec
Merge branch 'main' into feature/github-copilot-agent-support
Steven-Harris Sep 8, 2026
f848a4c
fix(guide): add bilingual layout repair scenarios
Inference1 Sep 9, 2026
788f813
chore: remove stray local render output from generated/ (8 files, 1.6…
Jrudani21 Sep 10, 2026
2a0c611
chore(docs): drop unreferenced sponsor images left behind by #378 (2 …
Jrudani21 Sep 10, 2026
582b88b
docs: move the unlinked research journal out of the published docs ro…
Jrudani21 Sep 10, 2026
64ac602
docs: remove the unreferenced article draft and its images (6 files, …
Jrudani21 Sep 10, 2026
bfb7603
fix(renderer): classify and format authoring failures at their source
tt-a1i Sep 12, 2026
4f8e594
fix(checker): preserve explicitly authored straight route intent
tt-a1i Sep 12, 2026
80187fa
fix(renderer): preserve unexpected failures across diagnostic boundaries
tt-a1i Sep 13, 2026
836f08b
Merge latest main and rebuild diagnostic fix archive
yearth Sep 14, 2026
e27141f
fix(text-fit): keep a wide base wide when VS15 asks for text presenta…
claude Sep 14, 2026
cf2fa95
feat: generate and deliver contributor cards for merged PRs
YunyueLi Sep 14, 2026
64eeca7
fix: wrap exceptionally wide contributor usernames
YunyueLi Sep 14, 2026
adcdddc
fix(delta): surface repository provenance changes
To3akaRin Sep 15, 2026
72deba7
fix(renderer): isolate compiler imports from CLI diagnostics
NaCr05 Sep 15, 2026
20b74c4
fix(diagnostics): ignore non-element markup in node ownership scan
tt-a1i Sep 15, 2026
8ae0d45
Merge remote-tracking branch 'origin/main' into fix/workflow-import-i…
NaCr05 Sep 15, 2026
438b99b
Merge main into delta provenance display and refresh package
tt-a1i Sep 15, 2026
70cab2a
fix(benchmark): validate node labels after identity binding
nbt0 Sep 15, 2026
40001ae
fix(sequence): keep participant labels clear of header icons
mekhovov Sep 15, 2026
e5d158f
fix(checker): handle large clearance receipt sets
mekhovov Sep 15, 2026
b85660f
test(sequence): support Node 18 path resolution
mekhovov Sep 15, 2026
66b46cf
Merge current main and preserve unquoted attribute diagnostic evidence
yearth Sep 16, 2026
cb5fae8
Merge branch 'main' into codex/benchmark-node-labels
sunsunsun-java Sep 16, 2026
39d66d9
fix(ci): share required browser regressions with releases
tt-a1i Sep 16, 2026
8bfe4e8
test(browser): wait for radar layout before titlebar drag
tt-a1i Sep 16, 2026
0dbcc3c
Merge remote-tracking branch 'origin/main' into codex/pr426-integration
tt-a1i Sep 16, 2026
1f64d8d
Merge remote-tracking branch 'origin/dev' into codex/pr418-dev-integr…
tt-a1i Sep 16, 2026
bfe6400
test: align contributor guide check with dev integration
tt-a1i Sep 16, 2026
5b6ad5d
Merge remote-tracking branch 'origin/dev' into codex/pr418-dev-integr…
tt-a1i Sep 16, 2026
c2f4c09
Merge remote-tracking branch 'origin/pr318' into codex/windows-test-p…
tt-a1i Sep 16, 2026
6d7de26
Merge remote-tracking branch 'origin/pr319' into codex/windows-test-p…
tt-a1i Sep 16, 2026
bb3dd5a
Merge remote-tracking branch 'origin/pr320' into codex/windows-test-p…
tt-a1i Sep 16, 2026
90a1319
Merge remote-tracking branch 'origin/pr349' into codex/windows-test-p…
tt-a1i Sep 16, 2026
60e3af9
test(ci): verify Windows-sensitive fixtures on Windows
tt-a1i Sep 16, 2026
15602f0
test(viewer): avoid intrusive pre-document storage observation
tt-a1i Sep 16, 2026
eb3b3b7
Merge remote-tracking branch 'origin/dev' into codex/pr371-dev-integr…
tt-a1i Sep 16, 2026
2e271ae
Merge pull request #442 from tt-a1i/codex/windows-test-portability
tt-a1i Sep 16, 2026
d147c72
Merge remote-tracking branch 'origin/pr128' into codex/readme-queue-i…
tt-a1i Sep 16, 2026
b82aa73
Merge remote-tracking branch 'origin/pr134' into codex/readme-queue-i…
tt-a1i Sep 16, 2026
a0caa18
Merge pull request #443 from tt-a1i/codex/motion-storage-observer-fix
tt-a1i Sep 16, 2026
b4d811f
Merge remote-tracking branch 'origin/dev' into codex/pr418-dev-integr…
tt-a1i Sep 16, 2026
b98a414
Merge pull request #371 from Inference1/fix/361-guide-repair-scenarios
tt-a1i Sep 16, 2026
b0de439
Merge dev and enforce bounded brand-head streaming
tt-a1i Sep 16, 2026
a8a6f24
Merge remote-tracking branch 'origin/dev' into codex/pr122-dev-integr…
tt-a1i Sep 16, 2026
e92c0bc
Merge remote-tracking branch 'origin/dev' into codex/pr426-integration
tt-a1i Sep 16, 2026
a363009
Merge remote-tracking branch 'origin/dev' into codex/readme-queue-int…
tt-a1i Sep 16, 2026
ffdc6a0
Merge remote-tracking branch 'origin/pr441' into codex/pr396-dev-inte…
tt-a1i Sep 16, 2026
079c114
Merge remote-tracking branch 'origin/dev' into codex/pr396-dev-integr…
tt-a1i Sep 16, 2026
e25d4a6
Merge remote-tracking branch 'origin/dev' into codex/pr418-dev-integr…
tt-a1i Sep 16, 2026
e78b843
Merge remote-tracking branch 'origin/pr122' into codex/pr418-dev-inte…
tt-a1i Sep 16, 2026
35a0127
Merge remote-tracking branch 'origin/pr426' into codex/pr418-dev-inte…
tt-a1i Sep 16, 2026
ce788d1
Merge remote-tracking branch 'origin/pr128' into codex/pr418-dev-inte…
tt-a1i Sep 16, 2026
da85751
build: rebuild package from reviewed maintenance batch
tt-a1i Sep 16, 2026
e1c27ee
Merge pull request #441 from tt-a1i/codex/pr418-dev-integration
tt-a1i Sep 16, 2026
935a768
Merge remote-tracking branch 'origin/dev' into codex/pr396-dev-integr…
tt-a1i Sep 16, 2026
a9af527
Merge remote-tracking branch 'origin/dev' into codex/pr425-dev-integr…
tt-a1i Sep 16, 2026
13ed913
docs: add SECURITY.md link to Contributing section
cyberspace-cs Sep 16, 2026
018b616
Refresh cleanup on dev; preserve active sponsor and historical articl…
tt-a1i Sep 16, 2026
49e0b1f
Merge branch 'dev' into feat/283-hermes-agent-install
Sayujaya14 Sep 16, 2026
926655b
Merge remote-tracking branch 'origin/dev' into codex/pr422-dev-integr…
tt-a1i Sep 16, 2026
5d1014e
Merge pull request #396 from tt-a1i/codex/legacy-render-diagnostics
tt-a1i Sep 16, 2026
f3091aa
Merge remote-tracking branch 'origin/dev' into codex/pr425-dev-integr…
tt-a1i Sep 16, 2026
5f18c7b
Merge pull request #383 from Jrudani21/ponytail/tier1-cull
tt-a1i Sep 16, 2026
ad34f85
Merge remote-tracking branch 'origin/dev' into codex/pr364-dev-integr…
tt-a1i Sep 16, 2026
3497d90
docs: keep node budget advisory and preserve required topology
tt-a1i Sep 16, 2026
daa3189
Merge pull request #422 from nbt0/codex/benchmark-node-labels
tt-a1i Sep 16, 2026
c472bb5
Merge remote-tracking branch 'origin/dev' into codex/pr412-dev-integr…
tt-a1i Sep 16, 2026
3c50770
Merge pull request #425 from mekhovov/fix/sequence-participant-header…
tt-a1i Sep 16, 2026
9464f68
ci: verify contributor cards on dev before production activation
tt-a1i Sep 16, 2026
a59ef22
Merge remote-tracking branch 'origin/dev' into codex/pr364-dev-integr…
tt-a1i Sep 16, 2026
b44f8e4
Merge remote-tracking branch 'origin/dev' into codex/pr411-dev-integr…
tt-a1i Sep 16, 2026
57b32bb
ci: run sequence header checks with the provisioned browser
tt-a1i Sep 16, 2026
f5f2e67
Merge branch 'codex/sequence-browser-ci' into codex/pr364-dev-integra…
tt-a1i Sep 16, 2026
de9a160
fix: validate display titles and pin contributor card actions
tt-a1i Sep 16, 2026
fd810f5
Merge remote-tracking branch 'origin/dev' into codex/pr444-dev-integr…
tt-a1i Sep 16, 2026
ab8928f
docs: keep the security report link consistent across READMEs
tt-a1i Sep 16, 2026
181bc92
Merge branch 'codex/pr364-dev-integration' into codex/pr411-dev-integ…
tt-a1i Sep 16, 2026
28223b8
Merge remote-tracking branch 'origin/dev' into codex/pr247-dev-integr…
tt-a1i Sep 16, 2026
572e260
docs: keep installation boundaries concise and honor existing authori…
tt-a1i Sep 16, 2026
b4c62fc
Merge pull request #445 from tt-a1i/codex/sequence-browser-ci
tt-a1i Sep 16, 2026
21a1834
Merge remote-tracking branch 'origin/dev' into codex/pr444-dev-integr…
tt-a1i Sep 16, 2026
65d8de6
Merge pull request #412 from tt-a1i/codex/contributor-cards
tt-a1i Sep 16, 2026
c0be87b
Merge remote-tracking branch 'origin/dev' into codex/pr247-dev-integr…
tt-a1i Sep 16, 2026
0bd5773
test: fail an explicitly empty Chrome configuration
tt-a1i Sep 16, 2026
62bd6d2
docs(agents): discover the selected installation source
tt-a1i Sep 16, 2026
76ea97b
Merge pull request #444 from cyberspace-cs/docs/add-security-link
tt-a1i Sep 16, 2026
d03f9f5
Merge pull request #446 from tt-a1i/codex/pr411-dev-integration
tt-a1i Sep 16, 2026
7ad8091
docs(skill): bound measured repairs for coupled routes on dev
tt-a1i Sep 16, 2026
ba4072f
test: reset motion storage before file navigation through CDP
tt-a1i Sep 16, 2026
0a04bcc
Merge remote-tracking branch 'origin/dev' into codex/pr288-dev-integr…
tt-a1i Sep 16, 2026
a68ef18
docs(skill): scope layout receipts to supported diagram types
tt-a1i Sep 16, 2026
ecd2b57
Merge remote-tracking branch 'origin/dev' into codex/pr163-dev-integr…
tt-a1i Sep 16, 2026
4b02105
chore(ci): pin newly added Windows job actions
tt-a1i Sep 16, 2026
9789d42
Merge pull request #247 from dliu120/docs/agent-install-consent
tt-a1i Sep 16, 2026
14a36e9
Merge pull request #448 from tt-a1i/codex/motion-protocol-storage-reset
tt-a1i Sep 16, 2026
f87f442
test: bound authoring contract by section instead of inline link
tt-a1i Sep 16, 2026
2164afd
Merge remote-tracking branch 'origin/dev' into codex/pr338-dev-integr…
tt-a1i Sep 16, 2026
a8e3e52
Merge pull request #288 from Steven-Harris/feature/github-copilot-age…
tt-a1i Sep 16, 2026
71d0c99
Merge pull request #163 from simaba/chore/immutable-workflow-dependen…
tt-a1i Sep 16, 2026
9b3cccc
fix(diagnostics): refresh readability node identity on dev
tt-a1i Sep 16, 2026
676e175
Merge branch 'dev' into feat/283-hermes-agent-install
Sayujaya14 Sep 16, 2026
12901b5
Merge pull request #338 from sanpatricky/feat/plan-first-routing
tt-a1i Sep 16, 2026
4bcaf70
Merge current dev before diagnostics integration
tt-a1i Sep 16, 2026
ba5b9e8
Merge remote-tracking branch 'origin/dev' into codex/pr290-dev-integr…
tt-a1i Sep 16, 2026
621ae34
fix(diagnostics): integrate node identity and measured workflow overflow
tt-a1i Sep 16, 2026
746716b
fix(visual-check): record redirected sidecar paths without path-helpe…
tt-a1i Sep 16, 2026
f3ddb11
Merge pull request #353 from tt-a1i/codex/workflow-first-screen-fix
tt-a1i Sep 16, 2026
ae45406
Merge dev diagnostics and rebuild canonical package
tt-a1i Sep 16, 2026
0e5cbab
Integrate synchronous Passport placement into dev Viewer source
tt-a1i Sep 16, 2026
457d242
Merge pull request #290 from julianwirawan-hash/add-visual-check-out-…
tt-a1i Sep 16, 2026
529a1b7
Merge current dev and rebuild Passport integration package
tt-a1i Sep 16, 2026
f25cd0c
Merge remote-tracking branch 'origin/dev' into codex/pr285-dev-integr…
tt-a1i Sep 16, 2026
b26b4da
Validate Hermes adapter and clarify community installation instructions
tt-a1i Sep 16, 2026
af87ba8
Regenerate Checkout comparison for updated Passport timing
tt-a1i Sep 16, 2026
9cf5f31
Use the Windows Python launcher for Hermes contract tests
tt-a1i Sep 16, 2026
a617076
Integrate authored straight-route validation repair into dev batch
tt-a1i Sep 16, 2026
28429f5
Integrate edge-label color contract in authoritative Viewer source
tt-a1i Sep 16, 2026
5ebebad
Integrate lifecycle decorative-rail interaction fix
tt-a1i Sep 16, 2026
789df91
Merge pull request #207 from sx4im/fix-issue-200-passport-jump
tt-a1i Sep 16, 2026
dd6d253
Generate Viewer with combined rail and label styles
tt-a1i Sep 16, 2026
ee72e10
Merge current dev Passport repair into renderer batch
tt-a1i Sep 16, 2026
15941e9
Merge pull request #285 from Sayujaya14/feat/283-hermes-agent-install
tt-a1i Sep 16, 2026
dfadf7c
Merge remote-tracking branch 'origin/dev' into codex/renderer-consist…
tt-a1i Sep 16, 2026
d3ce15e
Regenerate combined renderer and Viewer artifacts
tt-a1i Sep 16, 2026
9782a67
Keep structural accents unchanged when coloring edge labels
tt-a1i Sep 16, 2026
888dec8
Integrate provenance visibility on current dev
tt-a1i Sep 16, 2026
417655f
Preserve legacy provenance receipts in Delta rendering
tt-a1i Sep 16, 2026
afe593a
Require the lifecycle rail browser regression in CI
tt-a1i Sep 16, 2026
fd6f37d
Refresh Delta provenance integration with reviewed renderer batch
tt-a1i Sep 16, 2026
6d8edbb
Keep provenance documentation within the README reading budget
tt-a1i Sep 16, 2026
7d0770d
Refresh shared browser gate with current dev regressions
tt-a1i Sep 16, 2026
128a8aa
Use the desktop pointer fixture for lifecycle hover coverage
tt-a1i Sep 16, 2026
7239454
Merge commit '128a8aa' into codex/pr416-dev-integration
tt-a1i Sep 16, 2026
4412565
Merge commit '128a8aa' into codex/browser-gate-427
tt-a1i Sep 16, 2026
5440dbb
Integrate bounded route candidate indexing with dev clearance fixes
tt-a1i Sep 16, 2026
cb31d0e
Merge pull request #449 from tt-a1i/codex/renderer-consistency-dev
tt-a1i Sep 16, 2026
b1747f4
Merge pull request #416 from To3akaRin/codex/fix-delta-provenance-dis…
tt-a1i Sep 16, 2026
efda1b8
Merge remote-tracking branch 'origin/dev' into codex/pr210-dev-integr…
tt-a1i Sep 16, 2026
bc26a22
Rebuild canonical package for indexed clearance validation
tt-a1i Sep 16, 2026
2d87fec
Merge pull request #440 from tt-a1i/codex/browser-gate-427
tt-a1i Sep 16, 2026
86ebff2
Merge remote-tracking branch 'origin/dev' into codex/pr210-dev-integr…
tt-a1i Sep 16, 2026
24285de
Merge pull request #210 from seekskyworld/perf/index-label-route-clea…
tt-a1i Sep 16, 2026
c4ae7da
refactor(architecture): integrate routing extraction on dev
tt-a1i Sep 16, 2026
fc43792
fix(renderers): integrate label canvas containment on dev
tt-a1i Sep 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 43 additions & 49 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ jobs:
matrix:
node-version: [18, 20, 22, 24]
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ matrix.node-version }}
cache: npm
Expand All @@ -25,16 +25,20 @@ jobs:
run: npm test
working-directory: archify

- name: Verify community Hermes adapter
if: matrix.node-version == 22
run: node --test integrations/hermes-agent/test/plugin-contract.test.mjs

webm-artifact:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- name: Provision a known Chrome runtime
id: setup-chrome
uses: browser-actions/setup-chrome@v2
uses: browser-actions/setup-chrome@48ad923757ca74d66703209fe939badbdf80f2f4 # v2.2.0
with:
chrome-version: stable
install-dependencies: true
Expand All @@ -45,41 +49,11 @@ jobs:
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
- name: Verify packaged examples and Reader Layout boundaries in a real browser
run: node --test test/desktop-reader-browser.test.mjs test/reader-layout-browser.test.mjs
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
- name: Verify SVG export cleanup and live state isolation
run: node --test test/export-cleanup-browser.test.mjs
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
- name: Install offline font test parser
- name: Install browser test dependencies
run: npm ci --ignore-scripts --no-audit --no-fund
working-directory: archify
- name: Verify offline fonts and independent SVG/raster exports
run: node --test test/offline-font-browser.test.mjs
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
- name: Verify all five diagram modes localize Viewer interactions
run: node --test test/i18n.test.mjs
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
- name: Verify Semantic Radar collision and drag behavior
run: node --test test/semantic-radar.test.mjs
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
- name: Verify Viewer chrome, camera, motion and input interactions
run: node --test --test-concurrency=2 test/viewer-chrome-layout.test.mjs test/viewer-camera-browser.test.mjs test/motion-governor-browser.test.mjs test/finder-browser.test.mjs test/intent-trace-browser.test.mjs test/semantic-lens-browser.test.mjs test/route-probe-browser.test.mjs test/guided-views-browser.test.mjs test/focus-browser.test.mjs test/export-browser.test.mjs test/viewer-identifiers-browser.test.mjs
- name: Run shared browser regression gate
run: npm run test:browser
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
Expand All @@ -88,8 +62,8 @@ jobs:
zip-freshness:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- name: Rebuild archify.zip and compare exact bytes
Expand All @@ -103,8 +77,8 @@ jobs:
published-update-manifest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- name: Public notifier manifest must reference an existing stable Release
Expand Down Expand Up @@ -163,8 +137,8 @@ jobs:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- name: Extract packaged skill
Expand All @@ -185,9 +159,29 @@ jobs:
- name: Validate packaged skill without installing dependencies
run: node scripts/package-smoke.mjs

windows-test-portability:
name: Windows test portability
runs-on: windows-latest
steps:
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- name: Install test dependencies
run: npm ci --ignore-scripts
working-directory: archify
- name: Verify Windows-sensitive regression fixtures
run: >-
node --test
--test-name-pattern="Git checkout preserves|clean staging preserves index modes|workflow migration cleanup failure|preview runs from an installed skill"
archify/test/checkout-line-endings.test.mjs
archify/test/clean-skill-staging.test.mjs
archify/test/workflow-migration.test.mjs
archify/test/cli.test.mjs

deploy-pages:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: [test, webm-artifact, zip-freshness, published-update-manifest, package-smoke]
needs: [test, webm-artifact, zip-freshness, published-update-manifest, package-smoke, windows-test-portability]
runs-on: ubuntu-latest
concurrency:
group: github-pages
Expand All @@ -200,7 +194,7 @@ jobs:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- name: Reject an obsolete deployment run
id: deployment-head
env:
Expand All @@ -215,13 +209,13 @@ jobs:
fi
- name: Configure GitHub Pages
if: steps.deployment-head.outputs.current == 'true'
uses: actions/configure-pages@v6
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
- name: Upload checked documentation
if: steps.deployment-head.outputs.current == 'true'
uses: actions/upload-pages-artifact@v5
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: docs
- name: Deploy checked documentation
if: steps.deployment-head.outputs.current == 'true'
id: deployment
uses: actions/deploy-pages@v5
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
104 changes: 104 additions & 0 deletions .github/workflows/contributor-cards.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: Contributor cards

on:
pull_request:
paths:
- 'tools/contributor-cards/**'
- '.github/workflows/contributor-cards.yml'
push:
branches: [main, dev]
paths:
- 'tools/contributor-cards/**'
- '.github/workflows/contributor-cards.yml'
pull_request_target:
types: [closed]
branches: [main]
workflow_dispatch:
inputs:
pr:
description: 'Merged pull request number'
required: true
type: string
publish:
description: 'Publish the card and post or update its thank-you reply'
type: boolean
default: false

permissions:
contents: read

jobs:
check:
if: github.event_name == 'pull_request' || github.event_name == 'push'
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5
with:
persist-credentials: false
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 22
- uses: browser-actions/setup-chrome@48ad923757ca74d66703209fe939badbdf80f2f4 # v2
id: chrome
with:
chrome-version: stable
install-dependencies: true
- name: Install Chinese fallback font
run: sudo apt-get update && sudo apt-get install --no-install-recommends -y fonts-noto-cjk
- name: Verify records, publication retries and real card layout
env:
ARCHIFY_CHROME: ${{ steps.chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
run: node --test tools/contributor-cards/test/*.test.mjs

card:
if: >-
github.repository == 'tt-a1i/archify' &&
(github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request_target' &&
github.event.pull_request.merged == true &&
github.event.pull_request.user.type == 'User'))
runs-on: ubuntu-latest
timeout-minutes: 10
concurrency:
group: contributor-card-${{ github.event.pull_request.number || inputs.pr }}
cancel-in-progress: false
permissions:
contents: write
pull-requests: write
steps:
# Privileged runs use only the default branch, never PR head/merge refs.
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5
with:
ref: ${{ github.event.repository.default_branch }}
persist-credentials: false
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 22
- uses: browser-actions/setup-chrome@48ad923757ca74d66703209fe939badbdf80f2f4 # v2
id: chrome
with:
chrome-version: stable
install-dependencies: true
- name: Install Chinese fallback font
run: sudo apt-get update && sudo apt-get install --no-install-recommends -y fonts-noto-cjk
- name: Render card and optionally publish
env:
GH_TOKEN: ${{ github.token }}
CARD_PR: ${{ github.event.pull_request.number || inputs.pr }}
CARD_PUBLISH: ${{ github.event_name == 'pull_request_target' || inputs.publish }}
ARCHIFY_CHROME: ${{ steps.chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
shell: bash
run: |
args=(--out "$RUNNER_TEMP/contributor-card")
if [[ "$CARD_PUBLISH" == 'true' ]]; then args+=(--publish); fi
node tools/contributor-cards/cli.mjs "${args[@]}"
- name: Keep downloadable card and rendering evidence
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: contributor-card-${{ github.event.pull_request.number || inputs.pr }}
path: ${{ runner.temp }}/contributor-card/
retention-days: 7
if-no-files-found: error
16 changes: 8 additions & 8 deletions .github/workflows/dsh.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ jobs:
name: DSH package contract
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
with:
fetch-depth: 0
- uses: actions/setup-node@v5
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- name: Static adapter contracts
Expand All @@ -49,13 +49,13 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
with:
fetch-depth: 0
- uses: actions/setup-node@v5
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Real tarball install, discovery, package-smoke, uninstall
Expand All @@ -74,13 +74,13 @@ jobs:
runs-on: ${{ matrix.os }}
timeout-minutes: 40
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
with:
fetch-depth: 0
- uses: actions/setup-node@v5
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Adapter staging regressions on the release host
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
- name: Fetch exact tag object
shell: bash
run: git fetch --force --no-tags origin "+refs/tags/${GITHUB_REF_NAME}:refs/tags/${GITHUB_REF_NAME}"
- uses: actions/setup-node@v5
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: 22
cache: npm
Expand All @@ -28,7 +28,7 @@ jobs:
working-directory: archify
- name: Provision a known Chrome runtime
id: setup-chrome
uses: browser-actions/setup-chrome@v2
uses: browser-actions/setup-chrome@48ad923757ca74d66703209fe939badbdf80f2f4 # v2.2.0
with:
chrome-version: stable
install-dependencies: true
Expand All @@ -39,6 +39,12 @@ jobs:
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
- name: Run shared browser regression gate
run: npm run test:browser
working-directory: archify
env:
ARCHIFY_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
ARCHIFY_CHROME_NO_SANDBOX: '1'
- name: Tag must match package.json version
run: |
pkg_version="$(node -p "require('./archify/package.json').version")"
Expand Down Expand Up @@ -93,7 +99,7 @@ jobs:
- name: Committed zip must match the build (same gate as CI)
run: cmp -s /tmp/archify-built.zip archify.zip
- name: Create GitHub Release with the zip attached
uses: softprops/action-gh-release@v3
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
files: archify.zip
generate_release_notes: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/star-history.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
# Upstream PR #6: Node 24 migration, before v1.0.6's chart-rendering changes.
- uses: narayann7/star-history-action@00dfada13f106e4114ee46728aa415857078e76c
with:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ node_modules/
.claude/
.lore/
/.impeccable/
__pycache__/
*.py[cod]
13 changes: 13 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Agent instructions

Follow [CONTRIBUTING.md](CONTRIBUTING.md) for repository changes and [REVIEWING.md](REVIEWING.md) for reviews.

## Live Archify installations

Install, update, reinstall, or remove a live Archify installation only when the user explicitly requests that action. Repository editing, testing, reviewing, publishing, or syncing does not authorize installation. This applies to Skills CLI, manual ZIP copies, and DSH plugins. Reuse authorization already given for the same action and scope; ask only for unresolved decisions.

- Keep the source, Skill/package, target agents, and global/project scope within the request. Avoid bulk operations or force flags that expand that scope. An update notification is informational.
- Before a Skills CLI install, discover the selected source with `npx -y skills add <source> --list --full-depth` (default source: `tt-a1i/archify`) and verify exactly one Skill named `archify`. For an explicitly requested durable local source, inspect that checkout. Stop on failed or ambiguous discovery.
- Use the canonical remote source by default. Use a local source only when requested, from a durable checkout; live symlinks must not point into temporary directories or disposable worktrees.
- Preserve unrelated files and existing unmanaged destinations. Report a destination conflict before replacing it unless that exact replacement is already explicitly authorized; use the installer's documented conflict handling within the approved scope.
- Report the action, source, targets, and result, including skipped or failed destinations. A partial installation is not a complete success.
Loading