@stardeck-customer-apps/compose 0.10.0 → 0.11.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/SKILL.md CHANGED
@@ -75,7 +75,9 @@ a silent fallback. It holds deployment facts: gitignore it (`apps/web/.gitignore
75
75
  installed Module. Library and contract Modules are always composed. A name
76
76
  that is not installed fails with exit 1. Falls back to
77
77
  `NEXT_PUBLIC_STARDECK_ENABLED_MODULES` (how the platform passes the selection
78
- at deploy time); the flag wins.
78
+ at deploy time); the flag wins. A Module whose `module.json` sets
79
+ `"defaultEnabled": false` is still composed when `--enabled` is unset: the key
80
+ only tells the platform to leave it off when it creates a Blueprint fork.
79
81
  - `--prune` — after composing, delete the source of every excluded Module, plus
80
82
  any enhancement slice an enabled Module keeps for an excluded peer (the slice
81
83
  imports its peer, so leaving it breaks `next build`). Requires `--enabled`,
package/dist/cli.js CHANGED
@@ -2354,7 +2354,13 @@ var moduleManifestSchema = import_zod.z.object({
2354
2354
  * `module-boundaries/ui-layer` lint rule enforces it — so a fork may
2355
2355
  * soft-eject them. See docs/module-ui-soft-eject-plan.md.
2356
2356
  */
2357
- ui: import_zod.z.object({ separable: import_zod.z.boolean() }).strict().optional()
2357
+ ui: import_zod.z.object({ separable: import_zod.z.boolean() }).strict().optional(),
2358
+ /**
2359
+ * `false` keeps a feature Module off in a new Blueprint fork unless the
2360
+ * creator ticks it: the fork picker leaves it unchecked and "every Module"
2361
+ * is written out without it. Omitted means on. Library Modules are always on.
2362
+ */
2363
+ defaultEnabled: import_zod.z.boolean().optional()
2358
2364
  }).strict().superRefine((manifest, ctx) => {
2359
2365
  if (manifest.uses.includes(manifest.name)) {
2360
2366
  ctx.addIssue({
@@ -3889,6 +3895,7 @@ function analyzeClientSafeEntryImports(sourceText, fileName) {
3889
3895
 
3890
3896
  // ../../packages/lib/src/shared/platform-owned-paths.ts
3891
3897
  var APP_WEB_PREFIX = "apps/web/";
3898
+ var BLUEPRINT_LINT_MARKER = `${APP_WEB_PREFIX}eslint-rules/module-boundaries.mjs`;
3892
3899
  var MODULE_STUB_MARKER = "@stardeck-module-rail-generated";
3893
3900
  var ENABLED_MODULES_ENV = "NEXT_PUBLIC_STARDECK_ENABLED_MODULES";
3894
3901
  var HEADLESS_MOUNTS_ENV = "NEXT_PUBLIC_STARDECK_HEADLESS_MOUNTS";
@@ -5935,10 +5942,12 @@ var creationSourceBlueprintSchema = import_zod7.z.object({
5935
5942
  /** Internal template/fork project id — keep template naming in identifiers. */
5936
5943
  blueprintProjectId: import_zod7.z.string().uuid(),
5937
5944
  /**
5938
- * `null`/absent means every feature Module. `[]` is refused: the platform
5939
- * serialises it to an empty `NEXT_PUBLIC_STARDECK_ENABLED_MODULES`, which the
5940
- * enablement parser reads back as "all" (`module-enablement.ts`) — the
5941
- * opposite of what an empty selection means.
5945
+ * `null`/absent means every feature Module: the platform stores that as the
5946
+ * explicit list of feature Modules in the published Blueprint version the fork
5947
+ * is cut from, so a Module a later Blueprint update adds arrives off. `[]` is
5948
+ * refused: the platform serialises it to an empty
5949
+ * `NEXT_PUBLIC_STARDECK_ENABLED_MODULES`, which the enablement parser reads
5950
+ * back as "all" (`module-enablement.ts`) — the opposite of an empty selection.
5942
5951
  */
5943
5952
  enabledModules: import_zod7.z.array(moduleNameSchema).min(1, "Enable at least one Module").max(100).nullable().optional()
5944
5953
  });
package/dist/index.js CHANGED
@@ -2476,7 +2476,13 @@ var moduleManifestSchema = import_zod2.z.object({
2476
2476
  * `module-boundaries/ui-layer` lint rule enforces it — so a fork may
2477
2477
  * soft-eject them. See docs/module-ui-soft-eject-plan.md.
2478
2478
  */
2479
- ui: import_zod2.z.object({ separable: import_zod2.z.boolean() }).strict().optional()
2479
+ ui: import_zod2.z.object({ separable: import_zod2.z.boolean() }).strict().optional(),
2480
+ /**
2481
+ * `false` keeps a feature Module off in a new Blueprint fork unless the
2482
+ * creator ticks it: the fork picker leaves it unchecked and "every Module"
2483
+ * is written out without it. Omitted means on. Library Modules are always on.
2484
+ */
2485
+ defaultEnabled: import_zod2.z.boolean().optional()
2480
2486
  }).strict().superRefine((manifest, ctx) => {
2481
2487
  if (manifest.uses.includes(manifest.name)) {
2482
2488
  ctx.addIssue({
@@ -4011,6 +4017,7 @@ function analyzeClientSafeEntryImports(sourceText, fileName) {
4011
4017
 
4012
4018
  // ../../packages/lib/src/shared/platform-owned-paths.ts
4013
4019
  var APP_WEB_PREFIX = "apps/web/";
4020
+ var BLUEPRINT_LINT_MARKER = `${APP_WEB_PREFIX}eslint-rules/module-boundaries.mjs`;
4014
4021
  var MODULE_STUB_MARKER = "@stardeck-module-rail-generated";
4015
4022
  var ENABLED_MODULES_ENV = "NEXT_PUBLIC_STARDECK_ENABLED_MODULES";
4016
4023
  var HEADLESS_MOUNTS_ENV = "NEXT_PUBLIC_STARDECK_HEADLESS_MOUNTS";
@@ -5945,10 +5952,12 @@ var creationSourceBlueprintSchema = import_zod7.z.object({
5945
5952
  /** Internal template/fork project id — keep template naming in identifiers. */
5946
5953
  blueprintProjectId: import_zod7.z.string().uuid(),
5947
5954
  /**
5948
- * `null`/absent means every feature Module. `[]` is refused: the platform
5949
- * serialises it to an empty `NEXT_PUBLIC_STARDECK_ENABLED_MODULES`, which the
5950
- * enablement parser reads back as "all" (`module-enablement.ts`) — the
5951
- * opposite of what an empty selection means.
5955
+ * `null`/absent means every feature Module: the platform stores that as the
5956
+ * explicit list of feature Modules in the published Blueprint version the fork
5957
+ * is cut from, so a Module a later Blueprint update adds arrives off. `[]` is
5958
+ * refused: the platform serialises it to an empty
5959
+ * `NEXT_PUBLIC_STARDECK_ENABLED_MODULES`, which the enablement parser reads
5960
+ * back as "all" (`module-enablement.ts`) — the opposite of an empty selection.
5952
5961
  */
5953
5962
  enabledModules: import_zod7.z.array(moduleNameSchema).min(1, "Enable at least one Module").max(100).nullable().optional()
5954
5963
  });
package/dist/index.mjs CHANGED
@@ -2457,7 +2457,13 @@ var moduleManifestSchema = z2.object({
2457
2457
  * `module-boundaries/ui-layer` lint rule enforces it — so a fork may
2458
2458
  * soft-eject them. See docs/module-ui-soft-eject-plan.md.
2459
2459
  */
2460
- ui: z2.object({ separable: z2.boolean() }).strict().optional()
2460
+ ui: z2.object({ separable: z2.boolean() }).strict().optional(),
2461
+ /**
2462
+ * `false` keeps a feature Module off in a new Blueprint fork unless the
2463
+ * creator ticks it: the fork picker leaves it unchecked and "every Module"
2464
+ * is written out without it. Omitted means on. Library Modules are always on.
2465
+ */
2466
+ defaultEnabled: z2.boolean().optional()
2461
2467
  }).strict().superRefine((manifest, ctx) => {
2462
2468
  if (manifest.uses.includes(manifest.name)) {
2463
2469
  ctx.addIssue({
@@ -3992,6 +3998,7 @@ function analyzeClientSafeEntryImports(sourceText, fileName) {
3992
3998
 
3993
3999
  // ../../packages/lib/src/shared/platform-owned-paths.ts
3994
4000
  var APP_WEB_PREFIX = "apps/web/";
4001
+ var BLUEPRINT_LINT_MARKER = `${APP_WEB_PREFIX}eslint-rules/module-boundaries.mjs`;
3995
4002
  var MODULE_STUB_MARKER = "@stardeck-module-rail-generated";
3996
4003
  var ENABLED_MODULES_ENV = "NEXT_PUBLIC_STARDECK_ENABLED_MODULES";
3997
4004
  var HEADLESS_MOUNTS_ENV = "NEXT_PUBLIC_STARDECK_HEADLESS_MOUNTS";
@@ -5926,10 +5933,12 @@ var creationSourceBlueprintSchema = z7.object({
5926
5933
  /** Internal template/fork project id — keep template naming in identifiers. */
5927
5934
  blueprintProjectId: z7.string().uuid(),
5928
5935
  /**
5929
- * `null`/absent means every feature Module. `[]` is refused: the platform
5930
- * serialises it to an empty `NEXT_PUBLIC_STARDECK_ENABLED_MODULES`, which the
5931
- * enablement parser reads back as "all" (`module-enablement.ts`) — the
5932
- * opposite of what an empty selection means.
5936
+ * `null`/absent means every feature Module: the platform stores that as the
5937
+ * explicit list of feature Modules in the published Blueprint version the fork
5938
+ * is cut from, so a Module a later Blueprint update adds arrives off. `[]` is
5939
+ * refused: the platform serialises it to an empty
5940
+ * `NEXT_PUBLIC_STARDECK_ENABLED_MODULES`, which the enablement parser reads
5941
+ * back as "all" (`module-enablement.ts`) — the opposite of an empty selection.
5933
5942
  */
5934
5943
  enabledModules: z7.array(moduleNameSchema).min(1, "Enable at least one Module").max(100).nullable().optional()
5935
5944
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stardeck-customer-apps/compose",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Regenerates a Stardeck app's Module-rail artifacts — the six src/*.gen.ts registries and every route/endpoint stub — from src/modules/*/module.json",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -33,9 +33,9 @@
33
33
  "scripts": {
34
34
  "build": "rm -rf dist && tsup",
35
35
  "dev": "tsup --watch",
36
- "format": "prettier --write . && eslint . --fix",
36
+ "format": "prettier --write . && oxlint . --fix",
37
37
  "typecheck": "tsc -p tsconfig.test.json",
38
- "lint": "eslint src/",
38
+ "lint": "oxlint src/",
39
39
  "test": "vitest run",
40
40
  "test:watch": "vitest"
41
41
  },
@@ -54,12 +54,10 @@
54
54
  "typescript": ">=5.0.0 <7"
55
55
  },
56
56
  "devDependencies": {
57
- "@eslint/js": "^9.0.0",
58
57
  "@stardeck-customer-apps/tsconfig": "*",
59
58
  "@types/node": "^24.10.1",
60
59
  "tsup": "^8.0.0",
61
60
  "typescript": "^5.0.0",
62
- "typescript-eslint": "^8.0.0",
63
61
  "vitest": "^3.2.4"
64
62
  }
65
63
  }