Skip to content

Build the VelarScript 1.0 Web foundation - #1

Merged
Error-Zhang merged 3 commits into
mainfrom
codex/velarscript-1-0-foundation
Aug 3, 2026
Merged

Error-Zhang merged 3 commits into
mainfrom
codex/velarscript-1-0-foundation

Conversation

@Error-Zhang

Copy link
Copy Markdown
Contributor

What changed

  • separates JSX, components, lifecycle, reactivity, browser policy, and Web runtime into the independently versioned @velarscript/web extension
  • adds the create-velar scaffolder, npm-backed dependency commands, framework-host boundaries, reproducible packed-toolchain rehearsal, and installed-project acceptance
  • expands the Core language, standard APIs, LSP/editor semantics, real applications, and three-engine browser coverage
  • adds Web API 0.8, including bounded application-local domId, and makes defaultable parameters precise in function identity, assignability, hover, and signature help
  • removes obsolete legacy project-upgrade fixtures and compiler-owned Web compatibility paths as a deliberate clean break

Why

VelarScript is intended to be a clean Web-first language and framework rather than a compiler with hidden Web behavior inside the CLI. This change establishes separate compiler, Web framework, creator, application, and generic-editor boundaries while keeping JavaScript runtime semantics.

User impact

A new project can be created, checked, tested, built, verified, and browser-tested entirely from packed Velar packages. Web applications use explicit @velarscript/web extension ownership, and Workbench consumes standard compiler/LSP results without embedding Velar language rules.

Validation

  • npm run check
  • npm test — 197 compiler/CLI tests plus FlowBoard, SupportDesk, and API Dashboard Core suites
  • npm run test:packages
  • npm run test:browser — development, verified CSP production, Chromium, Firefox, WebKit, real applications, and installed-project acceptance
  • Website npm run check
  • Workbench bun run typecheck
  • Workbench installed-toolchain acceptance against a fresh non-publishing rehearsal

@Error-Zhang

Copy link
Copy Markdown
Contributor Author

External dogfood and delivery evidence is now available from the independent public VelarScript-Website repository at commit 266e247.

Its successful CI run checks out the exact toolchain source identity 0faf7d5, creates and installs the verified four-package rehearsal, runs Website validation, creates the Netlify candidate twice and compares every byte, verifies the candidate over a real HTTP preview boundary, passes Chromium/Firefox/WebKit, and uploads velarscript-website-netlify-266e247ad4ecd1e4928a4b49b1107e3a93d90755.

The retained candidate has build ID c7b0a66863096be53c88051c53a12d6b05d1227141bc2298b154b60e5c9cc06c, Web API 0.8, no source maps, and the checked Netlify adapter contract. No hosted deployment or npm publication was performed.

@Error-Zhang
Error-Zhang marked this pull request as ready for review August 3, 2026 05:52
@Error-Zhang
Error-Zhang merged commit d80c62c into main Aug 3, 2026
8 checks passed
Error-Zhang added a commit that referenced this pull request Aug 22, 2026
A root-cause pass over the audit's own fixes, run through six independent
lenses, found ten design decisions whose cost showed up as clusters of defects
rather than as single bugs. Four are settled here.

The pattern behind all of them is one the owner named while asking about
`watch`: when a construct admits an arbitrary shape, the property you need from
it has to be INFERRED, and every inference has an edge that the next round finds
— a helper call, then an alias, then a `let`. Narrowing the construct ends the
chase, and it makes the rule easier to state.

R15 does that twice. A `watch` subject is now the name of a `state` or a
`computed`, or a read path into one — no operators, no calls — so which state a
watch depends on is declared rather than deduced. And `cached` is deleted: its
intrinsic was literally named `reactive.computed`, it was the same cache as
`computed` read by calling instead of bare, and its `() -> T` type was
indistinguishable from any zero-argument function, which is why the compiler
could not see it was a derived value. That is where D69's silently-dead watch
came from. `computed` already caches; nothing was lost but a second spelling.

R17 finishes what R12 started. R12 refused `any` at export positions; the
boundary now hands back `unknown`, so a foreign value must be validated before a
member, call or operator touches it, and `any` can no longer originate anywhere.
R18 gives `@iterate:` an async form, so an async stream is declared like a
synchronous one — and deletes the source comments that justified duck-typing by
an ownership question the code never asked. R19 states the layering the tree was
already half-following: compile time decides what it can, the runtime decides
what only exists at run time, and only what neither can decide reaches the
owner. Its first application is route overlap, which now sees through the
path-preserving combinators and re-checks the assembled table at startup.

Three gates carried numbers the code had outgrown — the tour-coverage floors,
the boundary gate's pre-R17 phrase, and a module count the gate and its test read
from two different rosters, differing by the one surface (`velar/serve`) that the
CLI facade composes twice. The last is the audit's own shape #1 hiding in the
gate meant to catch it.

`npm run check` passes and 2198 tests pass with none failing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Error-Zhang
Error-Zhang deleted the codex/velarscript-1-0-foundation branch August 26, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant