@neuralfog/elemix-analyzer 0.9.0-dev.9 → 0.9.1

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 +158 -3
  2. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -3,11 +3,166 @@
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.1] - 2026-07-28
12
+
13
+ ### Fixed
14
+
15
+ - VS Code extension is back on the Marketplace under `0.9.1`. The `0.9.0` listing was
16
+ pulled, and the Marketplace permanently retires a removed extension's ID and burns every
17
+ version number it ever published (the pre-release `0.9.0` builds included), so `0.9.0`
18
+ can never be republished. `0.9.1` is the first clean version it will accept.
19
+
20
+ ### Changed
21
+
22
+ - Whole toolchain bumped to `0.9.1` in lockstep, so the editor extensions never drift from
23
+ the runtime version even when only the VS Code extension needed the re-release.
24
+
25
+ ## [0.9.0] - 2026-07-27
26
+
27
+ ### Changed
28
+
29
+ - Official release of v0.9.0
30
+
31
+ ## [0.9.0-dev.23] - 2026-07-15
32
+
33
+ ### Added
34
+
35
+ - `create-elemix-app` - scaffold a new app from the official template (`npm create elemix-app`)
36
+ - VS Code `.vsix` attached to GitHub Releases, plus a Marketplace link in the release notes
37
+
38
+ ### Changed
39
+
40
+ - Marketplace publish is skipped when the version is already published
41
+
42
+ ## [0.9.0-dev.22] - 2026-07-14
43
+
44
+ ### Added
45
+
46
+ - VS Code extension on the Marketplace
47
+
48
+ ### Changed
49
+
50
+ - Format on save is now an editor toggle, not `elemix.toml`
51
+
52
+ ## [0.9.0-dev.21] - 2026-07-14
53
+
54
+ ### Added
55
+
56
+ - Neovim editor extension
57
+ - Vscode editor extension
58
+
59
+ ### Changed
60
+
61
+ - Formatter is configured from `elemix.toml` (`[formatter]`) this includes editor extensions
62
+
63
+ ### Fixed
64
+
65
+ - Vite plugin now compiles a file whose only hint is `// #shadow`
66
+
67
+ ## [0.9.0-dev.20] - 2026-07-11
68
+
69
+ ### Fixed
70
+
71
+ - 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
72
+
73
+ ## [0.9.0-dev.19] - 2026-07-11
74
+
75
+ ### Added
76
+
77
+ - New `@neuralfog/elemix-testing-library`: shadow-piercing queries (`/query`), real DOM events (`/events`), and `expect`/`waitFor` assertions
78
+
79
+ ### Changed
80
+
81
+ - Compiler conformance stories now assert with `@neuralfog/elemix-testing-library` instead of `storybook/test`
82
+ - Compiler conformance stories now run headless across Chromium, Firefox, and WebKit (Safari's engine)
83
+ - Isolated `Component` internals behind a `$$__` prefix so user code can no longer shadow them
84
+
85
+ ## [0.9.0-dev.18] - 2026-07-10
86
+
87
+ ### Added
88
+
89
+ - Free-standing templates: a `tpl` outside a component now compiles to an inline builder
90
+
91
+ ### Changed
92
+
93
+ - Updated dependencies to their latest versions and TypeScript 7
94
+ - Updated the Rust toolchain and crate dependencies
95
+
96
+ ### Fixed
97
+
98
+ - 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)
99
+
100
+ ## [0.9.0-dev.17] - 2026-07-10
101
+
102
+ ### Added
103
+
104
+ - Formatter: new `@neuralfog/elemix-template-formatter` (`etf`) - a native formatter for the HTML inside `tpl`` templates
105
+
106
+ ### Changed
107
+
108
+ - Compiler: the emitted registration call is now `$__defineComponent`, completing the `$__` prefixing of runtime imports
109
+
110
+ ## [0.9.0-dev.16] - 2026-07-09
111
+
112
+ ### Fixed
113
+
114
+ - Analyzer: `#`/aliased imports from tsconfig `paths` now resolve, so an aliased component import no longer reads as a missing module
115
+
116
+ ## [0.9.0-dev.15] - 2026-07-09
117
+
118
+ ### Changed
119
+
120
+ - 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
121
+
122
+ ## [0.9.0-dev.14] - 2026-07-08
123
+
124
+ ### Added
125
+
126
+ - Runtime: new `match` directive - exhaustive pattern matching for templates. Works on string unions, enums, and tagged object unions (each branch gets the narrowed value)
127
+ - Analyzer: flags a missing case, a wrong case, or a non-finite value (like a plain `string`). Use `choose` for open conditions
128
+
129
+ ### Changed
130
+
131
+ - Compiler: primitive `#state` backing fields are now prefixed (`#__count`) so they can't clash with your own private properties
132
+
133
+ ## [0.9.0-dev.13] - 2026-07-07
134
+
135
+ ### Added
136
+
137
+ - 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)
138
+ - 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
139
+ - Runtime: `config({ shadow: false })` makes components render to light DOM by default (shadow DOM stays the default otherwise)
140
+ - 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
141
+ - Analyzer: reports `#shadow` and `#no-shadow` on the same component as an error
142
+
143
+ ### Changed
144
+
145
+ - 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)
146
+
147
+ ## [0.9.0-dev.12] - 2026-06-30
148
+
149
+ ### Fixed
150
+
151
+ - Runtime: custom events (`@my-event`) now work; `_event` falls back to `addEventListener` when there is no `on*` property
152
+
153
+ ## [0.9.0-dev.11] - 2026-06-30
154
+
155
+ ### Fixed
156
+
157
+ - Compiler: multi-root conditional branches now render every root (only the first was kept before)
158
+
159
+ ## [0.9.0-dev.10] - 2026-06-30
160
+
161
+ ### Fixed
162
+
163
+ - 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)
164
+ - 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
165
+
11
166
  ## [0.9.0-dev.9] - 2026-06-30
