@neuralfog/elemix-analyzer 0.9.0-dev.8 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +150 -3
  2. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -3,16 +3,163 @@
3
3
  All notable changes to elemix and its companion packages are documented here. They
4
4
  share one version and release together, so they share one changelog. The format
5
5
  follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
6
- and this project adheres to [Semantic Versioning](https://semver.org/).
6
+ and this project adheres to [Semantic Versioning](https://semver.org/) when it suits me 😂😂😂.
7
7
 
8
8
  > The [Roadmap](https://github.com/neuralfog/elemix/blob/main/ROADMAP.md) is the full
9
9
  > log of development.
10
10
 
11
+ ## [0.9.0] - 2026-07-27
12
+
13
+ ### Changed
14
+
15
+ - Official release of v0.9.0
16
+
17
+ ## [0.9.0-dev.23] - 2026-07-15
18
+
19
+ ### Added
20
+
21
+ - `create-elemix-app` - scaffold a new app from the official template (`npm create elemix-app`)
22
+ - VS Code `.vsix` attached to GitHub Releases, plus a Marketplace link in the release notes
23
+
24
+ ### Changed
25
+
26
+ - Marketplace publish is skipped when the version is already published
27
+
28
+ ## [0.9.0-dev.22] - 2026-07-14
29
+
30
+ ### Added
31
+
32
+ - VS Code extension on the Marketplace
33
+
34
+ ### Changed
35
+
36
+ - Format on save is now an editor toggle, not `elemix.toml`
37
+
38
+ ## [0.9.0-dev.21] - 2026-07-14
39
+
40
+ ### Added
41
+
42
+ - Neovim editor extension
43
+ - Vscode editor extension
44
+
45
+ ### Changed
46
+
47
+ - Formatter is configured from `elemix.toml` (`[formatter]`) this includes editor extensions
48
+
49
+ ### Fixed
50
+
51
+ - Vite plugin now compiles a file whose only hint is `// #shadow`
52
+
53
+ ## [0.9.0-dev.20] - 2026-07-11
54
+
55
+ ### Fixed
56
+
57
+ - Storybook: `elemixDecorator` no longer pre-mounts the story into `#storybook-root`; it renders into a detached host that Storybook mounts itself. Under the Vitest runner the canvas is a per-test element, so the old pre-mount left the component connected to the wrong tree and a subsequent move disconnected it - tearing down its reactive scopes, so interactions stopped updating the DOM
58
+
59
+ ## [0.9.0-dev.19] - 2026-07-11
60
+
61
+ ### Added
62
+
63
+ - New `@neuralfog/elemix-testing-library`: shadow-piercing queries (`/query`), real DOM events (`/events`), and `expect`/`waitFor` assertions
64
+
65
+ ### Changed
66
+
67
+ - Compiler conformance stories now assert with `@neuralfog/elemix-testing-library` instead of `storybook/test`
68
+ - Compiler conformance stories now run headless across Chromium, Firefox, and WebKit (Safari's engine)
69
+ - Isolated `Component` internals behind a `$$__` prefix so user code can no longer shadow them
70
+
71
+ ## [0.9.0-dev.18] - 2026-07-10
72
+
73
+ ### Added
74
+
75
+ - Free-standing templates: a `tpl` outside a component now compiles to an inline builder
76
+
77
+ ### Changed
78
+
79
+ - Updated dependencies to their latest versions and TypeScript 7
80
+ - Updated the Rust toolchain and crate dependencies
81
+
82
+ ### Fixed
83
+
84
+ - Storybook: `ElemixStory` now exposes every property of the underlying story type (`play`, `beforeEach`, `tags`, ...) instead of a hand-picked subset; removed the dead `setup` hook (`beforeRender`/`afterRender` remain)
85
+
86
+ ## [0.9.0-dev.17] - 2026-07-10
87
+
88
+ ### Added
89
+
90
+ - Formatter: new `@neuralfog/elemix-template-formatter` (`etf`) - a native formatter for the HTML inside `tpl`` templates
91
+
92
+ ### Changed
93
+
94
+ - Compiler: the emitted registration call is now `$__defineComponent`, completing the `$__` prefixing of runtime imports
95
+
96
+ ## [0.9.0-dev.16] - 2026-07-09
97
+
98
+ ### Fixed
99
+
100
+ - Analyzer: `#`/aliased imports from tsconfig `paths` now resolve, so an aliased component import no longer reads as a missing module
101
+
102
+ ## [0.9.0-dev.15] - 2026-07-09
103
+
104
+ ### Changed
105
+
106
+ - Compiler/Runtime: every runtime function the compiled output imports is now `$__` prefixed (`$__template`, `$__setText`, `$__state` etc) so it can't clash with a user's own module-scope names
107
+
108
+ ## [0.9.0-dev.14] - 2026-07-08
109
+
110
+ ### Added
111
+
112
+ - Runtime: new `match` directive - exhaustive pattern matching for templates. Works on string unions, enums, and tagged object unions (each branch gets the narrowed value)
113
+ - Analyzer: flags a missing case, a wrong case, or a non-finite value (like a plain `string`). Use `choose` for open conditions
114
+
115
+ ### Changed
116
+
117
+ - Compiler: primitive `#state` backing fields are now prefixed (`#__count`) so they can't clash with your own private properties
118
+
119
+ ## [0.9.0-dev.13] - 2026-07-07
120
+
121
+ ### Added
122
+
123
+ - Runtime: `createApp(root?)` bootstrap with chainable `.config({ … })` / `.mount(target?)`; app-wide config lives on `window.__elemix__` (the root and both calls are optional, so `createApp().config({ … })` is valid)
124
+ - Runtime: automatic cloaking - elemix adopts a `[data-cloak], :not(:defined) { visibility: hidden }` stylesheet so elements don't flash before they upgrade and mount, with no per-app CSS; `config({ cloak: '…' })` replaces the rule with a custom CSS string
125
+ - Runtime: `config({ shadow: false })` makes components render to light DOM by default (shadow DOM stays the default otherwise)
126
+ - Compiler: new `#shadow` hint forces a shadow root even under a light-DOM default; it is mutually exclusive with `#no-shadow`, and using both on one component is a compile error
127
+ - Analyzer: reports `#shadow` and `#no-shadow` on the same component as an error
128
+
129
+ ### Changed
130
+
131
+ - Storybook: ditched lit - `@neuralfog/elemix-storybook` and the storybook config now run on `@storybook/html-vite` instead of `@storybook/web-components-vite`, dropping lit-html from the dependency tree entirely (elemix always rendered plain string/Node, so lit was never used)
132
+
133
+ ## [0.9.0-dev.12] - 2026-06-30
134
+
135
+ ### Fixed
136
+
137
+ - Runtime: custom events (`@my-event`) now work; `_event` falls back to `addEventListener` when there is no `on*` property
138
+
139
+ ## [0.9.0-dev.11] - 2026-06-30
140
+
141
+ ### Fixed
142
+
143
+ - Compiler: multi-root conditional branches now render every root (only the first was kept before)
144
+
145
+ ## [0.9.0-dev.10] - 2026-06-30
146
+
147
+ ### Fixed
148
+
149
+ - Compiler: helper templates are now inlined inside a method-form `template()` (the splice pre-pass previously only saw the `template = () =>` arrow field, so helpers in a method template were left as runtime calls returning uncompiled `tpl` and threw)
150
+ - Compiler: a helper call nested inside another template (e.g. a `${cond ? tpl\`…${this.row(x)}…\` : tpl\`\`}` branch) is now inlined; the splice recurses into nested template holes instead of copying them verbatim
151
+
152
+ ## [0.9.0-dev.9] - 2026-06-30
153
+
154
+ ### Fixed
155
+
156
+ - Compiler: a `template()` method now lowers to `view()` like the `template = () =>` arrow field; previously only the arrow field was compiled, so the method form was left uncompiled and threw at runtime
157
+
11
158
  ## [0.9.0-dev.8] - 2026-06-24
12
159
 
13
160
  ### Added
14
161
 
15
- - `@neuralfog/elemix-analyzer` static analysis tool for elemix
162
+ - `@neuralfog/elemix-analyzer` - static analysis tool for elemix
16
163
 
17
164
  ## [0.9.0-dev.7] - 2026-06-22
18
165
 
@@ -38,7 +185,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
38
185
 
39
186
  - Compiler hints: `#component`/`#tag`/`#form`/`#no-shadow`/`#styles`/`#state`/`#effect` + lifecycle `#before-mount`/`#mount`/`#dispose`
40
187
  - Reactive primitives in component `#state` (`count = 0` stays reactive)
41
- - Component inheritance hooks/effects chain through `super`, stylesheets merge
188
+ - Component inheritance - hooks/effects chain through `super`, stylesheets merge
42
189
  - Collections in reactive state (`Set`/`Map`/`WeakSet`/`WeakMap`), classes in state, `raw()` helper
43
190
  - Source maps back to the original source
44
191
  - Inlined compiler diagnostics with `--strict`; CLI version banner
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuralfog/elemix-analyzer",
3
- "version": "0.9.0-dev.8",
3
+ "version": "0.9.0",
4
4
  "description": "Template prop typechecker for Elemix (ec-analyzer)",
5
5
  "license": "MIT",
6
6
  "author": "brownhounds",
@@ -19,11 +19,11 @@
19
19
  "CHANGELOG.md"
20
20
  ],
21
21
  "optionalDependencies": {
22
- "@neuralfog/elemix-analyzer-linux-x64": "0.9.0-dev.8",
23
- "@neuralfog/elemix-analyzer-linux-arm64": "0.9.0-dev.8",
24
- "@neuralfog/elemix-analyzer-darwin-x64": "0.9.0-dev.8",
25
- "@neuralfog/elemix-analyzer-darwin-arm64": "0.9.0-dev.8",
26
- "@neuralfog/elemix-analyzer-win32-x64": "0.9.0-dev.8",
27
- "@neuralfog/elemix-analyzer-win32-arm64": "0.9.0-dev.8"
22
+ "@neuralfog/elemix-analyzer-linux-x64": "0.9.0",
23
+ "@neuralfog/elemix-analyzer-linux-arm64": "0.9.0",
24
+ "@neuralfog/elemix-analyzer-darwin-x64": "0.9.0",
25
+ "@neuralfog/elemix-analyzer-darwin-arm64": "0.9.0",
26
+ "@neuralfog/elemix-analyzer-win32-x64": "0.9.0",
27
+ "@neuralfog/elemix-analyzer-win32-arm64": "0.9.0"
28
28
  }
29
29
  }