Skip to content

Releases: compiled-run/markless

v0.4.0

Choose a tag to compare

@thejackshelton thejackshelton released this 30 Aug 17:57

compare changes

🚀 Enhancements

  • compiler: Replace @tsrx/core with vendored yuku-tsrx parser (08786335)
  • compiler: Thread yuku semantic tables into the semantic-graph walk (ffb05b6e)
  • compiler: Member-expression component tags compile, resolve, and render (15fd3bec)
  • ui: Scaffold @markless/ui + base namespace; compiler: optional callback props (19367345)
  • identity: Composed children get instance-qualified graph ids (approach B) (08e0af1e)
  • core: PropsOf and Children authoring types; sweep children: unknown (6a1dc4ab)
  • identity: Projected children get p: instance segments; symbol routes are full prefixes, longest first (1e01263d)
  • identity: Same-module composed children get their own cells, qualified ids, and self symbol routes (b59669c6)
  • compiler,web: Shared() renders and resumes (130f503f)
  • compiler,web: Widget scope on shared() (CSR) (d0c47991)
  • compiler,bundler,web: Per-component SSR entries; widget scope resumes on SSR (ac50933d)
  • compiler: Shared() factory computeds and root config seeding (dde363f9)
  • compiler,web: Projected children render after the projecting component seeds (eb7f4470)
  • ui: Checkbox family skeleton — root and trigger behaviour, all parts scaffolded (2d05f1fb)
  • ui: Every checkbox part spreads {...rest} first on its host (cb4086d4)
  • compiler: Emission foundation - yuku-codegen printer, builders, gates (4b29d8d1)
  • compiler: AST emission path for state initializer modules (unswapped) (17f2e265)
  • compiler,web: Shared-factory lowering — composite reads, method locals, as-casts, seeds, scope guard (301e7346)
  • compiler: AST emission path for DOM binding modules (unswapped) (a1433601)
  • compiler: AST emission path for behavior modules (unswapped) (2baa9303)
  • compiler: AST emission path for async computed runner modules (unswapped) (14367f39)
  • compiler,web: Element() IDREF minting — labels reference minted per-instance ids (8eca79dc)
  • compiler: AST emission paths for the arm emitters (unswapped) (14ce2da2)
  • compiler: AST emission path for general symbol modules (unswapped) (7769877b)
  • ui: The checkbox family — 7 parts, widget-scoped shared state, converted QDS suite (e946e9e6)
  • compiler: Swap production emission to the AST printer paths (U47 batch, owner-approved) (37f50817)
  • compiler: Assignments always assign; destructuring defaults at part signatures (f2aed463)
  • compiler: AST emission band for event-handler and callback-prop modules (unswapped) (3973d4a1)
  • compiler: Swap event-handler emission to the AST printer; delete the string path (e08d2904)
  • compiler: Composite expressions over shared reads refresh; component-body computed() over shared instances resolves (dfee36f6)
  • ui: Toggle, textbox, and progress families; recipe fixes from the pilot review (e4567c03)
  • typescript-plugin: Markless-tsc — volar-driven CLI typecheck; sidecars and shim deleted; 14 exposed type errors fixed (f99c7c3a)
  • compiler,core,ui: Single-handler event contract — array form fails closed; Handler deleted; part types are bare PropsOf aliases (5bb8ee84)
  • sr: Apps/sr-gallery consumer app + sr-real NVDA/VoiceOver specs; workflow gates real lanes on the boot check (ea5db671)
  • compiler: Handler symbol modules carry same-file module-scope declarations (transitive, authored order, with their imports) (f18b6c23)
  • bundler: Compiled .tsrx modules publish real ES named exports per served component; sr-gallery builds clean (fc0033e1)
  • compiler: Three fail-closed class-state diagnostics (shared-factory instance, state-property instance, divergent multi-handler module instance) (7df9f103)
  • ui: Collapsible family (root/trigger/content; content hides attached, never unmounts) (01313c09)
  • ui: Otp family (root/field/item/itemindicator; zero-arg commit shape); 8 rows red on the write-then-read dispatch defect (12104522)
  • ui: Pagination family (six QDS parts, declared value, exported pageRange); 11 rows pinned on four measured framework defects (050485dc)
  • ui: Qr-code family (verified ISO 18004 byte-mode encoder, SSR SVG, neutral accessible name); 2 rows pinned on the destructured-prop spread leak (a5903dcd)
  • ui: Barrel and export subpaths carry collapsible, otp, pagination, qr-code (2d597e58)
  • ui: Pagination range entries carry stable keys; rows re-pinned on the row-scoping arm-walk gap (f8a0f319)
  • compiler: Fail-closed read-back audit over emitted symbol modules (MARKLESS_SYMBOL_MODULE_UNRESOLVED_GRAPH_REFERENCE) (68737c01)
  • ui: Otp caret-to-end on focus (QDS policy); SSR row pinned on async handler dispatch (85e73b2c)
  • compiler: Row-scoping walks branch arms; interactive parts under @if in value-keyed rows get per-row identity (cafa4fe5)
  • ui: Pagination reshaped to QDS anatomy (item carries value, parts derive state); getEntries on family state; pageRange internal (90cc2a03)
  • ui: Scroll-area family tiers 1-2 (zero JS; CSS scroll-timeline thumb; drag gated on owner questions) (e6e78be8)
  • ui: Barrel and subpath carry scroll-area (7ec0e16b)
  • compiler: Modules publish shared definitions on the graph interface; consumers adopt through named imports and barrel chains (MARKLESS_SHARED_CALL_UNRESOLVED fail-closed) (cdbaeb5c)
  • bundler: Compiled modules keep authored shared exports (throwing uncompiled-call guard); transform passes published names (5d2b483c)
  • compiler,bundler: Barrel interfaces carry shared re-export chains; .ts-only importers reach the barrel walk (778c892f)
  • ui: Every family exports state beside its parts (owner directive; surface now compiles end to end) (f4d85edf)
  • ui: Radio-group family lands (39 green, 2 pinned; workarounds reverted to natural shapes) (57c04d5b)
  • ui: Barrel and subpath carry radio-group (c5b662be)
  • compiler: Branch conditions mint computeds end to end (SSR seeds, authored diagnostics text, re-anchored pins) (69f042de)
  • compiler,web: Element() handles in IDREF attributes on parts mint and cross the edge (element-handle-id prop kind) (fb9e9d01)
  • ui: Tabs family (QDS anatomy, panels stay mounted, roving tabindex); one row pinned on post-resume content refresh (502758ab)
  • ui: Barrel and subpath carry tabs ([98a0292](https://github.com/compiled-run/markless/co...
Read more

v0.3.3

Choose a tag to compare

@thejackshelton thejackshelton released this 18 Aug 19:48

compare changes

🚀 Enhancements

  • bundler,web: Install derived reconciliation only in apps that have computeds (ea2a06d1)

📦 Build

  • runtime: Pack the graph-reconcile entry so the published ./graph-reconcile export resolves (da8ce0a0)

🏡 Chore

  • release: 0.3.3 - eleven packages, one version (50fe9baf)

✅ Tests

  • bundler: Re-anchor the byte walls to what per-app reconcile wiring landed (5b3b9ed9)
  • bundler: Mp-ssr wall tracks the CI actual (63,109) for the reconcile plane (3661f049)

📋 Other changes

Commits changelogen could not classify, oldest first. They are here because a
release note that hides most of the history is not a release note.

  • Merge branch 'main' into work/derived-reconcile-diet (6824de8c)
  • runtime: apps with no computed nodes pay nothing for reconcile bookkeeping (e8544911)
  • runtime: derived reconciliation becomes an installable plane (daf41f86)
  • Merge remote-tracking branch 'origin/main' into work/derived-reconcile-plane-u4 (80084072)
  • Merge pull request #26 from compiled-run/feat/reconcile-plane-pay-per-use (687f0ea0)

❤️ Contributors

v0.3.2

Choose a tag to compare

@thejackshelton thejackshelton released this 18 Aug 06:43

compare changes

🩹 Fixes

  • compiler: Emit a dom update for class bindings tested by an expression (b470ea7d)
  • router: Static .mdx pages declare their empty storage seed list (5a4b3f02)

🏡 Chore

  • boxes: Re-anchor size walls for derived reconciliation; keep ratified size rows in the jsfb guard (59227a3b)
  • release: 0.3.2 - eleven packages, one version (86e47564)

📋 Other changes

Commits changelogen could not classify, oldest first. They are here because a
release note that hides most of the history is not a release note.

  • spec: derived reconciliation and streaming rule; add red re-check benchmark (a197dc3a)
  • runtime: reconcile derived results into changed paths (fb04b76f)
  • runtime: validate reconcile keys, apply write-touched rule to the baseline, honest cost wording (19d80e7a)
  • runtime: async commits cannot trust identity below the root (0f7e7ce6)
  • runtime: track (previous, next) pairs in the reconcile cycle guard (7f8b57a3)
  • runtime: lazy reconciled reads schedule a flush; only cell-backed computeds take the root-write reconcile branch (08cb0869)
  • Merge pull request #23 from compiled-run/feat/derived-reconcile (6c9acd34)
  • Merge remote-tracking branch 'origin/main' (e1cd9ba0)

❤️ Contributors

Markless 0.3.1

Choose a tag to compare

@thejackshelton thejackshelton released this 18 Aug 05:35

A patch release with three fixes found while building the Markless docs site as
a Markless app on the published packages.

MDX islands that derive a value now resume

An MDX page is stitched from several .tsrx islands, and each island gets its
own symbol prefix. The view side already applied that prefix; the composed state
payload did not, so an island whose update re-derived a computed() looked up a
symbol the loader table did not know and failed with Unknown Markless MDX symbol. composeMdxState now prefixes deriveSymbolId the same way the view
side prefixes host and event symbol ids.

storage() works in router apps

A module-scope storage() used from a page or MDX island served a state payload
stamped as the storage version with no storage records, and the client refused
the whole payload, taking every island on the page down with it. Storage records
now travel through MDX composition, the payload version is computed from what the
payload carries, and MDX pages emit the no-flash storage seed script. A
storage() declared in document.tsrx used to be dropped silently; it now fails
the build with MARKLESS_ROUTER_DOCUMENT_STORAGE_UNSUPPORTED, which tells you to
move it into a component the page renders.

@for over a plain array renders its rows

@for over a collection that is not reactive state, such as an inline array, a
module constant, or an imported constant, rendered zero rows on the server with no
diagnostic. The compiler now carries the authored collection expression on the
repeat record and the server-render module evaluates it in the module's own
scope, so those loops render. A repeat with no readable collection is a build
error, MARKLESS_REPEAT_COLLECTION_UNREADABLE, instead of an empty list.

v0.3.0

Choose a tag to compare

@thejackshelton thejackshelton released this 18 Aug 03:00

compare changes

🚀 Enhancements

  • cli: Detect and opt out of the host workspace when scaffolding (72481723)
  • cli: Detect and opt out of the host workspace when scaffolding (187f25a3)
  • demos: Live-feed CSR/SSR pair + four-combo executed-at-load harness (T005 measurement foundation) (aa8d4dc9)
  • bundler: Pass importedModuleInterfaces into compiles (first linker step) (403461df)
  • compiler,serializer,web: Record the async-boundary decision once (T006) (f0da6fbf)
  • compiler: Graph-owned renderData — chunks, dynamic-host slots, residue tables, equivalence-proven (T008a) (90c99b3d)
  • web: Generic renderData SSR renderer, shadow-equal to the production emitter (T010a) (333bc67c)
  • compiler: Consumers migrate to renderData; landmines fail loud; emission byte-equal (T008b) (df5c42d7)
  • compiler,web: Direct CSR path renders from renderData chunks — first emitter deleted (T009a) (39703710)
  • compiler,web: Standard CSR renders from renderData chunks — composition surface deleted (T009b) (9ed87eb0)
  • compiler,web: Settled async arms are chunk commits — tier-4 re-execution deleted (T009c) (132ad88b)
  • compiler,bundler,web: Entry diet — native browser-parsed templates, inert component records, no eager registry evaluation (T009d partial) (d92ed381)
  • compiler,bundler,web: Coordinate-only async settlement — resume runtime loads on interaction only (T009d complete) (bf0bdce1)
  • compiler,web,serializer,router: SSR renders from renderData — five markup-scan sites deleted, no fallback (T010b checkpoint) (0e39b04f)
  • core,compiler,web: Graph-free CSR bootstrap — delegated triggers, tiered demand, no runtime start at load (T011) (2f9a0b01)
  • compiler,bundler,web: One render-data export per module, thin environment entries, interface-hash linking (T012) (e4971be4)
  • bundler,web: Post-build thinning — narrowed HMR invalidation, compact preload emission, ratcheted byte ceilings (T013) (3f07e9df)
  • web,bundler: Build-time prerender vertical for music-player behind MARKLESS_PRERENDER=1 (render-unification P1) (b3a7da9d)
  • web,bundler: Records-from-chunks resume, prerendered music-player by default, debug-channel restored (render-unification P2 + repairs) (205d1249)
  • bundler,web: Dev/HMR parity — dev serves the prerendered container through the production pipeline (render-unification P4) (59435358)
  • web,serializer,bundler: One arm-record registration core + posture resolver + boot-path matrix (render-unification T013 + P3) (55aa6b66)
  • web,bundler,serializer: Reland S1 micro-A doctrine wake core (f1a090dc)
  • web,bundler,serializer,compiler: S1 slice 2 — linked-filename resolution, no-payload-access invariant, componentDefinitions decoupled from tier selection (runtime-demolition T001) (053e2843)
  • bundler,web: Ownership-scoped artifact lifetime + multi-child prerender fixture (runtime-demolition T001 piece 1) (a1903c42)
  • web,bundler,serializer: Child symbol wake registration — multi-child prerendered pages fully interactive (runtime-demolition T001 piece 2) (ba4d03e8)
  • bundler,compiler: Preload plan closes over wake-reachable child symbol chunks; legacy posture untouched (runtime-demolition T001 piece 3, S1 complete) (0c038e65)
  • bundler: SSR client builds emit canonical prerender render-data + an additive wake-variant module (runtime-demolition T002 unit A) (5042b312)
  • serializer,web,bundler: Empty-delta SSR containers — full-resume pages with build-known state ship zero payload scripts (runtime-demolition T002 unit B) (e2081977)
  • router,bundler,web: The prerender-wake channel — router apps serve empty-delta containers behind an opt-in gate (runtime-demolition T002 unit B2) (4ec18b61)
  • serializer,web,bundler: Divergent pages ship only the record delta, merged payload-over-derived at wake (runtime-demolition T002 stage D2) (af6aa3bc)
  • measure: Machine-record served payload-script bytes per demo (runtime-demolition T002 stage S4, recording half) (236f9d3a)
  • compiler,bundler,web,runtime: Staged wake — build-computed trigger groups behind one global dispatch queue (runtime-demolition T004) (e08fd97c)
  • web,bundler,compiler,serializer,router: Unified render model + CSR-legacy demolition + staged wake completion (runtime-demolition T005/T006, owner-directed snapshot) (86f19d33)
  • web,bundler,compiler: Live-feed executed-at-load diet + dom-order locator census pin (99c1afe4)
  • bundler,web: Truthful devtools execution ledger + CI test repairs (a2b84ee3)
  • compiler: Overlay - a structural elevation attribute (ae3f8b05)
  • compiler: Element handles as identity in IDREF positions (b4b94de6)
  • compiler: Object-form style attributes (931f0544)
  • release: Make bumpp prepare lockstep versions (407a9717)
  • Land docs site, style completions, and guessless guidance (3a4bcfa5)
  • release: Complete changelogen release notes (cf48abd7)

🔥 Performance

  • serializer,web,core,compiler,bundler: Storage-free payloads decode without storage validation (T017, owner-approved) (e84fd150)
  • web,serializer,bundler: Shipped-byte diet closes all three gzip walls; live-feed default stays legacy until wake staging lands (8fc0b0a7)

🩹 Fixes

  • compiler,web: Authored-gate-first boundary resolution; ambiguity fails loud on parts-tier too (a41946f0)
  • serializer,bundler,demos: Hash-stable wall accounting, proportional boundary validation, pre-existing instrument debt pinned (bed49b6b)
  • compiler: Row locals from render-data row chunks — async-arm repeats emit row-scoped bindings via capture path (T008b regression) (b480c2fe)
  • executed-at-load: Measure previews own their process group and the script exits deterministically (33a0d86b)
  • compiler,web,serializer: Settled-arm keyed repeats survive the renderData SSR cutover (t010b3) (f40b4e81)
  • router,web: Streamed-settle cancellation lifecycle — no writes after the consumer is gone (t010b2) (ede141af)
  • web,compiler: Branch-record truth for literal/omitted props; same-module-branch demo made hermetic (render-unification t020b) (5986ec6e)
  • measure: Held-pending diagnostic captures quiesced coverage, not a race (19e379d3)
  • workspace: Lockfile entry for the vite-prerender-multi-child fixture (59c883d5)
  • workspace: Lockfile entry for the vite-prerender-multi-child fixture (d2c482a3)
  • bundler: Prerender wake gates on the capability closure over linked children (runtime-demolition T003) (31c96f8e)
  • bundler: Recordless click no longer kills staged dispatch on prerendered pages ([537...
Read more

v0.2.2

Choose a tag to compare

@thejackshelton thejackshelton released this 17 Aug 23:19

compare changes

🚀 Enhancements

  • tooling: Volar language service, docs site work, and retire vscode-plugin (5f0634d0)

🔥 Performance

  • web,serializer: Keep storage code off storage-free pages (8f26b7a9)

🩹 Fixes

  • release: Trust-publishers misreported an already-configured package (2dca909d)
  • compiler,web,ci: Repair the three causes of eleven days of red CI (eba0859a)
  • typescript-plugin: Stop the CJS build cost timing out an arbitrary test (1aa28bb7)
  • release: My 2FA capture broke 2FA (94409218)
  • release: --otp has to go through npm's env config, not its argv (08ff7d25)

🏡 Chore

  • release: 0.2.2 — eleven packages, one version (cb78c185)

📋 Other changes

Commits changelogen could not classify, oldest first. They are here because a
release note that hides most of the history is not a release note.

  • Merge origin/main into feat/markless-docs (b485e68e)

❤️ Contributors

v0.2.1

Choose a tag to compare

@thejackshelton thejackshelton released this 17 Aug 23:19

compare changes

🩹 Fixes

  • release: Wait for the registry before declaring provenance missing (50da0902)
  • core: Storage() accepts one argument, as the docs always said (0b4a1b77)

❤️ Contributors

v0.2.0

Choose a tag to compare

@thejackshelton thejackshelton released this 17 Aug 23:19

compare changes

🚀 Enhancements

  • compiler: Add collectTsrxModuleDiagnostics result-wide aggregator (00c2a4d6)
  • bundler: Fail closed on compiler error diagnostics in transformTsrxModule (2a87cc13)
  • typescript-plugin: Surface TSRX parse failures as editor diagnostics (cc42f4d2)
  • bundler: Structured dev error protocol, self-contained overlay client, and HMR error transport (0a977cdb)
  • router: Dev navigation failures render the structured error document with a production terminal fallback (db1bfda8)
  • runtime: Key-phase gating spike for chained async computeds (b8f1c4b6)
  • web: Dedicated async-runner transport and pending-shell self-wake (96a2dc20)
  • compiler: Snapshot read paths, sync-hop chains, SSR dedup, cycle diagnostic (4ff1e49f)
  • web: Hardening matrix, state-graph spec semantics, runtime byte diet (0b7b2169)
  • demos: Measured data-fetching comparison - Markless vs TanStack Start (6e856388)
  • poc: Navigation-intent prefetch derived from the asyncRunners graph (2da3e62a)
  • compiler: AST-owned prop binding identity and typed capture slots (767f5c03)
  • compiler: Bound resolver rows and capture ABI for child symbols (61e46346)
  • compiler,bundler,web: Bound-ID composition and runtime capture invocation (b8844a6e)
  • bundler: Fail closed when imported children lack capture metadata (5466a583)
  • compiler: Named component-body locals classify as callback routes (8ac948a8)
  • compiler: Passthrough routes for own props forwarded to imported children (1c2ce1a6)
  • storage: W1a — storage() declaration, state-kind binding with storage metadata (storage:#), static key/fallback diagnostics (MARKLESS_STORAGE_KEY_STATIC, charset [a-z][a-z0-9-]*), module-scope collection, public-render lowering with no surviving call; test:compiler 488/488 + core 7/7 (fb3e399d)
  • storage: W1b transport + W1c import sources — usedStorageBindings reachability filter, storage[] payload records, protocol v2 (strict both decoders, v1 byte-identity tested), full-resume forcing (demand map + needsFullResume, storage full-handoff test), storage-slot constants, additionalFrameworkApiSources threading; compiler 491/491, serializer 32/32; KNOWN RED: 3 zero-slack gzip gates exceeded (vite-csr +144, vite-plus +131, music-player-ssr +1323 gz bytes) — repair follows, budgets NOT loosened (c9369b8b)
  • storage: W2a+W2b — render-time seed generation (storageAccess immediate ([deferred, nonce, storage-only payload gate, router head relocation + leading-fragment contract, storage-free byte-identity asserted) + runtime lazy cells (exactly-once readInitializer w/ Object.is suppression) + wake-time slot override w/ deferred marker + hardened storage plane (per-subscription try/catch write-back + attr) + host runtime.enableStorage(); web 289/289, runtime 44/44, compiler 491/491](deferred, nonce, storage-only payload gate, router head relocation + leading-fragment contract, storage-free byte-identity asserted) + runtime lazy cells (exactly-once readInitializer w/ Object.is suppression) + wake-time slot override w/ deferred marker + hardened storage plane (per-subscription try/catch write-back + attr) + host runtime.enableStorage(); web 289/289, runtime 44/44, compiler 491/491))
  • storage: W2c WIP — let/const storage declaration support (let=writable, const=read-only persisted cell, reassignment diagnosed), vitest-browser SSR harness storageAccess/nonce options + typings, storage.tsrx fixture + 4 browser contract tests; compiler 492/492, ssr-plugin 5/5. PENDING: browser lane (ba2vki10z) executing the 4 contract cases — NOT yet confirmed green; new session must verify before accepting W2c (b21d6fd5)
  • storage: Remove deferred consent — storage is always immediate (storageAccess + enableStorage + mode slot deleted) (f4240a1a)
  • storage: Optional identifier-derived keys — storage(fallback) derives markless: (5fa92987)
  • release: Publish from CI via npm trusted publishing, and cut 0.2.0 (803aeeb8)

🔥 Performance

  • web,compiler,bundler: Recover 69 gzip bytes of emitted runtime (020e1a21)
  • compiler,bundler: Compact serialized bound-row payload encoding (0e93ffc3)
  • storage: Byte-neutrality repair — production no longer ships the 4.6KB-gz dev protocol validator (MARKLESS_DEV_ENABLED define; dev/test validation unchanged); music-player-ssr budget PASS by 2,847 B; vite-csr/vite-plus remain red by 13/19 B = irreducible strict-v2-decoder bytes (OWNER DECISION pending: ~20B budget raise vs specialized v1/v2 entrypoints; validation NOT weakened) (acc7c8eb)

🩹 Fixes

  • router: Deliver scoped TSRX styles (2144f9cf)
  • router: Keep style maps server-only (359d494c)
  • router: Collect finalized route css (b28a339e)
  • router: Make scoped style fallback deterministic (52b34fc9)
  • router: Persist client assets for SSR (7a9dc8d2)
  • bundler: Invalidate ?direct virtual style modules on hot update (76d0e6a0)
  • compiler: Per-variant diagnostic severities so error means must-not-ship (b1330e15)
  • bundler: Gate on severity alone now that compiler owns per-variant calibration (aad14050)
  • typescript-plugin: Canonical parse-failure keys and clamped diagnostic coordinates (f4e3ee87)
  • bundler: Attribute child-scoped symbols in dev byte accounting and label estimates as est. source (b824b2c3)
  • bundler: Recheck invalid sources so byte-identical fixes clear the dev error overlay (2238b5b1)
  • bundler: Harden dev error surface — docsUrl scheme allowlist, recheck lifecycle, deduped preflight sends, positioned editor links (b7f834b8)
  • web: Close critique findings on runner transport and self-wake (1df52bc7)
  • compiler: Async-capable sync computeds are first-class in every context (957a1125)
  • web: Emit the self-wake suffix only for unsettled-boundary documents (93df5546)
  • compiler: Element-valued guard returns now emit a severity-error diagnostic (62fd769b)
  • compiler: Keyed object payloads in lazy symbols, callback arity fails closed (620bd8b5)
  • compiler,web: Authored prop keys and imported sole-root component mounting (f983fe7e)
  • compiler: Harden guard-return and callback emission after adversarial review (5e5a1002)
  • cli: Scaffolded apps now receive a .gitignore (c54966e8)
  • bundler: Production builds emit resolver routes for imported composed children (2ef87083)
  • compiler,web: Capture routing hardened through browser acceptance (bec46c9b)
  • compiler,web,bundler: Cross-module capture metadata and per-edge update records (cc6871db)
  • compiler,bundler: Pre-merge critique repairs — awaited cross-module callbacks, local shadowing, HMR parent invalidation (7cedc79e)
  • bundler: Resolve import specifiers before capture-metadat...
Read more

v0.1.1

Choose a tag to compare

@thejackshelton thejackshelton released this 08 Jul 20:32

What's Changed

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@thejackshelton thejackshelton released this 08 Jul 19:44

What's Changed

  • feat: router work by @thejackshelton in #1
  • ci: run tests and benchmarks as parallel jobs by @thejackshelton in #2
  • TSRX construct rendering: @switch, @empty, dynamic tags, components, async anchors, fragments, scoped styles by @thejackshelton in #4
  • Behavioral completion: branch/list/async resumability, real-browser proof harness, and exact preloading by @thejackshelton in #5
  • ci: install Playwright browsers, align CI with the root test oracle, fix bench resume alias by @thejackshelton in #6
  • feat: chunked runtime + compiler robustness by @thejackshelton in #8
  • Crazy QA: fail-closed compiler — full adversarial audit + all 23 backlog fixes by @thejackshelton in #7
  • benchmark: alias @markless/serializer subpaths in keyed fixture vite config by @thejackshelton in #9
  • router: preload the route-scoped resume-module closure in SSR head links by @thejackshelton in #10

Full Changelog: https://github.com/markless-dev/markless/commits/v0.1.0