enzotar
a65094c0d2
compiler: v0.8–v1.0 milestones — generics, traits, async/effects, production hardening
...
v0.8.0: Generics, Trait System, LSP Foundation (322 tests)
- ds-parser: GenericParam, TraitDecl, ImplBlock, WhereClause, DefaultParam, Destructure
- ds-types: GenericType, TraitRegistry, TypeExpander
- ds-analyzer: AdvancedAnalyzer (unused imports, memo, dep depth, hot paths)
- ds-codegen: CodeGenV2 (generic erasure, for-in/yield, tree shaking, minify)
- ds-layout: FlexLayout (gap, padding, margin, border, position, alignment)
- ds-diagnostic: LspDiagnostic, DiagnosticBatch (LSP format, suppression, dedup)
- ds-incremental: IncrementalV2 (content hash, compile queue, error cache)
v0.9.0: Async/Await, Effect System, Production Hardening (385 tests)
- ds-parser: AsyncFn, EffectDeclV2, TryCatch, PipelineExpr, Decorator
- ds-types: AsyncType (Promise/Future/Effect/Result), AdvancedType (intersection/mapped/conditional/branded)
- ds-analyzer: ProductionAnalyzer (async boundaries, purity, complexity, coverage)
- ds-codegen: CodeGenV3 (async/await, try/catch, pipeline, chunks, CSS, HMR)
- ds-layout: AdvancedLayout (scroll, sticky, flex grow/shrink, shadow, transition)
- ds-diagnostic: DiagnosticPipeline, DiagTag (file index, lint rules, escalation)
- ds-incremental: BuildPipeline (profiles, workers, artifacts, source maps)
v1.0.0: Production-Ready Compiler with Stable API (511 tests)
- ds-parser: ParseError1, PartialAst, VisibilityV2, Namespace, DocComment, Pragma, NumericLit, ParseStats
- ds-types: TypeInference (HM unification), SubtypeChecker, TypeSystemExt (opaque/existential/HKT)
- ds-analyzer: FullAnalyzer (call graph, dead code, tail call, borrow check, vectorize)
- ds-codegen: CodeGenFull (WASM, SSR, hydration, CSS modules, import maps, SIMD)
- ds-layout: Animation, TextLayout, MediaQuery, ColorSpace, Gradient, Filter, LayoutStats
- ds-diagnostic: DiagnosticSuite (SARIF, code frames, budgets, baselines, trending)
- ds-incremental: BuildSystem (remote cache, build graph, plugins, hermetic, signing)
2026-03-11 16:16:42 -07:00
enzotar
4a15e0b70c
feat: Bump package versions, add physics body sleeping, revolute motor, and prismatic joints, and enhance type checker exhaustiveness.
2026-03-10 21:07:22 -07:00
enzotar
b0440e2e47
feat(compiler): v0.4 + v0.5 — CLI modularity, diagnostic pipeline, test suite
...
v0.4 — CLI Modularity:
- Split monolithic main.rs (2,038 lines) into 8 command modules + slim dispatch (107 lines)
- Add 12 JS codegen tests (signals, derived, views, events, loops, match, enums, components, interpolation, springs, tree-shaking)
v0.5 — Diagnostic Quality + Analyzer Confidence:
- Add From<ParseError> for Diagnostic (E0001) in ds-diagnostic
- Add errors_as_diagnostics() to TypeChecker (E0100–E0110)
- Wire Elm-style diagnostics through dreamstack check and build commands
- Switch incremental compiler to parse_program_resilient() for multi-error collection
- Add 12 analyzer tests (chains, fan-out, diamond deps, empty programs, conditionals, handlers, views)
- Add 2 diagnostic conversion tests
Test suite: 97 → 123 tests (26 new, 0 failures)
2026-03-10 09:09:02 -07:00
enzotar
878e55b962
chore: add per-package versioning, changesets, and clean changelogs
...
- Add cliff.toml for git-cliff changelog generation (one-line entries,
no commit body dumps, improve/refine prefixes mapped)
- Add @changesets/cli config and README in .changeset/
- Add release.sh script with per-package version bumps from changesets,
changeset-driven per-crate changelog updates, and --all/--dry-run flags
- Switch all crates from workspace version to independent version = "0.1.0"
- Generate clean root CHANGELOG.md and per-crate CHANGELOGs with [0.1.0]
- Retag v1.0.0 → v0.1.0 to match actual crate versions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 23:12:54 -07:00
enzotar
bf2b7c3cd5
feat: Implement Panel IR emitter to generate JSON UI descriptions for LVGL panels.
2026-03-06 20:06:33 -08:00
enzotar
cc6aac8697
feat: Add Waveshare P4 panel device integration with display streaming and touch input, alongside core streaming engine and compiler updates.
2026-03-02 16:08:49 -08:00
enzotar
f63ff52e2a
feat: upgrade init starter app to showcase all DreamStack features
...
- Imports Card, Badge, Button from components/
- Counter with callback props, Greeting with when/else
- Mood match expression with Badge, Todo dynamic lists
- Full init → build flow verified (51,401 bytes, 0 errors)
2026-02-26 16:57:08 -08:00
enzotar
5425d7768c
feat: dev server improvements - recursive watching, auto-open browser
...
- Recursive file watching: catches imported file changes from registry/
- Auto-detect project root: walks up to find registry/ or examples/ dir
- Auto-open browser on startup (xdg-open/open/cmd)
- Verified HMR live reload: 0ms recompile on file save
2026-02-26 16:19:33 -08:00
enzotar
008f164ae7
feat: each loop, dreamstack init, expanded registry
...
Language:
- each item in list -> template (reactive list rendering)
- each/in tokens in lexer, Expr::Each in AST
- Reactive forEach codegen with scope push/pop
- Container trailing props: column [...] { variant: card }
CLI:
- dreamstack init [name] - scaffold new project
- Generates app.ds, components/, dreamstack.json
- 4 starter components (button, card, badge, input)
Registry expanded to 11 components:
- NEW: progress, alert, separator, toggle, avatar
- All embedded via include_str!
CSS: progress bar, avatar, separator, alert variants,
toggle switch, stat values (230+ lines design system)
Examples:
- each-demo.ds: list rendering demo
- dashboard.ds: glassmorphism cards with container variant
2026-02-26 14:42:00 -08:00
enzotar
a290bc1891
feat: container variant props, 11-component registry, rich dashboard
...
Parser:
- column/row/stack now parse trailing { props } after ]
- Enables: column [...] { variant: "card" }
Codegen:
- Container props dispatch: variant, class, click, style, layout
- variant_to_css() maps (tag, variant) → CSS class
- variant_map_js() for dynamic variants via inline JS map
- 230+ lines design system CSS (button/badge/card/dialog/toast/
progress/alert/separator/toggle/avatar/stat)
Registry (11 components):
- button, input, card, badge, dialog, toast
- NEW: progress, alert, separator, toggle, avatar
- All embedded via include_str! for offline use
Examples:
- showcase.ds: component gallery with variant prop
- dashboard.ds: admin dashboard with glassmorphism cards
2026-02-26 13:58:33 -08:00
enzotar
7805b94704
feat: component registry with styled variants, dreamstack add/convert CLI, and showcase
...
- Phase 1: Component parser + codegen (emit_component_decl, emit_component_use, emit_match)
- Phase 2: 6 registry components (button, input, card, badge, dialog, toast)
- Phase 3: dreamstack add CLI with dependency resolution and --list/--all
- Phase 4: dreamstack convert TSX→DS transpiler with --shadcn GitHub fetch
- Phase 5: 120+ lines variant CSS (buttons, badges, cards, dialog, toast, input)
- New example: showcase.ds demonstrating all component styles
2026-02-26 13:27:49 -08:00
enzotar
6368b798cf
feat: v2 module system — import/export with multi-file compilation
...
Syntax:
import { Counter, shared_count } from "./shared"
export let shared_count = 0
export component Counter = ...
Implementation:
- Lexer: Import, Export keywords
- AST: ImportDecl(names, source), Export(name, inner_decl)
- Parser: parse_import_decl, parse_export_decl
- CLI: resolve_imports() — recursive file resolution, dedup, inline
Resolves relative paths, adds .ds extension, handles transitive imports.
110 tests, 0 failures.
2026-02-25 20:36:18 -08:00
enzotar
d86818ca6a
feat(compiler): full bitstream integration across 7 pipeline stages
...
AST: StreamDecl, StreamMode, Expr::StreamFrom { source, mode }
Lexer: Pixel, Delta, Signals keywords
Parser: parse_stream_decl() with mode parsing, StreamFrom expression
Signal Graph: streamable flag on SignalNode, auto-detect stream decls
Type Checker: StreamFrom returns Type::Stream
Codegen: emit_stream_init phase, StreamFrom → DS.streamConnect(),
streaming runtime JS (WebSocket relay, binary protocol, signal frames,
remote input handler, auto-reconnect)
CLI: 'dreamstack stream' command — compile+serve with streaming enabled,
auto-inject stream declaration for the first view
All 77 workspace tests pass, 0 failures.
2026-02-25 13:13:21 -08:00
enzotar
c9b1913a57
feat: dev server with file watching + poll-based HMR
...
- File watcher thread using notify crate (100ms debounce)
- Auto-recompiles .ds files on change with timed output
- Poll-based HMR: client fetches /__hmr every 500ms for version
- Injects HMR script into compiled HTML before </body>
- Error pages rendered with DreamStack styling on compile failure
- Version counter shared between watcher and HTTP server via AtomicU64
2026-02-25 01:01:59 -08:00
enzotar
a634152318
feat: DreamStack compiler foundation — Phase 0/1
...
Complete compiler pipeline from .ds source to reactive browser apps:
- ds-parser: lexer (string interpolation, operators, keywords) + recursive
descent parser with operator precedence + full AST types
- ds-analyzer: signal graph extraction (source/derived classification),
topological sort for glitch-free propagation, DOM binding analysis
- ds-codegen: JavaScript emitter with embedded reactive runtime (~3KB
signal/derived/effect system) and dark-theme CSS design system
- ds-cli: build (compile to HTML+JS), dev (live server), check (analyze)
Verified working: source signals, derived signals, event handlers,
conditional rendering (when), 12 unit tests passing, 6.8KB output.
2026-02-25 00:03:06 -08:00