Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
352 commits
Select commit Hold shift + click to select a range
9d83708
fix(extension): validate every explicit variable mode
Justineo Oct 20, 2026
885ccbc
fix(mcp): persist canvas readback requirements across restarts
Justineo Oct 20, 2026
5cb87fc
fix(extension): avoid unrelated code panel invalidation
Justineo Oct 20, 2026
2878b5c
fix(extension): preserve mixed nested list hierarchy
Justineo Oct 20, 2026
4c67a90
fix(extension): apply base metrics to native paragraphs
Justineo Oct 21, 2026
6fa4800
fix(extension): preserve bound color alpha in exports
Justineo Oct 21, 2026
30bc896
fix(extension): verify variable-owned paint values
Justineo Oct 21, 2026
1aac3e3
fix(extension): derive tile geometry from native images
Justineo Oct 21, 2026
d86c2b0
fix(extension): preserve paragraph geometry in code exports
Justineo Oct 21, 2026
749790d
fix(extension): isolate page change subscriptions
Justineo Oct 21, 2026
4ef20ae
fix(extension): retain indentation after soft line breaks
Justineo Oct 21, 2026
94729da
fix(mcp): retain read protection after uncertain rollback
Justineo Oct 21, 2026
802f55e
fix(extension): update unbound paragraph metrics
Justineo Oct 21, 2026
9bc4a36
fix(mcp): restore read markers after rejected persistence
Justineo Oct 21, 2026
74ae138
fix(extension): preserve terminal text lines and list hierarchy
Justineo Oct 21, 2026
44d7702
fix(mcp): explain pending canvas readback and storage upgrades
Justineo Oct 21, 2026
ece9761
fix(extension): preserve native gradient positions and opacity
Justineo Oct 21, 2026
7de17a6
fix(extension): emit valid background repeat utilities
Justineo Oct 21, 2026
8276db4
fix(extension): bound image metadata and preserve media slots
Justineo Oct 21, 2026
9aeba7f
fix(extension): reconcile text bindings by actual range ownership
Justineo Oct 21, 2026
a5cdcb9
docs: clarify export and canvas recovery fixes
Justineo Oct 21, 2026
e9375e6
fix(extension): compare bound native fields by variable identity
Justineo Oct 21, 2026
6bf7f8e
fix(extension): preserve terminal empty text paragraphs
Justineo Oct 21, 2026
1615d63
fix(extension): preserve expanded native gradient layers
Justineo Oct 21, 2026
03ea274
refactor(extension): simplify export and native comparison paths
Justineo Oct 21, 2026
b7ae45c
fix(extension): converge text variable overrides
Justineo Oct 21, 2026
2d9a40d
fix(extension): apply base metrics after text replacement
Justineo Oct 21, 2026
0b1fb2b
fix(extension): preserve unmatched native gradient geometry
Justineo Oct 21, 2026
e7ba9f3
fix(extension): serialize two-axis background repeats
Justineo Oct 21, 2026
014b6b6
fix(extension): isolate optional image dimension waits
Justineo Oct 21, 2026
4109155
fix(extension): retain nested lists and blank text lines
Justineo Oct 21, 2026
f8594e4
fix(mcp): preserve readback for uncertain canvas failures
Justineo Oct 21, 2026
d67a0d7
docs(agent-plugin): clarify canvas recovery and token compatibility
Justineo Oct 21, 2026
e4c053a
fix(extension): guard rollback against empty history entries
Justineo Oct 21, 2026
1579dca
fix(extension): account for trailing newline metric overrides
Justineo Oct 21, 2026
4b962cc
fix(extension): report current text binding ownership
Justineo Oct 21, 2026
8b0d005
fix(extension): verify explicit text variable unbinding
Justineo Oct 21, 2026
6537a66
test(extension): model native text binding ranges
Justineo Oct 21, 2026
a1b0c5d
fix(extension): repair retained text literal bindings
Justineo Oct 21, 2026
5b6ff71
fix(extension): contain paragraph unbinding fallback
Justineo Oct 21, 2026
87584dd
fix(extension): reuse settled tile sizes after timeout
Justineo Oct 22, 2026
86f009f
fix(extension): retain native background fallback channels
Justineo Oct 22, 2026
230fc52
fix(canvas): preserve failure state and broaden rollback evidence
Justineo Oct 22, 2026
e696d29
fix(extension): preserve text ownership across newline boundaries
Justineo Oct 22, 2026
95212c2
docs(agent-plugin): clarify safe recovery and native text limits
Justineo Oct 22, 2026
8b9668e
fix(canvas): verify numeric range variable bindings
Justineo Oct 23, 2026
2807cca
fix(extension): match transparent native background layers
Justineo Oct 23, 2026
120a575
fix(extension): preserve local text metric resets
Justineo Oct 23, 2026
3306f2e
docs(canvas): clarify text unlink inheritance limits
Justineo Oct 23, 2026
ee8394e
refactor(canvas): narrow numeric text binding checks
Justineo Oct 23, 2026
bc0817b
refactor(canvas): deduplicate rollback property snapshots
Justineo Oct 23, 2026
81576b8
refactor(extension): isolate text run rendering context
Justineo Oct 23, 2026
a334950
fix(extension): build and fingerprint workspace SDK sources
Justineo Oct 23, 2026
1067284
fix(test): enforce strict workspace coverage thresholds
Justineo Oct 23, 2026
61ecc6f
fix(ci): close rewrite browser when page creation fails
Justineo Oct 23, 2026
1faad29
fix(site): typecheck browser test configuration
Justineo Oct 23, 2026
ebe7f4a
chore(build): remove obsolete dependency age exception
Justineo Oct 23, 2026
5f3029e
fix(test): bound packaged browser checker lifecycles
Justineo Oct 23, 2026
f9f4534
fix(dev): verify native runtime process ownership
Justineo Oct 23, 2026
9592a3c
fix(test): validate authoring run provenance consistently
Justineo Oct 23, 2026
a52604f
fix(screenshots): preserve verified native fixtures
Justineo Oct 23, 2026
15612e3
test: isolate commit-message CLI cases
Justineo Oct 23, 2026
187b696
fix(screenshots): validate selection and capture evidence
Justineo Oct 23, 2026
9b4fdad
docs(canvas): clarify the markup length limit
Justineo Oct 23, 2026
9411c16
fix(plugins): preserve explicit hyperscript children
Justineo Oct 23, 2026
034e4ec
fix(plugins): collect subtree matches without argument spreading
Justineo Oct 23, 2026
7fcd823
fix(mcp): ignore frames from rejected extension connections
Justineo Oct 23, 2026
ad16319
fix(mcp): drain buffered responses before reconnecting
Justineo Oct 23, 2026
2b6aa84
refactor(mcp): format responses with the selected tool
Justineo Oct 23, 2026
7dc0d67
fix(canvas): preserve dictionary keys through validation
Justineo Oct 23, 2026
52b1221
docs: clarify when MCP runtime updates take effect
Justineo Oct 23, 2026
ed9f726
fix(mcp): retain all file identities in task snapshots
Justineo Oct 23, 2026
a41eb4a
fix(mcp): honor Stop after task completion
Justineo Oct 23, 2026
2f2c569
test(mcp): build runtime fixtures from shared sources
Justineo Oct 23, 2026
f190d15
fix(mcp): ignore lifecycle frames after owner loss
Justineo Oct 23, 2026
621fa1f
fix(mcp): bound native queue responses and preserve uncertainty
Justineo Oct 23, 2026
5d5e782
test(mcp): isolate the native queue database override
Justineo Oct 23, 2026
4ae212d
fix(mcp): accept generated image filename suffixes
Justineo Oct 23, 2026
1fdd4d7
fix(mcp): retain assets when file deletion fails
Justineo Oct 23, 2026
6f2d878
fix(mcp): preserve assets across concurrent transfers
Justineo Oct 23, 2026
35e0f3f
test(mcp): contain protocol compatibility assertion failures
Justineo Oct 23, 2026
eab2cf6
fix(extension): revoke rejected Hub connections immediately
Justineo Oct 23, 2026
e288255
fix(extension): preserve broker state across stale completions
Justineo Oct 23, 2026
2aae618
fix(extension): match exact openFile property access
Justineo Oct 23, 2026
7ffab10
fix(extension): preserve script rewrite fallback and cleanup
Justineo Oct 23, 2026
05bdcd6
fix(extension): bound expanded sandbox payloads
Justineo Oct 23, 2026
f4c0d08
fix(extension): cancel disposed sandbox connections
Justineo Oct 23, 2026
6dd0fed
fix(extension): scope script redirects to Figma
Justineo Oct 23, 2026
042ceb5
fix(extension): preserve generated code whitespace
Justineo Oct 23, 2026
df627cf
fix(extension): cancel plugin downloads on disposal
Justineo Oct 23, 2026
42907e2
fix(extension): remove executed UI bootstrap scripts
Justineo Oct 23, 2026
e5c6867
refactor(extension): scope scrollbar instances to their effects
Justineo Oct 23, 2026
c2b72df
fix(extension): make copy and segmented controls keyboard accessible
Justineo Oct 23, 2026
250229e
fix(extension): finish resizing when pointer capture is lost
Justineo Oct 23, 2026
89bc40f
fix(extension): isolate inspect icon mask references
Justineo Oct 23, 2026
5f26fba
refactor(extension): remove unused error alert styling
Justineo Oct 23, 2026
2579cb8
fix(extension): preserve geometry in generated CSS
Justineo Oct 23, 2026
75e4cf2
fix(extension): preserve component property values
Justineo Oct 23, 2026
5ee56b9
refactor(extension): remove unused color helpers
Justineo Oct 23, 2026
11bcc39
fix(extension): preserve CSS semantics through serialization
Justineo Oct 23, 2026
2d92d6f
fix(extension): validate compiled canvas utility values
Justineo Oct 23, 2026
be932b7
fix(extension): preserve canvas text and grid identities
Justineo Oct 23, 2026
5afa1d2
fix(extension): traverse wide canvas trees safely
Justineo Oct 23, 2026
717692b
fix(extension): validate SVG semantics before import
Justineo Oct 23, 2026
9fcdbe6
perf(extension): stop scanning text overrides outside scope
Justineo Oct 23, 2026
c9b0750
refactor(extension): reuse text range setters for metrics
Justineo Oct 23, 2026
3c123c4
fix(extension): preserve precise native canvas changes
Justineo Oct 23, 2026
b33512a
fix(extension): converge native guide and dash readback
Justineo Oct 23, 2026
8fedb52
test(extension): initialize plugin storage fixtures
Justineo Oct 23, 2026
d4de9d5
fix(extension): preserve slot property ownership
Justineo Oct 23, 2026
f444171
fix(extension): preflight canvas identity and root adoption
Justineo Oct 23, 2026
70f7b7e
fix(extension): bound canvas traversal and diagnostics
Justineo Oct 23, 2026
b8b9e77
fix(extension): converge and verify canvas grid tracks
Justineo Oct 23, 2026
5e70457
fix(extension): track imported SVG lifecycle and repairs
Justineo Oct 23, 2026
7825a2d
fix(extension): bound code preflight and reuse request work
Justineo Oct 23, 2026
ab6206f
fix(extension): preserve layout geometry during CSS cleanup
Justineo Oct 23, 2026
594716e
fix(extension): preserve asset semantics across code export
Justineo Oct 23, 2026
4e3c438
fix(extension): preserve token identity across code generation
Justineo Oct 23, 2026
ea20823
fix(extension): bound design-system discovery responses
Justineo Oct 23, 2026
dc49d38
fix(agent-plugin): preserve lifecycle message integrity
Justineo Oct 23, 2026
22dc6c7
fix(site): guard setup and preview state
Justineo Oct 23, 2026
63f1b63
fix(site): resolve shared code from workspace source
Justineo Oct 23, 2026
a0a7949
refactor(site): remove obsolete presentation styles
Justineo Oct 23, 2026
547d986
test(extension): correct Figma fixture range reads
Justineo Oct 24, 2026
eb21e12
test(extension): reuse deferred font checks
Justineo Oct 24, 2026
5cf7e85
test(extension): simplify text regression fixtures
Justineo Oct 24, 2026
696be9b
test(extension): group native canvas update regressions
Justineo Oct 24, 2026
83dcb9d
test(extension): construct a consistent nested instance tree
Justineo Oct 24, 2026
b6107a8
test(extension): settle deferred canvas applies after failures
Justineo Oct 24, 2026
a328e00
docs: align contributor and cache guidance with implementation
Justineo Oct 24, 2026
48f50a3
fix(docs): correct plugin links and refresh public guides
Justineo Oct 24, 2026
cc305d9
fix(extension): keep asset capabilities out of upload logs
Justineo Oct 24, 2026
0b2903f
docs: align media and task designs with their owners
Justineo Oct 24, 2026
170ff68
fix(extension): keep upload errors out of export logs
Justineo Oct 24, 2026
af42c22
fix(canvas): preserve independent noise and texture sizes
Justineo Oct 24, 2026
5b846e5
docs: refresh canvas coverage and background contracts
Justineo Oct 24, 2026
74ed70c
docs: reconcile native IPC and runtime verification guidance
Justineo Oct 24, 2026
b61b0cd
fix(mcp): isolate checkout runtimes from release
Justineo Oct 24, 2026
1817786
fix(mcp): isolate native host context per client
Justineo Oct 24, 2026
05d3d70
test(mcp): measure runtime update feasibility
Justineo Oct 24, 2026
4cd5365
fix(dev): preserve tasks across detached plugin reinstalls
Justineo Oct 24, 2026
9c08a3d
fix(dev): handle plugin navigation and interrupted task recovery
Justineo Oct 24, 2026
0478bb1
docs: record native host context acceptance
Justineo Oct 24, 2026
bd1787a
feat(mcp): add a stable SDK session edge
Justineo Oct 25, 2026
f5a62d6
feat(mcp): prototype isolated runtime supervision
Justineo Oct 25, 2026
60939dd
feat(mcp): persist execution exclusion and operator recovery
Justineo Oct 25, 2026
9d3f0d5
feat(mcp): replace compatible backends without restarting host sessions
Justineo Oct 25, 2026
0600f18
feat(mcp): coordinate durable local runtime handoffs
Justineo Oct 25, 2026
4ab082a
test(mcp): verify local runtime switch recovery
Justineo Oct 25, 2026
14642ff
feat(mcp): verify immutable runtime release archives
Justineo Oct 25, 2026
5620a8e
feat(mcp): acknowledge and retry lifecycle hooks durably
Justineo Oct 25, 2026
e60b9ff
feat(mcp): stage verified releases and require explicit activation
Justineo Oct 25, 2026
6a6ce7d
ci(mcp): publish only verified runtime archives
Justineo Oct 25, 2026
3825792
fix(mcp): report pending edge and supervisor updates
Justineo Oct 25, 2026
b045397
test(mcp): add isolated installed-host switching fixtures
Justineo Oct 25, 2026
d8476cf
fix(dev): refresh plugin details before reinstalling
Justineo Oct 25, 2026
e1ce641
fix(mcp): restore cancelled task ownership for read-back
Justineo Oct 25, 2026
6798f26
fix(dev): invalidate stale plugin manifest cache
Justineo Oct 25, 2026
0939ede
test(mcp): isolate receipt batching from legacy migrations
Justineo Oct 25, 2026
4b0b57a
fix(mcp): preserve pending Claude Stop notices across handoff
Justineo Oct 25, 2026
f5c441e
fix(mcp): reject stale Claude lifecycle effects before binding
Justineo Oct 25, 2026
42a050a
test(mcp): gate releases on exact archive compatibility
Justineo Oct 25, 2026
99e0a18
fix(mcp): retire expired durable hooks without blocking recovery
Justineo Oct 25, 2026
636d9c1
fix(mcp): recover attachments and adopt installed runtimes on cold start
Justineo Oct 25, 2026
c96b176
fix(mcp): isolate update metadata persistence failures
Justineo Oct 25, 2026
3a2549c
fix(mcp): preserve Claude binding across runtime replacement
Justineo Oct 25, 2026
fa0a3a0
fix(mcp): wait for recovering runtime control endpoints
Justineo Oct 25, 2026
5499878
fix(mcp): fence historical lifecycle evidence across handoff
Justineo Oct 25, 2026
c425bd0
feat(mcp): wait through brief runtime switches before dispatch
Justineo Oct 25, 2026
1ad3fca
feat(mcp): activate compatible updates during idle Codex sessions
Justineo Oct 25, 2026
80cff2a
test(extension): separate module setup from resource assertions
Justineo Oct 25, 2026
f27b215
feat(mcp): select compatible runtime updates automatically
Justineo Oct 25, 2026
262aa4e
feat(plugin): enable managed updates in standard installs
Justineo Oct 25, 2026
8fef5c9
feat(mcp): support private managed runtimes on Windows
Justineo Oct 25, 2026
ef95211
ci(mcp): exercise Windows runtime updates on Node 22 and 24
Justineo Oct 25, 2026
fdaf453
fix(ci): preserve Windows runtime environment assertions
Justineo Oct 25, 2026
229b794
fix(mcp): isolate Windows PowerShell module discovery
Justineo Oct 25, 2026
e9b37c3
fix(mcp): keep Windows pipe inspection read-only
Justineo Oct 25, 2026
a8c0f66
ci(mcp): isolate Windows runtime validation suites
Justineo Oct 25, 2026
3ba0e16
fix(mcp): retain Windows connections during pipe inspection
Justineo Oct 25, 2026
d5c3759
fix(ci): use the selected pnpm runtime and retain failure evidence
Justineo Oct 25, 2026
ecb673b
test(mcp): isolate Windows startup and switch fixture lifecycles
Justineo Oct 25, 2026
193358c
ci(mcp): capture isolated Windows startup stages
Justineo Oct 25, 2026
1701903
fix(build): prepare frozen runtime dependencies before offline packaging
Justineo Oct 25, 2026
c722b6f
fix(mcp): isolate Windows ACL requests from host stdio
Justineo Oct 25, 2026
b80b9e8
ci(mcp): require Windows validation before runtime publication
Justineo Oct 25, 2026
6cbf643
fix(mcp): preserve Windows OS context in runtime helpers
Justineo Oct 25, 2026
8ee900d
test(mcp): isolate Windows helper environment boundaries
Justineo Oct 25, 2026
0d138f7
fix(mcp): load trusted Windows ACL modules explicitly
Justineo Oct 25, 2026
c78f69c
fix(mcp): handle Windows startup permission and enrollment races
Justineo Oct 25, 2026
6e1c5ed
fix(mcp): wait safely for Windows pipe protection
Justineo Oct 25, 2026
ef48bdb
test(mcp): separate runtime preparation from handoff timing
Justineo Oct 25, 2026
d57e9e3
fix(mcp): preserve missing Windows runtime path errors
Justineo Oct 25, 2026
49a9693
fix(mcp): flush stop acknowledgements before Hub shutdown
Justineo Oct 25, 2026
765d2ec
fix(mcp): retain Hub ownership throughout slow startup
Justineo Oct 25, 2026
896cd69
test(mcp): align initial attachment with runtime recovery
Justineo Oct 25, 2026
4786f52
test(mcp): keep Windows ACL race instrumentation executable
Justineo Oct 25, 2026
c04b18a
fix(mcp): detect existing Hub exit while reconnecting
Justineo Oct 25, 2026
88a5aa2
test(mcp): retain switch command failure evidence
Justineo Oct 25, 2026
ce11da4
test(mcp): respect acquisition deadlines in runtime acceptance
Justineo Oct 25, 2026
972ddaf
fix(mcp): retry future hooks before durable admission
Justineo Oct 25, 2026
fb6f036
fix(mcp): await failed startup exit before rollback
Justineo Oct 25, 2026
c2c8654
test(mcp): capture runtime shutdown blockers
Justineo Oct 25, 2026
b3baf29
fix(mcp): retire unusable pending runtime grants
Justineo Oct 25, 2026
c9529dd
test(mcp): preserve automatic switch failure status
Justineo Oct 25, 2026
76f3412
fix(mcp): honor shutdown after its acknowledgement
Justineo Oct 25, 2026
6af3ca2
test(mcp): trace initial Windows permission checks
Justineo Oct 25, 2026
490c7f4
fix(mcp): preserve runtime probe failure evidence
Justineo Oct 25, 2026
259e5b5
fix(mcp): retry uncertain runtime socket acquisition
Justineo Oct 25, 2026
dd4ac9b
fix(mcp): revalidate atomically replaced runtime snapshots
Justineo Oct 25, 2026
092a476
fix(mcp): pause edge dispatch before runtime handoff
Justineo Oct 25, 2026
21a2468
test(mcp): run stable edge boundaries on Windows
Justineo Oct 25, 2026
9efe368
fix(mcp): separate cached integrity from runtime compatibility
Justineo Oct 26, 2026
efdeb96
fix(mcp): rebuild corrupt derived update metadata safely
Justineo Oct 26, 2026
8c9ae57
fix(mcp): keep control leases live during Windows ACL checks
Justineo Oct 26, 2026
6caefc4
fix(mcp): recover occupied endpoints after a fully cold start
Justineo Oct 26, 2026
2624ef1
refactor(mcp): keep managed staging out of the handoff journal
Justineo Oct 26, 2026
95bd373
fix(mcp): bound lifecycle history without permanently blocking admission
Justineo Oct 26, 2026
47ef0e6
perf(mcp): buffer fragmented initial frames without repeated copies
Justineo Oct 26, 2026
8793898
fix(mcp): respect the recovery budget when probing runtime artifacts
Justineo Oct 26, 2026
d2f5489
test(mcp): align native runtime fixtures with asynchronous ACL checks
Justineo Oct 26, 2026
18cb606
fix(mcp): retry early pipe closure without waiting for ACL timeout
Justineo Oct 26, 2026
873a33f
feat(mcp): enable automatic updates for verified Claude sessions
Justineo Oct 26, 2026
190a107
docs(mcp): clarify native runtime acceptance platform
Justineo Oct 26, 2026
047a4aa
ci: run the full build matrix on validation branches
Justineo Oct 27, 2026
4db77f3
test(mcp): verify release bridges through canonical runtime paths
Justineo Oct 27, 2026
654eebc
docs(mcp): distinguish completed implementation from publication gates
Justineo Oct 27, 2026
98ee01d
test(extension): settle toolbar animation before comment interaction
Justineo Oct 27, 2026
03d3fa7
ci: preserve release packaging diagnostics
Justineo Oct 27, 2026
f2e859c
fix(mcp): copy release dependencies before npm packaging
Justineo Oct 27, 2026
b7e672e
fix(mcp): retain update barriers for disconnected control peers
Justineo Oct 28, 2026
d907696
fix(mcp): separate explicit downloads from automatic updates
Justineo Oct 28, 2026
9952768
fix(mcp): preserve custom TLS roots across runtime workers
Justineo Oct 28, 2026
d24ab6f
fix(mcp): replace damaged unused download caches
Justineo Oct 28, 2026
4002002
refactor(mcp): remove unpublished runtime compatibility flags
Justineo Oct 28, 2026
3fc6825
fix(mcp): reopen explicit handoffs after shutdown refusal
Justineo Oct 28, 2026
ff3e277
fix(mcp): keep explicit checks out of stable scan scheduling
Justineo Oct 28, 2026
a4a56af
refactor(mcp): reuse verified archive metadata during installation
Justineo Oct 28, 2026
25f3f70
test(mcp): align recovery fixtures with runtime contracts
Justineo Oct 28, 2026
775ee30
test(extension): reopen comments after dismissing completion dialog
Justineo Oct 28, 2026
b89801c
test(mcp): await logging readiness before shutdown assertions
Justineo Oct 28, 2026
46f3e20
docs: align runtime update release notes with shipped behavior
Justineo Oct 28, 2026
3f4a808
docs: prepare reviewed package changelogs
Justineo Oct 28, 2026
2b5e96a
chore: merge current main for release preparation
Justineo Oct 28, 2026
78f713d
docs: define the initial coordinated runtime rollout
Justineo Oct 28, 2026
eb9ffa3
test(mcp): share fully initialized Hub fixture readiness
Justineo Oct 28, 2026
9fca318
chore(release): prepare coordinated 1.0.0 release
Justineo Oct 28, 2026
2d63761
test(mcp): trace initial switch fixture permission checks
Justineo Oct 28, 2026
13c7ce2
test(mcp): align release fixtures with startup budgets
Justineo Oct 28, 2026
bec7e47
docs: finalize npm and agent plugin 1.0.0 changelogs
Justineo Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
45 changes: 43 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: build

