@kurot/cli 3.0.1 → 3.2.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.
- package/CHANGELOG.md +62 -7
- package/README.md +75 -24
- package/dist/core/dev-server.js +4 -1
- package/dist/core/dev-server.js.map +1 -1
- package/dist/core/kui/index.d.ts +2 -1
- package/dist/core/kui/index.d.ts.map +1 -1
- package/dist/core/kui/index.js +3 -3
- package/dist/core/kui/index.js.map +1 -1
- package/dist/core/kui/kui-parser.d.ts +1 -1
- package/dist/core/kui/kui-parser.d.ts.map +1 -1
- package/dist/core/kui/kui-parser.js +3 -3
- package/dist/core/kui/kui-parser.js.map +1 -1
- package/dist/core/kui/skin-module-builder.d.ts.map +1 -1
- package/dist/core/kui/skin-module-builder.js +14 -4
- package/dist/core/kui/skin-module-builder.js.map +1 -1
- package/docs/ai-context.md +171 -0
- package/docs/architecture.md +100 -0
- package/docs/label-text-layout.md +59 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,61 @@ and CLI command/configuration APIs follow [Semantic Versioning](https://semver.o
|
|
|
7
7
|
The early KUI XML contract follows the pre-1.0 `ui-document` kernel; authored
|
|
8
8
|
format changes are documented explicitly in each release.
|
|
9
9
|
|
|
10
|
+
## 3.2.0 — 2026-10-06
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Read the optional fixed `resource/config/style.json` through the shared
|
|
15
|
+
ui-document parser and resolve named colors in base properties and state
|
|
16
|
+
overrides before SkinIR/code generation.
|
|
17
|
+
- Watch `config/style.json` during development. Rebuild skins when the palette
|
|
18
|
+
changes, preserving the last successful Skin bundle on invalid configurations
|
|
19
|
+
or missing referenced colors.
|
|
20
|
+
|
|
21
|
+
### Dependencies
|
|
22
|
+
|
|
23
|
+
- Require published `@kurot/ui-document@^0.10.0` for shared font/color validation,
|
|
24
|
+
disposable color resolution and the `@style:colors:<key>` XML contract.
|
|
25
|
+
- Keep Node.js >= 20, ES2022/ESM output, command APIs and document format version 2
|
|
26
|
+
unchanged. Core/UI remain application dependencies; no renderer upgrade is
|
|
27
|
+
required for named colors.
|
|
28
|
+
|
|
29
|
+
### XML Authoring Change
|
|
30
|
+
|
|
31
|
+
- Compile `@style:colors:<key>` to numeric RGB values; preserve authored Skin XML.
|
|
32
|
+
The previous `@token:color:<key>` prefix is rejected by the shared parser and
|
|
33
|
+
requires an explicit source update. Files are not migrated automatically.
|
|
34
|
+
- Missing style.json is allowed until a Skin references a named color. Unsupported
|
|
35
|
+
sections, invalid font/color configuration and unknown color keys fail explicitly.
|
|
36
|
+
Schema-defined text remains literal; other semantic token syntax is unchanged.
|
|
37
|
+
|
|
38
|
+
### Tests
|
|
39
|
+
|
|
40
|
+
- Verify base/state color compilation, palette changes, black as zero, failures
|
|
41
|
+
retaining the previous output and authored XML remaining untouched.
|
|
42
|
+
|
|
43
|
+
## 3.1.0 — 2026-10-05
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- Compile shared-catalog Label textFit/minFontSize properties and state sizes
|
|
48
|
+
unchanged. Drawing size remains a UI runtime derivation, never generated data.
|
|
49
|
+
- Include public documentation in the npm package, including the compilation
|
|
50
|
+
contract, architecture and package context.
|
|
51
|
+
|
|
52
|
+
### Dependencies
|
|
53
|
+
|
|
54
|
+
- Require `@kurot/ui-document@^0.9.0` for the Label authoring catalog. KUI
|
|
55
|
+
rendering with shrinking requires UI 3.1.x and Core 2.1.x or later within
|
|
56
|
+
their respective majors; native engine packages remain project dependencies.
|
|
57
|
+
- Keep semantic format version 2, literal string handling and resource defaults.
|
|
58
|
+
Existing EXML projects stay on CLI 1.3.x; no files are migrated automatically.
|
|
59
|
+
|
|
60
|
+
### Tests
|
|
61
|
+
|
|
62
|
+
- Verify fitting policy, minimum font size, authored size and state-size
|
|
63
|
+
assignments through KUI parsing and code generation.
|
|
64
|
+
|
|
10
65
|
## 3.0.1 — 2026-10-04
|
|
11
66
|
|
|
12
67
|
### XML Authoring Change
|
|
@@ -227,13 +282,13 @@ change their project configuration.
|
|
|
227
282
|
- `kurot dev --diagnostics jsonl`, which reserves stdout for independent
|
|
228
283
|
`build-start`, `diagnostic`, `build-complete` and `server-ready` events.
|
|
229
284
|
- Stable diagnostics for the following cases:
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
285
|
+
- `KUROT_EXML_UNKNOWN_TAG`
|
|
286
|
+
- `KUROT_EXML_COMPILE_FAILED`
|
|
287
|
+
- `KUROT_EXML_DECLARED_FILE_NOT_FOUND`
|
|
288
|
+
- `KUROT_THEME_FILE_NOT_FOUND`
|
|
289
|
+
- `KUROT_THEME_INVALID_JSON`
|
|
290
|
+
- `KUROT_THEME_SKIN_NOT_FOUND`
|
|
291
|
+
- `KUROT_WATCH_RELEASE_IGNORED`
|
|
237
292
|
|
|
238
293
|
### Changed
|
|
239
294
|
|
package/README.md
CHANGED
|
@@ -3,15 +3,35 @@
|
|
|
3
3
|
Build tooling for the Kurot UI Editor workflow. It uses esbuild, emits ES2022
|
|
4
4
|
ESM, and compiles canonical KUI XML skins into runtime theme modules.
|
|
5
5
|
|
|
6
|
-
> **Current
|
|
6
|
+
> **Current package version: 3.2.0.** Node.js 20 or later is required.
|
|
7
7
|
|
|
8
8
|
> **Release scope:** The 3.x line is dedicated to Kurot Editor integration.
|
|
9
|
-
> Existing game projects that use EXML
|
|
9
|
+
> Existing game projects that use EXML should remain on
|
|
10
10
|
> `@kurot/cli@1.3.x`. The KUI toolchain is not an in-place project upgrade and does
|
|
11
11
|
> not require those projects to change their configuration or UI assets.
|
|
12
12
|
|
|
13
13
|
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
14
14
|
|
|
15
|
+
## Label text fitting in 3.1.0
|
|
16
|
+
|
|
17
|
+
The shared ui-document catalog supports Label `textFit` and `minFontSize`
|
|
18
|
+
in KUI XML:
|
|
19
|
+
|
|
20
|
+
```xml
|
|
21
|
+
<Skin xmlns="https://kurot.dev/ui/1" class="skins.AmountSkin" states="down">
|
|
22
|
+
<Label id="labelDisplay" text="KZT 10 000,00" width="140" size="24"
|
|
23
|
+
multiline="false" textFit="shrink" minFontSize="16" size.down="20" />
|
|
24
|
+
</Skin>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The compiler emits the policy, base size and state overrides unchanged. UI
|
|
28
|
+
derives the drawing size after layout validation. Rendering this capability
|
|
29
|
+
requires `@kurot/ui@^3.1.0` and `@kurot/core@^2.1.0` in the application.
|
|
30
|
+
Explicit `multiline="false"` means one unwrapped first line; remove it or set
|
|
31
|
+
it to true for text intended to wrap. Files are not migrated automatically.
|
|
32
|
+
See the [compilation contract](docs/label-text-layout.md) and
|
|
33
|
+
[native Label contract](../ui/docs/label-text-layout.md).
|
|
34
|
+
|
|
15
35
|
## Usage
|
|
16
36
|
|
|
17
37
|
The CLI does not require a global install.
|
|
@@ -25,7 +45,7 @@ pnpm dev
|
|
|
25
45
|
|
|
26
46
|
Scaffolded projects expose `build`, `dev`, and `clean` scripts. For an
|
|
27
47
|
Editor-managed KUI XML project, install the package with
|
|
28
|
-
`pnpm add -D @kurot/cli@^3.0
|
|
48
|
+
`pnpm add -D @kurot/cli@^3.2.0`. Existing EXML projects should keep their current
|
|
29
49
|
1.3.x dependency.
|
|
30
50
|
|
|
31
51
|
## Commands
|
|
@@ -76,25 +96,25 @@ Create `kurot.config.ts` in the project root:
|
|
|
76
96
|
|
|
77
97
|
```ts
|
|
78
98
|
export default {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
target: 'html5',
|
|
100
|
+
entry: 'src/Main.ts',
|
|
101
|
+
output: { dir: 'bin-debug' },
|
|
102
|
+
html: { template: 'template/web/index.html' },
|
|
103
|
+
stage: {
|
|
104
|
+
width: 640,
|
|
105
|
+
height: 1136,
|
|
106
|
+
scaleMode: 'showAll',
|
|
107
|
+
orientation: 'auto',
|
|
108
|
+
frameRate: 60,
|
|
109
|
+
},
|
|
110
|
+
ui: {
|
|
111
|
+
sourceDir: 'resource/ui',
|
|
112
|
+
components: {
|
|
113
|
+
namespace: 'game',
|
|
114
|
+
sourceDir: 'src/components',
|
|
115
|
+
skinDir: 'resource/ui/components',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
98
118
|
};
|
|
99
119
|
```
|
|
100
120
|
|
|
@@ -133,7 +153,7 @@ use `property.state` on the affected node, so internal graphics remain unnamed.
|
|
|
133
153
|
Image sources use their resource key directly, for example
|
|
134
154
|
`source="button_up_png"`.
|
|
135
155
|
|
|
136
|
-
Version 3.0
|
|
156
|
+
Version 3.2.0 uses `@kurot/ui-document@^0.10.0` and retains its literal-string XML rules.
|
|
137
157
|
For example, `<Label text="100.80" text.down="false" size="48" />` compiles
|
|
138
158
|
the exact strings `100.80` and `false`, while the font size stays numeric.
|
|
139
159
|
String properties no longer add or remove backslash type escapes. Remove old
|
|
@@ -203,8 +223,39 @@ KUI builds validate `resource/default.res.json` and inherit image or sheet-frame
|
|
|
203
223
|
`scale9grid` values into compiled `Image.scale9Grid` when XML does not set one.
|
|
204
224
|
Local grids and `scale9Grid="false"` take priority. Development mode rebuilds
|
|
205
225
|
skins after manifest edits; a malformed manifest leaves the last good Skin
|
|
206
|
-
bundle in place. The current CLI requires `@kurot/ui-document@^0.
|
|
226
|
+
bundle in place. The current CLI requires `@kurot/ui-document@^0.10.0`.
|
|
207
227
|
|
|
208
228
|
Sheet `subkeys` must be an object-valued frame map. Refresh old sheets in the
|
|
209
229
|
Editor before upgrading a KUI project; string-valued subkeys now fail the build.
|
|
210
230
|
See the [resource nine-slice contract](../ui-document/docs/resource-nine-slice.md).
|
|
231
|
+
|
|
232
|
+
## Project style colors in 3.2.0
|
|
233
|
+
|
|
234
|
+
The optional fixed `resource/config/style.json` is independent of
|
|
235
|
+
`default.res.json`. Each KUI build reads it with ui-document 0.10.x, validates
|
|
236
|
+
font definitions and the optional named `colors` palette, and resolves color
|
|
237
|
+
references before generating Skin factories:
|
|
238
|
+
|
|
239
|
+
```xml
|
|
240
|
+
<Skin xmlns="https://kurot.dev/ui/1" class="skins.ButtonSkin" states="disabled">
|
|
241
|
+
<Label id="labelDisplay" textColor="#FF9900"
|
|
242
|
+
textColor.disabled="@style:colors:disabled-text" />
|
|
243
|
+
</Skin>
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
`@style:colors:disabled-text` selects the `disabled-text` RGB entry in the
|
|
247
|
+
`colors` section. Base and inactive-state references compile to numeric values;
|
|
248
|
+
the authored XML remains unchanged. The dev resource watcher observes style.json
|
|
249
|
+
and rebuilds skins after changes. Invalid configuration or a missing referenced
|
|
250
|
+
color fails with diagnostics and retains the last successful Skin bundle.
|
|
251
|
+
|
|
252
|
+
An absent stylesheet is allowed when no Skin references its colors. An existing
|
|
253
|
+
stylesheet must contain valid font definitions even if the build only consumes
|
|
254
|
+
colors; see the shared [project style contract](../ui-document/docs/project-styles.md).
|
|
255
|
+
The CLI does not load fonts, apply runtime CSS or introduce live game theme
|
|
256
|
+
switching. Node.js >= 20 and semantic format version 2 remain unchanged.
|
|
257
|
+
|
|
258
|
+
The previous `@token:color:<key>` XML prefix is rejected by ui-document 0.10.
|
|
259
|
+
Update those references explicitly before adopting CLI 3.2; ordinary text stays
|
|
260
|
+
literal. Existing EXML projects remain on CLI 1.3.x. No Core/UI rendering change
|
|
261
|
+
is required for color expansion.
|
package/dist/core/dev-server.js
CHANGED
|
@@ -79,7 +79,10 @@ function watchResources(project, ctx, options, componentSkinsWatched, enqueue) {
|
|
|
79
79
|
let watcher;
|
|
80
80
|
try {
|
|
81
81
|
watcher = fsSync.watch(project.resourceDir, { recursive: true }, (_event, filename) => {
|
|
82
|
-
if (!filename ||
|
|
82
|
+
if (!filename ||
|
|
83
|
+
(!filename.endsWith('.kui.xml') &&
|
|
84
|
+
filename !== 'default.res.json' &&
|
|
85
|
+
filename.split(path.sep).join('/') !== 'config/style.json'))
|
|
83
86
|
return;
|
|
84
87
|
if (filename.endsWith('.kui.xml') && componentSkinsWatched && project.componentConvention) {
|
|
85
88
|
const changed = path.resolve(project.resourceDir, filename);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/core/dev-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/core/dev-server.ts"],"names":[],"mappings":"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"}
|
package/dist/core/kui/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface CompileKUIOptions extends CodeGenOptions {
|
|
|
16
16
|
*/
|
|
17
17
|
readonly customNamespaces?: readonly NamespaceModule[];
|
|
18
18
|
readonly resources?: readonly UIResourceConfigEntry[];
|
|
19
|
+
readonly colors?: Readonly<Record<string, number>>;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* Compiles one KUI Skin source string to an ESM factory module.
|
|
@@ -24,5 +25,5 @@ export declare function compileKUI(source: string, className?: string, options?:
|
|
|
24
25
|
/**
|
|
25
26
|
* Parses one KUI Skin source string into the compiler IR.
|
|
26
27
|
*/
|
|
27
|
-
export declare function parseToIR(source: string, className?: string, customNamespaces?: readonly NamespaceModule[], resources?: readonly UIResourceConfigEntry[]): SkinIR;
|
|
28
|
+
export declare function parseToIR(source: string, className?: string, customNamespaces?: readonly NamespaceModule[], resources?: readonly UIResourceConfigEntry[], colors?: Readonly<Record<string, number>>): SkinIR;
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAOhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,YAAY,EACX,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,aAAa,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAOhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,YAAY,EACX,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,aAAa,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CASlG;AAED;;GAEG;AACH,wBAAgB,SAAS,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,GAAE,SAAS,eAAe,EAAO,EACjD,SAAS,GAAE,SAAS,qBAAqB,EAAO,EAChD,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAC3C,MAAM,CAER"}
|
package/dist/core/kui/index.js
CHANGED
|
@@ -11,13 +11,13 @@ export { generateCode } from './codegen.js';
|
|
|
11
11
|
* Compiles one KUI Skin source string to an ESM factory module.
|
|
12
12
|
*/
|
|
13
13
|
export function compileKUI(source, className, options) {
|
|
14
|
-
const ir = parseKUISkin(source, className, options?.customNamespaces ?? [], options?.resources ?? []);
|
|
14
|
+
const ir = parseKUISkin(source, className, options?.customNamespaces ?? [], options?.resources ?? [], options?.colors ?? {});
|
|
15
15
|
return generateCode(ir, options);
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Parses one KUI Skin source string into the compiler IR.
|
|
19
19
|
*/
|
|
20
|
-
export function parseToIR(source, className, customNamespaces = [], resources = []) {
|
|
21
|
-
return parseKUISkin(source, className, customNamespaces, resources);
|
|
20
|
+
export function parseToIR(source, className, customNamespaces = [], resources = [], colors = {}) {
|
|
21
|
+
return parseKUISkin(source, className, customNamespaces, resources, colors);
|
|
22
22
|
}
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiB1E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGhF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiB1E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGhF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAY5C;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,SAAkB,EAAE,OAA2B;IACzF,MAAM,EAAE,GAAG,YAAY,CACtB,MAAM,EACN,SAAS,EACT,OAAO,EAAE,gBAAgB,IAAI,EAAE,EAC/B,OAAO,EAAE,SAAS,IAAI,EAAE,EACxB,OAAO,EAAE,MAAM,IAAI,EAAE,CACrB,CAAC;IACF,OAAO,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACxB,MAAc,EACd,SAAkB,EAClB,mBAA+C,EAAE,EACjD,YAA8C,EAAE,EAChD,SAA2C,EAAE;IAE7C,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -4,5 +4,5 @@ import type { NamespaceModule } from './registry.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Parses a KUI Skin document into the existing skin code-generation IR.
|
|
6
6
|
*/
|
|
7
|
-
export declare function parseKUISkin(source: string, className?: string, customNamespaces?: readonly NamespaceModule[], resources?: readonly UIResourceConfigEntry[]): SkinIR;
|
|
7
|
+
export declare function parseKUISkin(source: string, className?: string, customNamespaces?: readonly NamespaceModule[], resources?: readonly UIResourceConfigEntry[], colors?: Readonly<Record<string, number>>): SkinIR;
|
|
8
8
|
//# sourceMappingURL=kui-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kui-parser.d.ts","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kui-parser.d.ts","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAuC,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,KAAK,EAIX,MAAM,EAIN,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,GAAE,SAAS,eAAe,EAAO,EACjD,SAAS,GAAE,SAAS,qBAAqB,EAAO,EAChD,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAC3C,MAAM,CAGR"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { isUIAssetReference, isUIDesignTokenReference, isUIResourceReference, isSyntheticNodeId, parseUIDocument, resolveUIResourceDefaults, } from '@kurot/ui-document';
|
|
1
|
+
import { isUIAssetReference, isUIDesignTokenReference, isUIResourceReference, isSyntheticNodeId, parseUIDocument, resolveUIResourceDefaults, resolveUIStyleColors, } from '@kurot/ui-document';
|
|
2
2
|
import { localName, lookupComponent } from './registry.js';
|
|
3
3
|
/**
|
|
4
4
|
* Parses a KUI Skin document into the existing skin code-generation IR.
|
|
5
5
|
*/
|
|
6
|
-
export function parseKUISkin(source, className, customNamespaces = [], resources = []) {
|
|
7
|
-
const document = resolveUIResourceDefaults(parseUIDocument(source), resources);
|
|
6
|
+
export function parseKUISkin(source, className, customNamespaces = [], resources = [], colors = {}) {
|
|
7
|
+
const document = resolveUIStyleColors(resolveUIResourceDefaults(parseUIDocument(source), resources), colors);
|
|
8
8
|
return new KUIParseContext(source, document, className ?? document.id, customNamespaces).parse();
|
|
9
9
|
}
|
|
10
10
|
class KUIParseContext {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kui-parser.js","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,yBAAyB,
|
|
1
|
+
{"version":3,"file":"kui-parser.js","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-module-builder.d.ts","sourceRoot":"","sources":["../../../src/core/kui/skin-module-builder.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"skin-module-builder.d.ts","sourceRoot":"","sources":["../../../src/core/kui/skin-module-builder.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkDnH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseUIResourceConfigEntries } from '@kurot/ui-document';
|
|
1
|
+
import { parseUIResourceConfigEntries, parseUIStyleSheet } from '@kurot/ui-document';
|
|
2
2
|
import * as esbuild from 'esbuild';
|
|
3
3
|
import * as fs from 'node:fs/promises';
|
|
4
4
|
import * as os from 'node:os';
|
|
@@ -27,7 +27,17 @@ export async function buildSkinsModule(ctx, skins) {
|
|
|
27
27
|
throw new BuildError(`Resource configuration failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
let colors = {};
|
|
31
|
+
try {
|
|
32
|
+
const source = await fs.readFile(path.join(ctx.project.resourceDir, 'config/style.json'), 'utf8');
|
|
33
|
+
colors = parseUIStyleSheet(JSON.parse(source)).colors;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error.code !== 'ENOENT') {
|
|
37
|
+
throw new BuildError(`resource/config/style.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const modules = await Promise.all(skins.map(skin => generateSkinModule(ctx, skin, resources, colors)));
|
|
31
41
|
if (modules.some(module => module === undefined) || ctx.diagnostics.hasErrors()) {
|
|
32
42
|
throw new BuildError('KUI compilation failed.');
|
|
33
43
|
}
|
|
@@ -48,14 +58,14 @@ export async function buildSkinsModule(ctx, skins) {
|
|
|
48
58
|
await fs.rm(temporaryRoot, { recursive: true, force: true });
|
|
49
59
|
}
|
|
50
60
|
}
|
|
51
|
-
async function generateSkinModule(ctx, skin, resources) {
|
|
61
|
+
async function generateSkinModule(ctx, skin, resources, colors) {
|
|
52
62
|
try {
|
|
53
63
|
const namespaces = ctx.project.customNamespaces.map(ns => ({
|
|
54
64
|
prefix: ns.prefix,
|
|
55
65
|
specifier: ns.specifier,
|
|
56
66
|
...(ns.components ? { componentNames: new Set(ns.components.map(component => component.name)) } : {}),
|
|
57
67
|
}));
|
|
58
|
-
const ir = parseToIR(skin.file.contents, skin.className, namespaces, resources);
|
|
68
|
+
const ir = parseToIR(skin.file.contents, skin.className, namespaces, resources, colors);
|
|
59
69
|
const diagnostics = createUnresolvedTagDiagnostics(skin.file.relPath, skin.file.contents, ir.unresolvedTags, namespaces);
|
|
60
70
|
for (const diagnostic of diagnostics) {
|
|
61
71
|
ctx.diagnostics.report(diagnostic);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-module-builder.js","sourceRoot":"","sources":["../../../src/core/kui/skin-module-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"skin-module-builder.js","sourceRoot":"","sources":["../../../src/core/kui/skin-module-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# @kurot/cli — AI context map
|
|
2
|
+
|
|
3
|
+
Read this before exploring `src/`. [`architecture.md`](./architecture.md)
|
|
4
|
+
explains the plugin pipeline. The package is `@kurot/cli@3.2.0`, runs on
|
|
5
|
+
Node.js 20+, and is installed as a project dev dependency.
|
|
6
|
+
|
|
7
|
+
## Directory map
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
src/
|
|
11
|
+
├── index.ts Commander entry
|
|
12
|
+
├── define.ts public configuration type exports
|
|
13
|
+
├── commands/ build, dev, create, clean
|
|
14
|
+
├── core/
|
|
15
|
+
│ ├── config.ts configuration loading and validation
|
|
16
|
+
│ ├── project.ts resolved paths, dependencies, namespaces
|
|
17
|
+
│ ├── pipeline.ts BuildContext and ordered plugin runner
|
|
18
|
+
│ ├── dev-server.ts static server and watchers
|
|
19
|
+
│ ├── diagnostics/ stable codes and JSON/JSONL output
|
|
20
|
+
│ ├── components/ reusable component discovery
|
|
21
|
+
│ ├── kui/ UIDocument → SkinIR → ESM compiler
|
|
22
|
+
│ └── plugins/ build stages
|
|
23
|
+
└── utils/
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Project templates are under `templates/game` and `templates/empty`.
|
|
27
|
+
|
|
28
|
+
## KUI compilation
|
|
29
|
+
|
|
30
|
+
`.kui.xml` is the only authored UI format. `compile-kui.ts` recursively scans
|
|
31
|
+
`ui.sourceDir` and parses every document with `@kurot/ui-document`. Appearance
|
|
32
|
+
assets are adapted by `kui/kui-parser.ts` to the compiler-private `SkinIR`,
|
|
33
|
+
then `skin-module-builder.ts` bundles generated factories.
|
|
34
|
+
|
|
35
|
+
A Skin document root declares `class`, the generated skin registration name,
|
|
36
|
+
and may declare `states`. The Skin is the visual root container: its properties
|
|
37
|
+
and layout apply to the runtime Skin, and its direct visual children become
|
|
38
|
+
`skin.elementsContent` without an extra Group. Overrides use local
|
|
39
|
+
`property.state` attributes. Storage IDs and runtime mapping metadata are not
|
|
40
|
+
authored XML fields.
|
|
41
|
+
|
|
42
|
+
CLI 3.2.0 requires `@kurot/ui-document@^0.10.0`. Schema-defined strings, including
|
|
43
|
+
numeric/boolean-looking text and state text, are literal attributes without
|
|
44
|
+
backslash type escaping. Old synthetic prefixes become literal characters;
|
|
45
|
+
do not migrate them silently. Numeric/boolean properties and schema-free
|
|
46
|
+
collection fields retain their existing rules.
|
|
47
|
+
|
|
48
|
+
The theme JSON at `resource/default.thm.json` is fixed generated output. It is
|
|
49
|
+
derived from built-in naming conventions and configured project component
|
|
50
|
+
pairs, and contains `skins` plus `skinsJs`; it is never read as an authored
|
|
51
|
+
input. Duplicate conventional mappings are errors.
|
|
52
|
+
|
|
53
|
+
`SkinIR` is intentionally smaller than `UIDocument`. It contains resolved
|
|
54
|
+
runtime classes, assignments, visual children, layout descriptor children,
|
|
55
|
+
and state `SetProperty` overrides. Reuse, data contracts, actions, and editor
|
|
56
|
+
transactions stay in `@kurot/ui-document` and `@kurot/ui-runtime`.
|
|
57
|
+
|
|
58
|
+
Successful compilation writes `.kurot/skin-parts.d.ts` from the same IR. Every
|
|
59
|
+
explicitly identified node inside the Skin is a skin part, with its `id`
|
|
60
|
+
as the part name. Internal nodes can omit `id`; the declaration augments
|
|
61
|
+
`SkinPartsMap` and narrows matching exported
|
|
62
|
+
component classes. The file is development metadata and is excluded from
|
|
63
|
+
runtime output.
|
|
64
|
+
|
|
65
|
+
## Reusable components
|
|
66
|
+
|
|
67
|
+
With `ui.components`, `<Name>.ts` under `sourceDir` pairs with
|
|
68
|
+
`<Name>Skin.kui.xml` at the same relative path under `skinDir`. The source must
|
|
69
|
+
export `<Name>`; the paired Skin supplies its own `class`. Discovery creates the
|
|
70
|
+
namespace entry, skin association, and development component catalog. Component
|
|
71
|
+
names must be unique inside the configured namespace.
|
|
72
|
+
|
|
73
|
+
Manual `ui.namespaces` entries remain available for project barrel files. A
|
|
74
|
+
manual prefix cannot conflict with `ui.components.namespace`.
|
|
75
|
+
|
|
76
|
+
## Non-obvious behavior
|
|
77
|
+
|
|
78
|
+
- `--watch` uses development mode even when `--release` is also supplied.
|
|
79
|
+
- Real KUI parse or code-generation failures abort the current build. Dev watch
|
|
80
|
+
keeps the last successful bundle and retries on the next edit.
|
|
81
|
+
- Unknown KUI tags are warnings in normal development, and errors under
|
|
82
|
+
`--strict` or release policy.
|
|
83
|
+
- Machine diagnostic modes own stdout: build emits one JSON result; dev emits
|
|
84
|
+
JSONL lifecycle events.
|
|
85
|
+
- `compileCustomNamespaces` must precede `compileSource`. Application-relative
|
|
86
|
+
imports and generated `#ns/<prefix>` imports must resolve to one bundled class
|
|
87
|
+
identity.
|
|
88
|
+
- Engine and custom namespace chunks share `ctx.outputs.engine` because the
|
|
89
|
+
import-map writer treats both as external specifier mappings.
|
|
90
|
+
- Release bundles preserve class names. UI theme fallback uses constructor
|
|
91
|
+
names, so normal identifier minification would break skin lookup.
|
|
92
|
+
- The Skin module builder stages output in a temporary directory and installs a
|
|
93
|
+
bundle only after every Skin succeeds.
|
|
94
|
+
- `cleanOutput` wipes the active output directory at the start of each build.
|
|
95
|
+
The standalone `clean` command removes both development and release output.
|
|
96
|
+
- `create` queries the npm registry for current Kurot package versions and falls
|
|
97
|
+
back to `latest` if the request fails.
|
|
98
|
+
- Release output is timestamped and `manifest.json` exists only in release.
|
|
99
|
+
|
|
100
|
+
## Plugin order
|
|
101
|
+
|
|
102
|
+
`defaultPlugins()` currently runs:
|
|
103
|
+
|
|
104
|
+
1. clean output;
|
|
105
|
+
2. compile KUI;
|
|
106
|
+
3. compile engine packages;
|
|
107
|
+
4. compile project namespaces;
|
|
108
|
+
5. write the development component catalog;
|
|
109
|
+
6. compile application source;
|
|
110
|
+
7. generate HTML;
|
|
111
|
+
8. write the release manifest;
|
|
112
|
+
9. copy runtime assets.
|
|
113
|
+
|
|
114
|
+
Do not reorder namespace or source compilation without reviewing externalization
|
|
115
|
+
in `namespace-external-plugin.ts`.
|
|
116
|
+
|
|
117
|
+
## Configuration lookup
|
|
118
|
+
|
|
119
|
+
| Task | File |
|
|
120
|
+
| -------------------------------- | -------------------------------------------- |
|
|
121
|
+
| Add or validate a config field | `src/core/config.ts` |
|
|
122
|
+
| Resolve an absolute project path | `src/core/project.ts` |
|
|
123
|
+
| Change KUI scanning/theme output | `src/core/plugins/compile-kui.ts` |
|
|
124
|
+
| Change KUI node code generation | `src/core/kui/kui-parser.ts`, `codegen.ts` |
|
|
125
|
+
| Add a built-in component tag | `src/core/kui/registry.ts` |
|
|
126
|
+
| Change generated part types | `src/core/kui/skin-parts-declaration.ts` |
|
|
127
|
+
| Change component pairing | `src/core/components/discover-components.ts` |
|
|
128
|
+
| Change watch behavior | `src/core/dev-server.ts` |
|
|
129
|
+
| Change output HTML/import maps | `src/core/plugins/generate-html.ts` |
|
|
130
|
+
| Change scaffolding | `src/core/template.ts`, `templates/` |
|
|
131
|
+
| Add a diagnostic code | `src/core/diagnostics/codes.ts` |
|
|
132
|
+
|
|
133
|
+
## Verification
|
|
134
|
+
|
|
135
|
+
Run commands from this package directory:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
pnpm build
|
|
139
|
+
pnpm test
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
CLI end-to-end tests bind localhost and may require permission in a restricted
|
|
143
|
+
execution environment.
|
|
144
|
+
|
|
145
|
+
## Resource configuration change in 3.0.0
|
|
146
|
+
|
|
147
|
+
KUI builds validate object subkeys, resolve resource nine-slice defaults, and
|
|
148
|
+
watch the manifest during development. See
|
|
149
|
+
[the resource-default contract](../../ui-document/docs/resource-nine-slice.md)
|
|
150
|
+
for conversion and compilation boundaries.
|
|
151
|
+
|
|
152
|
+
## Label text compilation in 3.1.0
|
|
153
|
+
|
|
154
|
+
The compiler consumes the shared ui-document catalog and emits Label `textFit`,
|
|
155
|
+
`minFontSize`, authored `size` and state-size overrides unchanged. Runtime
|
|
156
|
+
observations are not authoring inputs, and fitting never becomes a build-time
|
|
157
|
+
measurement. Rendering uses the application's UI >= 3.1.0 and Core >= 2.1.0
|
|
158
|
+
within their respective majors. Neither engine is a CLI runtime dependency.
|
|
159
|
+
See [text compilation](label-text-layout.md) and
|
|
160
|
+
[native Label text layout](../../ui/docs/label-text-layout.md) for the boundary.
|
|
161
|
+
|
|
162
|
+
## Project styles in 3.2.0
|
|
163
|
+
|
|
164
|
+
Read [project styles](../../ui-document/docs/project-styles.md). buildSkinsModule
|
|
165
|
+
reads the optional fixed config/style.json once per build and forwards its numeric
|
|
166
|
+
colors to parseKUISkin before IR conversion. The resource watcher also observes
|
|
167
|
+
config/style.json; missing referenced colors fail with the Skin path and property.
|
|
168
|
+
Base and state colors use @style:colors:<key>; reject the previous color prefix
|
|
169
|
+
without migrating files. Fonts are validated but not loaded; the application owns
|
|
170
|
+
font loading and rendering. Build/preview copies resolve references while authored
|
|
171
|
+
XML retains them. No live runtime palette switching is introduced.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# CLI architecture
|
|
2
|
+
|
|
3
|
+
`@kurot/cli` is a project-local Node.js tool. Commander owns the command layer,
|
|
4
|
+
esbuild owns TypeScript and bundle output, and ordered `BuildPlugin` instances
|
|
5
|
+
share a `BuildContext` through `core/pipeline.ts`.
|
|
6
|
+
|
|
7
|
+
## Build pipeline
|
|
8
|
+
|
|
9
|
+
`defaultPlugins()` runs these stages:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
clean output
|
|
13
|
+
→ compile KUI
|
|
14
|
+
→ compile engine packages
|
|
15
|
+
→ compile custom namespaces
|
|
16
|
+
→ write development component catalog
|
|
17
|
+
→ compile application source
|
|
18
|
+
→ generate HTML
|
|
19
|
+
→ write release manifest
|
|
20
|
+
→ copy runtime assets
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
KUI compilation runs first because skin factories can import project namespace
|
|
24
|
+
components. Namespace and engine chunks are externalized consistently so the
|
|
25
|
+
application, UI runtime, and generated skins share one class identity.
|
|
26
|
+
|
|
27
|
+
## KUI boundary
|
|
28
|
+
|
|
29
|
+
The CLI does not define a second UI document format. It parses `.kui.xml`
|
|
30
|
+
through `@kurot/ui-document`, then adapts appearance documents to the private
|
|
31
|
+
`SkinIR` used by the ESM code generator:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
KUI XML → UIDocument → SkinIR → skin factory → theme bundle
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`SkinIR` contains runtime code-generation details only: resolved imports,
|
|
38
|
+
factory variables, property assignments, semantic layout children, and state
|
|
39
|
+
property overrides. Document contracts, reusable instances, data bindings, and
|
|
40
|
+
actions remain `UIDocument` concepts.
|
|
41
|
+
|
|
42
|
+
CLI 3.2.0 consumes ui-document 0.10.x, retaining Label text-fitting metadata. The
|
|
43
|
+
compiler emits `textFit`, `minFontSize`, base font sizes and state overrides;
|
|
44
|
+
native UI owns measurement and derives drawing sizes after layout validation.
|
|
45
|
+
See [Label compilation](label-text-layout.md). The application supplies UI
|
|
46
|
+
3.1.x and Core 2.1.x or later within their respective majors.
|
|
47
|
+
|
|
48
|
+
Each build also reads optional `resource/config/style.json` through the shared
|
|
49
|
+
parser. Resource nine-slice defaults and named color references resolve into a
|
|
50
|
+
disposable document before SkinIR conversion; authored Skin XML is never rewritten.
|
|
51
|
+
Only the `@style:colors:<key>` section is currently compiled from style references.
|
|
52
|
+
Invalid configurations and unknown colors fail before a new Skin bundle is installed.
|
|
53
|
+
|
|
54
|
+
The authored `Skin` root supplies its generated `class` and optional state
|
|
55
|
+
names. State values live on their target nodes as `property.state`. The compiler
|
|
56
|
+
derives the theme map from built-in naming conventions and configured project
|
|
57
|
+
component pairs, and rejects duplicate conventional mappings. The generated
|
|
58
|
+
theme JSON is an output artifact, never an authored source.
|
|
59
|
+
|
|
60
|
+
## Output ownership
|
|
61
|
+
|
|
62
|
+
`BuildContext.outputs` carries generated filenames between plugins. Important
|
|
63
|
+
entries include the application entry, theme script, namespace chunks, engine
|
|
64
|
+
chunks, and `.kurot/skin-parts.d.ts`.
|
|
65
|
+
|
|
66
|
+
Development builds preserve application source module structure under
|
|
67
|
+
`bin-debug/`. Release builds create a timestamped directory under
|
|
68
|
+
`bin-release/web/`, minify bundles, add content hashes, and write
|
|
69
|
+
`manifest.json`. Static resources retain stable paths because application code
|
|
70
|
+
addresses them by key or URL.
|
|
71
|
+
|
|
72
|
+
## Development watchers
|
|
73
|
+
|
|
74
|
+
The dev server has separate rebuild paths for application source, KUI XML, and
|
|
75
|
+
convention-based reusable components. A component change can affect its source
|
|
76
|
+
namespace, paired skin, generated type declaration, and editor catalog, so that
|
|
77
|
+
path refreshes all four outputs as one operation. The server preserves the last
|
|
78
|
+
successful output after an invalid edit.
|
|
79
|
+
The resource watcher includes the fixed style.json path, rebuilding skins when
|
|
80
|
+
its palette changes; font loading remains an application responsibility.
|
|
81
|
+
|
|
82
|
+
## Diagnostics
|
|
83
|
+
|
|
84
|
+
Plugins report stable diagnostics to the collector rather than throwing on the
|
|
85
|
+
first recoverable problem. Strict policy promotes supported warnings. Build
|
|
86
|
+
JSON emits one final result; dev JSONL emits lifecycle events suitable for a
|
|
87
|
+
long-running editor or agent process.
|
|
88
|
+
|
|
89
|
+
## Main source areas
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
src/core/config.ts project configuration
|
|
93
|
+
src/core/project.ts resolved project paths and namespaces
|
|
94
|
+
src/core/pipeline.ts build context and plugin runner
|
|
95
|
+
src/core/kui/ UIDocument-to-SkinIR compiler
|
|
96
|
+
src/core/components/ reusable component discovery
|
|
97
|
+
src/core/plugins/compile-kui.ts KUI scan, theme derivation, bundle output
|
|
98
|
+
src/core/plugins/ remaining ordered build stages
|
|
99
|
+
src/core/dev-server.ts file watching and static server
|
|
100
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Label text compilation
|
|
2
|
+
|
|
3
|
+
CLI 3.2.0 consumes ui-document 0.10.x and compiles KUI text-fitting properties
|
|
4
|
+
through the existing UIDocument → SkinIR → ESM factory pipeline. The semantic
|
|
5
|
+
document format remains version 2.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```xml
|
|
10
|
+
<Skin xmlns="https://kurot.dev/ui/1" class="skins.AmountSkin" states="down">
|
|
11
|
+
<Label id="amount" text="100.80" width="60" size="24"
|
|
12
|
+
multiline="false" textFit="shrink" minFontSize="16" size.down="20" />
|
|
13
|
+
</Skin>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The generated factory assigns the authored values:
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
amount.multiline = false;
|
|
20
|
+
amount.textFit = 'shrink';
|
|
21
|
+
amount.minFontSize = 16;
|
|
22
|
+
amount.size = 24;
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The down-state size becomes a native `SetProperty('amount', 'size', 20)` override.
|
|
26
|
+
The compiler does not measure fonts or change `size` based on text length,
|
|
27
|
+
currency, locale or display bounds. Source XML remains authored data; neither
|
|
28
|
+
derived sizes nor fitting diagnostics are persisted by compilation.
|
|
29
|
+
|
|
30
|
+
## Runtime boundary
|
|
31
|
+
|
|
32
|
+
- The application must install UI `^3.1.0` and Core `^2.1.0` for shrinking.
|
|
33
|
+
They remain application dependencies; CLI depends on the headless document
|
|
34
|
+
package rather than importing the engine into the build process.
|
|
35
|
+
- `textFit` is `none` by default or `shrink` for ordinary single-line Labels.
|
|
36
|
+
Put a Button's policy on its `labelDisplay` skin part.
|
|
37
|
+
- `minFontSize` defaults to 12 logical pixels and must be finite and >= 1.
|
|
38
|
+
A minimum greater than the authored size does not enlarge the text.
|
|
39
|
+
- UI keeps `size` authored and derives `renderedSize` after layout validation.
|
|
40
|
+
State removal restores the authored base size before fitting again.
|
|
41
|
+
- `renderedSize` and `textFitOverflow` are runtime observations; do not author
|
|
42
|
+
them in KUI XML.
|
|
43
|
+
- Multiline Labels keep their base size; EditableText rejects shrinking.
|
|
44
|
+
- Load fonts before measuring text. For late loading, native UI callers use
|
|
45
|
+
`label.invalidateSize()` after the font becomes ready.
|
|
46
|
+
|
|
47
|
+
UI 3.1's public Label contract owns the full fitting, overflow, layout and
|
|
48
|
+
font-readiness rules. ui-document 0.9's catalog describes the authoring fields.
|
|
49
|
+
The build does not rewrite existing skins or apply project translation rules.
|
|
50
|
+
|
|
51
|
+
## Migration
|
|
52
|
+
|
|
53
|
+
In Core 2.1.0, explicit `multiline="false"` means one unwrapped first line.
|
|
54
|
+
Remove that flag or set it to true where wrapping is intended. The literal-string
|
|
55
|
+
XML contract is retained: a backslash followed by `n` stays literal text rather
|
|
56
|
+
than becoming a hard separator.
|
|
57
|
+
|
|
58
|
+
Existing EXML projects remain on CLI 1.3.x. The KUI release does not introduce
|
|
59
|
+
an EXML migration or resource-format change.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kurot/cli",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Kurot CLI - build tool for Kurot Editor KUI XML workflows",
|
|
5
5
|
"author": "Kelvin <kyia.x52@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"dist",
|
|
15
|
+
"docs/**/*",
|
|
15
16
|
"templates",
|
|
16
17
|
"README.md",
|
|
17
18
|
"CHANGELOG.md",
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
"kurot": "tsx src/index.ts"
|
|
28
29
|
},
|
|
29
30
|
"dependencies": {
|
|
30
|
-
"@kurot/ui-document": "^0.
|
|
31
|
+
"@kurot/ui-document": "^0.10.0",
|
|
31
32
|
"commander": "^13.0.0",
|
|
32
33
|
"esbuild": "^0.25.0"
|
|
33
34
|
},
|