Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1005 commits
Select commit Hold shift + click to select a range
af401da
parity(OSS-410): JSX dev-info source-relative lineNumber/columnNumber…
scottweaver Jun 1, 2026
6eeed30
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 1, 2026
17c9b47
docs(state): refresh post PR #186 merged — OSS-410 closed; OSS-445 ne…
scottweaver Jun 1, 2026
ff11938
refactor(OSS-445): transformAllJsx 14 args → 2 (input + options) (#188)
scottweaver Jun 1, 2026
54e457d
docs(state): refresh post PR #188 merged — OSS-445 closed; parameter-…
scottweaver Jun 1, 2026
8aaa782
parity(OSS-446): peer-tool jsx() naming + parent rewrite + module-lev…
scottweaver Jun 1, 2026
c8d4d79
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 1, 2026
632ff3e
docs(state): refresh post PR #190 merged — OSS-446 Bug 1+2+3 foundati…
scottweaver Jun 1, 2026
1ae0309
refactor(OSS-449): strip Linear ticket refs from top-3 optimizer file…
scottweaver Jun 3, 2026
1f2411a
refactor(OSS-449): strip Linear refs from transform/index.ts + output…
scottweaver Jun 3, 2026
c6b1afb
refactor(OSS-449): strip Linear refs from Tier 1 files — jsx.ts + jsx…
scottweaver Jun 3, 2026
47aa321
refactor(OSS-449): strip Linear refs from Tier 2 files (batch 4) (#195)
scottweaver Jun 3, 2026
ce58ac2
refactor(OSS-449): strip remaining Linear refs from Tier 3 files — cl…
scottweaver Jun 3, 2026
c79b167
docs(state): refresh post OSS-449 sweep merged — all 243 Linear refs …
scottweaver Jun 3, 2026
fe85828
docs(state): file OSS-450 umbrella — qwik-bundler integration sub-goa…
scottweaver Jun 4, 2026
8c58dc0
docs(state): add Yuku-readiness constraint to OSS-450 umbrella (#199)
scottweaver Jun 4, 2026
1296e97
feat(OSS-451): public API surface for qwik-bundler integration (#200)
scottweaver Jun 4, 2026
2f29a63
docs(rules): bind agent-sync skill to scripts/agent-sync.sh in PROJEC…
scottweaver Jun 4, 2026
7f04e14
docs(state): refresh post OSS-451 merged — Sub-A of OSS-450 qwik-bund…
scottweaver Jun 4, 2026
c26732d
feat(OSS-452): createOptimizer factory matching SWC stateful-async sh…
scottweaver Jun 4, 2026
d189840
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 4, 2026
67ec301
docs(state): refresh post OSS-452 merged — Sub-B of OSS-450 qwik-bund…
scottweaver Jun 4, 2026
058839b
feat(OSS-453): thread preParsedProgram through public boundary (#205)
scottweaver Jun 4, 2026
e0520c4
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 4, 2026
d2aaf4d
docs(state): refresh post OSS-453 merged — Sub-C of OSS-450 qwik-bund…
scottweaver Jun 4, 2026
850386b
fix: package qwik-optimizer-ts for bundler consumption (deps + segmen…
scottweaver Jun 4, 2026
960238d
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 4, 2026
6ff151e
chore: strip Linear ticket refs from source code comments (#207)
scottweaver Jun 4, 2026
f666706
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 4, 2026
91501f5
docs(state): refresh post bundler-integration packaging — PRs #207 + …
scottweaver Jun 4, 2026
5a727b1
docs(cbp): strengthen ternary rule — single-line only (#210)
scottweaver Jun 4, 2026
df1c8ef
fix: two router-integration bugs surfaced by qwik-bundler smoke (#211)
scottweaver Jun 5, 2026
4f1973e
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 5, 2026
779fd06
docs(state): refresh post PR #211 merged — two router-integration TS-…
scottweaver Jun 5, 2026
7114659
test(OSS-456): regression tests for qwik-router lib processing (#213)
scottweaver Jun 8, 2026
8763b6c
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 8, 2026
b3034ef
docs(state): refresh post PR #213 merged — OSS-456 regression tests p…
scottweaver Jun 8, 2026
957c335
docs(state): trim STATE.md to current workstream + next steps
scottweaver Jun 8, 2026
a9ded7a
docs: add AGENTS.md as Codex-side mirror of CLAUDE.md
scottweaver Jun 8, 2026
a334b26
fix(OSS-458): resolve qwik-router lib segments under the bundler (#215)
scottweaver Jun 8, 2026
38158e3
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 8, 2026
903fbcf
docs(state): refresh post PR #215 merged — OSS-458 Done, picking up O…
scottweaver Jun 8, 2026
6d436ca
fix(OSS-460): stop const-replacement re-emitting an already-removed i…
scottweaver Jun 8, 2026
8f99dff
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 8, 2026
6c6cc35
docs(state): refresh post PR #217 merged — OSS-460 Done, next wall ch…
scottweaver Jun 8, 2026
4e7b3ac
fix(OSS-461): preserve inlinedQrl context params + fix DCE nested-fol…
scottweaver Jun 8, 2026
0b19d91
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 8, 2026
5ba0c80
docs(state): refresh post PR #219 merged — OSS-461 Done, client build…
scottweaver Jun 8, 2026
26e8a03
fix(OSS-462): drop stranded PURE annotation when a call becomes a q_ …
scottweaver Jun 8, 2026
1f1ae14
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 8, 2026
34ba8ab
fix(OSS-463): keep reexported `const X = server$(…)` binding in the p…
scottweaver Jun 8, 2026
d76227a
docs: add vite-qwik-router build/runtime RCA at repo root (#223)
scottweaver Jun 8, 2026
77bfb06
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 8, 2026
107326b
docs(state): refresh post PRs #221/#222/#223 — OSS-462/463 Done, buil…
scottweaver Jun 8, 2026
ba45f63
fix(OSS-464): extract handlers from pre-transformed _jsxDEV props (#225)
scottweaver Jun 9, 2026
1b39f59
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 9, 2026
ee7e3e8
fix(OSS-469): keep _captures import for inlined inlinedQrl bodies (#226)
scottweaver Jun 9, 2026
bbbe2df
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 9, 2026
de51076
docs(state): post-merge refresh — OSS-464 (#225) + OSS-469 (#226) Don…
scottweaver Jun 9, 2026
fba7402
fix(OSS-470): reactive _jsxDEV emit (q:p captures, const-bag, _wrapPr…
scottweaver Jun 9, 2026
3cf7171
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 9, 2026
0f5854b
docs(state): refresh post PR #228 merged — OSS-470 Done; server$ Q14 …
scottweaver Jun 9, 2026
1f86e03
fix(OSS-472): never strip inlinedQrl segments (SWC parity, fixes rout…
scottweaver Jun 9, 2026
b856454
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 9, 2026
ee80388
docs(state): refresh post PR #230 merged — OSS-472 Done; real server$…
scottweaver Jun 9, 2026
a646f9b
refactor(OSS-474): consolidate duplicated helpers in segment-generati…
scottweaver Jun 9, 2026
17f3d91
docs(state): refresh post PR #232 merged — OSS-474 Done; OPTIMIZER.md…
scottweaver Jun 9, 2026
64dd2b1
refactor: consolidate JSX attribute-name extraction into one helper (…
scottweaver Jun 9, 2026
5eca00a
docs(state): refresh post PR #234 merged — OSS-476 Done; JSX attr-nam…
scottweaver Jun 9, 2026
51a560a
refactor(OSS-477): trim history/PR-ref/what-not-why comments to invar…
scottweaver Jun 10, 2026
4ee3c67
docs(state): refresh post PR #236 merged — OSS-477 Done; comment hygi…
scottweaver Jun 10, 2026
0494438
refactor(OSS-478): split transformModule into per-file driver + phase…
scottweaver Jun 10, 2026
e0885e2
docs(state): refresh post PR #238 merged — OSS-478 Done; transformMod…
scottweaver Jun 10, 2026
1b62248
refactor(OSS-479): consolidate four extraction-builder literals into …
scottweaver Jun 10, 2026
28ee6dd
docs(state): refresh post PR #240 merged — OSS-479 Done; extraction-b…
scottweaver Jun 10, 2026
6a13456
refactor(OSS-480): decompose promoteEventHandlerCaptures, dedupe q:p …
scottweaver Jun 10, 2026
5c859c0
docs(state): refresh post PR #242 merged — OSS-480 Done; event-captur…
scottweaver Jun 10, 2026
d3e3b8c
feat(OSS-481): true NAPI parity for createOptimizer — raw-string boun…
scottweaver Jun 10, 2026
80c770a
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
a100fa6
refactor(OSS-475): unify event-handler q:p param extraction (4 sites)…
scottweaver Jun 10, 2026
c3222dc
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
839be6a
docs(state): refresh post PR #244 merged — OSS-481 Done; NAPI-parity …
scottweaver Jun 10, 2026
cbe4dbb
docs(state): refresh post PR #245 merged — OSS-475 Done; q:p param ex…
scottweaver Jun 10, 2026
39035c9
docs(methodologies): add qwik-bundler dist rebuild + re-sync to post-…
scottweaver Jun 10, 2026
a626650
docs(rules): widen auto-merge carve-out to generated .cursor/rules/ m…
scottweaver Jun 10, 2026
c3f2412
refactor(OSS-482): unify q:p JSX walk + event-handler propName helper…
scottweaver Jun 10, 2026
a94613c
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
e545d1a
docs(state): refresh post PR #251 merged — OSS-482 Done; q:p walk + e…
scottweaver Jun 10, 2026
2882f6c
refactor(OSS-483): reorganize src/ by pipeline phase + domain; elimin…
scottweaver Jun 10, 2026
f442b7e
docs(state): refresh post PR #253 merged — OSS-483 Done; src/ reorgan…
scottweaver Jun 10, 2026
1edfe8b
refactor(OSS-484): re-home tests to src taxonomy; strip tracker refs …
scottweaver Jun 10, 2026
9afab91
docs(state): refresh post PR #255 merged — OSS-484 Done; test tree re…
scottweaver Jun 10, 2026
56c6b41
fix(OSS-485): apply _hf renames to recorded JSX chunks, not whole buf…
scottweaver Jun 10, 2026
b3c3b29
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
7ca5bf5
docs(state): refresh post PR #257 merged — OSS-485 Done; signal-hoist…
scottweaver Jun 10, 2026
4acdea6
docs(bench): Track D baseline rows post-OSS-485 + CPU profile finding…
scottweaver Jun 10, 2026
bdd57d6
docs(state): Track D picked up — perf baseline established (PR #259) …
scottweaver Jun 10, 2026
a4f4d34
refactor(OSS-486): fuse per-closure free-identifier walks into one an…
scottweaver Jun 10, 2026
8693450
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
defc22d
docs(state): refresh post PR #261 merged — OSS-486 step 1 (group-1 wa…
scottweaver Jun 10, 2026
1ab5965
refactor(OSS-486): canonical session wrapper + parse memo; node-walk …
scottweaver Jun 10, 2026
f126748
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
a6d4a81
docs(state): refresh post PR #263 merged — OSS-486 step 2 (session th…
scottweaver Jun 10, 2026
5fe1628
perf(OSS-486): group 3 — fuse per-module gather walks into canonical …
scottweaver Jun 10, 2026
ecf53db
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
598bbc8
docs(state): refresh post PR #265 merged — OSS-486 step 3 (group-3 ga…
scottweaver Jun 10, 2026
cc53098
test(OSS-486): rebuild profile-deep as a working profiling harness (#…
scottweaver Jun 10, 2026
c1acdc7
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 10, 2026
c443acb
docs(state): refresh post PR #267 merged — OSS-486 Done; Track D paus…
scottweaver Jun 10, 2026
8c10fc1
perf(OSS-487): segment-usage sweep, wireMigration subtree walk, regex…
scottweaver Jun 11, 2026
aa94ae8
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 11, 2026
225d7a6
docs(state): refresh post PR #269 merged — OSS-487 Done; Track D micr…
scottweaver Jun 11, 2026
9ad95c1
perf(OSS-488): fuse transformAllJsx's scope-bindings walk into the ca…
scottweaver Jun 11, 2026
4938929
docs(state): refresh post PR #271 merged — OSS-488 Done; gather-walk …
scottweaver Jun 11, 2026
9f023ed
docs(methodologies): admin-merge is the docs-PR path; repo auto-merge…
scottweaver Jun 11, 2026
66d318c
perf(OSS-489): cut session churn — combined field-map extractor, memo…
scottweaver Jun 11, 2026
ca353b0
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 11, 2026
6570be5
docs(state): refresh post PR #275 merged — OSS-489 Done; session pars…
scottweaver Jun 11, 2026
81d69f5
perf(OSS-490): cut MagicString churn on JSX hot paths — write memo, l…
scottweaver Jun 11, 2026
8d9a8de
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 11, 2026
ffc43a5
docs(state): refresh post PR #277 merged — OSS-490 Done; BENCH-02 −13…
scottweaver Jun 11, 2026
4aaebd2
perf(OSS-491): skip Phase-0.5 flatten work on non-trigger modules — s…
scottweaver Jun 11, 2026
18f7256
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 11, 2026
8c92972
docs(state): refresh post PR #279 merged — OSS-491 Done; Phase-0.5 ce…
scottweaver Jun 11, 2026
5f4e8b2
perf(OSS-493): walk census + ScopeQueryTracker subclass spike — GO fo…
scottweaver Jun 11, 2026
a05ab06
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 11, 2026
f07997d
docs(state): refresh post PR #281 merged — OSS-493 Done; GO for OSS-4…
scottweaver Jun 11, 2026
395dcc3
perf(OSS-494): post-walk free-identifier resolution via ScopeQueryTra…
scottweaver Jun 11, 2026
c0018fc
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 11, 2026
b5d801f
docs(state): refresh post PR #283 merged — OSS-494 Done; next OSS-495…
scottweaver Jun 11, 2026
25cdd91
perf(OSS-495): build ScopeTracker during the gather walk — 3→2 walks …
scottweaver Jun 11, 2026
b3b3eb9
docs(state): refresh post PR #285 merged — OSS-495 Done; OSS-496 clos…
scottweaver Jun 11, 2026
3619b06
perf(OSS-496): fuse Phase-1 extraction into the gather walk — 1 walk …
scottweaver Jun 11, 2026
8bcb6d8
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 11, 2026
3aa03af
docs(state): refresh post PR #287 merged — OSS-496 Done; OSS-492 fusi…
scottweaver Jun 11, 2026
33e91de
docs(state): drop deleted ast-parity/F2 from Branches in flight (#289)
scottweaver Jun 11, 2026
31dfc19
fix(OSS-447): QRL ownership + MIG-06 dependency reexport for moved he…
scottweaver Jun 17, 2026
4a787e7
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 17, 2026
c386f51
docs(state): refresh post PR #274 merged — OSS-447 Done (#291)
scottweaver Jun 18, 2026
6e2c9ab
build(OSS-497): bundle for external npm distribution via tsdown (#292)
scottweaver Jun 22, 2026
364fd24
docs(state): refresh post PR #292 merged — OSS-497 Done (#293)
scottweaver Jun 22, 2026
702ad50
release(OSS-498): rename package to qwik-ts-optimizer for first npm p…
scottweaver Jun 22, 2026
6d530f3
docs(state): refresh post PR #294 merged — OSS-498 rename + README (#…
scottweaver Jun 22, 2026
e112500
fix(OSS-498): gate prepublishOnly on the baseline regression check (#…
scottweaver Jun 22, 2026
de1cef8
fix(OSS-500): fold whitespace in multi-line JSX attribute strings (#297)
scottweaver Jun 25, 2026
0f235ed
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 25, 2026
b9db4ac
docs(state): refresh post PR #297 merged — OSS-500 Done; OSS-499 work…
scottweaver Jun 25, 2026
bdf4c27
fix(OSS-502): stop strip-exports from re-emitting surviving imports (…
scottweaver Jun 25, 2026
81b7490
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 25, 2026
b2c2226
docs(state): refresh post PR #299 merged — OSS-502 Done (#300)
scottweaver Jun 25, 2026
c734acc
docs(state): OSS-501 phase 1 done (gate-green) — not yet a merge (#301)
scottweaver Jun 25, 2026
a9b5691
fix(OSS-501): stop lib idempotency corruption from capture-position i…
scottweaver Jun 25, 2026
caf9d93
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 25, 2026
d6eaee4
docs(state): refresh post PR #302 merged — OSS-501 Done (Bug B fixed)…
scottweaver Jun 25, 2026
2daa2e9
docs(methodologies): update post-merge resync to qwik-ts-optimizer + …
scottweaver Jun 25, 2026
9c7d590
fix(OSS-503): expand object shorthand when flattening use*() destruct…
scottweaver Jun 25, 2026
55d4ec2
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 25, 2026
a879bfb
docs(state): refresh post PR #305 merged — OSS-503 Done (Bug D fixed)…
scottweaver Jun 25, 2026
a8b43f8
fix(OSS-504): single-quote-wrap sync$ serialized body with inner stri…
scottweaver Jun 25, 2026
762f4d9
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 25, 2026
a7c6d98
docs(state): refresh post PR #307 merged — OSS-504 Done (Bug E fixed)…
scottweaver Jun 25, 2026
c781313
fix(OSS-505): count only top-level returns in raw-props component gat…
scottweaver Jun 26, 2026
e7b9380
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 26, 2026
301a62c
docs(state): refresh post PR #309 merged — OSS-505 Done (Bug F fixed)…
scottweaver Jun 26, 2026
a5f65e5
fix(OSS-506): drop runtime-redundant migration reexports under inline…
scottweaver Jun 26, 2026
1539afc
chore(ci): update test baseline [skip ci]
github-actions[bot] Jun 26, 2026
eac8bba
docs(state): refresh post PR #311 merged — OSS-506 Bug G serverQrl la…
scottweaver Jun 26, 2026
52dd707
fix(OSS-506): resolve Bug G serverQrl SSR crash — isServer const-fold…
scottweaver Jul 7, 2026
1559333
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 7, 2026
f166753
fix(OSS-508): expand object shorthand when inlining a single-use cons…
scottweaver Jul 7, 2026
373f15e
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 7, 2026
993d33f
docs(state): refresh post PRs #313 + #314 merged — OSS-506/507 Bug G …
scottweaver Jul 7, 2026
a91cfb0
fix(OSS-509): emit empty module for import/export-free scripts (#316)
scottweaver Jul 8, 2026
a4438bd
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 8, 2026
681a855
fix(OSS-510): capture computed-key and block/loop-scoped references (…
scottweaver Jul 8, 2026
d340735
docs: clarify comment rules — inline comments are a smell, prefer ext…
scottweaver Jul 8, 2026
82124cd
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 8, 2026
82ce0a3
fix(OSS-511): keep nested sync$ inline under the hoist strategy (#318)
scottweaver Jul 8, 2026
594d232
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 8, 2026
dce84e6
docs(state): refresh post PRs #316–#319 — OSS-509/510/511 Done, comme…
scottweaver Jul 8, 2026
7e5e99d
fix(OSS-513): stop over-wrapping nested signal reads in _jsxDEV (#321)
scottweaver Jul 8, 2026
634beaa
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 8, 2026
241c318
fix(OSS-514): wire .w([captures]) on bare $() QRL refs under inline/h…
scottweaver Jul 8, 2026
3dddfac
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 8, 2026
eb9f9ab
docs(state): refresh post PRs #321/#322 — OSS-513/514 Done, qds dev-S…
scottweaver Jul 8, 2026
b2d9883
fix(OSS-515): consolidate q:p capture value through _rawProps (#324)
scottweaver Jul 8, 2026
64884bd
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 8, 2026
f5b0066
docs(state): refresh post PR #324 merged — OSS-515 Done (#325)
scottweaver Jul 8, 2026
5dc52b0
fix(OSS-516): resolve qds component-page SSR over-subscription (_jsxD…
scottweaver Jul 9, 2026
0940b46
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 9, 2026
41eebb8
docs(state): refresh post PR #326 merged — OSS-516 Done (#327)
scottweaver Jul 9, 2026
c101d3e
fix(OSS-518): record bare-identifier alias refs in const-propagation …
scottweaver Jul 9, 2026
3202fc8
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 9, 2026
0ce9ad1
docs(state): refresh post PR #328 merged — OSS-518 Done (#329)
scottweaver Jul 9, 2026
c05f75c
fix(OSS-519): don't prepend srcDir to an already-absolute dev file pa…
scottweaver Jul 9, 2026
7eba1bc
docs(state): refresh post PR #330 merged — OSS-519 Done (#331)
scottweaver Jul 9, 2026
9f54933
feat(OSS-520): transitive dependency migration for inlinedQrl lib seg…
scottweaver Jul 9, 2026
123ff8a
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 9, 2026
18f7cdb
docs(state): refresh post PR #332 merged — OSS-520 Done + OPTIMIZER.m…
scottweaver Jul 9, 2026
d53ae7f
fix(OSS-524): dev-mode moved-marker QRL decls emit qrlDEV + import co…
scottweaver Jul 9, 2026
6ec3238
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 9, 2026
a24240d
docs(state): refresh post PR #334 merged — OSS-524 Done (#335)
scottweaver Jul 9, 2026
887974b
docs(state): OSS-525 canceled + dev-SSR sweep clean (#336)
scottweaver Jul 9, 2026
bb6d1e7
docs(state): correct OSS-517 — real TS parity gap, not "at SWC parity…
scottweaver Jul 9, 2026
8caa52a
fix(OSS-517): don't fold a member-read const across a mutation of tha…
scottweaver Jul 9, 2026
eb86f92
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 9, 2026
40645e2
docs(state): refresh post PR #338 merged — OSS-517 Done, full dev+pro…
scottweaver Jul 9, 2026
dbeee89
fix(OSS-526): carry computed-key deps through _fnSignal hoisting (#340)
scottweaver Jul 10, 2026
b797c2e
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 10, 2026
75d05b8
docs(state): refresh post PR #340 merged — OSS-526 Done (#341)
scottweaver Jul 10, 2026
b6a5321
fix(OSS-528): preserve destructure defaults in raw-props consolidatio…
scottweaver Jul 10, 2026
179e568
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 10, 2026
9afb3e1
docs(state): refresh post PR #342 merged — OSS-528 Done (#343)
scottweaver Jul 10, 2026
5ad32c9
fix(OSS-527): don't hoist non-reactive .map or lift callback params a…
scottweaver Jul 10, 2026
4229767
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 10, 2026
addde83
docs(state): refresh post PR #344 merged — OSS-527 Done (#345)
scottweaver Jul 10, 2026
c0b00d1
docs(state): two-fleet interaction-layer close-out — OSS-529/530/531/…
scottweaver Jul 10, 2026
016ad17
fix(OSS-533): abort raw-props consolidation on non-const destructure …
scottweaver Jul 13, 2026
621213d
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 13, 2026
5b863db
fix(OSS-534): _jsxDEV const-bag partition + recover OSS-529/530 click…
scottweaver Jul 15, 2026
5b301e7
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 15, 2026
5297933
docs(state): refresh post PR #349 merge — OSS-529/530/534 Done (#350)
scottweaver Jul 15, 2026
43ce599
fix(OSS-531): strip TS annotations from sync$ serialized string (#351)
scottweaver Jul 15, 2026
52cb49a
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 15, 2026
70c0f71
fix(OSS-535): key _jsxDEV elements by tag kind and direct-child posit…
scottweaver Jul 15, 2026
39489ba
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 15, 2026
8ccf72f
docs(state): refresh post PRs #351/#352 merge — OSS-531/535 Done, OSS…
scottweaver Jul 15, 2026
7b0328e
docs(state): record final QDS compatibility pass — OSS-536 filed, sel…
scottweaver Jul 15, 2026
c4091ea
fix(OSS-536): inject _useHmr into inline/hoist component bodies (hmr …
scottweaver Jul 16, 2026
2bdf578
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 16, 2026
5b60d1a
docs(state): refresh post PR #355 merge — OSS-536 Done (#356)
scottweaver Jul 16, 2026
bbe01f9
refactor(OSS-538): optimizer code-hygiene — dead code, shared primiti…
scottweaver Jul 16, 2026
8ec36f6
test: remove no-op/duplicate tests, strengthen weak ones (#358)
scottweaver Jul 16, 2026
36417d2
refactor(OSS-540): behavior-normalizing consolidations (#359)
scottweaver Jul 16, 2026
25dc5e5
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 16, 2026
3fec5ce
docs(state): refresh post PRs #357/#358/#359 — OSS-537 hygiene sweep …
scottweaver Jul 16, 2026
d30c4ab
refactor: de-any test AST-parse helpers + extract shared module (#361)
scottweaver Jul 16, 2026
9d58da3
docs(state): refresh post PR #361 merge — OSS-541 de-any umbrella fil…
scottweaver Jul 16, 2026
0e56468
refactor(OSS-542): de-any the tests/optimizer specs (#363)
scottweaver Jul 17, 2026
8138ccc
docs(state): refresh post PR #363 merge — OSS-541 de-any both subs la…
scottweaver Jul 17, 2026
b7fa34c
refactor(OSS-543): de-any the ast-compare differential oracle (#364)
scottweaver Jul 20, 2026
541c411
docs(state): refresh post PR #364 merge — OSS-541 de-any umbrella clo…
scottweaver Jul 20, 2026
02b2610
fix(OSS-471): MOVE single-consumer server$ binding into its segment (…
scottweaver Jul 20, 2026
be0806d
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 20, 2026
87be034
docs(state): refresh post PR #367 merge — OSS-471 server$ MOVE landed…
scottweaver Jul 20, 2026
f7a3ca8
chore(comments): aggressive comment sweep + SWC-reference scrub (pre-…
scottweaver Jul 22, 2026
fef10a2
Merge remote-tracking branch 'ts-opt-graft/main' into feat/ts-optimiz…
scottweaver Jul 22, 2026
3e71ff9
chore(ts-optimizer): prune standalone-repo infra after monorepo graft
scottweaver Jul 22, 2026
a543f27
chore(ts-optimizer): wire package into the monorepo workspace
scottweaver Jul 22, 2026
39297d4
chore(ts-optimizer): rename to @qwik.dev/ts-optimizer, packages/ts-op…
scottweaver Jul 23, 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
  •  
  •  
  •  
259 changes: 259 additions & 0 deletions packages/ts-optimizer/BENCHMARKS.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions packages/ts-optimizer/DESIGN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
The idea is that we should hold operations performed in a virtual representation, then at the end we do a write with magic string. This allows us to hold all the AST information and only need to parse once.

We should try to avoid cases where we have to reparse or do strange cases of looping over characters and words to make diffs. On the other hand, we should avoid using a printer approach with codegen that is exhaustive and leads to complexity and difficult changes.
22 changes: 22 additions & 0 deletions packages/ts-optimizer/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
MIT License

Copyright (c) 2024 QwikDev
Copyright (c) 2021 BuilderIO

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
170 changes: 170 additions & 0 deletions packages/ts-optimizer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
# @qwik.dev/ts-optimizer

A TypeScript implementation of the [Qwik](https://qwik.dev) optimizer.

It takes a Qwik source file, finds every `$()` closure, lifts each one into its
own lazy-loadable module, and rewrites the original file so the closures become
`qrl(() => import(...))` references — the runtime then loads each chunk only
when the user actually triggers it.

> **Status: experimental.** This is a from-scratch TypeScript port of the Rust
> SWC optimizer that ships with Qwik core, built on [OXC](https://oxc.rs). It
> currently matches **~96%** of the reference optimizer's snapshot suite. APIs
> may change before a 1.0.

## Why

The optimizer is the heart of Qwik's resumability model: every `$()` boundary
becomes a separately loadable chunk, so the browser downloads code lazily as
interaction demands it instead of hydrating the whole app up front. This package
makes that transform available as a pure-TypeScript, [OXC](https://oxc.rs)-based
library — no native SWC binding required for the transform logic itself (the
parser/transformer it builds on, `oxc-parser` / `oxc-transform`, do ship native
bindings).

## Install

```sh
npm install @qwik.dev/ts-optimizer
# or
pnpm add @qwik.dev/ts-optimizer
```

**Requires Node `>=22`** — `oxc-parser`'s raw-transfer path throws on Node 20.
ESM-only.

## Usage

There are two entry points: a synchronous core (`transformModule`) and an
async, SWC-NAPI-compatible factory (`createOptimizer`) for drop-in use inside a
bundler.

### `transformModule` — synchronous core

```ts
import { transformModule, mkFilePath, mkSourceText } from '@qwik.dev/ts-optimizer';

const result = transformModule({
input: [
{
path: mkFilePath('components/counter.tsx'),
code: mkSourceText(`
import { component$, useSignal } from '@qwik.dev/core';
export const Counter = component$(() => {
const count = useSignal(0);
return <button onClick$={() => count.value++}>{count.value}</button>;
});
`),
},
],
srcDir: mkFilePath('/app/src/'),
entryStrategy: { type: 'segment' },
minify: 'simplify',
});

for (const mod of result.modules) {
console.log(mod.path, mod.kind); // 'parent' | 'segment'
// mod.code — emitted source
// mod.segment — segment metadata (name, hash, ctxKind, captures, …) on segments
}

console.log(result.diagnostics); // [] when clean
```

Each input file is transformed independently into **one parent module** (the
original file rewritten so its `$()` calls become `qrl(...)` references) plus
**zero or more segment modules** (each lifted closure body as its own
lazy-loadable file).

### `createOptimizer` — async, bundler-facing

Mirrors the surface of Qwik's SWC optimizer (`@qwik.dev/optimizer`'s
`createOptimizer().transformModules(...)`), so it can be swapped in by a bundler
adapter. Takes and returns plain strings (no branded types at the boundary):

```ts
import { createOptimizer } from '@qwik.dev/ts-optimizer';

const optimizer = createOptimizer();
const output = await optimizer.transformModules({
srcDir: '/app/src',
input: [{ path: 'components/counter.tsx', code: source }],
entryStrategy: { type: 'smart' },
});
```

## What it emits — before / after

**Input** (`test.tsx`):

```tsx
import { $, component } from '@qwik.dev/core';

export const renderHeader = $(() => {
return <div onClick={$((ctx) => console.log(ctx))} />;
});
```

**Output** — a rewritten parent plus one segment per `$()` body:

```ts
// test.tsx (parent — closures replaced by lazy QRL references)
import { qrl } from '@qwik.dev/core';
const q_renderHeader_jMxQsjbyDss = /*#__PURE__*/ qrl(
() => import('./test.tsx_renderHeader_jMxQsjbyDss'),
'renderHeader_jMxQsjbyDss'
);
export const renderHeader = q_renderHeader_jMxQsjbyDss;
```

```ts
// test.tsx_renderHeader_jMxQsjbyDss.tsx (segment — the lifted body)
export const renderHeader_jMxQsjbyDss = () => {
return <div onClick={q_renderHeader_div_onClick_USi8k1jUb40} />;
};
```

The nested `onClick` closure is lifted again into its own leaf segment, loaded
only after the user clicks. That granularity — each `$()` boundary a separate
chunk — is the whole point.

## How it works

`transformModule` runs each file through a fixed pipeline:

| Phase | Does |
| ------------------------- | --------------------------------------------------------------------------------------------------- |
| **0 — Prepare** | Repair recoverable parse errors, flatten destructures, parse once with OXC |
| **1 — Extract** | Walk the AST, find every `$(...)` / marker call, capture each closure body + naming context |
| **2 — Captures** | Determine which outer-scope variables each closure closes over |
| **3 — Migrate** | Decide where each module-level binding lives: stay in the parent, move into a segment, or re-export |
| **4 — Rewrite parent** | Replace each `$(closure)` with a generated `qrl(...)` reference; apply migration |
| **5 — Generate segments** | Emit one lazy-loadable module per extracted closure |
| **6 — Post-process** | TypeScript strip, dead-code elimination, unused-import cleanup |

Symbol names are content-addressed: a closure's exported name is composed from
its call-site context (`renderHeader_div_onClick`) plus an 11-character
SipHash-1-3 suffix, so the same source always produces the same chunk names the
runtime will fetch.

The marker family the optimizer recognizes (`component$`, `useTask$`,
`useStyles$`, `useVisibleTask$`, `server$`, event handlers like `onClick$`, …)
is detected **structurally** — any call whose callee's imported name ends in `$`
extracts — so library-defined `name$` functions work automatically.

## Public API

| Export | Kind | Purpose |
| ------------------------------------------------------------------ | --------- | ----------------------------------------------- |
| `transformModule(options)` | function | Synchronous core transform → `TransformOutput` |
| `createOptimizer()` | function | Async, SWC-NAPI-compatible optimizer instance |
| `mk*` (e.g. `mkFilePath`, `mkSourceText`) | functions | Smart constructors for the branded string types |
| `TransformModulesOptions`, `TransformOutput`, `TransformModule`, … | types | Input/output contracts |
| `SymbolName`, `Hash`, `FilePath`, `SourceText`, … | types | Branded identifier types |

All other modules are internal and not part of the public contract.

## License

[MIT](./LICENSE) — matching [Qwik](https://github.com/QwikDev/qwik) core, of
which this is a derivative. Copyright © QwikDev and BuilderIO.
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
---
source: packages/optimizer/core/src/test.rs
assertion_line: 5854
expression: output
---
==INPUT==


import { component$, useAsync$ } from '@qwik.dev/core';

// Component-level self-referential component
export const Foo = component$((props) => {
const sig = useAsync$(async ({cleanup}) => {
const timer = setInterval(() => {
sig.value++;
}, 1000);
cleanup(() => clearInterval(timer));
return 0;
});
const other = useAsync$(async ({cleanup}) => {
const timer = setInterval(() => {
other.value++;
}, 900);
cleanup(() => clearInterval(timer));
return 0;
});
return (
<div>
{other.value}
</div>
);
});

============================= test.tsx_Foo_component_HTDRsvUbLiE.tsx (ENTRY POINT)==

import { qrl } from "@qwik.dev/core";
import { useAsyncQrl } from "@qwik.dev/core";
//
const q_Foo_component_other_useAsync_fsHooibmyyE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_other_useAsync_fsHooibmyyE"), "Foo_component_other_useAsync_fsHooibmyyE");
const q_Foo_component_sig_useAsync_f0BGwWm4eeY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY"), "Foo_component_sig_useAsync_f0BGwWm4eeY");
//
export const Foo_component_HTDRsvUbLiE = (props)=>{
const _ref = {};
_ref.sig = useAsyncQrl(q_Foo_component_sig_useAsync_f0BGwWm4eeY.w([
_ref.sig
]));
const { sig } = _ref;
_ref.other = useAsyncQrl(q_Foo_component_other_useAsync_fsHooibmyyE.w([
_ref.other
]));
const { other } = _ref;
return <div>
{other.value}
</div>;
};


Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAI8B,CAAC;IAC9B;eAAY;;;IAAZ,QAAM;iBAOQ;;;IAAd,QAAM;IAON,QACE,IAAI;GACJ,CAAC,MAAM,KAAK,CAAC;EACd,EAAE;AAEJ\"}")
/*
{
"origin": "test.tsx",
"name": "Foo_component_HTDRsvUbLiE",
"entry": null,
"displayName": "test.tsx_Foo_component",
"hash": "HTDRsvUbLiE",
"canonicalFilename": "test.tsx_Foo_component_HTDRsvUbLiE",
"path": "",
"extension": "tsx",
"parent": null,
"ctxKind": "function",
"ctxName": "component$",
"captures": false,
"loc": [
137,
534
],
"paramNames": [
"props"
]
}
*/
============================= test.tsx_Foo_component_other_useAsync_fsHooibmyyE.tsx (ENTRY POINT)==

import { _captures } from "@qwik.dev/core";
//
export const Foo_component_other_useAsync_fsHooibmyyE = async (_rawProps)=>{
const other = _captures[0];
const timer = setInterval(()=>{
other.value++;
}, 900);
_rawProps.cleanup(()=>clearInterval(timer));
return 0;
};


Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;wDAYyB;;IACvB,MAAM,QAAQ,YAAY;QACzB,MAAM,KAAK;IACZ,GAAG;IACH,UAJ+B,QAIvB,IAAM,cAAc;IAC5B,OAAO\"}")
/*
{
"origin": "test.tsx",
"name": "Foo_component_other_useAsync_fsHooibmyyE",
"entry": null,
"displayName": "test.tsx_Foo_component_other_useAsync",
"hash": "fsHooibmyyE",
"canonicalFilename": "test.tsx_Foo_component_other_useAsync_fsHooibmyyE",
"path": "",
"extension": "tsx",
"parent": "Foo_component_HTDRsvUbLiE",
"ctxKind": "function",
"ctxName": "useAsync$",
"captures": true,
"loc": [
341,
482
],
"paramNames": [
"_rawProps"
],
"captureNames": [
"other"
]
}
*/
============================= test.tsx ==

import { componentQrl } from "@qwik.dev/core";
import { qrl } from "@qwik.dev/core";
//
const q_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE");
// Component-level self-referential component
//
export const Foo = /*#__PURE__*/ componentQrl(q_Foo_component_HTDRsvUbLiE);


Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,6CAA6C;;AAC7C,OAAO,MAAM,oBAAM,0CAoBhB\"}")
============================= test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY.tsx (ENTRY POINT)==

import { _captures } from "@qwik.dev/core";
//
export const Foo_component_sig_useAsync_f0BGwWm4eeY = async (_rawProps)=>{
const sig = _captures[0];
const timer = setInterval(()=>{
sig.value++;
}, 1000);
_rawProps.cleanup(()=>clearInterval(timer));
return 0;
};


Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;sDAKuB;;IACrB,MAAM,QAAQ,YAAY;QACzB,IAAI,KAAK;IACV,GAAG;IACH,UAJ6B,QAIrB,IAAM,cAAc;IAC5B,OAAO\"}")
/*
{
"origin": "test.tsx",
"name": "Foo_component_sig_useAsync_f0BGwWm4eeY",
"entry": null,
"displayName": "test.tsx_Foo_component_sig_useAsync",
"hash": "f0BGwWm4eeY",
"canonicalFilename": "test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY",
"path": "",
"extension": "tsx",
"parent": "Foo_component_HTDRsvUbLiE",
"ctxKind": "function",
"ctxName": "useAsync$",
"captures": true,
"loc": [
173,
313
],
"paramNames": [
"_rawProps"
],
"captureNames": [
"sig"
]
}
*/
== DIAGNOSTICS ==

[]
Loading
Loading