@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.
- package/CHANGELOG.md +158 -3
- 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`
|
|
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
|
|
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.
|
|
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.
|
|
23
|
-
"@neuralfog/elemix-analyzer-linux-arm64": "0.9.
|
|
24
|
-
"@neuralfog/elemix-analyzer-darwin-x64": "0.9.
|
|
25
|
-
"@neuralfog/elemix-analyzer-darwin-arm64": "0.9.
|
|
26
|
-
"@neuralfog/elemix-analyzer-win32-x64": "0.9.
|
|
27
|
-
"@neuralfog/elemix-analyzer-win32-arm64": "0.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
|
}
|