@nanoforge-dev/schematics 2.2.1-beta.88f48da → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +472 -0
  2. package/README.md +12 -15
  3. package/dist/collection.json +8 -23
  4. package/dist/index.cjs +21 -6
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.cts +19 -7
  7. package/dist/index.d.cts.map +1 -1
  8. package/dist/index.d.ts +19 -7
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +17 -4
  11. package/dist/index.js.map +1 -1
  12. package/dist/libs/component/component.factory.d.ts +1 -3
  13. package/dist/libs/component/component.factory.d.ts.map +1 -1
  14. package/dist/libs/component/component.factory.js +2 -1
  15. package/dist/libs/component/component.factory.js.map +1 -1
  16. package/dist/libs/project/files/js/.dockerignore +5 -0
  17. package/dist/libs/project/files/js/Dockerfile +36 -0
  18. package/dist/libs/project/files/js/README.md +53 -0
  19. package/dist/libs/project/files/js/assets/__dot__gitkeep +0 -0
  20. package/dist/libs/project/files/js/jsconfig.json +36 -0
  21. package/dist/libs/project/files/js/nanoforge.config.js +10 -0
  22. package/dist/libs/project/files/js/package.json.template +24 -0
  23. package/dist/libs/project/files/js/pnpm-workspace.yaml.template +3 -0
  24. package/dist/libs/project/files/js/src/components/drawable-circle-2d.component.js +404 -0
  25. package/dist/libs/project/files/js/src/components/position-2d.component.js +42 -0
  26. package/dist/libs/project/files/js/src/main.js +43 -0
  27. package/dist/libs/project/files/js/src/systems/draw-2d.system.js +33 -0
  28. package/dist/libs/project/files/js/src/systems/move-2d.system.js +34 -0
  29. package/dist/libs/project/files/js/src/systems/position-sync.system.js +35 -0
  30. package/dist/libs/project/files/ts/.dockerignore +5 -0
  31. package/dist/libs/project/files/ts/Dockerfile +36 -0
  32. package/dist/libs/project/files/ts/README.md +53 -0
  33. package/dist/libs/project/files/ts/assets/__dot__gitkeep +0 -0
  34. package/dist/libs/project/files/ts/nanoforge.config.ts +5 -0
  35. package/dist/libs/project/files/ts/package.json.template +24 -0
  36. package/dist/libs/project/files/ts/pnpm-workspace.yaml.template +3 -0
  37. package/dist/libs/project/files/ts/src/components/drawable-circle-2d.component.ts +367 -0
  38. package/dist/libs/project/files/ts/src/components/position-2d.component.ts +35 -0
  39. package/dist/libs/project/files/ts/src/main.ts +39 -0
  40. package/dist/libs/project/files/ts/src/systems/draw-2d.system.ts +25 -0
  41. package/dist/libs/project/files/ts/src/systems/move-2d.system.ts +26 -0
  42. package/dist/libs/project/files/ts/src/systems/position-sync.system.ts +27 -0
  43. package/dist/libs/project/files/ts/tsconfig.json +42 -0
  44. package/dist/libs/project/project.factory.d.ts +64 -0
  45. package/dist/libs/project/project.factory.d.ts.map +1 -0
  46. package/dist/libs/project/project.factory.js +122 -0
  47. package/dist/libs/project/project.factory.js.map +1 -0
  48. package/dist/libs/project/schema.json +83 -0
  49. package/dist/libs/system/system.factory.d.ts +1 -3
  50. package/dist/libs/system/system.factory.d.ts.map +1 -1
  51. package/dist/libs/system/system.factory.js +2 -1
  52. package/dist/libs/system/system.factory.js.map +1 -1
  53. package/dist/libs/workspace/files/js/.dockerignore +5 -0
  54. package/dist/libs/workspace/files/js/Dockerfile +36 -0
  55. package/dist/libs/workspace/files/js/README.md +51 -0
  56. package/dist/libs/workspace/files/js/__dot__gitignore +137 -0
  57. package/dist/libs/{application → workspace}/files/js/jsconfig.json +1 -2
  58. package/dist/libs/workspace/files/js/nanoforge.config.js +6 -0
  59. package/dist/libs/workspace/files/js/package.json.template +19 -0
  60. package/dist/libs/workspace/files/js/pnpm-workspace.yaml.template +6 -0
  61. package/dist/libs/workspace/files/ts/.dockerignore +5 -0
  62. package/dist/libs/workspace/files/ts/Dockerfile +36 -0
  63. package/dist/libs/workspace/files/ts/README.md +51 -0
  64. package/dist/libs/workspace/files/ts/__dot__gitignore +134 -0
  65. package/dist/libs/workspace/files/ts/nanoforge.config.ts +6 -0
  66. package/dist/libs/workspace/files/ts/package.json.template +20 -0
  67. package/dist/libs/workspace/files/ts/pnpm-workspace.yaml.template +6 -0
  68. package/dist/libs/{application → workspace}/files/ts/tsconfig.json +1 -2
  69. package/dist/libs/workspace/schema.json +45 -0
  70. package/dist/libs/workspace/workspace.factory.d.ts +42 -0
  71. package/dist/libs/workspace/workspace.factory.d.ts.map +1 -0
  72. package/dist/libs/workspace/workspace.factory.js +116 -0
  73. package/dist/libs/workspace/workspace.factory.js.map +1 -0
  74. package/package.json +23 -21
  75. package/dist/libs/application/application.factory.d.ts +0 -59
  76. package/dist/libs/application/application.factory.d.ts.map +0 -1
  77. package/dist/libs/application/application.factory.js +0 -57
  78. package/dist/libs/application/application.factory.js.map +0 -1
  79. package/dist/libs/application/files/js/.prettierignore +0 -8
  80. package/dist/libs/application/files/js/README.md +0 -166
  81. package/dist/libs/application/files/js/eslint.config.js +0 -11
  82. package/dist/libs/application/files/js/package.json.template +0 -48
  83. package/dist/libs/application/files/js/pnpm-workspace.yaml.template +0 -3
  84. package/dist/libs/application/files/js/prettier.config.js +0 -6
  85. package/dist/libs/application/files/ts/.prettierignore +0 -8
  86. package/dist/libs/application/files/ts/README.md +0 -166
  87. package/dist/libs/application/files/ts/eslint.config.js +0 -15
  88. package/dist/libs/application/files/ts/package.json.template +0 -52
  89. package/dist/libs/application/files/ts/pnpm-workspace.yaml.template +0 -3
  90. package/dist/libs/application/files/ts/prettier.config.js +0 -6
  91. package/dist/libs/application/schema.json +0 -70
  92. package/dist/libs/configuration/configuration.factory.d.ts +0 -31
  93. package/dist/libs/configuration/configuration.factory.d.ts.map +0 -1
  94. package/dist/libs/configuration/configuration.factory.js +0 -97
  95. package/dist/libs/configuration/configuration.factory.js.map +0 -1
  96. package/dist/libs/configuration/files/nanoforge.config.json +0 -1
  97. package/dist/libs/configuration/schema.json +0 -34
  98. package/dist/libs/docker/docker.factory.d.ts +0 -19
  99. package/dist/libs/docker/docker.factory.d.ts.map +0 -1
  100. package/dist/libs/docker/docker.factory.js +0 -20
  101. package/dist/libs/docker/docker.factory.js.map +0 -1
  102. package/dist/libs/docker/files/.dockerignore +0 -1
  103. package/dist/libs/docker/files/Dockerfile +0 -25
  104. package/dist/libs/docker/schema.json +0 -19
  105. package/dist/libs/part-base/files/js/__nanoforgeFolder__/client.save.json +0 -77
  106. package/dist/libs/part-base/files/js/__nanoforgeFolder__/server.save.json +0 -49
  107. package/dist/libs/part-base/files/js/__part__/components/example.component.js +0 -72
  108. package/dist/libs/part-base/files/js/__part__/init/after-init.js +0 -12
  109. package/dist/libs/part-base/files/js/__part__/init/after-registry-init.js +0 -14
  110. package/dist/libs/part-base/files/js/__part__/init/after-run.js +0 -12
  111. package/dist/libs/part-base/files/js/__part__/init/before-init.js +0 -13
  112. package/dist/libs/part-base/files/js/__part__/init/before-registry-init.js +0 -14
  113. package/dist/libs/part-base/files/js/__part__/init/before-run.js +0 -12
  114. package/dist/libs/part-base/files/js/__part__/systems/example.system.js +0 -44
  115. package/dist/libs/part-base/files/ts/__nanoforgeFolder__/client.save.json +0 -77
  116. package/dist/libs/part-base/files/ts/__nanoforgeFolder__/server.save.json +0 -49
  117. package/dist/libs/part-base/files/ts/__part__/components/example.component.ts +0 -55
  118. package/dist/libs/part-base/files/ts/__part__/init/after-init.ts +0 -5
  119. package/dist/libs/part-base/files/ts/__part__/init/after-registry-init.ts +0 -6
  120. package/dist/libs/part-base/files/ts/__part__/init/after-run.ts +0 -5
  121. package/dist/libs/part-base/files/ts/__part__/init/before-init.ts +0 -5
  122. package/dist/libs/part-base/files/ts/__part__/init/before-registry-init.ts +0 -6
  123. package/dist/libs/part-base/files/ts/__part__/init/before-run.ts +0 -5
  124. package/dist/libs/part-base/files/ts/__part__/systems/example.system.ts +0 -31
  125. package/dist/libs/part-base/part-base.factory.d.ts +0 -31
  126. package/dist/libs/part-base/part-base.factory.d.ts.map +0 -1
  127. package/dist/libs/part-base/part-base.factory.js +0 -33
  128. package/dist/libs/part-base/part-base.factory.js.map +0 -1
  129. package/dist/libs/part-base/schema.json +0 -35
  130. package/dist/libs/part-main/part-main.factory.d.ts +0 -39
  131. package/dist/libs/part-main/part-main.factory.d.ts.map +0 -1
  132. package/dist/libs/part-main/part-main.factory.js +0 -252
  133. package/dist/libs/part-main/part-main.factory.js.map +0 -1
  134. package/dist/libs/part-main/schema.json +0 -43
  135. /package/dist/libs/{application → project}/files/js/__dot__gitignore +0 -0
  136. /package/dist/libs/{application → project}/files/ts/__dot__gitignore +0 -0
  137. /package/dist/libs/{application → workspace}/files/js/__dot__env +0 -0
  138. /package/dist/libs/{application → workspace}/files/ts/__dot__env +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,472 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ # [2.3.0](https://github.com/NanoForge-dev/CLI/compare/1.6.2...2.3.0) - (2026-09-24)
