Skip to content

feat: scaffold React Spring Boot ILCR template - #3

Merged
SScholefield merged 39 commits into
mainfrom
feature/react-springboot-template
Jul 21, 2026
Merged

feat: scaffold React Spring Boot ILCR template#3
SScholefield merged 39 commits into
mainfrom
feature/react-springboot-template

Conversation

@gpascucci

@gpascucci gpascucci commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Replace the generated Nest/Prisma backend scaffold with a Spring Boot backend scaffold.
  • Add the React/Carbon local-dev app shell, mock ILCR role selector, theme handling, and local API proxy defaults.
  • Update README, security notes, gitignore, Docker/OpenShift templates, and GitHub workflows for local development with Gold-only deployment placeholders gated off until ready.

Validation

  • mvn -q -f backend\pom.xml verify
  • npm run lint
  • npm run format:check
  • npm run test:cov
  • npm run build
  • git diff --check
  • Local smoke check: frontend http://127.0.0.1:3000/, backend readiness http://localhost:3001/api/health/readiness

Notes

  • OpenShift Gold is the target, but deploy/test workflows stay gated by ENABLE_OPENSHIFT_DEPLOY until the Gold project is available.
  • Local Oracle values remain in ignored .env; .env.example is sanitized and does not include secrets.
  • FAM auth and ILCR user/mill association remain tracked as follow-up modernization work.

Thanks for the PR!

Deployments, as required, will be available below:

Please create PRs in draft mode. Mark as ready to enable:

After merge, new images are deployed in:

Comment thread backend/Dockerfile Dismissed
@paulushcgcj

Copy link
Copy Markdown
Contributor

I'll hold this PR until tomorrow. We are still setting up a few things

…oot-template

# Conflicts:
#	.github/workflows/analysis.yml
#	.gitignore
#	backend/.dockerignore
#	backend/Dockerfile
#	backend/openshift.deploy.yml
#	backend/pom.xml
#	backend/src/main/resources/application.yml
#	docker-compose.yml
Kamal and others added 4 commits July 17, 2026 11:55
…ntext foundation

Epic 1 (open Schedule 1 in context) and Epic 2 stories 2.1-2.2:
- millcontext validation, JdbcClient persistence, RFC 7807 error contract, action-based
  authorization + dev mock principal, shared Testcontainers/Flyway THE snapshot (1.1/1.2)
- Schedule 1 page read-only then editable: GET aggregate document, PUT save with optimistic
  lock, DELETE, verbatim legacy messages, AD-8 success-message field (1.3/2.1/2.2)
- verified against real Oracle (unit + acceptance ITs green)
- manual-verification polish: clean 404 for unmapped paths (no stack trace), quieter
  business-4xx logging, Schedules submenu, header toggle-icon contrast

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… response

From the backend/frontend separation-of-concerns review vs the CSP reference:
- frontend: validateSchedule1 mirrors the Schedule1Request ranges, shows inline
  Carbon invalid/invalidText and gates Save (backend remains authoritative)
- backend: handleDataIntegrityViolation returns a generic 409 message and logs the
  specific DB cause server-side only (closes an AD-11 info-leak)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR replaces the prior generated backend scaffolding with a Spring Boot–based ILCR scaffold and adds a React + Carbon frontend shell for local development, including mock auth/role selection, theme toggling, and initial Schedule 1 wiring (DTOs, API proxy defaults, and test scaffolding). It also updates OpenShift/Docker/GitHub workflow templates to match the new stack and to keep deploy/test automation gated until Gold deployment is enabled.

Changes:

  • Swap backend scaffold to Spring Boot with actuator health endpoints, Oracle datasource toggle/validation, and Schedule 1 API/read-write test scaffolding.
  • Replace frontend Bootstrap-based shell with a Carbon-based layout, navigation, theme handling, mock auth selector, and Schedule 1 client interfaces/validation.
  • Update local dev + CI/CD templates (docker-compose, OpenShift templates, integration test suite selection, and GitHub workflows) with Gold placeholders behind feature gates.

Reviewed changes

Copilot reviewed 189 out of 200 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
SECURITY.md Updates security reporting/support posture and baseline control notes for the scaffold.
migrations/.dockerignore Adds Docker ignore rules for the migrations context.
frontend/vite.config.ts Improves dev server defaults and backend proxy configuration; adjusts aliasing.
frontend/src/test-utils.tsx Wraps RTL render with app providers for consistent test context.
frontend/src/test-setup.ts Adds MSW handlers + ResizeObserver mock for Carbon/jsdom compatibility.
frontend/src/styles/index.scss Introduces app-level Carbon-aligned styling and layout utilities.
frontend/src/styles/_variables.scss Adds shared Sass variables for Carbon prefixing.
frontend/src/styles/_mixins.scss Adds shared Sass mixins used across app layout.
frontend/src/styles/_custom.scss Adds theme-specific overrides for Carbon components.
frontend/src/service/api-service.ts Tightens axios interceptor typing/logging and ensures errors are rethrown.
frontend/src/scss/styles.scss Removes Bootstrap-based global styles.
frontend/src/routeTree.gen.ts Updates generated TanStack route tree for new routes.
frontend/src/routes/submissions.tsx Adds Submissions placeholder route.
frontend/src/routes/schedule-1.tsx Adds Schedule 1 route wiring.
frontend/src/routes/mill-associations.tsx Adds Mill Associations placeholder route.
frontend/src/routes/-navigation.ts Defines top-level navigation structure and route constants.
frontend/src/main.tsx Switches app bootstrapping to Carbon styles + shared providers.
frontend/src/interfaces/Schedule1Response.ts Adds Schedule 1 response contract mirroring backend DTO.
frontend/src/interfaces/Schedule1Request.ts Adds Schedule 1 request contract + writable code constants.
frontend/src/index.css Removes legacy MUI/Bootstrap-specific CSS override.
frontend/src/context/theme/useTheme.ts Adds theme hook using context consumption.
frontend/src/context/theme/ThemeProvider.tsx Adds Carbon theme provider with localStorage persistence + DOM dataset.
frontend/src/context/theme/ThemeContext.tsx Adds theme context types/defaults.
frontend/src/context/millYear/useMillYear.ts Adds mill/year context hook with provider guard.
frontend/src/context/millYear/MillYearProvider.tsx Adds mill/year provider with defaults and test seed support.
frontend/src/context/millYear/millYearDefaults.ts Introduces dev default mill/year constants.
frontend/src/context/millYear/MillYearContext.tsx Adds mill/year context definition.
frontend/src/context/millYear/tests/useMillYear.test.tsx Adds unit tests for mill/year context defaults and guard.
frontend/src/context/layout/useLayout.ts Adds layout context hook with provider guard.
frontend/src/context/layout/LayoutProvider.tsx Adds provider for side-nav expansion state.
frontend/src/context/layout/LayoutContext.tsx Adds layout context definition.
frontend/src/context/auth/useMockAuth.ts Adds mock auth hook using context consumption.
frontend/src/context/auth/mockUsers.ts Adds mock user set + ILCR roles for local dev.
frontend/src/context/auth/MockAuthProvider.tsx Adds mock-auth provider with localStorage persistence.
frontend/src/context/auth/MockAuthContext.tsx Adds mock-auth context types/defaults.
frontend/src/components/ThemeToggle.tsx Adds header theme toggle action using Carbon global actions.
frontend/src/components/schedule1/validation.ts Adds client-side advisory validation consistent with backend ranges/messages.
frontend/src/components/schedule1/index.scss Adds Carbon table/layout styles for Schedule 1 UI.
frontend/src/components/PlaceholderPage.tsx Adds reusable placeholder page shell for future routes.
frontend/src/components/NotFound.tsx Migrates 404 page from Bootstrap to Carbon layout components.
frontend/src/components/MockUserSelector.tsx Adds mock user selector control for local role testing.
frontend/src/components/Layout/LayoutSideNav.tsx Adds Carbon side navigation rendering from navigation config.
frontend/src/components/Layout/LayoutHeader.tsx Adds Carbon header with menu toggle, mock user selector, and theme toggle.
frontend/src/components/Layout/index.tsx Adds shared layout wrapper using Carbon HeaderContainer/Content.
frontend/src/components/Layout/index.scss Adds layout CSS for content and toast positioning.
frontend/src/components/Layout.tsx Removes old BC Gov design system / Bootstrap layout component.
frontend/src/components/core/PageTitle/index.tsx Adds reusable page title + breadcrumb component and document title updates.
frontend/src/components/core/PageTitle/index.scss Adds PageTitle styling aligned with Carbon/BC Gov prefix.
frontend/src/components/core/LoadingScreen/index.tsx Adds Carbon Loading-based screen component.
frontend/src/components/core/LoadingScreen/index.scss Adds LoadingScreen styling.
frontend/src/components/core/EmptySection/index.tsx Adds empty-state component using Carbon pictograms.
frontend/src/components/core/EmptySection/index.scss Adds empty-state styling.
frontend/src/components/tests/NotFound.test.tsx Updates tests to use shared test-utils and providers.
frontend/src/components/tests/Dashboard.test.tsx Updates tests for new Dashboard copy and Carbon-based close button behavior.
frontend/src/app/AppProviders.tsx Centralizes app provider composition for runtime and tests.
frontend/src/tests/Dashboard.tsx Updates smoke test expectations for new UI copy.
frontend/package.json Renames package, swaps Bootstrap deps for Carbon/nr-theme, adds Playwright script.
frontend/openshift.deploy.yml Updates OpenShift domain defaults and corrects template parameter substitution.
frontend/index.html Updates app title/description metadata.
frontend/e2e/utils/index.ts Points E2E default baseURL to localhost for local dev.
frontend/e2e/pages/dashboard.ts Updates Playwright assertions for the new Carbon-based shell.
docker-compose.yml Replaces legacy DB services with Maven-based Spring Boot local run + frontend proxying.
common/tests/integration/src/test_suites/it.backend.springboot.json Adds/targets integration suite for Spring Boot scaffold endpoint(s).
common/tests/integration/src/test_suites/it.backend.quarkus.json Removes obsolete integration suite definition.
common/tests/integration/src/test_suites/it.backend.nest.json Removes obsolete integration suite definition.
common/tests/integration/src/test_suites/it.backend.fiber.json Removes obsolete integration suite definition.
common/tests/integration/src/test_suites/it.backend.fastapi.json Removes obsolete integration suite definition.
common/openshift.init.yml Updates init template (name, policies) and removes DB secret/policy template pieces.
common/openshift.database.yml Removes DB template (no longer part of scaffold deploy).
backend/src/test/resources/db/V4__seed_schedule1_write_fixtures.sql Adds write-path seed fixtures for Schedule 1 acceptance tests.
backend/src/test/resources/db/V3__seed_schedule1_details.sql Adds Schedule 1 detail-row seed data and summary updates for pinned contract.
backend/src/test/resources/db/V1__the_schedule1_snapshot.sql Adds minimal THE schema snapshot for Oracle test scope.
backend/src/test/resources/db/migration/V1.0.0__org_unit_table.sql Removes obsolete migration.
backend/src/test/resources/application-default.yml Removes obsolete test application defaults.
backend/src/test/java/ca/bc/gov/nrs/ilcr/web/RootControllerTest.java Adds unit test for /api service info endpoint.
backend/src/test/java/ca/bc/gov/nrs/ilcr/util/PaginationUtilTest.java Removes obsolete pagination util unit test.
backend/src/test/java/ca/bc/gov/nrs/ilcr/support/AbstractOracleIT.java Adds shared Oracle Testcontainers + Flyway base for acceptance ITs.
backend/src/test/java/ca/bc/gov/nrs/ilcr/security/SchedulePermissionTest.java Adds unit tests for role→action permissions.
backend/src/test/java/ca/bc/gov/nrs/ilcr/security/RoleTest.java Removes obsolete Role enum test.
backend/src/test/java/ca/bc/gov/nrs/ilcr/security/JwtRoleCheckerIntegrationTest.java Removes obsolete integration tests tied to previous security wiring.
backend/src/test/java/ca/bc/gov/nrs/ilcr/security/JwtRoleAuthorizationManagerFactoryIntegrationTest.java Removes obsolete integration tests tied to previous security wiring.
backend/src/test/java/ca/bc/gov/nrs/ilcr/security/CognitoGroupsJwtAuthenticationConverterTest.java Adds tests for cognito:groups → ILCR role authority mapping.
backend/src/test/java/ca/bc/gov/nrs/ilcr/schedule1/Schedule1WriteFailureIT.java Adds write failure rollback + retry acceptance test scaffolding.
backend/src/test/java/ca/bc/gov/nrs/ilcr/schedule1/Schedule1WriteAuthorizationIT.java Adds authorization IT for write actions with security enabled.
backend/src/test/java/ca/bc/gov/nrs/ilcr/schedule1/Schedule1DocumentIT.java Adds pinned contract IT scaffolding for Schedule 1 GET.
backend/src/test/java/ca/bc/gov/nrs/ilcr/schedule1/Schedule1AuthorizationIT.java Adds authorization IT for Schedule 1 GET with security enabled.
backend/src/test/java/ca/bc/gov/nrs/ilcr/millcontext/MillContextServiceTest.java Adds unit tests for mill/year validation rules.
backend/src/test/java/ca/bc/gov/nrs/ilcr/IlcrBackendApplicationTests.java Adds Spring context smoke test with mocked JdbcClient when datasource disabled.
backend/src/test/java/ca/bc/gov/nrs/ilcr/extensions/WithMockJwtSecurityContextFactory.java Removes obsolete WithMockJwt infrastructure.
backend/src/test/java/ca/bc/gov/nrs/ilcr/extensions/WithMockJwt.java Removes obsolete WithMockJwt annotation.
backend/src/test/java/ca/bc/gov/nrs/ilcr/extensions/CustomOracleContainer.java Removes obsolete custom container wrapper.
backend/src/test/java/ca/bc/gov/nrs/ilcr/extensions/AbstractTestContainerIntegrationTest.java Removes obsolete shared container base.
backend/src/test/java/ca/bc/gov/nrs/ilcr/controller/CodesControllerIntegrationTest.java Removes obsolete codes endpoint integration test.
backend/src/test/java/ca/bc/gov/nrs/ilcr/configuration/FeatureFlagsConfigurationIntegrationTest.java Removes obsolete integration test for feature flags config.
backend/src/main/resources/META-INF/native-image/ca.bc.gov.nrs/nr-ilcr-backend-additional-hints/reachability-metadata.json Removes native-image reachability hints (no longer used with jar build).
backend/src/main/resources/messages.properties Adds legacy-parity message bundle for user-facing errors/success/validation.
backend/src/main/resources/application.properties Removes legacy application.properties content.
backend/src/main/resources/application-openshift.yml Adds OpenShift profile config (shutdown/logging).
backend/src/main/resources/application-local.yml Removes placeholder local profile file.
backend/src/main/resources/application-da2923-dev.yml Removes legacy environment-specific datasource snippet.
backend/src/main/java/ca/bc/gov/nrs/ilcr/web/RootController.java Adds /api info endpoint returning name/version/status.
backend/src/main/java/ca/bc/gov/nrs/ilcr/web/AppInfoResponse.java Adds record type for /api info response.
backend/src/main/java/ca/bc/gov/nrs/ilcr/util/PaginationUtil.java Reworks sort resolution to use Spring Sort rather than JPA unsafe sort.
backend/src/main/java/ca/bc/gov/nrs/ilcr/util/JwtPrincipalUtil.java Updates group prefix stripping from prior app to ILCR prefix.
backend/src/main/java/ca/bc/gov/nrs/ilcr/service/codes/DistrictService.java Removes obsolete district service.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/SchedulePermissions.java Adds central permission map and @PreAuthorize checker for schedule actions.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/Oauth2SecurityCustomizer.java Removes obsolete OAuth2 customizer.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/MockPrincipalFilter.java Adds dev-mode mock principal seeding when security disabled.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/JwtRoleChecker.java Updates javadoc example for role checks.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/HeadersSecurityCustomizer.java Removes obsolete header security customizer.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/DatabaseAuditor.java Removes obsolete JPA auditor (no longer used).
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/CsrfSecurityCustomizer.java Removes obsolete CSRF customizer.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/CognitoGroupsJwtAuthenticationConverter.java Adds converter to map cognito:groups to ILCR role authorities.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/ApiAuthorizationCustomizer.java Removes obsolete route authorization customizer.
backend/src/main/java/ca/bc/gov/nrs/ilcr/security/Action.java Adds named actions for permission checks (VIEW/EDIT schedule).
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/StaleRevisionException.java Adds optimistic-lock conflict exception mapping to 409.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/ScheduleNotSavedException.java Adds persistence failure exception mapping to 500 with legacy key.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/ScheduleNotEditableException.java Adds non-draft edit conflict exception mapping to 409.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/Schedule1Controller.java Adds Schedule 1 GET/PUT/DELETE controller with permission checks + message handling.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/dto/SilvicultureBlock.java Adds Schedule 1 silviculture block DTO.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/dto/Schedule1Response.java Adds Schedule 1 aggregate response DTO (+ message helper).
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/dto/Schedule1Request.java Adds Schedule 1 write DTO with Jakarta validation ranges and legacy message keys.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/dto/OtherCostsSummary.java Adds Other Costs subtotal DTO.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/dto/MessageResponse.java Adds minimal message wrapper for delete responses.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/dto/MessageInfo.java Adds message key+text DTO.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/dto/LineItem.java Adds Schedule 1 line item DTO.
backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/api/Schedule1Api.java Defines Schedule 1 API interface contract for controller implementation.
backend/src/main/java/ca/bc/gov/nrs/ilcr/repository/codes/OrgUnitRepository.java Removes obsolete JPA repository.
backend/src/main/java/ca/bc/gov/nrs/ilcr/millcontext/ScheduleNotFoundException.java Adds schedule context 404 business exception.
backend/src/main/java/ca/bc/gov/nrs/ilcr/millcontext/MillContextService.java Adds centralized mill/year validation service.
backend/src/main/java/ca/bc/gov/nrs/ilcr/millcontext/MillContextRepository.java Adds JdbcClient-based context queries for THE tables.
backend/src/main/java/ca/bc/gov/nrs/ilcr/millcontext/MillClosedException.java Adds closed-mill 409 business exception.
backend/src/main/java/ca/bc/gov/nrs/ilcr/mappers/MapperConstants.java Removes obsolete mapper constants.
backend/src/main/java/ca/bc/gov/nrs/ilcr/mappers/codes/DistrictMapper.java Removes obsolete district mapper.
backend/src/main/java/ca/bc/gov/nrs/ilcr/mappers/AbstractSingleMapper.java Removes obsolete mapper abstraction.
backend/src/main/java/ca/bc/gov/nrs/ilcr/IlcrBackendApplication.java Adds new Spring Boot application entrypoint.
backend/src/main/java/ca/bc/gov/nrs/ilcr/HealthCheck.java Adds lightweight Java-based container healthcheck for readiness endpoint.
backend/src/main/java/ca/bc/gov/nrs/ilcr/exception/UserNotFoundException.java Removes obsolete exception type.
backend/src/main/java/ca/bc/gov/nrs/ilcr/exception/BusinessException.java Adds base business exception carrying status + legacy message key.
backend/src/main/java/ca/bc/gov/nrs/ilcr/entity/codes/OrgUnitEntity.java Removes obsolete JPA entity.
backend/src/main/java/ca/bc/gov/nrs/ilcr/dto/base/Role.java Updates role set to ILCR roles (ADMIN/SUBMITTER) for new permission model.
backend/src/main/java/ca/bc/gov/nrs/ilcr/controller/CodesController.java Removes obsolete codes controller.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/ValidationConfiguration.java Wires MessageSource into Bean Validation for legacy key interpolation.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/ValidatingDataSource.java Adds startup datasource validation wrapper.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/OracleHealthIndicator.java Adds health indicator that validates Oracle connectivity when enabled.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/IlcrMetricConfiguration.java Removes obsolete Micrometer configuration.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/IlcrConfiguration.java Removes obsolete configuration properties class.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/GracefulShutdownConfiguration.java Removes obsolete JPA shutdown listener.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/GlobalConfiguration.java Removes obsolete global config and native reflection hints.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/FeatureFlagsConfiguration.java Renames metric prefix from hrs→ilcr.
backend/src/main/java/ca/bc/gov/nrs/ilcr/configuration/DataSourceConfiguration.java Adds conditional Oracle datasource + JdbcClient + transaction manager wiring.
backend/src/main/java/ca/bc/gov/nrs/ilcr/BackendApplication.java Removes old application entrypoint.
backend/README.md Removes legacy backend README content.
backend/Dockerfile Switches to jar build + distroless runtime + Java-based healthcheck.
backend/config/application-local.yml Removes local config file under backend/config.
backend/.mvn/wrapper/maven-wrapper.properties Removes Maven wrapper properties.
backend/.dockerignore Replaces large generated ignore list with curated exclusions.
.github/workflows/scheduled.yml Gates scheduled jobs behind repository variables and updates target domain.
.github/workflows/reusable-tests.yml Updates integration tests to target springboot suite and domain vars.
.github/workflows/reusable-tests-be.yml Removes obsolete backend reusable test workflow.
.github/workflows/reusable-deploy.yml Removes DB secret requirements and database deploy stage.
.github/workflows/pr-validate.yml Updates PR validation links for zone mapping and Gold domain defaults.
.github/workflows/pr-open.yml Gates PR env build/deploy/test behind deploy flag and zone mapping.
.github/workflows/pr-close.yml Updates cleanup to target zone mapping and new package set.
.github/workflows/merge.yml Gates deploy/test/promote steps behind deploy flag; drops migrations package.
.github/ISSUE_TEMPLATE/ux.yml Removes trailing whitespace in markdown text blocks.
.github/ISSUE_TEMPLATE/security.yml Removes trailing whitespace in markdown text blocks.
.github/ISSUE_TEMPLATE/question.yml Removes trailing whitespace in markdown text blocks.
.github/ISSUE_TEMPLATE/feature.yml Removes trailing whitespace in markdown text blocks and aligns formatting.
.github/ISSUE_TEMPLATE/epic.yml Removes trailing whitespace in markdown text blocks and aligns formatting.
.github/ISSUE_TEMPLATE/decision.yml Removes trailing whitespace in markdown text blocks.
.github/ISSUE_TEMPLATE/bugfix.yml Removes trailing whitespace in markdown text blocks and aligns formatting.
.env.example Adds sanitized local environment template for Spring Boot scaffold.
Files not reviewed (1)
  • frontend/package-lock.json: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/pr-validate.yml
Comment thread frontend/src/context/millYear/millYearDefaults.ts Outdated
Comment thread backend/src/test/java/ca/bc/gov/nrs/ilcr/support/AbstractOracleIT.java Outdated
gpascucci and others added 4 commits July 20, 2026 10:59
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Comment thread .github/workflows/analysis.yml Outdated
Comment thread backend/src/main/java/ca/bc/gov/nrs/ilcr/schedule1/Schedule1Controller.java Outdated
Comment thread backend/src/main/java/ca/bc/gov/nrs/ilcr/security/MockPrincipalFilter.java Outdated
Comment thread backend/src/main/java/ca/bc/gov/nrs/ilcr/web/RootController.java Outdated
Comment thread backend/src/main/java/ca/bc/gov/nrs/ilcr/HealthCheck.java Outdated
@github-project-automation github-project-automation Bot moved this from Active to Waiting in DevOps (NR) Jul 20, 2026
gpascucci and others added 16 commits July 20, 2026 14:27
Show the mock identity's display name in the selector, with roles as a
secondary hint, instead of only the joined role strings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Other Costs button only renders for an editable (already-saved)
schedule, so the `if (!data)` window.alert branch was dead. Remove it
and the now-unused ALT_SAVE_BEFORE_OTHER_COSTS constant; Story 2.5 wires
the sub-page navigation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
actions/stale closes stale PRs and issues, not branches. Rename the job
label to match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Align the integration-test health wait with the OpenShift readiness
probe (/api/health/readiness) instead of the aggregate /api/health, so
the gate matches what the deploy actually waits on.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- merge.yml: remove ENABLE_OPENSHIFT_DEPLOY gates so main deploys run and fail
  visibly (per @DerekRoberts), and add a lightweight "Merge Results" gate
  mirroring analysis.yml (per @paulushcgcj).
- Delete dead JwtRoleChecker + JwtRoleAuthorizationManagerFactory scaffolding
  (not on the live auth path; SchedulePermissions + @PreAuthorize is the live
  path — will be re-introduced with the FAM auth story).
- Remove the orphan migrations/ directory (Node-era leftover, only a stray
  .dockerignore remained).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e (no 404)

Product decision (reverses the earlier "keep the 404" note): a valid, active
mill/year with no saved Schedule 1 (Draft track, no category-"1" summary) now
returns 200 with an empty, all-null, editable:false document (the canonical
line items present) instead of 404 — matching legacy's greyed locked form.
GET uses MillContextService.validateMillYearActive (unknown mill→404, closed→409,
no summary required); PUT/DELETE still require an existing summary. Frontend
renders the editable:false state as disabled/greyed Carbon inputs (uniform with
non-Draft-with-data). Verified: 16 frontend + backend unit green, 28 Schedule 1
ITs green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@paulushcgcj paulushcgcj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work reviewing my reviews. Let's get this show on the road.

Image

@SScholefield
SScholefield merged commit 5da0ae9 into main Jul 21, 2026
20 checks passed
@SScholefield
SScholefield deleted the feature/react-springboot-template branch July 21, 2026 16:10
@github-project-automation github-project-automation Bot moved this from Waiting to Done in DevOps (NR) Jul 21, 2026
gpascucci added a commit that referenced this pull request Aug 5, 2026
…k on the tombstone