12
167
 
13
168
  ### Fixed
@@ -18,7 +173,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
18
173
 
19
174
  ### Added
20
175
 
21
- - `@neuralfog/elemix-analyzer` static analysis tool for elemix
176
+ - `@neuralfog/elemix-analyzer` - static analysis tool for elemix
22
177
 
23
178
  ## [0.9.0-dev.7] - 2026-06-22
24
179
 
@@ -44,7 +199,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
44
199
 
45
200
  - Compiler hints: `#component`/`#tag`/`#form`/`#no-shadow`/`#styles`/`#state`/`#effect` + lifecycle `#before-mount`/`#mount`/`#dispose`
46
201
  - Reactive primitives in component `#state` (`count = 0` stays reactive)
47
- - Component inheritance hooks/effects chain through `super`, stylesheets merge
202
+ - Component inheritance - hooks/effects chain through `super`, stylesheets merge
48
203
  - Collections in reactive state (`Set`/`Map`/`WeakSet`/`WeakMap`), classes in state, `raw()` helper
49
204
  - Source maps back to the original source
50
205
  - 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.9",
3
+ "version": "0.9.1",
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.9",
23
- "@neuralfog/elemix-analyzer-linux-arm64": "0.9.0-dev.9",
24
- "@neuralfog/elemix-analyzer-darwin-x64": "0.9.0-dev.9",
25
- "@neuralfog/elemix-analyzer-darwin-arm64": "0.9.0-dev.9",
26
- "@neuralfog/elemix-analyzer-win32-x64": "0.9.0-dev.9",
27
- "@neuralfog/elemix-analyzer-win32-arm64": "0.9.0-dev.9"
22
+ "@neuralfog/elemix-analyzer-linux-x64": "0.9.1",
23
+ "@neuralfog/elemix-analyzer-linux-arm64": "0.9.1",
24
+ "@neuralfog/elemix-analyzer-darwin-x64": "0.9.1",
25
+ "@neuralfog/elemix-analyzer-darwin-arm64": "0.9.1",
26
+ "@neuralfog/elemix-analyzer-win32-x64": "0.9.1",
27
+ "@neuralfog/elemix-analyzer-win32-arm64": "0.9.1"
28
28
  }
29
29
  }