6
+
7
+ > `@nanoforge-dev/schematics` now lives in the CLI monorepo (`libs/schematics`) and is released
8
+ > together with `@nanoforge-dev/cli` and `@nanoforge-dev/config`. In this release the
9
+ > collection was rewritten for the NanoForge v2 game architecture. The generated game changed
10
+ > shape, and entry files are no longer regenerated from save files.
11
+
12
+ ## Why 2.3.0
13
+
14
+ `@nanoforge-dev/cli`, `@nanoforge-dev/config` and `@nanoforge-dev/schematics` now share **one
15
+ version number** and are released together. The shared version must be higher than the latest
16
+ published version of every package. Schematics had the highest number of the three: **2.2.1**,
17
+ its last release from the old `NanoForge-dev/schematics` repository. So every package is
18
+ aligned on the schematics line, and this release is the next minor version, **2.3.0**.
19
+
20
+ For schematics, this is the normal next release after 2.2.1. The other packages jump to catch
21
+ up: CLI 1.6.2 → 2.3.0, config 1.4.2 → 2.3.0. From now on, the three packages always have the
22
+ same version.
23
+
24
+ ## The generated game: v1 vs v2
25
+
26
+ ### v1: one app, two parts, entry files built from save files
27
+
28
+ ```
29
+ my-game/
30
+ ├── nanoforge.config.json # one config for client + server
31
+ ├── .nanoforge/
32
+ │ ├── client.save.json # libraries / components / systems / entities
33
+ │ ├── server.save.json
34
+ │ └── editor/<part>/main.ts # generated editor entry
35
+ ├── client/
36
+ │ ├── main.ts # GENERATED from client.save.json (part-main)
37
+ │ ├── init/ # before-/after- init, registry-init and run hooks
38
+ │ ├── components/example.component.ts
39
+ │ └── systems/example.system.ts
40
+ └── server/ # same layout, only with a server
41
+ ```
42
+
43
+ It took five schematics to build this: `application` → `configuration` → `part-base` →
44
+ `part-main` → `docker`. `part-main` read `.nanoforge/<part>.save.json` and wrote `main.ts`
45
+ again every time `nf generate` ran.
46
+
47
+ ### v2: standalone projects, grouped by a workspace
48
+
49
+ A single-player game is **one `client` project**:
50
+
51
+ ```
52
+ my-game/
53
+ ├── nanoforge.config.ts # { type: "client" }
54
+ ├── package.json # nf dev / nf build / nf start
55
+ ├── tsconfig.json | jsconfig.json
56
+ ├── assets/
57
+ └── src/
58
+ ├── main.ts # scaffolded once, then yours
59
+ ├── components/ position-2d, drawable-circle-2d
60
+ └── systems/ draw-2d
61
+ ```
62
+
63
+ A multiplayer game is a **workspace** plus one project per app:
64
+
65
+ ```
66
+ my-game/
67
+ ├── nanoforge.config.ts # { type: "workspace", packages: ["apps/*"] }
68
+ ├── package.json # workspace root
69
+ ├── pnpm-workspace.yaml # pnpm only
70
+ ├── .env # client ↔ server networking
71
+ ├── Dockerfile / .dockerignore # optional: one image for every app
72
+ └── apps/
73
+ ├── client/ # { type: "client" }: draw-2d + position-sync
74
+ └── server/ # { type: "server" }: move-2d
75
+ ```
76
+
77
+ | Concern | v1 | v2 |
78
+ | ------------------ | ----------------------------------------------- | --------------------------------------------------------------- |
79
+ | Unit of generation | One app with `client/` and `server/` parts | A `workspace` and independent `project`s (`part: client/server`) |
80
+ | Config | One `nanoforge.config.json` | One `nanoforge.config.ts/.js` per workspace and per project |
81
+ | Entry file | Regenerated from `.nanoforge/*.save.json` | Scaffolded once, then owned by the developer |
82
+ | Lifecycle hooks | `init/*.ts` files (`initFunctions`) | Removed. Write the code in `main.ts` around `init()` / `run()` |
83
+ | Dependencies | One `package.json` | One per project, each with only the libraries it needs |
84
+ | Docker | `docker` schematic | `docker` option on `workspace` or on a standalone `project` |
85
+
86
+ ## Collection
87
+
88
+ | Schematic | Status | Purpose |
89
+ | ----------- | ----------- | ------------------------------------------------------------------------------------------- |
90
+ | `workspace` | **New** | Monorepo root: config, `package.json`, TS/JS config, `.env`, `.gitignore`, README, Docker |
91
+ | `project` | **New** | A `client` or `server` project: config, `package.json`, `src/main`, demo game, Docker |
92
+ | `component` | Kept | A single ECS component with its editor manifest |
93
+ | `system` | Kept | A single ECS system with its editor manifest |
94
+ | `application`, `configuration`, `part-base`, `part-main`, `docker` | **Removed** | Replaced by `workspace` + `project` |
95
+
96
+ With `part-main` gone, the save-file format, the save → `main.ts` code generator, the editor
97
+ entry variant (`Graphics2DEditorLibrary`) and the `init/` hook templates are all removed too.
98
+
99
+ ## `workspace` schematic
100
+
101
+ - Options: `name`, `directory` (defaults to `name`), `language`, `strict`, `packageManager`,
102
+ `allowBuilds`, `docker`.
103
+ - Writes a root `nanoforge.config` with `{ type: "workspace", packages: ["apps/*"] }`, and
104
+ workspace wiring for the chosen package manager: `pnpm-workspace.yaml` for pnpm,
105
+ `"workspaces": ["apps/*"]` for the others.
106
+ - Root `devDependencies`: `@nanoforge-dev/cli`, `nanoforge`, `typescript` (limited to major 6).
107
+ - `bun` is always allowed to run its install script, because `@nanoforge-dev/cli` depends on
108
+ it. The allow-list goes into `allowBuilds` (pnpm), `allowScripts` (npm) or
109
+ `trustedDependencies` (bun).
110
+ - `.env` sets the default networking values:
111
+ `NANOFORGE_CLIENT_SERVER_{TCP,UDP}_PORT=4444/4445`, `NANOFORGE_CLIENT_SERVER_ADDRESS=127.0.0.1`
112
+ and `NANOFORGE_SERVER_LISTENING_{TCP,UDP}_PORT=4444/4445`.
113
+ - With `docker`, it writes one multi-stage `Dockerfile` that builds every app, tuned for each
114
+ package manager: `pnpm fetch` + offline install, `npm ci`, or a Bun image. Node 26,
115
+ port 3000.
116
+
117
+ ## `project` schematic
118
+
119
+ - Options:
120
+ - `part` (`client` | `server`, required)
121
+ - `name` / `workspaceName`: the package name becomes `<workspace>-<name>`, or just `<name>`
122
+ for a standalone project
123
+ - `directory`: the full destination path, with nothing appended
124
+ - `workspace`, `hasServer`, `docker`, `strict`, `language`, `packageManager`
125
+ - `editor`: for now it only adds an `nf editor` section to the README
126
+ - `docker` is ignored inside a workspace, because the workspace's own Dockerfile builds the
127
+ project.
128
+
129
+ ### Generated entry file
130
+
131
+ ```ts
132
+ import { NanoforgeFactory, type ClientRunOptions } from "nanoforge";
133
+ import { EcsLibrary } from "@nanoforge-dev/ecs/client";
134
+ import { Graphics2DLibrary } from "@nanoforge-dev/graphics-2d";
135
+ import { InputLibrary } from "@nanoforge-dev/input";
136
+ import { NetworkClientLibrary } from "@nanoforge-dev/network/client";
137
+
138
+ export const main = async (options: ClientRunOptions): Promise<void> => {
139
+ const app = NanoforgeFactory.createClient({ tickRate: 60 });
140
+
141
+ const ecs = new EcsLibrary();
142
+ app.use(ecs);
143
+ app.use(new Graphics2DLibrary());
144
+ app.use(new InputLibrary());
145
+ app.use(new NetworkClientLibrary());
146
+
147
+ await app.init(options);
148
+ // spawn entities, add systems…
149
+ await app.run();
150
+ };
151
+ ```
152
+
153
+ - It targets the **engine v2 API**: the `nanoforge` meta-package with `NanoforgeFactory`,
154
+ run-option types and `Context`, and libraries added with `app.use(...)`.
155
+ - Client/server variants now use **subpath exports**: `@nanoforge-dev/ecs/<part>` and
156
+ `@nanoforge-dev/network/<part>`, instead of `@nanoforge-dev/ecs-client` / `ecs-server`.
157
+ - `Registry` and the editor manifest types come from `@nanoforge-dev/ecs`. `Context` comes from
158
+ `nanoforge`, no longer from `@nanoforge-dev/common`.
159
+ - Default libraries: the client gets ECS, Graphics 2D, Input and Network. The server gets ECS
160
+ and Network. The v1 default save also included AssetManager and Music.
161
+
162
+ ### Demo game: the server owns the state
163
+
164
+ The v1 placeholder (`ExampleComponent` / `exampleSystem`, which stopped the app after a
165
+ countdown) is replaced by a small multiplayer loop:
166
+
167
+ | Project | Components | Systems |
168
+ | ------- | --------------------------------- | ---------------------------------------------------------------------------------- |
169
+ | client | `Position2D`, `DrawableCircle2D` | `draw2D`: draws every drawable at its position |
170
+ | client | — | `positionSync` (only with `hasServer`): applies positions received over TCP |
171
+ | server | `Position2D` | `move2D`: moves the entity and broadcasts `{x, y}` with `network.tcp.sendToEverybody` |
172
+
173
+ Components and systems still export an editor manifest and a default export of their name,
174
+ the same as in v1.
175
+
176
+ ### Dependencies
177
+
178
+ - client `devDependencies`: `nanoforge`, `@nanoforge-dev/ecs`, `@nanoforge-dev/graphics-2d`,
179
+ `@nanoforge-dev/input`, `@nanoforge-dev/network`.
180
+ - server: `@nanoforge-dev/network` is a runtime **`dependency`** (#226). `nanoforge` and
181
+ `@nanoforge-dev/ecs` are `devDependencies`.
182
+ - **Version lookup at generation time** (`fetchTrustedVersion(s)`): the npm registry is
183
+ queried, and only stable versions published **at least 48 hours ago** are picked (the same
184
+ idea as pnpm's `minimumReleaseAge`). Lookups time out after 3 s. If a lookup fails, engine
185
+ packages fall back to `^2`, the CLI to `latest` and TypeScript to `6.0.3`.
186
+
187
+ ## Breaking changes
188
+
189
+ - The `application`, `configuration`, `part-base`, `part-main` and `docker` schematics are
190
+ removed. Use `workspace` + `project`.
191
+ - Save files (`.nanoforge/*.save.json`) are no longer generated or read. Entry files are
192
+ scaffolded once.
193
+ - `init/` hook files and the `initFunctions` behaviour are removed.
194
+ - Generated configs are `nanoforge.config.ts` / `.js` (`@nanoforge-dev/config` format), no
195
+ longer `nanoforge.config.json`.
196
+ - Generated code targets the engine v2 packages.
197
+
198
+ ## Tests & docs
199
+
200
+ - E2E suites for `workspace`, `project`, `component` and `system`, and unit tests for the
201
+ registry, naming, formatting and object helpers.
202
+ - New docs section *Schematics*: overview, workspace, project, component, system.
203
+ - Built with tsdown and part of the Turborepo pipeline. Requires Node 26.
204
+
205
+ ## Known issues
206
+
207
+ - **`component` / `system` templates still use v1 imports:** `@nanoforge-dev/ecs-<part>` and
208
+ `@nanoforge-dev/common`. The system template also imports `../components/example.component`,
209
+ which v2 projects don't have. Code generated by `nf create` in a v2 project won't compile.
210
+ - **The workspace `package.json` scripts run `nf dev -r`, `nf build -r` and `nf start -r`,**
211
+ but the CLI has no `-r` option.
212
+ - **`project` declares options it ignores:** `libs`, `allowBuilds` (hardcoded to
213
+ `workspace ? [] : ["bun"]`) and `initFunctions`, which is left over from v1.
214
+ - Generated configs import `defineConfig` from `nanoforge/config`, and the entry file imports
215
+ the engine v2 packages. Neither is published yet.
216
+
217
+ ## Commits
218
+
219
+ ### Features
220
+
221
+ - Put network lib in dependencies (#226) ([e2dde26](https://github.com/NanoForge-dev/CLI/commit/e2dde2607736949caf85a057135c23fed8408861)) by @Exeloo
222
+ - Add new project and workspace schematics and remove old ones (#216) ([f551392](https://github.com/NanoForge-dev/CLI/commit/f551392a843d592b1efc70cf4613f98f616999b0)) by @Exeloo
223
+ - Add schematics (#200) ([330b9be](https://github.com/NanoForge-dev/CLI/commit/330b9bee1084c911aad8291c25aa591f0eb0d340)) by @Exeloo
224
+
225
+ ### Refactor
226
+
227
+ - **cli:** Change create command to fit the new architecture (#222) ([3afb463](https://github.com/NanoForge-dev/CLI/commit/3afb463c96d7e511e492a6c8cbe82b686d837a08)) by @Exeloo
228
+ - **cli:** Change start command to fit the new architecture (#220) ([3acb4a1](https://github.com/NanoForge-dev/CLI/commit/3acb4a1e214426a1f5e953774859eba38ca49ffa)) by @Exeloo
229
+ - Change build cmd to new archi (#219) ([6700f71](https://github.com/NanoForge-dev/CLI/commit/6700f71e9d500efea0eb80aaad655623415f489b)) by @Exeloo
230
+ - **cli:** Change new cmd to new archi (#218) ([a2e0d1f](https://github.com/NanoForge-dev/CLI/commit/a2e0d1ffe60063d3f5ae22ed78718e7592fe0f72)) by @Exeloo
231
+
232
+ # [2.2.0](https://github.com/NanoForge-dev/schematics/compare/2.1.4...2.2.0) - (2026-06-30)
233
+
234
+ ## Features
235
+
236
+ - Add pnpm workspace in app schematic (#155) ([5e0924d](https://github.com/NanoForge-dev/schematics/commit/5e0924d217c6ca62e322627f4adee79470c7bf2f)) by @Exeloo
237
+ - Add assets to entity generation (#153) ([a008fc6](https://github.com/NanoForge-dev/schematics/commit/a008fc6784cc4d15f3f09fc41efd9a0ea658c3a5)) by @Exeloo
238
+ - Graphics 2d editor generation (#154) ([89059f7](https://github.com/NanoForge-dev/schematics/commit/89059f7fbb5a505f3669bc691acbf377abd51fa6)) by @Exeloo
239
+
240
+ # [2.1.4](https://github.com/NanoForge-dev/schematics/compare/1.0.2...2.1.4) - (2026-06-29)
241
+
242
+ ## Bug Fixes
243
+
244
+ - Issues (#139) ([131e794](https://github.com/NanoForge-dev/schematics/commit/131e794601b9fdcb583ac52eab9ca44a1cf8531f)) by @Exeloo
245
+ - **synchronize-docs:** Use actions key to have the rights (#127) ([f73464d](https://github.com/NanoForge-dev/schematics/commit/f73464d09f08f14f2c82960fe9cef2dfde7c00dc)) by @MartinFillon
246
+ - Give package json path (#124) ([a31e265](https://github.com/NanoForge-dev/schematics/commit/a31e26522078c9b60a63d3d91f1eccda96dadac7)) by @MartinFillon
247
+ - **template:** New format (#113) ([1e89de7](https://github.com/NanoForge-dev/schematics/commit/1e89de7a536f75783c260cf1a0f0b05f99ffcf97)) by @Tchips46
248
+ - Remove name formatting on app (#110) ([9478843](https://github.com/NanoForge-dev/schematics/commit/9478843b45a97714070babc6a7d41b8a9a6f2f65)) by @Exeloo
249
+ - Change save format in part base schematic (#105) ([6eaffe8](https://github.com/NanoForge-dev/schematics/commit/6eaffe8d94ce99727a8c27e1f7d5e3fa39a787ca)) by @Exeloo
250
+ - **docker:** Change base image as alpine doesnt have the right libs (#102) ([3b8c2b2](https://github.com/NanoForge-dev/schematics/commit/3b8c2b2476210b3df6a08415bb5f18b7cbdaf970)) by @MartinFillon
251
+ - Remove ts types in js example system in part base (#93) ([89555b4](https://github.com/NanoForge-dev/schematics/commit/89555b46ffa8f3a4e2f157ecd9fabb2202de1cd7)) by @Exeloo
252
+ - Fields does not replace on application (#86) ([d252953](https://github.com/NanoForge-dev/schematics/commit/d252953d4aef98a3ea505bb7bd45701f139d5599)) by @Exeloo
253
+ - Use of directory variable and js issues (#84) ([9d98d1a](https://github.com/NanoForge-dev/schematics/commit/9d98d1ae977e69cfc07b4e9131bde2ea2b34964f)) by @Exeloo
254
+
255
+ ## Documentation
256
+
257
+ - Fix docs path (#140) ([fead8fd](https://github.com/NanoForge-dev/schematics/commit/fead8fd1e12ff872a5056f791dcaa7013bd135db)) by @Exeloo
258
+ - Add schematics docs (#61) ([7735324](https://github.com/NanoForge-dev/schematics/commit/7735324bcb5438929a24481e157677cc25f7457c)) by @Exeloo
259
+ - Fix contribution (#47) ([b6ad53e](https://github.com/NanoForge-dev/schematics/commit/b6ad53e9f77b6f6619b5090f08e9d3fb94e90a74)) by @Exeloo
260
+ - Add contributing docs and actions (#41) ([91eea94](https://github.com/NanoForge-dev/schematics/commit/91eea949ea785a03ca66d3a6e07d30d8e24df815)) by @Exeloo
261
+
262
+ ## Features
263
+
264
+ - Add new release workflow (#137) ([af6c1e0](https://github.com/NanoForge-dev/schematics/commit/af6c1e0a9d49cb0cf46bbe6edde02ccfde04bc89)) by @Exeloo
265
+ - Use new docs actions to synchronize config (#123) ([fa3f4ec](https://github.com/NanoForge-dev/schematics/commit/fa3f4ece55b281bb37771b2f1fe5580ff5f707fc)) by @MartinFillon
266
+ - Add dom to application schema tsconfig (#111) ([368fa7c](https://github.com/NanoForge-dev/schematics/commit/368fa7cdd94027fa9b8cc23516654bd6bb3a0beb)) by @Exeloo
267
+ - Add component and system schematics (#103) ([38c90df](https://github.com/NanoForge-dev/schematics/commit/38c90df9bbe971da83aaa0338f39f875695083cf)) by @Exeloo
268
+ - **editor:** Add component holding entity id (#100) ([433c648](https://github.com/NanoForge-dev/schematics/commit/433c64851faafaf4198ac56801d09b47cce150c4)) by @Tchips46
269
+ - **save:** Allow partial saves component values as record string any (#98) ([9280349](https://github.com/NanoForge-dev/schematics/commit/9280349d9028d99028ab529e3c477cfd11d14606)) by @Tchips46
270
+ - Set save params types to any (#96) ([7a29579](https://github.com/NanoForge-dev/schematics/commit/7a29579e03fc1c4ca2ebc7794b4b3dd60167f741)) by @Exeloo
271
+ - Add core editor to dependencies (#90) ([29cfa08](https://github.com/NanoForge-dev/schematics/commit/29cfa0864ee4a84fdc5aed5e790da454334dd2d5)) by @Exeloo
272
+ - Add better handling of path option (#89) ([1e0c469](https://github.com/NanoForge-dev/schematics/commit/1e0c469f98aac91d81e21d20e36a7d9e7a94df8b)) by @Exeloo
273
+ - **BREAKING CHANGE:** Old schemas doesn't work anymore and config is changed
274
+ - Add editor option to part main schematic (#88) ([c59ed27](https://github.com/NanoForge-dev/schematics/commit/c59ed2710e2db2bcd3e5c553be9c80f5ad54b732)) by @Exeloo
275
+ - Add lint param handling on application (#79) ([96c2128](https://github.com/NanoForge-dev/schematics/commit/96c212817d763fc2677d28cd57f3d196c6a45f6d)) by @Exeloo
276
+ - Setup docker schema (#75) ([cf7ead5](https://github.com/NanoForge-dev/schematics/commit/cf7ead5c49164a85e3beb65be3c73c842cd14e58)) by @MartinFillon
277
+ - Add network and fix versions in app base (#70) ([6d5963a](https://github.com/NanoForge-dev/schematics/commit/6d5963a954e7a27c442377ecb70716a43e479717)) by @Exeloo
278
+ - Update and add pre-release (#48) ([49422f7](https://github.com/NanoForge-dev/schematics/commit/49422f7ad9e0595378cf6e8b44dc7711d09b8cfa)) by @Exeloo
279
+
280
+ ## Testing
281
+
282
+ - Add unit tests and e2e tests (#67) ([8eef6b5](https://github.com/NanoForge-dev/schematics/commit/8eef6b51984d1187d3f0b936d670e362ad0224c6)) by @Exeloo
283
+
284
+ ### New Contributors
285
+
286
+ - @MartinFillon made their first contribution in #151
287
+ - @github-actions[bot] made their first contribution in #150
288
+ - @dependabot[bot] made their first contribution in #143
289
+ - @Tchips46 made their first contribution in #113
290
+
291
+ # [2.1.4](https://github.com/NanoForge-dev/schematics/compare/1.0.2...2.1.4) - (2026-06-29)
292
+
293
+ ## Bug Fixes
294
+
295
+ - Issues (#139) ([131e794](https://github.com/NanoForge-dev/schematics/commit/131e794601b9fdcb583ac52eab9ca44a1cf8531f)) by @Exeloo
296
+ - **synchronize-docs:** Use actions key to have the rights (#127) ([f73464d](https://github.com/NanoForge-dev/schematics/commit/f73464d09f08f14f2c82960fe9cef2dfde7c00dc)) by @MartinFillon
297
+ - Give package json path (#124) ([a31e265](https://github.com/NanoForge-dev/schematics/commit/a31e26522078c9b60a63d3d91f1eccda96dadac7)) by @MartinFillon
298
+ - **template:** New format (#113) ([1e89de7](https://github.com/NanoForge-dev/schematics/commit/1e89de7a536f75783c260cf1a0f0b05f99ffcf97)) by @Tchips46
299
+ - Remove name formatting on app (#110) ([9478843](https://github.com/NanoForge-dev/schematics/commit/9478843b45a97714070babc6a7d41b8a9a6f2f65)) by @Exeloo
300
+ - Change save format in part base schematic (#105) ([6eaffe8](https://github.com/NanoForge-dev/schematics/commit/6eaffe8d94ce99727a8c27e1f7d5e3fa39a787ca)) by @Exeloo
301
+ - **docker:** Change base image as alpine doesnt have the right libs (#102) ([3b8c2b2](https://github.com/NanoForge-dev/schematics/commit/3b8c2b2476210b3df6a08415bb5f18b7cbdaf970)) by @MartinFillon
302
+ - Remove ts types in js example system in part base (#93) ([89555b4](https://github.com/NanoForge-dev/schematics/commit/89555b46ffa8f3a4e2f157ecd9fabb2202de1cd7)) by @Exeloo
303
+ - Fields does not replace on application (#86) ([d252953](https://github.com/NanoForge-dev/schematics/commit/d252953d4aef98a3ea505bb7bd45701f139d5599)) by @Exeloo
304
+ - Use of directory variable and js issues (#84) ([9d98d1a](https://github.com/NanoForge-dev/schematics/commit/9d98d1ae977e69cfc07b4e9131bde2ea2b34964f)) by @Exeloo
305
+
306
+ ## Documentation
307
+
308
+ - Fix docs path (#140) ([fead8fd](https://github.com/NanoForge-dev/schematics/commit/fead8fd1e12ff872a5056f791dcaa7013bd135db)) by @Exeloo
309
+ - Add schematics docs (#61) ([7735324](https://github.com/NanoForge-dev/schematics/commit/7735324bcb5438929a24481e157677cc25f7457c)) by @Exeloo
310
+ - Fix contribution (#47) ([b6ad53e](https://github.com/NanoForge-dev/schematics/commit/b6ad53e9f77b6f6619b5090f08e9d3fb94e90a74)) by @Exeloo
311
+ - Add contributing docs and actions (#41) ([91eea94](https://github.com/NanoForge-dev/schematics/commit/91eea949ea785a03ca66d3a6e07d30d8e24df815)) by @Exeloo
312
+
313
+ ## Features
314
+
315
+ - Add new release workflow (#137) ([af6c1e0](https://github.com/NanoForge-dev/schematics/commit/af6c1e0a9d49cb0cf46bbe6edde02ccfde04bc89)) by @Exeloo
316
+ - Use new docs actions to synchronize config (#123) ([fa3f4ec](https://github.com/NanoForge-dev/schematics/commit/fa3f4ece55b281bb37771b2f1fe5580ff5f707fc)) by @MartinFillon
317
+ - Add dom to application schema tsconfig (#111) ([368fa7c](https://github.com/NanoForge-dev/schematics/commit/368fa7cdd94027fa9b8cc23516654bd6bb3a0beb)) by @Exeloo
318
+ - Add component and system schematics (#103) ([38c90df](https://github.com/NanoForge-dev/schematics/commit/38c90df9bbe971da83aaa0338f39f875695083cf)) by @Exeloo
319
+ - **editor:** Add component holding entity id (#100) ([433c648](https://github.com/NanoForge-dev/schematics/commit/433c64851faafaf4198ac56801d09b47cce150c4)) by @Tchips46
320
+ - **save:** Allow partial saves component values as record string any (#98) ([9280349](https://github.com/NanoForge-dev/schematics/commit/9280349d9028d99028ab529e3c477cfd11d14606)) by @Tchips46
321
+ - Set save params types to any (#96) ([7a29579](https://github.com/NanoForge-dev/schematics/commit/7a29579e03fc1c4ca2ebc7794b4b3dd60167f741)) by @Exeloo
322
+ - Add core editor to dependencies (#90) ([29cfa08](https://github.com/NanoForge-dev/schematics/commit/29cfa0864ee4a84fdc5aed5e790da454334dd2d5)) by @Exeloo
323
+ - Add better handling of path option (#89) ([1e0c469](https://github.com/NanoForge-dev/schematics/commit/1e0c469f98aac91d81e21d20e36a7d9e7a94df8b)) by @Exeloo
324
+ - **BREAKING CHANGE:** Old schemas doesn't work anymore and config is changed
325
+ - Add editor option to part main schematic (#88) ([c59ed27](https://github.com/NanoForge-dev/schematics/commit/c59ed2710e2db2bcd3e5c553be9c80f5ad54b732)) by @Exeloo
326
+ - Add lint param handling on application (#79) ([96c2128](https://github.com/NanoForge-dev/schematics/commit/96c212817d763fc2677d28cd57f3d196c6a45f6d)) by @Exeloo
327
+ - Setup docker schema (#75) ([cf7ead5](https://github.com/NanoForge-dev/schematics/commit/cf7ead5c49164a85e3beb65be3c73c842cd14e58)) by @MartinFillon
328
+ - Add network and fix versions in app base (#70) ([6d5963a](https://github.com/NanoForge-dev/schematics/commit/6d5963a954e7a27c442377ecb70716a43e479717)) by @Exeloo
329
+ - Update and add pre-release (#48) ([49422f7](https://github.com/NanoForge-dev/schematics/commit/49422f7ad9e0595378cf6e8b44dc7711d09b8cfa)) by @Exeloo
330
+
331
+ ## Testing
332
+
333
+ - Add unit tests and e2e tests (#67) ([8eef6b5](https://github.com/NanoForge-dev/schematics/commit/8eef6b51984d1187d3f0b936d670e362ad0224c6)) by @Exeloo
334
+
335
+ ### New Contributors
336
+
337
+ - @MartinFillon made their first contribution in #149
338
+ - @dependabot[bot] made their first contribution in #143
339
+ - @github-actions[bot] made their first contribution in #114
340
+ - @Tchips46 made their first contribution in #113
341
+
342
+ # [@nanoforge-dev/schematics@2.1.3](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@2.1.2...@nanoforge-dev/schematics@2.1.3) - (2026-04-19)
343
+
344
+ ## Bug Fixes
345
+
346
+ - **template:** New format (#113) ([1e89de7](https://github.com/NanoForge-dev/schematics/commit/1e89de7a536f75783c260cf1a0f0b05f99ffcf97)) by @Tchips46
347
+
348
+ # [@nanoforge-dev/schematics@2.1.2](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@2.1.1...@nanoforge-dev/schematics@2.1.2) - (2026-04-17)
349
+
350
+ ## Bug Fixes
351
+
352
+ - Remove name formatting on app (#110) ([9478843](https://github.com/NanoForge-dev/schematics/commit/9478843b45a97714070babc6a7d41b8a9a6f2f65)) by @Exeloo
353
+
354
+ ## Features
355
+
356
+ - Add dom to application schema tsconfig (#111) ([368fa7c](https://github.com/NanoForge-dev/schematics/commit/368fa7cdd94027fa9b8cc23516654bd6bb3a0beb)) by @Exeloo
357
+
358
+ # [@nanoforge-dev/schematics@2.1.1](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@2.1.0...@nanoforge-dev/schematics@2.1.1) - (2026-04-02)
359
+
360
+ ## Bug Fixes
361
+
362
+ - Change save format in part base schematic (#105) ([6eaffe8](https://github.com/NanoForge-dev/schematics/commit/6eaffe8d94ce99727a8c27e1f7d5e3fa39a787ca)) by @Exeloo
363
+
364
+ # [@nanoforge-dev/schematics@2.1.0](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@2.0.0...@nanoforge-dev/schematics@2.1.0) - (2026-04-02)
365
+
366
+ ## Bug Fixes
367
+
368
+ - **docker:** Change base image as alpine doesnt have the right libs (#102) ([3b8c2b2](https://github.com/NanoForge-dev/schematics/commit/3b8c2b2476210b3df6a08415bb5f18b7cbdaf970)) by @MartinFillon
369
+ - Remove ts types in js example system in part base (#93) ([89555b4](https://github.com/NanoForge-dev/schematics/commit/89555b46ffa8f3a4e2f157ecd9fabb2202de1cd7)) by @Exeloo
370
+
371
+ ## Features
372
+
373
+ - Add component and system schematics (#103) ([38c90df](https://github.com/NanoForge-dev/schematics/commit/38c90df9bbe971da83aaa0338f39f875695083cf)) by @Exeloo
374
+ - **editor:** Add component holding entity id (#100) ([433c648](https://github.com/NanoForge-dev/schematics/commit/433c64851faafaf4198ac56801d09b47cce150c4)) by @Tchips46
375
+ - **save:** Allow partial saves component values as record string any (#98) ([9280349](https://github.com/NanoForge-dev/schematics/commit/9280349d9028d99028ab529e3c477cfd11d14606)) by @Tchips46
376
+ - Set save params types to any (#96) ([7a29579](https://github.com/NanoForge-dev/schematics/commit/7a29579e03fc1c4ca2ebc7794b4b3dd60167f741)) by @Exeloo
377
+
378
+ ### New Contributors
379
+
380
+ - @Tchips46 made their first contribution in #100
381
+
382
+ # [@nanoforge-dev/schematics@2.0.0](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@1.2.2...@nanoforge-dev/schematics@2.0.0) - (2026-03-17)
383
+
384
+ ## Features
385
+
386
+ - Add core editor to dependencies (#90) ([29cfa08](https://github.com/NanoForge-dev/schematics/commit/29cfa0864ee4a84fdc5aed5e790da454334dd2d5)) by @Exeloo
387
+ - Add better handling of path option (#89) ([1e0c469](https://github.com/NanoForge-dev/schematics/commit/1e0c469f98aac91d81e21d20e36a7d9e7a94df8b)) by @Exeloo
388
+ - **BREAKING CHANGE:** Old schemas doesn't work anymore and config is changed
389
+ - Add editor option to part main schematic (#88) ([c59ed27](https://github.com/NanoForge-dev/schematics/commit/c59ed2710e2db2bcd3e5c553be9c80f5ad54b732)) by @Exeloo
390
+
391
+ # [@nanoforge-dev/schematics@1.2.2](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@1.2.1...@nanoforge-dev/schematics@1.2.2) - (2026-03-15)
392
+
393
+ ## Bug Fixes
394
+
395
+ - Fields does not replace on application (#86) ([d252953](https://github.com/NanoForge-dev/schematics/commit/d252953d4aef98a3ea505bb7bd45701f139d5599)) by @Exeloo
396
+
397
+ # [@nanoforge-dev/schematics@1.2.1](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@1.2.0...@nanoforge-dev/schematics@1.2.1) - (2026-03-15)
398
+
399
+ ## Bug Fixes
400
+
401
+ - Use of directory variable and js issues (#84) ([9d98d1a](https://github.com/NanoForge-dev/schematics/commit/9d98d1ae977e69cfc07b4e9131bde2ea2b34964f)) by @Exeloo
402
+
403
+ ## Features
404
+
405
+ - Add lint param handling on application (#79) ([96c2128](https://github.com/NanoForge-dev/schematics/commit/96c212817d763fc2677d28cd57f3d196c6a45f6d)) by @Exeloo
406
+
407
+ # [@nanoforge-dev/schematics@1.2.0](https://github.com/NanoForge-dev/schematics/compare/@nanoforge-dev/schematics@1.1.0...@nanoforge-dev/schematics@1.2.0) - (2026-02-27)
408
+
409
+ ## Features
410
+
411
+ - Setup docker schema (#75) ([cf7ead5](https://github.com/NanoForge-dev/schematics/commit/cf7ead5c49164a85e3beb65be3c73c842cd14e58)) by @MartinFillon
412
+
413
+ ### New Contributors
414
+
415
+ - @MartinFillon made their first contribution in #75
416
+ - @dependabot[bot] made their first contribution in #76
417
+
418
+ # [@nanoforge-dev/schematics@1.1.0](https://github.com/NanoForge-dev/schematics/tree/@nanoforge-dev/schematics@1.1.0) - (2026-02-19)
419
+
420
+ ## Documentation
421
+
422
+ - Add schematics docs (#61) ([7735324](https://github.com/NanoForge-dev/schematics/commit/7735324bcb5438929a24481e157677cc25f7457c)) by @Exeloo
423
+ - Fix contribution (#47) ([b6ad53e](https://github.com/NanoForge-dev/schematics/commit/b6ad53e9f77b6f6619b5090f08e9d3fb94e90a74)) by @Exeloo
424
+ - Add contributing docs and actions (#41) ([91eea94](https://github.com/NanoForge-dev/schematics/commit/91eea949ea785a03ca66d3a6e07d30d8e24df815)) by @Exeloo
425
+
426
+ ## Features
427
+
428
+ - Add network and fix versions in app base (#70) ([6d5963a](https://github.com/NanoForge-dev/schematics/commit/6d5963a954e7a27c442377ecb70716a43e479717)) by @Exeloo
429
+ - Update and add pre-release (#48) ([49422f7](https://github.com/NanoForge-dev/schematics/commit/49422f7ad9e0595378cf6e8b44dc7711d09b8cfa)) by @Exeloo
430
+
431
+ ## Testing
432
+
433
+ - Add unit tests and e2e tests (#67) ([8eef6b5](https://github.com/NanoForge-dev/schematics/commit/8eef6b51984d1187d3f0b936d670e362ad0224c6)) by @Exeloo
434
+
435
+ # [1.0.2](https://github.com/NanoForge-dev/schematics/compare/1.0.1...1.0.2) - (2025-12-06)
436
+
437
+ ## Bug Fixes
438
+
439
+ - Split ecs between client and server (#38) ([086d42f](https://github.com/NanoForge-dev/schematics/commit/086d42f1639cc764fb6f21c6ce8d9426ec2581e7)) by @Exeloo
440
+
441
+ # [1.0.1](https://github.com/NanoForge-dev/schematics/compare/1.0.0...1.0.1) - (2025-12-04)
442
+
443
+ ## Bug Fixes
444
+
445
+ - **configuration:** Simplify schema and change defaults (#34) ([af29b00](https://github.com/NanoForge-dev/schematics/commit/af29b0011ae078dc75c9625e8f470f8506a7c7cb)) by @Exeloo
446
+
447
+ # [1.0.0](https://github.com/NanoForge-dev/schematics/compare/0.0.1...1.0.0) - (2025-11-30)
448
+
449
+ ## Bug Fixes
450
+
451
+ - Change exports in package json and update schema paths (#17) ([b78b72a](https://github.com/NanoForge-dev/schematics/commit/b78b72a40b2287d841a3cac90adb0d37b4493d4e)) by @Exeloo
452
+
453
+ ## Features
454
+
455
+ - **schematics:** Add part-main schematics for generating client/server main files (#29) ([6f34c1c](https://github.com/NanoForge-dev/schematics/commit/6f34c1c0f70d67eb78645108a665f7c5ebab8086)) by @Exeloo
456
+ - **schematics:** Replace client by base-part schematics to handle server (#20) ([c5ad539](https://github.com/NanoForge-dev/schematics/commit/c5ad539d7ac524de724c49dfa6b0e7b310700a44)) by @Exeloo
457
+ - **schematics:** Add client base schematics (#19) ([f02b26d](https://github.com/NanoForge-dev/schematics/commit/f02b26db6be9226857fbf3fe0ffe1abf6de31024)) by @Exeloo
458
+
459
+ ### New Contributors
460
+
461
+ - @renovate[bot] made their first contribution in #27
462
+
463
+ # [0.0.1](https://github.com/NanoForge-dev/schematics/tree/0.0.1) - (2025-11-28)
464
+
465
+ ## Features
466
+
467
+ - Add base application and configuration schematics (#12) ([d881653](https://github.com/NanoForge-dev/schematics/commit/d881653dd57a886f12e18b9acf0d48d31d3686e6))
468
+ - Init schematics project (#11) ([3fb0e61](https://github.com/NanoForge-dev/schematics/commit/3fb0e61075cf8094309765a0f685d2411c7f8aa8)) by @Exeloo
469
+
470
+ ### New Contributors
471
+
472
+ - @Exeloo made their first contribution in #11
package/README.md CHANGED
@@ -1,22 +1,22 @@
1
1
  <div align="center">
2
2
  <br />
3
3
  <p>
4
- <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/schematics/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
4
+ <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/CLI/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
5
5
  </p>
6
6
  <br />
7
7
  <p>
8
8
  <a href="https://www.npmjs.com/package/@nanoforge-dev/schematics"><img src="https://img.shields.io/npm/v/@nanoforge-dev/schematics.svg?maxAge=3600" alt="npm version" /></a>
9
9
  <a href="https://www.npmjs.com/package/@nanoforge-dev/schematics"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/schematics.svg?maxAge=3600" alt="npm downloads" /></a>
10
- <a href="https://github.com/NanoForge-dev/schematics/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/schematics/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
11
- <a href="https://github.com/NanoForge-dev/schematics/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/schematics/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
12
- <a href="https://github.com/NanoForge-dev/schematics/commits/main"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/schematics.svg?logo=github&logoColor=ffffff" alt="Last commit" /></a>
13
- <a href="https://github.com/NanoForge-dev/schematics/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/schematics.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
10
+ <a href="https://github.com/NanoForge-dev/CLI/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/CLI/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
11
+ <a href="https://github.com/NanoForge-dev/CLI/actions/workflows/release.yml"><img src="https://github.com/NanoForge-dev/CLI/actions/workflows/release.yml/badge.svg" alt="Release status" /></a>
12
+ <a href="https://github.com/NanoForge-dev/CLI/commits/main"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/CLI.svg?logo=github&logoColor=ffffff" alt="Last commit" /></a>
13
+ <a href="https://github.com/NanoForge-dev/CLI/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/CLI.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
14
14
  </p>
15
15
  </div>
16
16
 
17
17
  ## About
18
18
 
19
- This repository contains the Schematics of NanoForge. Check [releases][github-releases] to see versions of the Schematics. Nanoforge is a powerful game engine for web browser.
19
+ This package contains the Schematics of NanoForge, used by the [CLI][cli-source] to generate project files. Check [releases][github-releases] to see versions of the Schematics. Nanoforge is a powerful game engine for web browser.
20
20
 
21
21
  ## Usage
22
22
 
@@ -38,13 +38,10 @@ nf new
38
38
 
39
39
  This repository provide multiples schematics, usable with Angular Devkit schematics.
40
40
 
41
- - `application` : Base of a Nanoforge app
42
- - `configuration` : Template of `nanoforge.config.json` with premade fields
43
- - `part-base` : Base of Nanoforge client or server
44
- - `part-main` : Client or server `main.ts` from a config
41
+ - `workspace` : Root of a NanoForge monorepo (`nanoforge.config.ts`, `package.json`, tooling)
42
+ - `project` : Client or server project under `apps/<part>`, including `main.ts`, example component/system, and an optional Dockerfile
45
43
  - `component` : ECS component class for a client or server part
46
44
  - `system` : ECS system function for a client or server part
47
- - `docker` : Dockerfile and `.dockerignore` tailored to your package manager
48
45
 
49
46
  ## Contributing
50
47
 
@@ -54,8 +51,8 @@ Please read through our [contribution guidelines][contributing] before starting
54
51
 
55
52
  If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please ask on [Discussions][discussions].
56
53
 
57
- [contributing]: https://github.com/NanoForge-dev/schematics/blob/main/.github/CONTRIBUTING.md
58
- [discussions]: https://github.com/NanoForge-dev/schematics/discussions
54
+ [contributing]: https://github.com/NanoForge-dev/CLI/blob/main/.github/CONTRIBUTING.md
55
+ [discussions]: https://github.com/NanoForge-dev/CLI/discussions
59
56
  [cli-source]: https://github.com/NanoForge-dev/CLI
60
- [github-releases]: https://github.com/NanoForge-dev/schematics/releases
61
- [good-first-issue]: https://github.com/NanoForge-dev/schematics/contribute
57
+ [github-releases]: https://github.com/NanoForge-dev/CLI/releases
58
+ [good-first-issue]: https://github.com/NanoForge-dev/CLI/contribute
@@ -1,30 +1,15 @@
1
1
  {
2
2
  "$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
3
3
  "schematics": {
4
- "application": {
5
- "factory": "./libs/application/application.factory#main",
6
- "description": "Create a NanoForge Base application.",
7
- "schema": "./libs/application/schema.json"
4
+ "workspace": {
5
+ "factory": "./libs/workspace/workspace.factory#main",
6
+ "description": "Create a NanoForge workspace (monorepo root: config, tooling, package manifest).",
7
+ "schema": "./libs/workspace/schema.json"
8
8
  },
9
- "configuration": {
10
- "factory": "./libs/configuration/configuration.factory#main",
11
- "description": "Create a NanoForge Configuration.",
12
- "schema": "./libs/configuration/schema.json"
13
- },
14
- "part-base": {
15
- "factory": "./libs/part-base/part-base.factory#main",
16
- "description": "Create a NanoForge Base for client or server.",
17
- "schema": "./libs/part-base/schema.json"
18
- },
19
- "part-main": {
20
- "factory": "./libs/part-main/part-main.factory#main",
21
- "description": "Create a Main file for client or server.",
22
- "schema": "./libs/part-main/schema.json"
23
- },
24
- "docker": {
25
- "factory": "./libs/docker/docker.factory#main",
26
- "description": "Create a Dockerfile for the application.",
27
- "schema": "./libs/docker/schema.json"
9
+ "project": {
10
+ "factory": "./libs/project/project.factory#main",
11
+ "description": "Create a NanoForge client or server project under apps/<part>.",
12
+ "schema": "./libs/project/schema.json"
28
13
  },
29
14
  "component": {
30
15
  "factory": "./libs/component/component.factory#main",
package/dist/index.cjs CHANGED
@@ -1,17 +1,32 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/defaults.ts
3
3
  const DEFAULT_APP_NAME = "nanoforge-app";
4
- const DEFAULT_VERSION = "0.0.0";
5
- const DEFAULT_AUTHOR = "";
6
- const DEFAULT_DESCRIPTION = "";
7
4
  const DEFAULT_LANGUAGE = "ts";
8
5
  const DEFAULT_PACKAGE_MANAGER = "npm";
6
+ const DEFAULT_NANOFORGE_DEPENDENCY_VERSION = "^2";
7
+ const DEFAULT_ENGINE_VERSION = "^2";
8
+ /** Fallback used when the registry lookup for `@nanoforge-dev/cli` fails. */
9
+ const DEFAULT_CLI_DEPENDENCY_VERSION = "latest";
10
+ /**
11
+ * Fallback used when the registry lookup for `typescript` fails. A specific
12
+ * version, not a range — non-nanoforge packages are pinned exactly.
13
+ */
14
+ const DEFAULT_TYPESCRIPT_VERSION = "6.0.3";
15
+ /**
16
+ * Mirrors pnpm's own `minimumReleaseAge` supply-chain protection: when
17
+ * resolving a pinned dependency version at generation time, only consider
18
+ * versions published at least this long ago, so a freshly (and potentially
19
+ * maliciously) published release isn't picked up immediately.
20
+ */
21
+ const MIN_RELEASE_AGE_HOURS = 48;
9
22
  //#endregion
10
23
  exports.DEFAULT_APP_NAME = DEFAULT_APP_NAME;
11
- exports.DEFAULT_AUTHOR = DEFAULT_AUTHOR;
12
- exports.DEFAULT_DESCRIPTION = DEFAULT_DESCRIPTION;
24
+ exports.DEFAULT_CLI_DEPENDENCY_VERSION = DEFAULT_CLI_DEPENDENCY_VERSION;
25
+ exports.DEFAULT_ENGINE_VERSION = DEFAULT_ENGINE_VERSION;
13
26
  exports.DEFAULT_LANGUAGE = DEFAULT_LANGUAGE;
27
+ exports.DEFAULT_NANOFORGE_DEPENDENCY_VERSION = DEFAULT_NANOFORGE_DEPENDENCY_VERSION;
14
28
  exports.DEFAULT_PACKAGE_MANAGER = DEFAULT_PACKAGE_MANAGER;
15
- exports.DEFAULT_VERSION = DEFAULT_VERSION;
29
+ exports.DEFAULT_TYPESCRIPT_VERSION = DEFAULT_TYPESCRIPT_VERSION;
30
+ exports.MIN_RELEASE_AGE_HOURS = MIN_RELEASE_AGE_HOURS;
16
31
 
17
32
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../src/defaults.ts"],"sourcesContent":["export const DEFAULT_APP_NAME = \"nanoforge-app\";\nexport const DEFAULT_VERSION = \"0.0.0\";\nexport const DEFAULT_AUTHOR = \"\";\nexport const DEFAULT_DESCRIPTION = \"\";\nexport const DEFAULT_LANGUAGE = \"ts\";\nexport const DEFAULT_PACKAGE_MANAGER = \"npm\";\n"],"mappings":";;AAAA,MAAa,mBAAmB;AAChC,MAAa,kBAAkB;AAC/B,MAAa,iBAAiB;AAC9B,MAAa,sBAAsB;AACnC,MAAa,mBAAmB;AAChC,MAAa,0BAA0B"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../src/defaults.ts"],"sourcesContent":["export const DEFAULT_APP_NAME = \"nanoforge-app\";\nexport const DEFAULT_LANGUAGE = \"ts\";\nexport const DEFAULT_PACKAGE_MANAGER = \"npm\";\nexport const DEFAULT_NANOFORGE_DEPENDENCY_VERSION = \"^2\";\nexport const DEFAULT_ENGINE_VERSION = \"^2\";\n\n/** Fallback used when the registry lookup for `@nanoforge-dev/cli` fails. */\nexport const DEFAULT_CLI_DEPENDENCY_VERSION = \"latest\";\n\n/**\n * Fallback used when the registry lookup for `typescript` fails. A specific\n * version, not a range — non-nanoforge packages are pinned exactly.\n */\nexport const DEFAULT_TYPESCRIPT_VERSION = \"6.0.3\";\n\n/**\n * Mirrors pnpm's own `minimumReleaseAge` supply-chain protection: when\n * resolving a pinned dependency version at generation time, only consider\n * versions published at least this long ago, so a freshly (and potentially\n * maliciously) published release isn't picked up immediately.\n */\nexport const MIN_RELEASE_AGE_HOURS = 48;\n"],"mappings":";;AAAA,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,0BAA0B;AACvC,MAAa,uCAAuC;AACpD,MAAa,yBAAyB;;AAGtC,MAAa,iCAAiC;;;;;AAM9C,MAAa,6BAA6B;;;;;;;AAQ1C,MAAa,wBAAwB"}