on:
push:
branches: [main]
branches: [main, 'ci/**']
pull_request:
branches: [main]

Expand All @@ -20,6 +20,8 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Setup pnpm
uses: pnpm/action-setup@v6
Expand All @@ -31,13 +33,20 @@ jobs:
cache: 'pnpm'
cache-dependency-path: pnpm-lock.yaml

- name: Check agent plugin version
if: matrix.node == '24.x'
env:
PLUGIN_VERSION_BASE: ${{ github.event_name == 'pull_request' && 'HEAD^1' || startsWith(github.ref, 'refs/heads/ci/') && 'origin/main' || github.event.before }}
run: node scripts/check-agent-plugin-version.mjs

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install browser runtime
run: pnpm --filter @tempad-dev/extension test:setup

- name: Check agent plugins
if: matrix.node == '24.x'
run: >-
pnpm agent-plugin:build &&
test -z "$(git status --porcelain --untracked-files=all --
Expand Down Expand Up @@ -77,7 +86,39 @@ jobs:
run: pnpm format:check

- name: Check bridge compatibility
run: pnpm mcp:check-bridge
run: node packages/mcp-server/scripts/check-bridge-compatibility.mjs

- name: Check runtime profile isolation
run: node packages/mcp-server/scripts/check-runtime-profiles.mjs