Addresses PR #227 review feedback:
- Footer BC Gov links use HTTPS (removes the http->https downgrade window). [paulushcgcj]
- ScheduleTombstone's working-context block is a labelled <section aria-label="Working context">
  region again — schedules 2/4/8 use the tombstone (not PageTitle+ContextBanner), so the landmark
  now lives there; the e2e locator switches to getByRole('region', { name: 'Working context' }).
  [SScholefield #3]

Review points #1 (non-migrated pages lose the strip) and #2 (ContextBanner dead code) are resolved by
merging main: #222 renders ContextBanner inside PageTitle, so the non-tombstone pages keep the
working-context strip and ContextBanner is live again.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gpascucci added a commit that referenced this pull request Aug 6, 2026
…Save semantics, tests

Reviewer-raised edge cases (paulushcgcj + SScholefield):

- #2 Surface option-load failures on the samples + rates levels, not just the
  page list — the rates table resolves cost-item names client-side from /options,
  so a silent failure otherwise renders raw IDs with no explanation.
- #3 RatesPage Save now commits a typed-but-not-yet-Added draft (guarded path)
  instead of silently discarding it; dirty checks include itemDescription so a
  description-only draft still confirms on Cancel.
- #4 Guard the in-panel "TtT Samples" button — editing a page then drilling into
  samples now confirms before dropping unsaved page edits.
- #5 Schedule8ServiceTest: assert getOptions() partitions category-8 cost items
  into additions ('1'/'2') vs deductions ('3'/'4').
- #6 Schedule8OptionsAuthorizationIT: VIEW_SCHEDULE authorization coverage for
  GET /options (parity with the other Schedule 8 endpoints).
- #7 Re-add the Schedule 4 in-app-back test with assertions updated for the
  intended replace:true behavior (browser Back no longer re-opens the sub-page).
- Mutual-exclusion (index.tsx:527): already cleared on switch + nulled in
  buildRequest; add a regression test that switching a saved TFL page to a TSA
  sends tflNumber:null. Stub Element.scrollIntoView (jsdom gap) so a pre-selected
  dropdown can open in tests.

Not changed — #1 (samples header): legacy schedule8Detail.xhtml:72 genuinely
reads "Tree To Truck Pages" (and "Action", singular); kept verbatim for parity,
aligned the action header to singular.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@SScholefield SScholefield mentioned this pull request Aug 6, 2026
13 tasks
gpascucci added a commit that referenced this pull request Aug 7, 2026
The numeric grid inputs displayed `withCommas(raw)` over raw state, so any regrouping
keystroke made React reassign input.value and the caret jumped to the end — worst on
a bare comma-delete (raw unchanged → re-render bails → controlled-value revert snaps
the caret to the end). Extract a shared core/CommaNumberInput that records the caret by
digit count, reports the raw value, and re-places the caret after that same digit via
requestAnimationFrame (runs whether or not a re-render happened). Swap the Schedule 2
category grid, Schedule 4 category grid, and Schedule 4 sub-page (add-row + editable
rows) onto it. Adds a unit test proving the caret stays put on regroup.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

6 participants