@chidchanun/bcp 0.1.28 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,38 @@
1
1
  # BCP Framework
2
2
 
3
- BCP Framework is a React full-stack framework focused on file-based routing, SSR, server data loading, guarded application flows, API routes, authentication, database access, validation, logging, uploads, storage and standalone production deployment.
3
+ BCP Framework is a React full-stack framework for file-based routing, SSR, SPA navigation, server data loading, guarded application flows, API routes, authentication, database access, validation, uploads, storage and standalone Node.js production deployment.
4
4
 
5
- > **Development target:** `0.1.28`
5
+ > **Development target:** `0.2.0 — Framework Platform`
6
6
  >
7
- > BCP is pre-1.0. The `0.1.28` source adds Production Hardening and remains an unreleased development target until local validation, RC checks, tagging and npm publication complete.
7
+ > `0.2.0` establishes the first explicit platform baseline for BCP. It remains an unreleased development target until local validation, RC checks, tagging and npm publication complete.
8
+
9
+ ## Platform baseline — 0.2.0
10
+
11
+ BCP `0.2.0` consolidates the capabilities built across the `0.1.x` series into a documented and testable platform contract.
12
+
13
+ New platform sources:
14
+
15
+ ```text
16
+ docs/platform-manifest.json
17
+ -> version, runtime target, public entrypoints and capability metadata
18
+
19
+ docs/docs-web-manifest.json
20
+ -> docs-web sections, routes, Markdown sources and releases
21
+
22
+ docs/platform-contract.md
23
+ -> public platform/compatibility contract
24
+
25
+ docs/migration-0.2.md
26
+ -> application upgrade guide
27
+ ```
28
+
29
+ The package release pipeline now verifies the platform contract against the prepared npm artifact so accidental public-export/version drift fails package validation.
30
+
31
+ Read more:
32
+
33
+ - [Framework Platform Contract](docs/platform-contract.md)
34
+ - [Migrating to 0.2.0](docs/migration-0.2.md)
35
+ - [Platform Manifest](docs/platform-manifest.json)
8
36
 
9
37
  ## Current capabilities
10
38
 
@@ -12,28 +40,29 @@ BCP Framework is a React full-stack framework focused on file-based routing, SSR
12
40
  | --- | --- |
13
41
  | Application | React SSR, hydration, layouts, metadata and SPA navigation |
14
42
  | Routing | Static, dynamic, catch-all, optional catch-all and route groups |
15
- | Server data | `loader.ts`, request-scoped server APIs |
43
+ | Server data | Route `loader.ts`, request-scoped server APIs |
16
44
  | Mutations | Route-owned `actions.ts` and `<Form>` |
17
45
  | Authorization | `guard.ts`, `requireAuth()`, `requireRole()` |
18
46
  | Authentication | JWT cookie sessions and auth helpers |
19
47
  | Middleware | Middleware System v2 with onion execution |
20
48
  | Validation | Typed validation helpers and structured validation errors |
21
49
  | Error handling | HTTP error helpers and consistent error responses |
22
- | Database | MySQL pool/query helpers, transactions and migrations |
50
+ | Database | MySQL helpers, transactions and migrations |
23
51
  | Logging | Structured logger, request logger and request IDs |
24
52
  | Uploads | Buffered multipart helpers and production multipart streaming |
25
- | Storage | Local + S3-compatible adapters, streaming, listing, copy/move, metadata, bulk delete and signed S3 URLs |
53
+ | Storage | Local + S3-compatible storage, streaming, list/copy/move, metadata, bulk delete and signed URLs |
26
54
  | Caching | Response cache and revalidation primitives |
27
- | Developer tools | `doctor`, `inspect`, updater and route inspection |
28
- | Production | Standalone build, hardening gateway, graceful shutdown, trusted-proxy controls and HTTP timeouts |
55
+ | Developer tools | Generators, Doctor/Inspect v2, updater, route inspection and project metadata |
56
+ | Production | Standalone Node.js build, hardening gateway, graceful shutdown, trusted proxy controls and HTTP timeouts |
57
+ | Documentation | Markdown source + machine-readable docs-web/platform manifests |
29
58
 
30
59
  ## Requirements
31
60
 
32
- - Node.js `24.11` or newer
61
+ - Node.js `24.11.0` or newer
33
62
  - React `19`
34
63
  - npm
35
64
 
36
- Database features currently target MySQL.
65
+ Database framework primitives currently target MySQL. `create-bcp-app` can also scaffold PostgreSQL, SQLite and MongoDB application helpers.
37
66
 
38
67
  ## Quick start
39
68
 
@@ -43,32 +72,24 @@ cd my-app
43
72
  npm run dev
44
73
  ```
45
74
 
46
- Generated projects normally use the application dependency key `bcp`:
75
+ Generated projects normally keep one framework dependency key:
47
76
 
48
77
  ```json
49
78
  {
50
79
  "dependencies": {
51
80
  "bcp": "npm:@chidchanun/bcp@latest"
52
- },
53
- "scripts": {
54
- "dev": "bcp dev",
55
- "build": "bcp build",
56
- "start": "bcp start",
57
- "routes": "bcp routes",
58
- "update": "bcp update",
59
- "typecheck": "tsc --noEmit"
60
81
  }
61
82
  }
62
83
  ```
63
84
 
64
- Keep only one framework dependency named `bcp`. Installing both `bcp` and `@chidchanun/bcp` directly can load duplicate framework/React contexts.
85
+ Do not install both `bcp` and a second direct `@chidchanun/bcp` dependency in the same application; duplicate framework copies can create separate React/framework contexts.
65
86
 
66
87
  ## Application model
67
88
 
68
89
  ```text
69
90
  Browser
70
91
 
71
- BCP security / middleware / cache
92
+ Security / middleware / cache
72
93
 
73
94
  Route guard
74
95
 
@@ -79,7 +100,7 @@ React SSR
79
100
  Hydration / SPA navigation
80
101
  ```
81
102
 
82
- A route can keep page, loader, guard and actions together:
103
+ Typical route structure:
83
104
 
84
105
  ```text
85
106
  app/
@@ -97,42 +118,101 @@ app/
97
118
  └─ route.ts
98
119
  ```
99
120
 
100
- ## Routing
121
+ ## Public entrypoints
101
122
 
102
- Page routes are discovered from `app/**/page.tsx` and API routes from `app/**/route.ts`.
123
+ The `0.2.0` platform contract recognizes these application entrypoints:
124
+
125
+ ```text
126
+ bcp
127
+ bcp/island
128
+ bcp/cache
129
+ bcp/config
130
+ bcp/validation
131
+ bcp/error
132
+ bcp/database
133
+ bcp/auth
134
+ bcp/server
135
+ bcp/server-only
136
+ bcp/middleware
137
+ ```
138
+
139
+ Application code should use public entrypoints rather than importing internal framework files under `packages/`.
140
+
141
+ The authoritative machine-readable list is in [docs/platform-manifest.json](docs/platform-manifest.json).
142
+
143
+ ## CLI
144
+
145
+ Core commands:
146
+
147
+ ```bash
148
+ bcp dev
149
+ bcp build
150
+ bcp start
151
+ bcp routes
152
+ bcp update
153
+ bcp doctor
154
+ bcp inspect
155
+ bcp version
156
+ ```
157
+
158
+ Database migrations:
159
+
160
+ ```bash
161
+ bcp db create create_users
162
+ bcp db migrate
163
+ bcp db status
164
+ bcp db rollback
165
+ ```
166
+
167
+ Project generators:
168
+
169
+ ```bash
170
+ bcp generate page dashboard/users
171
+ bcp generate api users
172
+ bcp generate middleware
173
+ bcp generate migration create_users
174
+ ```
175
+
176
+ Page/API/middleware generators require `--force` before replacing an existing scaffold target.
177
+
178
+ On Windows, Microsoft SQL Server may provide another `bcp.exe`. For direct PowerShell usage prefer the collision-free project-local alias:
179
+
180
+ ```powershell
181
+ npm exec -- bcp-framework doctor
182
+ npm exec -- bcp-framework inspect
183
+ npm exec -- bcp-framework routes
184
+ npm exec -- bcp-framework generate page dashboard/users
185
+ ```
186
+
187
+ Inside npm scripts, `bcp` remains safe because npm prepends the project `node_modules/.bin` directory to `PATH`.
188
+
189
+ ## Routing, loaders, guards and actions
190
+
191
+ BCP discovers pages from `app/**/page.tsx` and API handlers from `app/**/route.ts`.
103
192
 
104
193
  ```text
105
194
  app/page.tsx /
106
- app/about/page.tsx /about
107
195
  app/users/[id]/page.tsx /users/:id
108
196
  app/docs/[...slug]/page.tsx /docs/*
109
197
  app/catalog/[[...slug]]/page.tsx /catalog and /catalog/*
110
198
  app/(admin)/settings/page.tsx /settings
111
-
112
199
  app/api/users/route.ts /api/users
113
- app/api/users/[id]/route.ts /api/users/:id
114
200
  ```
115
201
 
116
- Read more: [Routing](docs/routing.md)
117
-
118
- ## Server data, guards and actions
119
-
120
- Server loaders live next to their route in `loader.ts`. Route authorization can be defined in `guard.ts`, while route-owned mutations live in `actions.ts`.
121
-
122
- ```ts
123
- import {
124
- requireRole,
125
- } from "bcp/auth";
202
+ Route-owned server features stay colocated:
126
203
 
127
- export const guard =
128
- requireRole("admin");
204
+ ```text
205
+ page.tsx
206
+ loader.ts
207
+ guard.ts
208
+ actions.ts
129
209
  ```
130
210
 
131
- Read more:
211
+ Guides:
132
212
 
213
+ - [Routing](docs/routing.md)
133
214
  - [Server Data Loaders](docs/server-data-loaders.md)
134
215
  - [Route Guards](docs/route-guards.md)
135
- - [Auth Route Guards](docs/auth-route-guards.md)
136
216
  - [Form Actions](docs/form-actions.md)
137
217
 
138
218
  ## Authentication and server APIs
@@ -153,9 +233,7 @@ import {
153
233
  } from "bcp/server";
154
234
  ```
155
235
 
156
- BCP also exposes lower-level JWT cookie session primitives through `bcp/server`.
157
-
158
- Read more:
236
+ Guides:
159
237
 
160
238
  - [Authentication](docs/authentication.md)
161
239
  - [JWT Sessions](docs/session-auth.md)
@@ -169,180 +247,76 @@ import {
169
247
  } from "bcp/database";
170
248
  ```
171
249
 
172
- The database layer provides lazy MySQL pool creation, prepared execution, query helpers, transactions and migrations.
250
+ BCP's database layer includes lazy MySQL pool creation, query/execute helpers, transactions and migrations.
173
251
 
174
- ```bash
175
- bcp db create create_users
176
- bcp db migrate
177
- bcp db status
178
- bcp db rollback
179
- ```
180
-
181
- Read more:
252
+ Guides:
182
253
 
183
254
  - [Database](docs/database.md)
184
255
  - [Database Migrations](docs/database-migrations.md)
185
256
 
186
- ## Uploads and streaming
257
+ ## Storage and uploads
187
258
 
188
- BCP supports the original buffered multipart helpers as well as production multipart-to-storage streaming:
259
+ `create-bcp-app` can scaffold:
189
260
 
190
- ```ts
191
- import {
192
- storeMultipartFile,
193
- } from "bcp/server";
194
-
195
- const stored =
196
- await storeMultipartFile(
197
- request,
198
- {
199
- storage,
200
- fieldName: "file",
201
- key: "documents/report.pdf",
202
- maxBytes: 100 * 1024 * 1024,
203
- constraints: {
204
- maxBytes: 80 * 1024 * 1024,
205
- allowedTypes: [
206
- "application/pdf",
207
- ],
208
- },
209
- }
210
- );
211
- ```
212
-
213
- `storeMultipartFile()` consumes `Request.body` incrementally and streams the selected file directly into storage. Request/body infrastructure limits still apply.
214
-
215
- Read more: [File Upload](docs/file-upload.md)
216
-
217
- ## Storage
218
-
219
- ### Local filesystem
220
-
221
- ```ts
222
- import {
223
- createLocalStorage,
224
- } from "bcp/server";
225
-
226
- const storage =
227
- createLocalStorage({
228
- directory: "./uploads",
229
- });
261
+ ```text
262
+ None
263
+ Local Server
264
+ Amazon S3
265
+ Cloudflare R2
230
266
  ```
231
267
 
232
- `create-bcp-app --storage local` creates `lib/storage.ts` plus a visible `storage/README.md` / `.gitkeep` scaffold. Runtime objects remain ignored by Git.
268
+ BCP's storage API supports local and S3-compatible storage, streaming reads/writes, ranges, object listing, copy/move, portable metadata, bulk deletion and S3 signed URLs.
233
269
 
234
- ### S3 / R2 / MinIO
270
+ Local Server projects keep a visible scaffold:
235
271
 
236
- ```ts
237
- import {
238
- createS3Storage,
239
- } from "bcp/server";
240
-
241
- const storage =
242
- createS3Storage({
243
- bucket: process.env.S3_BUCKET!,
244
- region: process.env.S3_REGION!,
245
- endpoint: process.env.S3_ENDPOINT,
246
- accessKeyId: process.env.S3_ACCESS_KEY_ID,
247
- secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
248
- });
272
+ ```text
273
+ storage/
274
+ ├─ .gitkeep
275
+ └─ README.md
249
276
  ```
250
277
 
251
- Custom endpoints and `forcePathStyle` support common S3-compatible deployments such as MinIO. Keep credentials server-only.
252
-
253
- Read more: [S3-Compatible Storage](docs/s3-storage.md)
278
+ Runtime objects remain ignored by Git.
254
279
 
255
- ### Streaming storage
280
+ Guides:
256
281
 
257
- The stable minimum `StorageAdapter` retains its buffered API while adapters can expose optional `putStream()` and `readStream()` implementations.
258
-
259
- ```ts
260
- import {
261
- getStorageCapabilities,
262
- putStorageStream,
263
- readStorageStream,
264
- } from "bcp/server";
265
- ```
266
-
267
- Both built-in local and S3 adapters support streaming reads/writes and byte ranges.
268
-
269
- Read more: [Storage and File Delivery](docs/storage.md)
282
+ - [File Upload](docs/file-upload.md)
283
+ - [Storage & File Delivery](docs/storage.md)
284
+ - [Storage Ecosystem](docs/storage-ecosystem.md)
285
+ - [S3-Compatible Storage](docs/s3-storage.md)
270
286
 
271
- ### Storage Ecosystem — 0.1.27
287
+ ## Production build
272
288
 
273
- BCP `0.1.27` adds a richer, additive object-storage API without invalidating older `StorageAdapter` implementations:
289
+ Build:
274
290
 
275
- ```ts
276
- import {
277
- copyStorageObject,
278
- createStorageSignedReadUrl,
279
- createStorageSignedWriteUrl,
280
- deleteStorageObjects,
281
- getStorageEcosystemCapabilities,
282
- getStorageMetadata,
283
- listStorageObjects,
284
- moveStorageObject,
285
- setStorageMetadata,
286
- } from "bcp/server";
291
+ ```bash
292
+ npm run build
287
293
  ```
288
294
 
289
- Listing supports prefix filtering, limits and opaque cursors. Copy and move use native adapter operations when available, with portable fallback behavior where practical. Portable user metadata is string-to-string metadata and is distinct from authorization/business state.
290
-
291
- S3-compatible storage also supports short-lived presigned direct-transfer URLs. Local storage intentionally does not emulate signed URLs.
292
-
293
- Read more: [Storage Ecosystem](docs/storage-ecosystem.md)
294
-
295
- ## File delivery
296
-
297
- `createStorageResponse()` serves local or cloud-backed objects through the same API with `GET`, `HEAD`, ETag/Last-Modified validators and single byte ranges.
295
+ Output:
298
296
 
299
- ```ts
300
- import {
301
- createStorageResponse,
302
- } from "bcp/server";
303
-
304
- return createStorageResponse(
305
- request,
306
- storage,
307
- "documents/report.pdf"
308
- );
297
+ ```text
298
+ .bcp-framework/build/
299
+ ├─ client/
300
+ ├─ public/
301
+ └─ server/
302
+ └─ server.mjs
309
303
  ```
310
304
 
311
- Read more: [Storage and File Delivery](docs/storage.md)
312
-
313
- ## Middleware, validation, errors and caching
314
-
315
- BCP includes Middleware System v2, typed validation helpers, structured HTTP errors, structured logging and response caching/revalidation.
316
-
317
- Read more:
318
-
319
- - [Middleware](docs/middleware.md)
320
- - [Validation](docs/validation.md)
321
- - [Error Handling](docs/error-handling.md)
322
- - [Logging and Observability](docs/development-logging.md)
323
- - [Caching](docs/caching.md)
324
- - [Security](docs/security.md)
325
-
326
- ## Production build
305
+ Run:
327
306
 
328
307
  ```bash
329
- npm run build
330
308
  npm run start
331
309
  ```
332
310
 
333
- Standalone output is written under:
311
+ The `0.2.0` platform build target is explicitly:
334
312
 
335
313
  ```text
336
- .bcp-framework/build/
337
- ├─ client/
338
- ├─ public/
339
- └─ server/
340
- └─ server.mjs
314
+ standalone-node
341
315
  ```
342
316
 
343
- ### Production Hardening 0.1.28
317
+ Native `.exe`, desktop and mobile compilation are not part of the `0.2.0` platform contract.
344
318
 
345
- The standalone runtime is wrapped by a public hardening gateway with configurable HTTP and shutdown behavior:
319
+ Production hardening supports:
346
320
 
347
321
  ```dotenv
348
322
  BCP_REQUEST_TIMEOUT_MS=120000
@@ -352,99 +326,93 @@ BCP_SHUTDOWN_TIMEOUT_MS=10000
352
326
  BCP_TRUST_PROXY=false
353
327
  ```
354
328
 
355
- Standalone production handles `SIGTERM` and `SIGINT`, drains the public listener, runs application cleanup hooks and then stops internal runtime layers.
329
+ Enable trusted proxy mode only when untrusted clients cannot bypass the trusted reverse proxy/load balancer.
356
330
 
357
- ```ts
358
- import {
359
- registerShutdownHook,
360
- } from "bcp/server";
331
+ Read more: [Production Hardening](docs/production-hardening.md)
361
332
 
362
- registerShutdownHook(
363
- () => {
364
- storage.destroy();
365
- },
366
- {
367
- name: "storage",
368
- }
369
- );
333
+ ## Doctor / Inspect / project metadata
334
+
335
+ Project diagnostics:
336
+
337
+ ```powershell
338
+ npm exec -- bcp-framework doctor
339
+ npm exec -- bcp-framework inspect --json
370
340
  ```
371
341
 
372
- Trusted proxy mode is disabled by default. Enable `BCP_TRUST_PROXY=true` only when direct untrusted traffic cannot bypass the trusted reverse proxy/load balancer.
342
+ Doctor/Inspect v2 can report lockfile/package-manager state, duplicate framework declarations, standalone build presence, Docker/project diagnostics, storage provider and production-hardening configuration.
373
343
 
374
- Read more: [Production Hardening](docs/production-hardening.md)
344
+ Projects created by recent `create-bcp-app` versions include non-secret scaffold metadata:
345
+
346
+ ```text
347
+ bcp.project.json
348
+ ```
349
+
350
+ Credentials, database passwords, access keys, JWT/session secrets and tokens must never be stored in that file.
375
351
 
376
- ## Windows CLI
352
+ Guides:
377
353
 
378
- Microsoft SQL Server can install another executable named `bcp.exe`. BCP publishes the collision-free alias `bcp-framework`.
354
+ - [Developer Tools](docs/developer-tools.md)
355
+ - [Project Metadata](docs/project-metadata.md)
356
+
357
+ ## Updating from 0.1.x
379
358
 
380
- Inside project npm scripts, `bcp` is safe because npm prepends `node_modules/.bin` to `PATH`.
359
+ `0.2.0` does not intentionally remove public entrypoints from the `0.1.29` baseline.
381
360
 
382
- For direct PowerShell usage:
361
+ Recommended upgrade flow after publication:
383
362
 
384
363
  ```powershell
385
- npm exec -- bcp-framework --version
386
364
  npm exec -- bcp-framework doctor
387
- npm exec -- bcp-framework inspect
388
- npm exec -- bcp-framework routes
389
- npm exec -- bcp-framework dev
390
- npm exec -- bcp-framework build
365
+ npm exec -- bcp-framework update --check
366
+ npm exec -- bcp-framework update 0.2.0
367
+ npm run typecheck
368
+ npm run build
391
369
  ```
392
370
 
393
- Read more: [Developer Tools](docs/developer-tools.md)
371
+ Do not reuse a standalone `.bcp-framework/build` produced by an older framework version; rebuild after upgrading.
394
372
 
395
- ## Updating BCP
373
+ Read more: [Migrating to 0.2.0](docs/migration-0.2.md)
396
374
 
397
- ```bash
398
- bcp update
399
- bcp update --check
400
- bcp update --dry-run
401
- bcp update 0.1.28
402
- bcp update next
375
+ ## Documentation source and bcp-docs-web
376
+
377
+ The framework repository is the documentation source of truth.
378
+
379
+ `bcp-docs-web` should consume:
380
+
381
+ ```text
382
+ docs/docs-web-manifest.json
383
+ -> navigation, routes, Markdown sources and release routes
384
+
385
+ docs/platform-manifest.json
386
+ -> version, runtime target, public entrypoints and capabilities
403
387
  ```
404
388
 
405
- Read more: [Updating](docs/updating.md)
389
+ Markdown under `docs/` remains the authored content source.
406
390
 
407
- ## Framework development and release validation
391
+ Start here:
392
+
393
+ - [Documentation Source Map](docs/README.md)
394
+ - [Docs-Web Manifest](docs/docs-web-manifest.json)
395
+ - [Platform Manifest](docs/platform-manifest.json)
396
+ - [Framework Platform Contract](docs/platform-contract.md)
397
+ - [Migration Guide](docs/migration-0.2.md)
398
+
399
+ ## Release validation
400
+
401
+ Framework releases must pass:
408
402
 
409
403
  ```bash
410
404
  npm install
411
405
  npm run typecheck
412
406
  npm run test:unit
413
407
  npm run test:integration
414
- npm run test:e2e
415
408
  npm run test:package
409
+ npm run test:e2e
416
410
  npm run rc:check
417
411
  ```
418
412
 
419
- A version must not be tagged or published until its RC and packed-package verification pass.
420
-
421
- Read more: [Releasing](docs/releasing.md)
413
+ `0.2.0` adds a platform-contract package smoke check that verifies the prepared npm artifact's public exports, executable aliases, Node baseline, docs metadata and framework/create-app version parity.
422
414
 
423
- ## Documentation source
424
-
425
- The `docs/` directory is the authored source for **`bcp-docs-web`**.
426
-
427
- Recommended starting points:
428
-
429
- - [Documentation Source Map](docs/README.md)
430
- - [Getting Started](docs/getting-started.md)
431
- - [Configuration](docs/configuration.md)
432
- - [Routing](docs/routing.md)
433
- - [Server Data Loaders](docs/server-data-loaders.md)
434
- - [Route Guards](docs/route-guards.md)
435
- - [Form Actions](docs/form-actions.md)
436
- - [Server Request APIs](docs/server-request-apis.md)
437
- - [File Upload](docs/file-upload.md)
438
- - [Storage and File Delivery](docs/storage.md)
439
- - [Storage Ecosystem](docs/storage-ecosystem.md)
440
- - [S3-Compatible Storage](docs/s3-storage.md)
441
- - [Production Hardening](docs/production-hardening.md)
442
- - [Authentication](docs/authentication.md)
443
- - [Database](docs/database.md)
444
- - [Middleware](docs/middleware.md)
445
- - [Developer Tools](docs/developer-tools.md)
446
- - [Deployment](docs/deployment.md)
447
- - [Releasing](docs/releasing.md)
415
+ Do not tag or publish a release until the final release commit passes the complete RC sequence.
448
416
 
449
417
  ## Release history
450
418
 
@@ -459,18 +427,14 @@ Recommended starting points:
459
427
  | `0.1.26` | S3-Compatible Storage and Production Streaming |
460
428
  | `0.1.27` | Storage Ecosystem |
461
429
  | `0.1.28` | Production Hardening |
430
+ | `0.1.29` | Developer Experience |
431
+ | `0.2.0` | Framework Platform baseline |
462
432
 
463
433
  ## Next direction
464
434
 
465
- After `0.1.28`, the planned milestone is **`0.1.29 Developer Experience`**:
466
-
467
- 1. route/API/middleware/migration generators,
468
- 2. richer `doctor` and `inspect` diagnostics,
469
- 3. clearer build/runtime error messages,
470
- 4. improved create-app presets and automation flags,
471
- 5. production configuration diagnostics.
435
+ After the `0.2.0` platform baseline is validated and released, later `0.2.x` work can add broader build/deployment targets and higher-level platform features without changing the existing standalone Node.js contract by accident.
472
436
 
473
- These are roadmap items, not `0.1.28` guarantees.
437
+ Native executable/desktop/mobile packaging remains future roadmap work, not a `0.2.0` guarantee.
474
438
 
475
439
  ## License
476
440