feat: add dependency version channels and web builder parity#104
feat: add dependency version channels and web builder parity#104Divith123 wants to merge 3 commits intoMarve10s:mainfrom
Conversation
|
@Divith123 is attempting to deploy a commit to the Ibrahim's projects Team on Vercel. A member of the Team first needs to authorize it. |
versionChannel options (stable, latest, beta) are config choices, not packages — they don't have docs/GitHub URLs.
|
Great work @Divith123! Thank you for your PR, it's first on this repo that was not made by me. I'd like to merge this PR but there are couple of things I think we might want to add. If you'd like to tackle them - I'd be grateful Issues
The fetch() calls in dependency-version-channel.ts have no timeout. If DNS hangs or a corporate proxy
Promise.all fires all 50-80 package lookups simultaneously. This risks npm rate-limiting (429) and high
The code fetches with Accept: application/json, which returns the full registry document (react = 6.5MB,
The feature logic is 242 lines with only 3 test cases. The most impactful additions would be:
The rest of the CLI uses log.warn from @clack/prompts. The console.warn in the catch block would print Minor suggestions (non-blocking)
|
… tests for version parsing and comparison
|
Thanks for the thorough review @Marve10s! All 5 issues are addressed. Here's what changed: Fixes
Verification
|
Summary
This PR adds dependency version channel support across the CLI, shared schemas, and the web builder.
Users can now choose between:
stablelatestbetaThe selected channel is then applied during scaffolding instead of always relying on the existing curated pinned versions.
This PR also improves addon/integration parity by grouping
mswandstorybookunder anIntegrationssection in the CLI prompt flow, and underApp Platforms > Integrationsin the web builder.What changed
CLI
--version-channel stable|latest|betaversionChannelin generatedbts.jsoncversionChannelin reproducible command generationstablewhen no channel is providedDependency resolution
stablekeeps Better Fullstack’s curated pinned versionslatestresolves current npmlatesttagsbetaprefers prerelease tags in this order:betanextrccanaryalphalatestas fallbackpackage.jsonfiles^and~workspace:andfile:dependenciesShared schema / config parity
versionChannelto:Web builder
versionChannelto web stack defaults/stateversionChannelthrough preview config generation--version-channelwhen neededversionChannelstablevalueIntegrations grouping
Integrationsgroup for:mswstorybookApp Platforms > IntegrationsWhy
Previously scaffolding always depended on the existing curated version strategy, which is useful but too rigid for users who want either:
This change gives users explicit control while keeping
stableas the default safe path.It also improves CLI/web parity so the same selection model exists in both surfaces.
Notes
storybookis available in the web builder underApp Platforms > Integrations, not as a standalone top-level builder categoryVerification
Ran:
bun run --cwd packages/types buildbun run --cwd packages/template-generator buildbun run --cwd apps/cli check-typesbun run --cwd apps/web typecheckbun test apps/cli/test/dependency-version-channel.test.ts apps/cli/test/generate-reproducible-command.test.tsbun test apps/web/test/preview-config.test.ts apps/web/test/stack-utils.test.tsbun test apps/cli/test/add-history-commands.test.tsbun run test:releaseAll passed.