Found while verifying spikersoft-issues#725 PR 3: nx run spikersoft:build-storybook fails on clean master (the earlier "green" runs were stale nx cache hits). Dev server usage may mask some of these. Peeling the onion locally surfaced three distinct layers:
1. @storybook/addon-actions no longer exists (Storybook 10)
twilio-sms-consent.component.stories.ts imports { action } from "@storybook/addon-actions". In Storybook 10 actions moved into core: import { action } from "storybook/actions". One-line fix, verified it clears this error.
2. Node built-ins in browser bundle (quicktype-core)
Next failure: Can't resolve 'path' in .../quicktype-core/dist/esm/input/io. The app's esbuild build already handles this via build-plugins/node-builtins-browser-shim.plugin.cjs, but Storybook builds with webpack5 which needs its own resolve.fallback (fs/path/crypto/stream/buffer: false) in .storybook/main.tswebpackFinal. Verified this clears the resolve errors.
3. Worker files missing from the Storybook tsconfig
With 1+2 patched, the compilation then fails on every *.worker.ts (monaco-editor css/html/json/ts/editor workers, wasm-runtime.worker.ts, real-git-engine.worker.ts): "missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property" — plus a follow-on "Module parse failed" and heavy memory pressure (default heap OOMs; 8 GB gets past it). The Storybook tsconfig needs the worker includes (and possibly webpackFinal worker handling) that the app build gets from its esbuild config.
Suggested scope
fix the storybook/actions import
add resolve.fallback to .storybook/main.ts
include **/*.worker.ts in the Storybook tsconfig (or exclude the worker-owning stories)
decide whether build-storybook should be wired into CI so it can't silently rot again (nx cache made this look green locally)
Repro: pnpm exec nx run spikersoft:build-storybook --skip-nx-cache on master.
Found while verifying spikersoft-issues#725 PR 3: `nx run spikersoft:build-storybook` fails on **clean master** (the earlier "green" runs were stale nx cache hits). Dev server usage may mask some of these. Peeling the onion locally surfaced three distinct layers:
### 1. `@storybook/addon-actions` no longer exists (Storybook 10)
`twilio-sms-consent.component.stories.ts` imports `{ action } from "@storybook/addon-actions"`. In Storybook 10 actions moved into core: `import { action } from "storybook/actions"`. One-line fix, verified it clears this error.
### 2. Node built-ins in browser bundle (quicktype-core)
Next failure: `Can't resolve 'path' in .../quicktype-core/dist/esm/input/io`. The app's esbuild build already handles this via `build-plugins/node-builtins-browser-shim.plugin.cjs`, but Storybook builds with webpack5 which needs its own `resolve.fallback` (`fs/path/crypto/stream/buffer: false`) in `.storybook/main.ts` `webpackFinal`. Verified this clears the resolve errors.
### 3. Worker files missing from the Storybook tsconfig
With 1+2 patched, the compilation then fails on every `*.worker.ts` (monaco-editor css/html/json/ts/editor workers, `wasm-runtime.worker.ts`, `real-git-engine.worker.ts`): *"missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property"* — plus a follow-on "Module parse failed" and heavy memory pressure (default heap OOMs; 8 GB gets past it). The Storybook tsconfig needs the worker includes (and possibly `webpackFinal` worker handling) that the app build gets from its esbuild config.
### Suggested scope
- [ ] fix the `storybook/actions` import
- [ ] add `resolve.fallback` to `.storybook/main.ts`
- [ ] include `**/*.worker.ts` in the Storybook tsconfig (or exclude the worker-owning stories)
- [ ] decide whether `build-storybook` should be wired into CI so it can't silently rot again (nx cache made this look green locally)
Repro: `pnpm exec nx run spikersoft:build-storybook --skip-nx-cache` on master.
Re-verified against origin/master — NOT DONE. All four checklist items still outstanding.
@storybook/addon-actions import: unchanged. projects/spikersoft/src/app/_components/registration-stepper/sms-consent/twilio-sms-consent.component.stories.ts:2 still reads import { action } from "@storybook/addon-actions";. Grepping for the replacement storybook/actions path across master → no hits.
resolve.fallback for node built-ins: absent. projects/spikersoft/.storybook/main.ts matches webpackFinal only at :16, and that's inside the scaffold comment ("To customize your webpack configuration you can use the webpackFinal field") — no implementation, and no fallback: key anywhere in .storybook/.
Worker tsconfig includes:git grep -n "worker" origin/master -- '*.storybook*' → zero matches. .storybook/tsconfig.json has no **/*.worker.ts include.
CI wiring:git grep -rn "build-storybook" origin/master -- '.gitea' '.github' → zero matches.
Item 4 is the one I'd weight highest, and it's worth saying why beyond "it's on the list". Because nothing runs build-storybook, this target has no rot detection at all — it broke silently and would break again silently after any fix. Fixing items 1–3 without item 4 buys a working build until the next dependency bump nobody notices.
That's the same shape as several findings from this audit: #824 (app build wasn't gated, so strictTemplates errors merged green — now fixed), #628 (e2e specs self-skip rather than fail, so the nightly has been green while testing nothing), #603 and #579 (swarm summary views report healthy for things that aren't). The common thread is green signals that aren't measuring anything. Worth wiring the CI job in the same pass rather than as a follow-up.
Re-verified against `origin/master` — **NOT DONE. All four checklist items still outstanding.**
1. **`@storybook/addon-actions` import:** unchanged. `projects/spikersoft/src/app/_components/registration-stepper/sms-consent/twilio-sms-consent.component.stories.ts:2` still reads `import { action } from "@storybook/addon-actions";`. Grepping for the replacement `storybook/actions` path across master → no hits.
2. **`resolve.fallback` for node built-ins:** absent. `projects/spikersoft/.storybook/main.ts` matches `webpackFinal` only at `:16`, and that's inside the scaffold comment ("To customize your webpack configuration you can use the webpackFinal field") — no implementation, and no `fallback:` key anywhere in `.storybook/`.
3. **Worker tsconfig includes:** `git grep -n "worker" origin/master -- '*.storybook*'` → **zero matches**. `.storybook/tsconfig.json` has no `**/*.worker.ts` include.
4. **CI wiring:** `git grep -rn "build-storybook" origin/master -- '.gitea' '.github'` → **zero matches**.
Item 4 is the one I'd weight highest, and it's worth saying why beyond "it's on the list". Because nothing runs `build-storybook`, this target has no rot detection at all — it broke silently and would break again silently after any fix. Fixing items 1–3 without item 4 buys a working build until the next dependency bump nobody notices.
That's the same shape as several findings from this audit: **#824** (app build wasn't gated, so strictTemplates errors merged green — now fixed), **#628** (e2e specs self-skip rather than fail, so the nightly has been green while testing nothing), **#603** and **#579** (swarm summary views report healthy for things that aren't). The common thread is green signals that aren't measuring anything. Worth wiring the CI job in the same pass rather than as a follow-up.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Found while verifying spikersoft-issues#725 PR 3:
nx run spikersoft:build-storybookfails on clean master (the earlier "green" runs were stale nx cache hits). Dev server usage may mask some of these. Peeling the onion locally surfaced three distinct layers:1.
@storybook/addon-actionsno longer exists (Storybook 10)twilio-sms-consent.component.stories.tsimports{ action } from "@storybook/addon-actions". In Storybook 10 actions moved into core:import { action } from "storybook/actions". One-line fix, verified it clears this error.2. Node built-ins in browser bundle (quicktype-core)
Next failure:
Can't resolve 'path' in .../quicktype-core/dist/esm/input/io. The app's esbuild build already handles this viabuild-plugins/node-builtins-browser-shim.plugin.cjs, but Storybook builds with webpack5 which needs its ownresolve.fallback(fs/path/crypto/stream/buffer: false) in.storybook/main.tswebpackFinal. Verified this clears the resolve errors.3. Worker files missing from the Storybook tsconfig
With 1+2 patched, the compilation then fails on every
*.worker.ts(monaco-editor css/html/json/ts/editor workers,wasm-runtime.worker.ts,real-git-engine.worker.ts): "missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property" — plus a follow-on "Module parse failed" and heavy memory pressure (default heap OOMs; 8 GB gets past it). The Storybook tsconfig needs the worker includes (and possiblywebpackFinalworker handling) that the app build gets from its esbuild config.Suggested scope
storybook/actionsimportresolve.fallbackto.storybook/main.ts**/*.worker.tsin the Storybook tsconfig (or exclude the worker-owning stories)build-storybookshould be wired into CI so it can't silently rot again (nx cache made this look green locally)Repro:
pnpm exec nx run spikersoft:build-storybook --skip-nx-cacheon master.Re-verified against
origin/master— NOT DONE. All four checklist items still outstanding.@storybook/addon-actionsimport: unchanged.projects/spikersoft/src/app/_components/registration-stepper/sms-consent/twilio-sms-consent.component.stories.ts:2still readsimport { action } from "@storybook/addon-actions";. Grepping for the replacementstorybook/actionspath across master → no hits.resolve.fallbackfor node built-ins: absent.projects/spikersoft/.storybook/main.tsmatcheswebpackFinalonly at:16, and that's inside the scaffold comment ("To customize your webpack configuration you can use the webpackFinal field") — no implementation, and nofallback:key anywhere in.storybook/.git grep -n "worker" origin/master -- '*.storybook*'→ zero matches..storybook/tsconfig.jsonhas no**/*.worker.tsinclude.git grep -rn "build-storybook" origin/master -- '.gitea' '.github'→ zero matches.Item 4 is the one I'd weight highest, and it's worth saying why beyond "it's on the list". Because nothing runs
build-storybook, this target has no rot detection at all — it broke silently and would break again silently after any fix. Fixing items 1–3 without item 4 buys a working build until the next dependency bump nobody notices.That's the same shape as several findings from this audit: #824 (app build wasn't gated, so strictTemplates errors merged green — now fixed), #628 (e2e specs self-skip rather than fail, so the nightly has been green while testing nothing), #603 and #579 (swarm summary views report healthy for things that aren't). The common thread is green signals that aren't measuring anything. Worth wiring the CI job in the same pass rather than as a follow-up.