- name: Check CLI host context isolation
run: node packages/mcp-server/scripts/check-host-context.mjs

- name: Check isolated runtime supervisor
run: pnpm mcp:check-runtime-prototype

- name: Check local runtime switching and recovery
run: pnpm mcp:check-runtime-switch

- name: Prepare dependency metadata for offline release packaging
run: pnpm mcp:prepare-release-dependencies

- name: Check verified release downloads and explicit activation
env:
npm_config_logs_dir: ${{ runner.temp }}/tempad-npm-logs
run: pnpm mcp:check-runtime-updates

- name: Preserve failure evidence
if: failure()
uses: actions/upload-artifact@v7
with:
name: validation-failures-node-${{ matrix.node }}
path: |
packages/*/.vitest/attachments/**
${{ runner.temp }}/tempad-npm-logs
include-hidden-files: true
if-no-files-found: ignore
retention-days: 14

typescript-compatibility:
runs-on: ubuntu-latest
Expand Down
56 changes: 46 additions & 10 deletions .github/workflows/publish-mcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,11 @@ on:

permissions:
contents: read
id-token: write

jobs:
publish:
name: Publish @tempad-dev/mcp
guard:
name: Validate release branch
runs-on: ubuntu-latest
concurrency:
group: publish-mcp
cancel-in-progress: true

steps:
- name: Require main branch
env:
Expand All @@ -35,6 +30,22 @@ jobs:
exit 1
fi

windows-runtime:
name: Validate Windows runtime
needs: guard
uses: ./.github/workflows/windows-runtime.yml

publish:
name: Publish @tempad-dev/mcp
needs: [guard, windows-runtime]
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
concurrency:
group: publish-mcp
cancel-in-progress: false
steps:
- name: Checkout repository
uses: actions/checkout@v7

Expand All @@ -55,27 +66,52 @@ jobs:
- name: Build package
run: pnpm build:mcp

- name: Prepare dependency metadata for offline release packaging
run: pnpm mcp:prepare-release-dependencies

- name: Validate package
run: |
pnpm --filter @tempad-dev/mcp... typecheck
pnpm --filter @tempad-dev/mcp... test:run
pnpm mcp:check-bridge
pnpm --filter @tempad-dev/mcp check:logging
pnpm mcp:check-runtime-updates
pnpm mcp:check-runtime-switch

- name: Prepare and verify the immutable release
run: pnpm mcp:prepare-release --output "$RUNNER_TEMP/tempad-mcp.tgz" --verify-baseline

- name: Check the exact release archive
run: |
release_check_dir=$(mktemp -d "$RUNNER_TEMP/tempad-mcp-installed.XXXXXX")
trap 'rm -rf "$release_check_dir"' EXIT
tar -xzf "$RUNNER_TEMP/tempad-mcp.tgz" -C "$release_check_dir" --strip-components=1
node packages/mcp-server/scripts/check-bridge-compatibility.mjs "$release_check_dir"
node packages/mcp-server/scripts/check-log-transport.mjs "$release_check_dir"

- name: Archive the reviewed release and manifest
uses: actions/upload-artifact@v7
with:
name: tempad-mcp-release
path: |
${{ runner.temp }}/tempad-mcp.tgz
${{ runner.temp }}/tempad-mcp.tgz.json

- name: Publish
working-directory: packages/mcp-server
run: npm publish --access public --tag "${{ inputs.tag }}"
run: npm publish "$RUNNER_TEMP/tempad-mcp.tgz" --ignore-scripts --access public --tag "${{ inputs.tag }}"

- name: Verify published version
working-directory: packages/mcp-server
env:
NPM_DIST_TAG: ${{ inputs.tag }}
run: |
version=$(node -p "require('./package.json').version")
expected=$(node -p "require(process.env.RUNNER_TEMP + '/tempad-mcp.tgz.json').integrity")
for attempt in {1..20}; do
published=$(npm view "@tempad-dev/mcp@$version" version --prefer-online 2>/dev/null || true)
tagged=$(npm view "@tempad-dev/mcp@$NPM_DIST_TAG" version --prefer-online 2>/dev/null || true)
if [[ "$published" == "$version" && "$tagged" == "$version" ]]; then
integrity=$(npm view "@tempad-dev/mcp@$version" dist.integrity --prefer-online 2>/dev/null || true)
if [[ "$published" == "$version" && "$tagged" == "$version" && "$integrity" == "$expected" ]]; then
echo "Verified @tempad-dev/mcp@$version on $NPM_DIST_TAG"
exit 0
fi
Expand Down
20 changes: 13 additions & 7 deletions .github/workflows/publish-plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,11 @@ on:

permissions:
contents: read
id-token: write

jobs:
publish:
name: Publish @tempad-dev/plugins
guard:
name: Validate release branch
runs-on: ubuntu-latest
concurrency:
group: publish-plugins
cancel-in-progress: true

steps:
- name: Require main branch
env:
Expand All @@ -25,6 +20,17 @@ jobs:
exit 1
fi

publish:
name: Publish @tempad-dev/plugins
needs: guard
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
concurrency:
group: publish-plugins
cancel-in-progress: false
steps:
- name: Checkout repository
uses: actions/checkout@v7

Expand Down
127 changes: 127 additions & 0 deletions .github/workflows/windows-runtime.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: Windows runtime

on:
push:
branches: [main, 'ci/**']
pull_request:
branches: [main]
workflow_dispatch:
workflow_call:

permissions:
contents: read

jobs:
runtime:
runs-on: windows-latest
timeout-minutes: 60
strategy:
fail-fast: false
max-parallel: 4
matrix:
node: ['22.x', '24.x']
suite: [contracts, prototype, switch, updates]
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1'
TEMPAD_RUNTIME_EVIDENCE_DIR: ${{ github.workspace }}/runtime-ci-logs/fixtures
steps:
- name: Preserve reviewed source bytes
run: git config --global core.autocrlf false

- name: Share dependency metadata across install and offline packaging
run: '"pnpm_config_cache_dir=$env:RUNNER_TEMP/tempad-pnpm-cache" >> $env:GITHUB_ENV'

- name: Checkout repository
uses: actions/checkout@v7

- name: Setup pnpm
uses: pnpm/action-setup@v6

- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node }}
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Prepare dependency metadata for offline release packaging
if: matrix.suite == 'updates'
run: pnpm mcp:prepare-release-dependencies

- name: Record runtime environment
env:
EXPECTED_NODE: ${{ matrix.node }}
run: |
New-Item -ItemType Directory runtime-ci-logs | Out-Null
node -p 'JSON.stringify({platform:process.platform,arch:process.arch,node:process.version,execPath:process.execPath})' | Tee-Object runtime-ci-logs/environment.log
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
pnpm --version | Tee-Object -Append runtime-ci-logs/environment.log
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
$runtimePlatform = pnpm exec node -p process.platform
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
$runtimeVersion = pnpm exec node -p process.versions.node
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
"pnpm runtime: $runtimePlatform $runtimeVersion" | Tee-Object -Append runtime-ci-logs/environment.log
if ($runtimePlatform -ne 'win32' -or $runtimeVersion.Split('.')[0] -ne $env:EXPECTED_NODE.Split('.')[0]) {
throw 'Unexpected test runtime'
}
$metadataCache = pnpm config get cache-dir
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
"pnpm metadata cache: $metadataCache" | Tee-Object -Append runtime-ci-logs/environment.log
$metadataFiles = @(Get-ChildItem -LiteralPath $metadataCache -Recurse -File -Filter '*.jsonl' | Where-Object { $_.DirectoryName -match '[\\/]metadata-full[\\/]' })
"Full metadata files: $($metadataFiles.Count)" | Tee-Object -Append runtime-ci-logs/environment.log
$metadataFiles | Where-Object { $_.Name -in @('body-parser.jsonl', 'es-object-atoms.jsonl') } | ForEach-Object { $_.FullName } | Tee-Object -Append runtime-ci-logs/environment.log

- name: Build runtime packages
run: |
pnpm --filter @tempad-dev/shared build
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
pnpm build:mcp

- name: Test runtime contracts and platform boundaries
if: matrix.suite == 'contracts'
shell: cmd
run: |
call pnpm --filter @tempad-dev/mcp exec vitest run --config vitest.config.ts tests/runtime- tests/stable-edge.test.ts --maxWorkers=2 --testTimeout=30000 --hookTimeout=30000 > runtime-ci-logs\unit.log 2>&1
set "test_exit=%errorlevel%"
type runtime-ci-logs\unit.log
exit /b %test_exit%

- name: Check supervisor recovery and concurrent edges
if: matrix.suite == 'prototype'
shell: cmd
run: |
call pnpm mcp:check-runtime-prototype > runtime-ci-logs\prototype.log 2>&1
set "test_exit=%errorlevel%"
type runtime-ci-logs\prototype.log
exit /b %test_exit%

- name: Check switching, in-flight requests, crashes and rollback
if: matrix.suite == 'switch'
shell: cmd
run: |
call pnpm mcp:check-runtime-switch > runtime-ci-logs\switch.log 2>&1
set "test_exit=%errorlevel%"
type runtime-ci-logs\switch.log
exit /b %test_exit%

- name: Check verified downloads and automatic activation
if: matrix.suite == 'updates'
shell: cmd
run: |
call pnpm mcp:check-runtime-updates > runtime-ci-logs\updates.log 2>&1
set "test_exit=%errorlevel%"
type runtime-ci-logs\updates.log
exit /b %test_exit%

- name: Preserve runtime evidence
if: always()
uses: actions/upload-artifact@v7
with:
name: windows-runtime-node-${{ matrix.node }}-${{ matrix.suite }}
path: runtime-ci-logs
retention-days: 14
if-no-files-found: warn
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ default authority unless a routed document says otherwise.
generated output, and include it in the change. `agent-plugin/targets/` is marked as
generated for review; read `agent-plugin/src/` instead. Ordinary `pnpm build` must
not modify agent-plugin artifacts.
- Installed payload changes (including skills, hooks, manifests, and assets) require a stable
version increase in `agent-plugin/src/plugin.json` and regenerated targets. Package-root
README and changelog edits alone are exempt. Before pushing, check committed changes with
`pnpm agent-plugin:check-version origin/main` against the intended release baseline.
- Keep Codex and Claude development support equivalent. Both manifests must
launch the same working-tree MCP runtime.
- Release MCP configuration must use `@tempad-dev/mcp@latest`, never an alpha
Expand Down Expand Up @@ -148,6 +152,7 @@ check is sufficient.
| ------------------------------------------------------- | --------------------------------------------------------------- |
| Test selection, required checks, or troubleshooting | `TESTING.md` |
| Test runtime or coverage architecture | `docs/testing/architecture.md` |
| Release preparation or compatibility retirement | `docs/releasing.md` |
| Codex desktop IPC discovery, lifecycle, or feedback | `docs/engineering/codex-desktop-ipc.md` |
| End-to-end authoring evolution or live agent evaluation | `docs/testing/agent-authoring-evolution.md` |
| Extension implementation or MCP behavior | `packages/extension/AGENTS.md`, then its routed design document |
Expand Down
Loading
Loading