@nanoforge-dev/schematics 2.2.1 → 2.3.1

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