feat: add syntax extensions #2

Merged
dan merged 4 commits from feat/syntax-extensions into main 2026-09-28 13:21:45 +00:00
Member

Change

Implement syntax-extensions (spec-driven). All 55/55 tasks complete.

Complete

  • Export extension types; register prop, class-name, and element constants.
  • Resolve aliases independent of entry/array order; preserve single-entry alias scope.
  • Reject reserved built-in roots, duplicate keys, missing targets, alias cycles.
  • Longest plain-dot matching; scope shadowing; constant-call and unresolved-path diagnostics.
  • Preserve predefined content order, class fallback, caller arguments on void elements.
  • Use shared runtime attribute replacement/removal and class accumulation semantics.
  • Pass extensions through unplugin pre-scan and Babel transform.
  • Document configuration, constraints, ordering, user-managed declarations.

Verification

  • bun run test: 375 pass, 0 fail.
  • bun run check: all workspace typechecks pass.
  • bun run lint: 0 errors, 51 warnings.
  • git diff --check: clean.
  • openspec instructions apply --change syntax-extensions --json: all_done, 55/55.
  • openspec validate syntax-extensions: valid, no header-mismatch warnings. Both MODIFIED headers now match main specs.
  • openspec validate --all: 36 pass, 5 unrelated changes fail (client-lifecycle-hooks, css-value-helpers, extended-style-attribute, factory-components, ref-tag-name-generic). Left unchanged.
  • No archive attempted.
  • Bun emits directory-mismatch diagnostic during test startup; suites exit successfully.

Planning Artifacts

Approved example corrections, completed task tracking, and header fixes saved locally in linked planning repository; not included in this code-repository PR. Built-in CSS roots container and d replaced by custom example identifiers panel and divAlias; class strings retained. Stale thunk examples corrected to direct arguments.

Commits

  • adf5c12 feat(babel): resolve extension primitives and aliases
  • 9f62e5e feat(babel): lower extension syntax and validate paths
  • 3392faa feat(plugin): pass extensions through pre-scan and transform
  • 35baad5 docs: explain syntax extension configuration and semantics
## Change Implement `syntax-extensions` (spec-driven). All 55/55 tasks complete. ## Complete - Export extension types; register prop, class-name, and element constants. - Resolve aliases independent of entry/array order; preserve single-entry alias scope. - Reject reserved built-in roots, duplicate keys, missing targets, alias cycles. - Longest plain-dot matching; scope shadowing; constant-call and unresolved-path diagnostics. - Preserve predefined content order, class fallback, caller arguments on void elements. - Use shared runtime attribute replacement/removal and class accumulation semantics. - Pass extensions through unplugin pre-scan and Babel transform. - Document configuration, constraints, ordering, user-managed declarations. ## Verification - `bun run test`: 375 pass, 0 fail. - `bun run check`: all workspace typechecks pass. - `bun run lint`: 0 errors, 51 warnings. - `git diff --check`: clean. - `openspec instructions apply --change syntax-extensions --json`: all_done, 55/55. - `openspec validate syntax-extensions`: valid, no header-mismatch warnings. Both MODIFIED headers now match main specs. - `openspec validate --all`: 36 pass, 5 unrelated changes fail (client-lifecycle-hooks, css-value-helpers, extended-style-attribute, factory-components, ref-tag-name-generic). Left unchanged. - No archive attempted. - Bun emits directory-mismatch diagnostic during test startup; suites exit successfully. ## Planning Artifacts Approved example corrections, completed task tracking, and header fixes saved locally in linked planning repository; not included in this code-repository PR. Built-in CSS roots `container` and `d` replaced by custom example identifiers `panel` and `divAlias`; class strings retained. Stale thunk examples corrected to direct arguments. ## Commits - adf5c12 feat(babel): resolve extension primitives and aliases - 9f62e5e feat(babel): lower extension syntax and validate paths - 3392faa feat(plugin): pass extensions through pre-scan and transform - 35baad5 docs: explain syntax extension configuration and semantics
feat(babel): resolve extension primitives and aliases
All checks were successful
Checks / checks (pull_request) Successful in 13s
Checks / release (pull_request) Has been skipped
adf5c120d2
feat(babel): lower extension syntax and validate paths
All checks were successful
Checks / checks (pull_request) Successful in 13s
Checks / release (pull_request) Has been skipped
9f62e5e354
feat(plugin): pass extensions through pre-scan and transform
All checks were successful
Checks / checks (pull_request) Successful in 13s
Checks / release (pull_request) Has been skipped
3392faad50
docs: explain syntax extension configuration and semantics
All checks were successful
Checks / checks (pull_request) Successful in 13s
Checks / release (pull_request) Has been skipped
35baad5d1c
dan merged commit a7f42e3d5c into main 2026-09-28 13:21:45 +00:00
dan deleted branch feat/syntax-extensions 2026-09-28 13:21:45 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sigitex/hypeup!2
No description provided.