Skip to content

fix: resolve six scaffold gaps from 1.29.0 audit (spec 017)#78

Merged
salimomrani merged 1 commit into
masterfrom
017-scaffold-gaps-fix
Apr 25, 2026
Merged

fix: resolve six scaffold gaps from 1.29.0 audit (spec 017)#78
salimomrani merged 1 commit into
masterfrom
017-scaffold-gaps-fix

Conversation

@salimomrani

Copy link
Copy Markdown
Owner

Summary

  • Six verified scaffold-time fixes from a real 1.29.0 audit, sequenced as one PR.
  • Three additional audit items explicitly rejected as speculative abstractions (constitution rule fix: infra checkbox never shown due to Commander.js boolean defaults #6) and listed Out of scope: default JSON logs, default correlation-ID plumbing, Spring Security marker dep.
  • New ProjectConfig.database field, new ResolvedVersions.angularCli field, new --no-auth / --yes CLI flags, non-TTY auto-skip, Angular ng test works out of the box, cross-layer proxy.conf.json when both layers are scaffolded.

Spec: specs/017-scaffold-gaps-fix

Fixes

FR Audit Change
FR-1 #1, #2 versions.ts: separate @angular/cli fetch + typescript cap (<6.0 for Angular). package.json.hbs uses versions.angularCli.
FR-2 #3, #4 Generator builds flat styles[]; components use --app-* aliased to --p-* only when PrimeNG. Zero --p-* references when ui=none.
FR-3 #5 New database: 'postgres' | 'none' on ProjectConfig. Gates JPA + postgres driver + flyway. Forces flyway off when database=none.
FR-4 #7, #8 --no-auth, -y/--yes declared on new and add. Non-TTY stdin auto-skips prompts and uses defaults.
FR-5 #11 angular.json ships a test target (@angular/build:karma), tsconfig.spec.json, and a minimal AppComponent Jasmine spec. Karma+Jasmine devDeps hard-pinned (rule #6).
FR-6 #6 Frontend generator emits frontend/proxy.conf.json and patches serve.options.proxyConfig when backendType is set. Port map: spring-boot=8080, fastapi=8000, nestjs=3000, nextjs=3000, laravel=8000.

Test plan

  • npm run typecheck exits 0
  • npm run lint exits 0 (0 issues found)
  • npm test539 tests / 50 files all passing
  • E2E smoke: forgekit new demo --spring-boot --angular --yes produces a frontend/package.json with @angular/cli ^21.2.8 (≠ @angular/core ^21.2.10) and typescript ~5.9.0 (capped); proxy.conf.json points at localhost:8080
  • E2E smoke: forgekit add angular --ui none produces zero PrimeNG packages and angular.json styles = ["src/styles.scss"]
  • E2E smoke: forgekit add spring-boot --database none produces a pom.xml with zero matches of data-jpa, postgresql, or flyway-core
  • E2E smoke: non-TTY pipe (yes | forgekit ... --yes) completes without ExitPromptError

- FR-1: separate angularCli version field and cap typescript on Angular peer range (<6.0)
- FR-2: gate PrimeNG assets via --app-* token aliasing in styles.scss; flat styles[] from generator
- FR-3: add ProjectConfig.database field, decouple JPA/postgres/flyway from --no-flyway
- FR-4: --no-auth and --yes flags; auto-skip prompts when stdin is not a TTY
- FR-5: ng test target with @angular/build:karma builder and one minimal sample spec
- FR-6: emit frontend/proxy.conf.json mapping /api/** to backend port when both layers are scaffolded

Audit items #9 (default JSON logs), #10 (default correlation-ID plumbing) and #12
(Spring Security marker dep) were rejected as speculative abstractions per
constitution rule #6 and are listed Out of scope in the spec.

Spec: specs/017-scaffold-gaps-fix/
Verification: 539 tests pass, 0 lint, 0 typecheck errors.
E2E smokes: default scaffold, --ui none, --database none, non-TTY pipe.
@salimomrani
salimomrani merged commit 0ea6abe into master Apr 25, 2026
5 checks passed
@salimomrani
salimomrani deleted the 017-scaffold-gaps-fix branch April 25, 2026 22:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant