taet-ui 0.6.0-rc.3 → 0.6.0-rc.4
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 +12 -2
- package/README.md +52 -6
- package/THIRD_PARTY_NOTICES.md +6 -6
- package/docs/AI_CONTEXT.md +1 -1
- package/docs/NATIVE_ACCEPTANCE.md +2 -2
- package/docs/STABLE_API.md +1 -1
- package/docs/TAET_MIGRATION.md +61 -60
- package/docs/VERIFICATION.md +145 -5
- package/docs/VERSIONING.md +2 -2
- package/docs/src/main.js +1 -1
- package/docs/src/pages/List.pages.js +3 -3
- package/examples/tauri-minimal/README.md +1 -1
- package/package.json +1 -1
- package/provenance/grid-candidate.json +4 -4
- package/src/ui/GridRowReorderController.js +1 -1
- package/src/ui/ThemeDesigner.d.ts +1 -1
- package/src/ui/theme-designer/editor.js +2 -2
- package/src/ui/theme-designer/preset-toolbar.js +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
# Tæt UI changes
|
|
2
2
|
|
|
3
|
+
## 0.6.0-rc.4 - release candidate, 2026-11-03
|
|
4
|
+
|
|
5
|
+
- Clean current branding, remove the private historical CI link and update local benchmark/demo identifiers.
|
|
6
|
+
- Export taet-ui-theme v1 files as .taet-theme.json; keep importing the previous v1 format and bare definitions.
|
|
7
|
+
- Prefer taet-ui.theme-editor.v1 storage, fall back to the previous key and write only the current key; opening an editor does not migrate or erase stored data.
|
|
8
|
+
- Expose taetUiDocs and taetThemeEditor while retaining existing host aliases; preserve CSS selectors, CSS imports and cross-version drag MIME contracts.
|
|
9
|
+
- Rename the row-drag plain-text label to Tæt UI rows without changing reorder behavior.
|
|
10
|
+
- Add the real light/dark Atelier desktop showcase, a reproducible host example and documented consumer-trial limitations.
|
|
11
|
+
- Published rc.3 packages, release assets and source history remain unchanged. Publication outcomes are recorded in the matching GitHub prerelease notes.
|
|
12
|
+
|
|
3
13
|
## 0.6.0-rc.3 — local migration, 2026-11-03
|
|
4
14
|
|
|
5
15
|
- Rename display branding to Tæt UI, package/imports/assets to taet-ui.
|
|
6
16
|
- Preserve the released rc.2 framework scope and zero runtime dependencies.
|
|
7
17
|
- Integrate the accepted PropertyGrid gutter-border and selection-marker CSS patch.
|
|
8
18
|
- Retain legacy CSS selectors, tokens, drag/theme formats and the dense.css alias.
|
|
9
|
-
- Start new history, preserving the original
|
|
19
|
+
- Start new history, preserving the original project folders/tags and provenance.
|
|
10
20
|
- Use owned Node HTTP fixtures for browser gates; retain all assertions.
|
|
11
21
|
- Add classic TaetUI IIFE delivery alongside ESM, with minified variants and portable ZIP examples/checksums.
|
|
12
22
|
- Prepare public npm metadata and the next preview channel; publication outcomes are verified separately. See docs/TAET_MIGRATION.md.
|
|
13
23
|
|
|
14
|
-
The following
|
|
24
|
+
The following pre-rename changelog is historical and keeps exact released versions.
|
|
15
25
|
|
|
16
26
|
# Changelog
|
|
17
27
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Compact desktop UI controls for embedded WebViews. Build screens with live
|
|
|
4
4
|
JavaScript objects, explicit ownership, events, commands and data models.
|
|
5
5
|
No JSX, virtual DOM, runtime npm dependencies or CDN.
|
|
6
6
|
|
|
7
|
-
**0.6.0-rc.
|
|
7
|
+
**0.6.0-rc.4 is a pre-1.0 release candidate; published rc.3 artifacts remain unchanged.** Grid/TreeGrid and Advanced remain experimental.
|
|
8
8
|
Source packages and standalone WebView ZIPs are separate delivery choices.
|
|
9
9
|
The npm preview channel uses `next`: `npm install taet-ui@next`; publication
|
|
10
10
|
status is recorded in the matching GitHub prerelease notes.
|
|
@@ -60,6 +60,51 @@ In Windows PowerShell, use `npm.cmd run dev -- --port 5641` if the npm.ps1 shim
|
|
|
60
60
|
consumes forwarded options. Check `node --version`, `npm --version` and
|
|
61
61
|
`python --version` before starting.
|
|
62
62
|
|
|
63
|
+
## Desktop showcase
|
|
64
|
+
|
|
65
|
+
[Atelier](https://github.com/edward-ap/taet-ui/tree/main/examples/desktop-showcase) is a runnable dummy IDE made from
|
|
66
|
+
TreeList, DockLayout/DockPanel, MdiWorkspace, PropertyGrid, TabBar, Menu, Toolbar,
|
|
67
|
+
Form and Dialog. Project data and build/run actions are synthetic. These are real
|
|
68
|
+
controls in the same live application, captured in the built-in light/dark themes
|
|
69
|
+
from the rc.4 candidate.
|
|
70
|
+
|
|
71
|
+

|
|
72
|
+
|
|
73
|
+
*Light theme — the project tree selects the object inspected beside the MDI workspace.*
|
|
74
|
+
|
|
75
|
+

|
|
76
|
+
|
|
77
|
+
*Dark theme — switched on the same instance without losing edits or window state.*
|
|
78
|
+
|
|
79
|
+
<img src="https://raw.githubusercontent.com/edward-ap/taet-ui/main/.github/screenshots/desktop-ide-dialog.png" width="320" alt="Actual modal Run configuration dialog with program arguments, Cancel and Run preview actions">
|
|
80
|
+
|
|
81
|
+
*The run configuration uses a real modal Dialog and Form; fixed side placement is host CSS.*
|
|
82
|
+
|
|
83
|
+
UI composition uses live objects and explicit ownership. For example, the workspace
|
|
84
|
+
frame is ordinary JavaScript; the complete [example](https://github.com/edward-ap/taet-ui/tree/main/examples/desktop-showcase)
|
|
85
|
+
also wires selection, descriptor setters, commands, tabs and cleanup:
|
|
86
|
+
|
|
87
|
+
```js
|
|
88
|
+
import {DataStore} from 'taet-ui';
|
|
89
|
+
import {TreeList} from 'taet-ui/components';
|
|
90
|
+
import {DockLayout, DockPanel, MdiWorkspace} from 'taet-ui/advanced';
|
|
91
|
+
|
|
92
|
+
const records = new DataStore();
|
|
93
|
+
records.parse([{id: 'project', parentId: null, text: 'Demo project'}]);
|
|
94
|
+
const dock = new DockLayout('#desktop', {leftSize: 216, rightSize: 268});
|
|
95
|
+
const explorer = dock.addPanel(new DockPanel({id: 'explorer', title: 'Project', area: 'left'}));
|
|
96
|
+
explorer.add(new TreeList({data: records, textField: 'text'}));
|
|
97
|
+
const center = dock.addPanel(new DockPanel({id: 'editor', title: 'Workspace', area: 'center'}));
|
|
98
|
+
center.add(new MdiWorkspace({width: '100%', height: '100%'}));
|
|
99
|
+
const destroy = () => { dock.destroy(); records.destroy(); };
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The host supplies data, actions and layout CSS. A WebView can serve the full ESM
|
|
103
|
+
profile with matching local CSS/fonts through its own origin; Node/npm are build
|
|
104
|
+
tools. The example explains the import map and teardown. Desktop APIs retain their
|
|
105
|
+
[experimental maturity](docs/STABLE_API.md); the consumer trial and its API friction
|
|
106
|
+
are described in the [example notes](https://github.com/edward-ap/taet-ui/tree/main/examples/desktop-showcase).
|
|
107
|
+
|
|
63
108
|
## Use it in a WebView
|
|
64
109
|
|
|
65
110
|
Copy one built profile's JS, matching CSS, `fonts/`, `LICENSE` and
|
|
@@ -86,12 +131,12 @@ export function destroy() { screen.destroy(); } // Host calls this when closing.
|
|
|
86
131
|
```
|
|
87
132
|
|
|
88
133
|
A source-only [minimal Tauri host](examples/tauri-minimal/README.md) demonstrates
|
|
89
|
-
a compact Form and bounded Rust echo. Its historical
|
|
134
|
+
a compact Form and bounded Rust echo. Its historical pre-rename Windows smoke passed
|
|
90
135
|
7/7 programmatic checks. A renamed Tæt UI native rebuild, physical input and other OSes remain unverified.
|
|
91
136
|
|
|
92
137
|
For TypeScript or resolver-based apps, `npm pack --pack-destination ..` creates
|
|
93
|
-
the local `taet-ui-0.6.0-rc.
|
|
94
|
-
`npm install ../taet-ui-0.6.0-rc.
|
|
138
|
+
the local `taet-ui-0.6.0-rc.4.tgz`. Install that file in your app with
|
|
139
|
+
`npm install ../taet-ui-0.6.0-rc.4.tgz`. Bare package names need a resolver or
|
|
95
140
|
browser import map; installing a tarball does not create native browser URLs.
|
|
96
141
|
|
|
97
142
|
| Import | Scope |
|
|
@@ -109,7 +154,7 @@ screen, read [mutation/ownership examples](docs/MUTATIONS.md).
|
|
|
109
154
|
## Preview limits
|
|
110
155
|
|
|
111
156
|
Current migration checks are recorded in [verification](docs/VERIFICATION.md).
|
|
112
|
-
Earlier
|
|
157
|
+
Earlier pre-rename results identify their original inputs and are historical evidence.
|
|
113
158
|
|
|
114
159
|
Recorded checks include Windows browser automation and a separate Windows
|
|
115
160
|
Tauri/WebView2 acceptance stand. Programmatic/synthetic input is distinguished
|
|
@@ -127,7 +172,8 @@ For contributors: [setup/checks](CONTRIBUTING.md), [AI entry point](docs/AI_CONT
|
|
|
127
172
|
Browser tests additionally require matching Playwright binaries; `npm ci` alone
|
|
128
173
|
does not install them. After npm ci, use `npx playwright install chromium firefox webkit`.
|
|
129
174
|
For selective Windows project flags, use the direct-node commands in
|
|
130
|
-
[release checks](docs/RELEASE.md).
|
|
175
|
+
[release checks](docs/RELEASE.md). Exact remote CI and publication outcomes are
|
|
176
|
+
linked from the matching GitHub prerelease notes.
|
|
131
177
|
|
|
132
178
|
Tæt UI is [MIT](LICENSE). Local Noto Sans is OFL; retain its license and
|
|
133
179
|
[third-party notices](THIRD_PARTY_NOTICES.md) when distributing assets.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Third-party notices
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Tæt UI source is licensed under [MIT](LICENSE). Core has no npm runtime dependencies. No external icon font or icon package is bundled; icons are implemented in the source registry.
|
|
4
4
|
|
|
5
|
-
Development tests use [Playwright](https://github.com/microsoft/playwright), licensed under Apache-2.0. Installed packages and downloaded browser distributions retain their own notices and are not included in the
|
|
5
|
+
Development tests use [Playwright](https://github.com/microsoft/playwright), licensed under Apache-2.0. Installed packages and downloaded browser distributions retain their own notices and are not included in the Tæt UI package.
|
|
6
6
|
|
|
7
|
-
Declaration and package-consumer tests use [TypeScript](https://github.com/microsoft/TypeScript), licensed under Apache-2.0. It is a development dependency and is not shipped in the
|
|
7
|
+
Declaration and package-consumer tests use [TypeScript](https://github.com/microsoft/TypeScript), licensed under Apache-2.0. It is a development dependency and is not shipped in the Tæt UI package or required at runtime.
|
|
8
8
|
|
|
9
9
|
New third-party source, artwork or fonts must include attribution and license. This inventory describes the checked-in tree and manifests, not undisclosed historical provenance.
|
|
10
10
|
|
|
@@ -17,7 +17,7 @@ Copyright and full license: `src/ui/fonts/NotoSans-OFL.txt` in source/package
|
|
|
17
17
|
delivery, or `fonts/NotoSans-OFL.txt` beside a portable bundle.
|
|
18
18
|
Source/conversion provenance is in the repository file `src/ui/fonts/README.md`.
|
|
19
19
|
Runtime WOFF2 SHA-256: `7ed77c38412a34312e975abcd5eb2b2848a596f1921393f925a53a27938eb116`.
|
|
20
|
-
The font license is separate from
|
|
20
|
+
The font license is separate from Tæt UI's MIT license.
|
|
21
21
|
|
|
22
22
|
## Optional font comparison Lab
|
|
23
23
|
|
|
@@ -38,8 +38,8 @@ No color library or new runtime dependency is included.
|
|
|
38
38
|
## Build tool
|
|
39
39
|
|
|
40
40
|
Portable bundles use esbuild (MIT) as a development/build dependency. Its code is
|
|
41
|
-
not a required runtime library in the
|
|
41
|
+
not a required runtime library in the Tæt UI delivery. Source: https://github.com/evanw/esbuild .
|
|
42
42
|
|
|
43
43
|
An optional Tauri source example has separate Rust host dependencies. Those are
|
|
44
|
-
not
|
|
44
|
+
not Tæt UI JavaScript runtime dependencies; source users retain their upstream
|
|
45
45
|
licenses. A distributed native binary needs its own resolved dependency notice review.
|
package/docs/AI_CONTEXT.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Tæt UI: start here
|
|
2
2
|
|
|
3
|
-
0.6.0-rc.
|
|
3
|
+
0.6.0-rc.4 is a dependency-free desktop/WebView preview.
|
|
4
4
|
|
|
5
5
|
1. Read [LLM_GUIDE](LLM_GUIDE.md), then one [AI_MAP](AI_MAP.md) row.
|
|
6
6
|
2. Read its exact public .d.ts and one recipe before guessing a method.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Native host acceptance
|
|
2
2
|
|
|
3
|
-
A Windows Tauri acceptance stand used
|
|
3
|
+
A Windows Tauri acceptance stand used the pre-rename 0.6.0-rc.1 release from commit
|
|
4
4
|
18c65890435e1bae97af262a20ced705e0e49e4f. It embedded one components profile,
|
|
5
5
|
matching CSS, local Noto Sans and notices, with no frontend framework or CDN.
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ window probe is deliberately unavailable there.
|
|
|
14
14
|
The author additionally reported real Grid Move and Tree Move fixture operations.
|
|
15
15
|
That bounded observation does not certify the complete keyboard/mouse/IME matrix.
|
|
16
16
|
The large acceptance stand, EXE, local profiles and raw diagnostic reports are not
|
|
17
|
-
the small public example or a required runtime dependency of
|
|
17
|
+
the small public example or a required runtime dependency of this toolkit.
|
|
18
18
|
|
|
19
19
|
Still unverified: actual IME composition; complete physical keyboard/pointer flow;
|
|
20
20
|
screen readers; mixed-monitor DPI; native file dialogs/clipboard; other WebView hosts.
|
package/docs/STABLE_API.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# API maturity
|
|
2
2
|
|
|
3
|
-
0.6.0-rc.
|
|
3
|
+
0.6.0-rc.4 preserves the stable root and experimental status of retained APIs.
|
|
4
4
|
Tier does not promote maturity: [TIERS](TIERS.md).
|
|
5
5
|
Grid/TreeGrid remain experimental. Approved common-contract changes are recorded
|
|
6
6
|
in the candidate manifest; maturity and tier boundaries are unchanged.
|
package/docs/TAET_MIGRATION.md
CHANGED
|
@@ -1,60 +1,61 @@
|
|
|
1
|
-
# Tæt UI
|
|
2
|
-
|
|
3
|
-
Display name: Tæt UI.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Source inventory
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
The
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
1
|
+
# Tæt UI migration and compatibility
|
|
2
|
+
|
|
3
|
+
Display name: Tæt UI. Package, import and repository name: taet-ui.
|
|
4
|
+
The public repository is https://github.com/edward-ap/taet-ui.
|
|
5
|
+
The current 0.6.0-rc.4 candidate retains published rc.3 source, npm versions,
|
|
6
|
+
GitHub releases and assets unchanged. Each new publication has its own version
|
|
7
|
+
and assets; exact outcomes are recorded in the matching GitHub prerelease notes.
|
|
8
|
+
|
|
9
|
+
## Source inventory
|
|
10
|
+
|
|
11
|
+
- Released rc.2 baseline: 1e51bdc8baa99130954206b0aff6367b0764e9d6, 878 tracked files.
|
|
12
|
+
- Feedback base: be78df1056d1c25369b989f51d7819f37c88c8fd, included through rc.2.
|
|
13
|
+
- Original working source: 18c65890435e1bae97af262a20ced705e0e49e4f, preserved separately.
|
|
14
|
+
- Accepted PropertyGrid presentation patch: category-border gutter inset and removal
|
|
15
|
+
of the selected-row blue pseudo-element, preserving background/focus/keyboard.
|
|
16
|
+
Original patch SHA-256: 3c62abcc2f6bedad1b2c9da3a1b3d8255193645cf201237f2ee78135ec1a5ac2.
|
|
17
|
+
- Excluded: unaccepted SelectInput proposal, application-specific radio styling,
|
|
18
|
+
old specialized Painter/Viewport/StockChart/FlatFile/Spectrum/Pivot extensions.
|
|
19
|
+
|
|
20
|
+
Initial commit d03a9c0, harness fix 635df4a and rc.3 preparation/history remain.
|
|
21
|
+
The immutable imported source-snapshot.json stays byte-for-byte unchanged.
|
|
22
|
+
The rc.4 Grid candidate changes only the reviewed row-drag display text; the other
|
|
23
|
+
46 reviewed source hashes and all imported hashes remain unchanged. No row move,
|
|
24
|
+
selection, event, MIME or ownership behavior is changed by that presentation edit.
|
|
25
|
+
Exact current hashes are in provenance/grid-candidate.json.
|
|
26
|
+
|
|
27
|
+
## Current names and retained compatibility
|
|
28
|
+
|
|
29
|
+
Canonical CSS import: taet-ui/taet-ui.css. The taet-ui/dense.css export and
|
|
30
|
+
src/ui/dense.css file stay as forwarding aliases for installed consumers.
|
|
31
|
+
The immutable imported manifest also records that original stylesheet filename.
|
|
32
|
+
The dui-* classes, data-dui-* attributes and --dui-* tokens remain CSS/DOM contracts.
|
|
33
|
+
Semantic compact/density options and ordinary English wording retain their meaning.
|
|
34
|
+
|
|
35
|
+
Theme export writes format taet-ui-theme, version 1, and .taet-theme.json filenames.
|
|
36
|
+
Import also accepts dense-ui-theme version 1 and the existing bare definitions.
|
|
37
|
+
Older implementations do not understand the new format tag; backward reading is
|
|
38
|
+
provided by the new implementation, not by rewriting already published packages.
|
|
39
|
+
|
|
40
|
+
Preset storage reads taet-ui.theme-editor.v1 first and falls back to
|
|
41
|
+
dense-ui.theme-editor.v1 only when the current key is absent. An empty current
|
|
42
|
+
array is authoritative. No eager write occurs on mount. The next preset mutation
|
|
43
|
+
writes the full collection to the current key, leaving the previous key untouched.
|
|
44
|
+
|
|
45
|
+
Canonical documentation/example globals are taetUiDocs and taetThemeEditor.
|
|
46
|
+
denseUiDocs and denseThemeEditor remain aliases to the same objects for existing
|
|
47
|
+
inspection and documented host integrations. New examples/tests use current names.
|
|
48
|
+
|
|
49
|
+
application/x-dense-ui-grid-rows and application/x-dense-ui-tree-nodes stay as
|
|
50
|
+
cross-version drag MIME contracts. Their runtime strings and compatibility tests
|
|
51
|
+
are intentional residuals; renaming them would require a separate protocol change.
|
|
52
|
+
The plain-text row drag label is Tæt UI rows.
|
|
53
|
+
|
|
54
|
+
## Boundaries
|
|
55
|
+
|
|
56
|
+
Zero runtime dependencies, existing constructors, exports and maturity tiers remain.
|
|
57
|
+
No external application, original source directory, historical tag or remote is edited.
|
|
58
|
+
Only tracked framework inputs are packaged; generated dist/distribution, dependencies,
|
|
59
|
+
reports, caches and private diagnostics remain out of Git. MIT/OFL attribution and
|
|
60
|
+
third-party license text are retained. Native rebuilds and physical-input acceptance
|
|
61
|
+
are separate from browser automation. See VERIFICATION.md for exact checked inputs.
|
package/docs/VERIFICATION.md
CHANGED
|
@@ -1,3 +1,143 @@
|
|
|
1
|
+
# rc.4 publication preflight - 2026-11-03
|
|
2
|
+
|
|
3
|
+
The maintainer authorized a new rc.4 GitHub prerelease and npm next publication.
|
|
4
|
+
This preparation combines the reviewed 140478d4 cleanup and 51424a27 desktop
|
|
5
|
+
showcase; rc.3 versions, tags and assets are immutable. It changes release wording
|
|
6
|
+
and uses absolute public GitHub image/example URLs so the npm README can display
|
|
7
|
+
the showcase without shipping PNGs or a duplicate application in the tarball.
|
|
8
|
+
|
|
9
|
+
Production src/scripts/package inputs are unchanged from the fully checked rc.4
|
|
10
|
+
cleanup: content SHA-256 91a1636bc57547a47b51a3f8d9e57916865eaeec96c4c5109d149f5cf139894a.
|
|
11
|
+
The exact completed local gate results and the three-engine showcase checks are
|
|
12
|
+
recorded below. Publication re-runs, final-commit CI and registry/archive checks
|
|
13
|
+
are recorded separately in the matching GitHub prerelease notes. This preflight
|
|
14
|
+
entry does not claim those external operations succeeded.
|
|
15
|
+
|
|
16
|
+
Source review: 898 tracked files; no generated archives, dependencies, reports or
|
|
17
|
+
secret-pattern matches in tracked content. The three PNGs total 470481 bytes and
|
|
18
|
+
retain the recorded hashes. The immutable imported manifest is byte-identical;
|
|
19
|
+
all 47 reviewed candidate hashes pass the boundary guard. No export or maturity
|
|
20
|
+
changes are introduced. Final archives must use --release from the final clean
|
|
21
|
+
commit and embed that revision; npm must be verified independently after upload.
|
|
22
|
+
|
|
23
|
+
Native WebView/physical-input, IME, screen-reader and non-Windows native limits
|
|
24
|
+
remain as described below. Browser automation and remote CI do not remove them.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# README desktop showcase verification - 2026-11-03
|
|
29
|
+
|
|
30
|
+
README now links a small runnable examples/desktop-showcase host and contains real
|
|
31
|
+
light/dark screenshots of that same application instance plus an actual Dialog
|
|
32
|
+
detail. Capture: local rc.4 core from 140478d4a0e8b91763b9413512b022500f46601c,
|
|
33
|
+
Windows Chromium 149, viewport 1200x700, DPR 2, bundled font ready before capture.
|
|
34
|
+
No browser chrome or machine paths appear. Synthetic records and build/run
|
|
35
|
+
simulation are labeled; no real compiler or native backend is claimed.
|
|
36
|
+
|
|
37
|
+
A separate model context installed public npm rc.3, using README/docs, public
|
|
38
|
+
declarations and checked recipes under a no-implementation-inspection constraint.
|
|
39
|
+
It then installed the verified local rc.4 tarball. The final identical app passed
|
|
40
|
+
12 checks on each version, with no browser errors or external requests. This was
|
|
41
|
+
a directed trial: coordinator review added sequential-typing and positioning QA.
|
|
42
|
+
It is not a general model, timing or token-efficiency benchmark.
|
|
43
|
+
|
|
44
|
+
The follow-up found a consumer wiring error: same-ID selection invalidations
|
|
45
|
+
rebound PropertyGrid after the first typed character. A selected-ID guard fixes
|
|
46
|
+
it; every prefix of the 16-character edit now retains the original focused editor
|
|
47
|
+
and updates model/preview. Fixed host CSS prevented Dialog title dragging, so
|
|
48
|
+
draggable:false is explicit. Dialog-owned Form destruction is explicit and checked
|
|
49
|
+
after both Cancel and Run. Other friction involved aggregate declaration files,
|
|
50
|
+
guessed icons, Toolbar showText and TextArea css/label options. No library
|
|
51
|
+
implementation or runtime stylesheet was changed for these corrections.
|
|
52
|
+
|
|
53
|
+
Consumer/capture app.js raw SHA-256:
|
|
54
|
+
4998845f8baf8b117d86fb0e21d4eae1b3d7aefb2abc1e51a19d825c58a74ae0.
|
|
55
|
+
The curated app.js/host.css normalize only line endings/EOF whitespace; their
|
|
56
|
+
logic/styles match the installed-package trial. The repository host only
|
|
57
|
+
maps public entries to this checkout and adds pagehide cleanup. The same 12 checks
|
|
58
|
+
also pass against this host in Chromium, Firefox and WebKit. They exercise Menu,
|
|
59
|
+
TreeList/PropertyGrid/model/preview synchronization including sequential typing,
|
|
60
|
+
MDI activation/open/close, dock collapse/menu restore, TabBar content, Dialog
|
|
61
|
+
cancel/primary action/content destruction, and theme state retention.
|
|
62
|
+
|
|
63
|
+
README relative image paths and alt text load in a local 896px layout preview,
|
|
64
|
+
with no horizontal overflow. The exact new JavaScript excerpt mounts successfully
|
|
65
|
+
and its cleanup removes all owned controls. All three PNGs were visually inspected;
|
|
66
|
+
lossless IDAT optimization preserves every pixel. Sizes: light 220154 bytes,
|
|
67
|
+
dark 218594, Dialog 31733; total 470481 bytes. Images live under .github/screenshots
|
|
68
|
+
and the small example is outside the npm files allowlist. Raw trial reports,
|
|
69
|
+
private test tooling, dependencies and draft captures remain outside Git.
|
|
70
|
+
|
|
71
|
+
Syntax check: 542 files. API inventory and package boundaries pass, including all
|
|
72
|
+
47 approved Grid candidate hashes. Production src/scripts/package manifests are
|
|
73
|
+
unchanged from the preceding fully checked rc.4 commit; those full core gates were
|
|
74
|
+
not needlessly rerun for documentation/host assets. No new native WebView/physical
|
|
75
|
+
input/IME or screen-reader acceptance is claimed. Published rc.3 and remote state
|
|
76
|
+
were not changed. The PropertyGrid presentation baseline already existed in rc.3;
|
|
77
|
+
the dummy IDE does not test rc.4-specific theme-file/storage migration.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
# rc.4 local branding and compatibility verification - 2026-11-03
|
|
82
|
+
|
|
83
|
+
0.6.0-rc.4 is an unpublished local candidate based on
|
|
84
|
+
ab75c464ed300a8680e7081b94db3744b78c4dfd. No push, registry publication,
|
|
85
|
+
release edit or external application change is part of this cleanup. Published
|
|
86
|
+
rc.3 and its six original local release assets are preserved; old local outer
|
|
87
|
+
manifests are retained under ignored distribution/rc.3-publication/.
|
|
88
|
+
|
|
89
|
+
Current branding, notices, the row-drag label, export filenames and local benchmark
|
|
90
|
+
identifiers use the current project name. The broken private historical CI link is
|
|
91
|
+
removed. Exact old versions/commits still identify historical native evidence;
|
|
92
|
+
none is relabeled as a newly executed native test.
|
|
93
|
+
|
|
94
|
+
Theme export writes taet-ui-theme v1 and .taet-theme.json. Import retains the
|
|
95
|
+
previous v1 tag and bare definitions. Storage reads the current key first, falls
|
|
96
|
+
back only when it is absent, writes the current key on mutation and never eagerly
|
|
97
|
+
rewrites the previous key. Canonical globals retain their old host aliases.
|
|
98
|
+
See [compatibility decisions](TAET_MIGRATION.md) for retained CSS/MIME/storage
|
|
99
|
+
names and one-way backward reading of saved files.
|
|
100
|
+
|
|
101
|
+
Reviewed Grid change: only the plain-text row drag label. New
|
|
102
|
+
GridRowReorderController.js SHA-256:
|
|
103
|
+
83b559b6e08b7413033402e734df54a41748b6ba9a957b11b1debd230dcfd75b.
|
|
104
|
+
The other 46 candidate source hashes, all imported hashes and immutable
|
|
105
|
+
source-snapshot.json bytes are unchanged. MIT/OFL/font bytes are preserved;
|
|
106
|
+
notices change only this project's descriptive name.
|
|
107
|
+
|
|
108
|
+
| Check on the rc.4 working tree | Result |
|
|
109
|
+
| --- | --- |
|
|
110
|
+
| New compatibility and row-drag targeted cases | 13/13 passed |
|
|
111
|
+
| npm run test:all, including npm test | Passed: syntax 541, API/boundaries, 695/695 units, full Chromium 728/728 |
|
|
112
|
+
| Installed source-package consumers | Strict TypeScript/JSDoc, NodeNext + Bundler and browser recipes passed; 476 bindings across entries |
|
|
113
|
+
| Standard Firefox compatibility, port 5893, one worker | 473/473 passed |
|
|
114
|
+
| Standard WebKit compatibility, port 5894, one worker | 473/473 passed |
|
|
115
|
+
| npm run test:bundle | 42/42 across Chromium/Firefox/WebKit; readable/minified ESM/IIFE and bundled font |
|
|
116
|
+
| Isolated pre-commit ZIP consumers | 18/18: three profiles, two formats, three engines; live input/action, font and teardown; blocked external requests |
|
|
117
|
+
| Preview ZIP manifests/contents | 22 entries/profile; content hashes, relative maps, required assets/licenses/examples and secret-pattern checks passed |
|
|
118
|
+
| Pre-report npm pack inspection | 496 tracked entries byte-matched; zero runtime dependencies; source/types/CSS/font exports preserved |
|
|
119
|
+
| Scope check | One Grid presentation string; other candidate hashes, license/font bytes and six original local rc.3 release assets preserved |
|
|
120
|
+
| Source/artifact legacy-name scan | 39 source matches: 24 compatibility/test/documentation and 15 ordinary English; no obsolete product branding or old HTTP link |
|
|
121
|
+
| ZIP residuals including source maps | full 32, components 16, foundation 0; only retained MIME and backward theme/storage strings |
|
|
122
|
+
|
|
123
|
+
Full Chromium used two workers, Firefox and Windows WebKit one each, on isolated
|
|
124
|
+
ports/outputs. This retains the existing Windows resource mitigation and WebKit
|
|
125
|
+
cap; assertions and global timeouts are unchanged. Compatibility now additionally
|
|
126
|
+
includes the new migration cases and existing row-reorder regressions.
|
|
127
|
+
|
|
128
|
+
Build input content SHA-256: 91a1636bc57547a47b51a3f8d9e57916865eaeec96c4c5109d149f5cf139894a.
|
|
129
|
+
These checks identify the pre-commit rc.4 working-tree content, not the older base
|
|
130
|
+
commit. Final archives must be regenerated from the clean local commit with
|
|
131
|
+
--release and their exact revision recorded in PROVENANCE.json. Repack after this
|
|
132
|
+
verification-record update so the tarball contains the current documentation.
|
|
133
|
+
|
|
134
|
+
Remaining boundaries: no native Tauri/WebView2 rebuild, physical input/IME,
|
|
135
|
+
screen-reader, mixed-monitor or non-Windows native acceptance was rerun. Existing
|
|
136
|
+
applications and optional licensed-vendor benchmarks were not modified or run.
|
|
137
|
+
Ignored old reports/caches and preserved rc.3/history are not new release inputs.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
1
141
|
# Publication destination correction — 2026-11-03
|
|
2
142
|
|
|
3
143
|
The maintainer's final destination is **edward-ap/taet-ui**, matching npm taet-ui.
|
|
@@ -16,7 +156,7 @@ Initial local commit d03a9c065a16ffe9bf2240fffc4dc1ecc54ec587 is preserved.
|
|
|
16
156
|
Harness fix 635df4a57ec713b3a5cc8963b0b3b9e4c46bc005 is a separate commit.
|
|
17
157
|
The maintainer subsequently authorized the public edward-ap/taet-ui repository,
|
|
18
158
|
GitHub prerelease/distribution and npm taet-ui publication under next. The new
|
|
19
|
-
repository was created public; the
|
|
159
|
+
repository was created public; the original project repository stayed private and
|
|
20
160
|
its v0.6.0-rc.2 tag still targets 1e51bdc8baa99130954206b0aff6367b0764e9d6.
|
|
21
161
|
Remote release/CI and npm registry outcomes are recorded separately in release
|
|
22
162
|
notes; local checks below do not themselves claim either publication succeeded.
|
|
@@ -79,14 +219,14 @@ rejects stale build input digests and --release requires a clean commit. Final
|
|
|
79
219
|
archive provenance identifies the exact release commit. Maps contain public code.
|
|
80
220
|
|
|
81
221
|
No new native Tauri/WebView2, physical IME/screen-reader or mixed-monitor acceptance
|
|
82
|
-
was performed. Historical native evidence below keeps its original
|
|
222
|
+
was performed. Historical native evidence below keeps its original pre-rename
|
|
83
223
|
identities. The new browser/distribution results do not certify native hosts.
|
|
84
224
|
|
|
85
225
|
---
|
|
86
226
|
|
|
87
227
|
# Tæt UI migration verification — 2026-11-03
|
|
88
228
|
|
|
89
|
-
These are new local checks of taet-ui 0.6.0-rc.3, based on
|
|
229
|
+
These are new local checks of taet-ui 0.6.0-rc.3, based on the pre-rename release
|
|
90
230
|
1e51bdc8baa99130954206b0aff6367b0764e9d6 plus the accepted PropertyGrid CSS patch.
|
|
91
231
|
See [migration inventory and naming decisions](TAET_MIGRATION.md). Historical
|
|
92
232
|
results below retain their original identities and are not new Tæt UI evidence.
|
|
@@ -191,7 +331,7 @@ The intended future repository is edward-ap/taet-ui, requiring a separate action
|
|
|
191
331
|
|
|
192
332
|
---
|
|
193
333
|
|
|
194
|
-
# Historical
|
|
334
|
+
# Historical pre-rename verification (exact versions preserved)
|
|
195
335
|
|
|
196
336
|
# Verification scope
|
|
197
337
|
|
|
@@ -206,7 +346,7 @@ fonts and the reviewed Grid file hashes are unchanged from that input. Final
|
|
|
206
346
|
release checks and CI run again on the resulting release commit. Results below
|
|
207
347
|
identify the feedback base and are not silently transferred to another SHA.
|
|
208
348
|
|
|
209
|
-
|
|
349
|
+
Archived pre-rename CI run 41375177487 (private repository; not a public validation link)
|
|
210
350
|
completed successfully on that exact feedback SHA, first attempt, all six jobs:
|
|
211
351
|
|
|
212
352
|
- 692 unit tests; full Chromium 719/719 in each Windows/Linux Node22/24 job.
|
package/docs/VERSIONING.md
CHANGED
|
@@ -4,7 +4,7 @@ These are project recommendations for preview releases; the maintainer confirms
|
|
|
4
4
|
each public version/tag. This document does not change the current version or
|
|
5
5
|
create a new compatibility guarantee.
|
|
6
6
|
|
|
7
|
-
0.6.0-rc.
|
|
7
|
+
0.6.0-rc.4 is a preview, not a 1.0 compatibility promise. Stable root and
|
|
8
8
|
experimental API are listed separately in STABLE_API.md. Import tiers describe
|
|
9
9
|
architecture; they do not change maturity.
|
|
10
10
|
|
|
@@ -19,6 +19,6 @@ A release identifies its exact Git commit and asset hashes. Validate the final
|
|
|
19
19
|
candidate after all source/documentation edits, not only its previous runtime build.
|
|
20
20
|
|
|
21
21
|
The initial migration kept private:true. Explicit maintainer authorization now
|
|
22
|
-
prepares rc.
|
|
22
|
+
prepares rc.4 for public npm publication with publishConfig.tag=next, alongside a
|
|
23
23
|
GitHub prerelease. These remain separate outcomes: confirm registry availability
|
|
24
24
|
and remote release assets independently; a local tarball is not publication.
|
package/docs/src/main.js
CHANGED
|
@@ -84,9 +84,9 @@ export const treeListPage = {
|
|
|
84
84
|
owner.add(actions, tree);
|
|
85
85
|
tree.data.parse([
|
|
86
86
|
{ id: "projects", parentId: null, text: "Projects" },
|
|
87
|
-
{ id: "
|
|
88
|
-
{ id: "components", parentId: "
|
|
89
|
-
{ id: "docs", parentId: "
|
|
87
|
+
{ id: "taet", parentId: "projects", text: "Tæt UI" },
|
|
88
|
+
{ id: "components", parentId: "taet", text: "Components" },
|
|
89
|
+
{ id: "docs", parentId: "taet", text: "Documentation" },
|
|
90
90
|
{ id: "archive", parentId: null, text: "Archive" },
|
|
91
91
|
{ id: "previous", parentId: "archive", text: "Previous releases" }
|
|
92
92
|
], { origin: "import" });
|
|
@@ -5,7 +5,7 @@ trimmed from the Windows acceptance stand; it does not ship that stand's EXE,
|
|
|
5
5
|
profiles, reports, fixture data, test harness or copied Tæt UI implementation.
|
|
6
6
|
|
|
7
7
|
**Windows build/run smoke verified (2026-11-01).** This trimmed source was built
|
|
8
|
-
as a separate consumer with historical
|
|
8
|
+
as a separate consumer with historical pre-rename 0.6.0-rc.1 assets from commit
|
|
9
9
|
18c65890435e1bae97af262a20ced705e0e49e4f and run in standalone WebView2
|
|
10
10
|
156.0.4314.58 on Windows 11. Local JS/CSS/Noto loading, bounded Rust echo and
|
|
11
11
|
programmatic Form input/button handling passed. These are this example's own
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "0.6.0-rc.
|
|
4
|
-
"changeSet": "
|
|
5
|
-
"note": "User-
|
|
3
|
+
"packageVersion": "0.6.0-rc.4",
|
|
4
|
+
"changeSet": "branding-row-drag-label-2026-11-03",
|
|
5
|
+
"note": "User-authorized branding cleanup; reviewed Grid delta is the row-drag plain-text label only. Imported provenance and the other 46 candidate source hashes are preserved.",
|
|
6
6
|
"importManifestSha256": "9d32c9bcbbafcce32f04719b4b095b6c8b8bed1230ae7bc47aeff18bc3150d67",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
{
|
|
189
189
|
"path": "src/ui/GridRowReorderController.js",
|
|
190
190
|
"importedSha256": "dfb289d6824b2538ba98fae598a80aed5e6aecf5732231c31123506c6134bf42",
|
|
191
|
-
"sha256": "
|
|
191
|
+
"sha256": "83b559b6e08b7413033402e734df54a41748b6ba9a957b11b1debd230dcfd75b"
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
194
|
"path": "src/ui/GridRowTransferController.js",
|
|
@@ -39,7 +39,7 @@ export class GridRowReorderController {
|
|
|
39
39
|
if (!g?._canReorderRows() || !hit?.item) { event.preventDefault(); return; }
|
|
40
40
|
this.state = { ids: this.ids(hit.item) };
|
|
41
41
|
event.stopPropagation();
|
|
42
|
-
event.dataTransfer?.setData('text/plain', '
|
|
42
|
+
event.dataTransfer?.setData('text/plain', 'Tæt UI rows');
|
|
43
43
|
if (event.dataTransfer) event.dataTransfer.effectAllowed = 'move';
|
|
44
44
|
// Projection/data changes cancel the gesture; scrolling does not.
|
|
45
45
|
for (const model of [g.data, g.view, g.groups]) {
|
|
@@ -31,7 +31,7 @@ export interface ThemeDesignerOptions extends BaseControlOptions {
|
|
|
31
31
|
storage?:Pick<Storage,'getItem'|'setItem'>;
|
|
32
32
|
onChange?:(event:ThemeDesignerChange)=>void;
|
|
33
33
|
}
|
|
34
|
-
/** Experimental. Include
|
|
34
|
+
/** Experimental. Include taet-ui/taet-ui.css. No iframe, network, native bridge or global theme mutation. */
|
|
35
35
|
export declare class ThemeDesigner extends BaseControl<{change:ThemeDesignerChange}> {
|
|
36
36
|
constructor(options?:ThemeDesignerOptions);
|
|
37
37
|
constructor(container:HTMLElement|string,options?:ThemeDesignerOptions);
|
|
@@ -18,13 +18,13 @@ const normalize=input=>editorDefinition(input,maxColors);
|
|
|
18
18
|
const find=selector=>root.querySelector(selector.replace(/#([\w-]+)/g,'[data-designer-ref="$1"]'))??root.querySelector(selector);
|
|
19
19
|
const body=options.body??root,storage=options.storage??null,hostConnection=createHostConnection(options.host);
|
|
20
20
|
const getPreview=()=>options.preview??preview.contentWindow;
|
|
21
|
-
const owners=[],fields={},storageKey='dense-ui.theme-editor.v1';
|
|
21
|
+
const owners=[],fields={},storageKey='taet-ui.theme-editor.v1',legacyStorageKey='dense-ui.theme-editor.v1';
|
|
22
22
|
let lastReported='',changeMeta={origin:'api',userAction:false};
|
|
23
23
|
let definition=loadPreset(presets[0]),result,frame=null,disposed=false,custom=[],selected='builtin:0',inspectedRay='a';
|
|
24
24
|
const notice=createNotice(root,options.notificationDuration);owners.push(notice);
|
|
25
25
|
const preview=find('#preview');
|
|
26
26
|
function attempt(action){try{action();}catch(e){notice.show(e.message);}}
|
|
27
|
-
try{const saved=JSON.parse(storage?.getItem(storageKey)??'[]');if(!Array.isArray(saved)||saved.length>50)throw Error('Invalid preset storage');custom=saved.map(p=>{if(typeof p.name!=='string'||typeof p.id!=='string')throw Error('Invalid preset');return {id:p.id,name:p.name.slice(0,80),deleted:p.deleted===true,definition:normalize(p.definition)};});}catch(e){notice.show(`Saved presets unavailable: ${e.message}`);}
|
|
27
|
+
try{const saved=JSON.parse(storage?.getItem(storageKey)??storage?.getItem(legacyStorageKey)??'[]');if(!Array.isArray(saved)||saved.length>50)throw Error('Invalid preset storage');custom=saved.map(p=>{if(typeof p.name!=='string'||typeof p.id!=='string')throw Error('Invalid preset');return {id:p.id,name:p.name.slice(0,80),deleted:p.deleted===true,definition:normalize(p.definition)};});}catch(e){notice.show(`Saved presets unavailable: ${e.message}`);}
|
|
28
28
|
const own=c=>(owners.push(c),c);
|
|
29
29
|
own(new LabelText(find('#distribution-caption'),{text:'Distribution'}));
|
|
30
30
|
own(new LabelText(find('#theme-caption'),{text:'Theme'}));
|
|
@@ -33,8 +33,8 @@ export function createPresetToolbar(host,api){
|
|
|
33
33
|
Copy:async()=>{const p=await pick('copy');if(p)await named('Copy preset',p.definition,p.name+' copy');},
|
|
34
34
|
Import:()=>{file.value='';file.click();},
|
|
35
35
|
Export:()=>{
|
|
36
|
-
const p=api.current(),text=JSON.stringify({format:'
|
|
37
|
-
const url=URL.createObjectURL(new Blob([text],{type:'application/json'})),a=document.createElement('a');a.href=url;a.download=p.name.replace(/[^a-z0-9_-]/gi,'-')+'.
|
|
36
|
+
const p=api.current(),text=JSON.stringify({format:'taet-ui-theme',version:1,name:p.name,definition:JSON.parse(serialize(p.definition))},null,2);
|
|
37
|
+
const url=URL.createObjectURL(new Blob([text],{type:'application/json'})),a=document.createElement('a');a.href=url;a.download=p.name.replace(/[^a-z0-9_-]/gi,'-')+'.taet-theme.json';a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);
|
|
38
38
|
},
|
|
39
39
|
Delete:async()=>{const p=api.current();if(p.readOnly)throw Error('This recovery preset is read-only.');if(await ask('Delete preset',`Permanently delete "${p.name}"?`))api.remove(p);},
|
|
40
40
|
Apply:async()=>{const p=api.current();await callHost('applyPreset',{preset:{name:p.name,definition:JSON.parse(serialize(p.definition))},theme:generateTheme(p.definition),signal:abort.signal});alive();api.message('Preset applied by the host application.','success');}
|
|
@@ -44,7 +44,7 @@ export function createPresetToolbar(host,api){
|
|
|
44
44
|
file.addEventListener('change',()=>run(async()=>{
|
|
45
45
|
const selected=file.files[0];if(!selected)return;if(selected.size>24000)throw Error('Theme file is too large.');
|
|
46
46
|
const text=await selected.text();alive();const data=JSON.parse(text);
|
|
47
|
-
if(data.format!==undefined&&(
|
|
47
|
+
if(data.format!==undefined&&(!['taet-ui-theme','dense-ui-theme'].includes(data.format)||data.version!==1))throw Error('Unsupported theme file format.');
|
|
48
48
|
const definition=deserialize(data.format?JSON.stringify(data.definition):text);
|
|
49
49
|
await named('Import preset',definition,typeof data.name==='string'?data.name:'Imported theme');
|
|
50
50
|
}),{signal:abort.signal});
|