Skip to content

Update Node.js from v18 to v24#4

Open
trillium wants to merge 1176 commits intodevelopmentfrom
update-node-to-24
Open

Update Node.js from v18 to v24#4
trillium wants to merge 1176 commits intodevelopmentfrom
update-node-to-24

Conversation

@trillium
Copy link
Copy Markdown
Owner

Summary

  • Updates .nvmrc from Node 18 to Node 24
  • Node 18 is end-of-life and no longer receiving security updates

Fixes hackforla#2128

Test plan

  • Verify CI passes with Node 24
  • Run nvm use and confirm local dev server starts

dannyprikaz and others added 30 commits August 4, 2025 22:22
ci: Add ...globals.jest to eslint.config.mjs
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.1 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](raszi/node-tmp@v0.2.1...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
HandleAuth.jsx - Replaced HTML with MUI and fixed CSS - hackforla#1640
- Add scripts to /backend/package.json
- Requires flags
    -- accepts flag --mock
    -- accepts flags for each db row eg
        -- cloneOrSyncCollections: --projects, --recurring-events
        -- clearDevCollections: --projects, --recurring-events, events, checkins
trillium and others added 29 commits February 2, 2026 19:38
get rid of redundant field in models + user tests
…rring-checkin-bulk

Fix: prevent cron worker OOM by batching recurring check-in and creation operations
Fixed two syntax errors in the frontend production Dockerfile that were masked by earlier build failures:

1. Line 6: COPY command syntax error
   - Changed: COPY --chown=node:node package.json package.json ./
   - To: COPY --chown=node:node package*.json ./
   - The original attempted to copy package.json twice (invalid syntax)
   - Now uses glob pattern to properly copy package.json and package-lock.json if present
   - Matches the pattern used in backend/Dockerfile.prod:5

2. Lines 15-16: Missing equals signs in ARG and ENV directives
   - Changed: ARG CUSTOM_REQUEST_HEADER nAb3kY-S%qE#4!d
   - To: ARG CUSTOM_REQUEST_HEADER=nAb3kY-S%qE#4!d
   - Changed: ENV REACT_APP_CUSTOM_REQUEST_HEADER $CUSTOM_REQUEST_HEADER
   - To: ENV REACT_APP_CUSTOM_REQUEST_HEADER=$CUSTOM_REQUEST_HEADER
   - Ensures proper Dockerfile syntax compliance

These errors were present in the original file but were not caught because the build was failing earlier due to code issues (duplicate object keys and missing exports) that have been fixed in PR hackforla#2086.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
…via authcontext. AuthZ code builds on shared/roles and shared/authorizationUtils for a single source of truth for roles/accessLevels
…dmin(), hasMinimumRole(), or hasAnyRole() to showcase flexibility/options, also and adding comments to code
…s also been refactored for easier readability. Fixing expiresAt bug by adding expiresAt to json response to verify-signin. Also commenting out auth restrictions at PM level for no impact to current app.
Remove dependency on ProjectForm's StyledButton component and use
MUI Button directly, fixing incorrect sx/size prop usage.
…project-mui

refactor(edit-project): Standardize MUI & Fix Modal Ripples (hackforla#1703)
…ring

Merge vrms/development into refactor-permission-management, preserving
the useAuth hook pattern (isAdmin, isSuperAdmin, hasAnyRole, hasMinimumRole)
and ROLES constants throughout. Keep development's active cron workers,
async/await server init, and new UI features (EditProjectMembers,
TitledBoxIFrame). Accept development's yarn.lock.
- Update mongodb-memory-server from 6.9.0 to 8.2.3
- Update Jest from 26.4.0 to 29.7.0 (required for node: protocol)
- Update setup-test.js for mongodb-memory-server v8 API changes
- Fix all test files to use async/await instead of async/done pattern
- Add beforeEach cleanup to user.test.js for test isolation
- Fix ESLint config to prevent parent directory conflicts

Resolves hackforla#751
…tle caching, and commit tracking

- Python skill (verify_stale_issue.py) with issue type detection
- Bash implementations for single and batch issue verification
- Label-based scope detection (dev vs non-dev roles)
- Title consistency caching system
- Git commit history analysis for PR tracking
- Decision tree logic for issue verdict categorization
…gement

fix: rename TOKEN_SECRET to JWT_SECRET across backend, small fixes
Node 18 is end-of-life. Update .nvmrc to designate Node 24.

Fixes hackforla#2128
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 21, 2026

Important

Review skipped

Too many files!

This PR contains 255 files, which is 105 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1d68a4b7-84bd-4cb7-9051-3617da15f8aa

📥 Commits

Reviewing files that changed from the base of the PR and between da3898b and 8176b0f.

⛔ Files ignored due to path filters (22)
  • backend/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
  • client/public/bg-image-pier.jpg is excluded by !**/*.jpg
  • client/public/bg-image-skyline.jpg is excluded by !**/*.jpg
  • client/public/bg-image-sunset.jpg is excluded by !**/*.jpg
  • client/src/components/__snapshots__/Leaderboard.test.jsx.snap is excluded by !**/*.snap
  • client/src/fonts/SourceCodePro-Bold.otf is excluded by !**/*.otf
  • client/src/fonts/SourceCodePro-Medium.otf is excluded by !**/*.otf
  • client/src/fonts/SourceCodePro-Semibold.otf is excluded by !**/*.otf
  • client/src/fonts/open-sans/opensans-bold.ttf is excluded by !**/*.ttf
  • client/src/fonts/open-sans/opensans-bold.woff is excluded by !**/*.woff
  • client/src/fonts/open-sans/opensans-bold.woff2 is excluded by !**/*.woff2
  • client/src/fonts/open-sans/opensans-regular.ttf is excluded by !**/*.ttf
  • client/src/fonts/open-sans/opensans-regular.woff is excluded by !**/*.woff
  • client/src/fonts/open-sans/opensans-regular.woff2 is excluded by !**/*.woff2
  • client/src/fonts/open-sans/opensans-semibold.ttf is excluded by !**/*.ttf
  • client/src/fonts/open-sans/opensans-semibold.woff is excluded by !**/*.woff
  • client/src/fonts/open-sans/opensans-semibold.woff2 is excluded by !**/*.woff2
  • client/src/svg/Icon_Edit.svg is excluded by !**/*.svg
  • client/src/svg/InfoIcon.svg is excluded by !**/*.svg
  • client/src/svg/hflalogo_white.png is excluded by !**/*.png
  • client/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (255)
  • .github/ISSUE_TEMPLATE/add-edit-team-meeting-time.md
  • .github/ISSUE_TEMPLATE/add-remove-pm-admin-access.md
  • .github/ISSUE_TEMPLATE/address-warnings-for-rule-.md
  • .github/ISSUE_TEMPLATE/blank-issue.md
  • .github/ISSUE_TEMPLATE/bug-report.yml
  • .github/workflows/New-issue-create-card.yml
  • .github/workflows/all-PRs.yaml
  • .github/workflows/all-merges.yaml
  • .github/workflows/aws-backend-deploy.yml
  • .github/workflows/aws-frontend-deploy.mdx
  • .github/workflows/aws-frontend-deploy.yml
  • .github/workflows/pr-instructions.yml
  • .github/workflows/waiting-to-merge.yaml
  • .github/workflows/wr-pr-instructions.yml
  • .gitignore
  • .husky/.gitignore
  • .husky/pre-commit
  • .lintstagedrc.json
  • .nvmrc
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • README.md
  • VRMS
  • ai/verify-stale-issues/verify-stale-issue.sh
  • ai/verify-stale-issues/verify-stale-issues-batch.sh
  • ai/verify-stale-issues/verify_stale_issue.py
  • backend/.eslintrc.json
  • backend/.prettierrc
  • backend/Dockerfile.api
  • backend/Dockerfile.dev
  • backend/Dockerfile.prod
  • backend/app.js
  • backend/config/auth.config.js
  • backend/controllers/email.controller.test.js
  • backend/controllers/event.controller.js
  • backend/controllers/event.controller.test.js
  • backend/controllers/healthCheck.controller.js
  • backend/controllers/project.controller.js
  • backend/controllers/project.controller.test.js
  • backend/controllers/user.controller.js
  • backend/controllers/user.controller.test.js
  • backend/globalConfig.json
  • backend/jest-mongodb-config.js
  • backend/jest.config.js
  • backend/middleware/auth.middleware.js
  • backend/middleware/index.js
  • backend/middleware/token.middleware.js
  • backend/middleware/user.middleware.js
  • backend/models/checkin.test.js
  • backend/models/event.test.js
  • backend/models/index.js
  • backend/models/project.model.js
  • backend/models/project.test.js
  • backend/models/projectTeamMemer.test.js
  • backend/models/question.test.js
  • backend/models/recurringEvent.test.js
  • backend/models/refreshToken.model.js
  • backend/models/user.model.js
  • backend/models/user.model.test.js
  • backend/models/user.test.js
  • backend/package.json
  • backend/routers/auth.router.js
  • backend/routers/auth.router.test.js
  • backend/routers/checkIns.router.test.js
  • backend/routers/checkUser.router.test.js
  • backend/routers/events.router.js
  • backend/routers/events.router.test.js
  • backend/routers/grantpermission.router.js
  • backend/routers/healthCheck.router.test.js
  • backend/routers/projectTeamMembers.router.js
  • backend/routers/projectTeamMembers.router.test.js
  • backend/routers/projects.router.js
  • backend/routers/projects.router.test.js
  • backend/routers/questions.router.test.js
  • backend/routers/recurringEvents.router.js
  • backend/routers/recurringEvents.router.test.js
  • backend/routers/users.router.js
  • backend/routers/users.router.test.js
  • backend/scripts/.gitignore
  • backend/scripts/clearDevCollections.js
  • backend/scripts/cloneOrSyncCollections.js
  • backend/scripts/deleteProject/README.md
  • backend/scripts/deleteProject/config.js
  • backend/scripts/deleteProject/deleters.js
  • backend/scripts/deleteProject/displays.js
  • backend/scripts/deleteProject/finders.js
  • backend/scripts/deleteProject/index.js
  • backend/scripts/deleteProject/utils.js
  • backend/scripts/deleteProjectAndAssociatedRecords.js
  • backend/scripts/python/env/Duplicate Removal.ipynb
  • backend/scripts/python/env/Populate Projects.ipynb
  • backend/scripts/python/env/README.md
  • backend/scripts/python/env/requirements.txt
  • backend/server.js
  • backend/setup-test.js
  • backend/test/old-tests/auth.router.test.js
  • backend/test/old-tests/events.router.test.js
  • backend/test/old-tests/projects.router.test.js
  • backend/test/old-tests/users.router.test.js
  • backend/test/user.integration.test.js
  • backend/validators/user.api.validator.js
  • backend/workers/closeCheckins.js
  • backend/workers/createRecurringEvents.js
  • backend/workers/createRecurringEvents.test.js
  • backend/workers/lib/generateEventData.js
  • backend/workers/openCheckins.js
  • backend/workers/slackbot.js
  • backend/workers/tokenCleanup.js
  • biome.json
  • client/.prettierrc.json
  • client/Dockerfile.client
  • client/Dockerfile.dev
  • client/Dockerfile.prod
  • client/index.html
  • client/package.json
  • client/postcss.config.js
  • client/public/bg-image-pier.webp
  • client/public/bg-image-skyline.webp
  • client/public/bg-image-sunset.webp
  • client/src/App.js
  • client/src/App.jsx
  • client/src/api/EventsApiService.js
  • client/src/api/ProjectApiService.js
  • client/src/api/RecurringEventsApiService.js
  • client/src/api/UserApiService.js
  • client/src/common/tabs/index.jsx
  • client/src/common/tabs/tab.jsx
  • client/src/components/ChangesModal.jsx
  • client/src/components/DashboardUsers.jsx
  • client/src/components/ErrorContainer.jsx
  • client/src/components/Footer.js
  • client/src/components/Footer.jsx
  • client/src/components/Form.jsx
  • client/src/components/Header.jsx
  • client/src/components/Leaderboard.jsx
  • client/src/components/Leaderboard.test.js
  • client/src/components/Leaderboard.test.jsx
  • client/src/components/Navbar.jsx
  • client/src/components/ProjectForm.js
  • client/src/components/ProjectForm.jsx
  • client/src/components/ReadyEvents.jsx
  • client/src/components/admin/dashboard/index.jsx
  • client/src/components/admin/donutChart.jsx
  • client/src/components/admin/donutChartContainer.jsx
  • client/src/components/admin/donutChartLoading.js
  • client/src/components/admin/donutChartLoading.jsx
  • client/src/components/admin/eventOverview.jsx
  • client/src/components/admin/reports/index.jsx
  • client/src/components/auth/Auth.jsx
  • client/src/components/auth/HandleAuth.js
  • client/src/components/auth/HandleAuth.jsx
  • client/src/components/dashboard/AddTeamMember.jsx
  • client/src/components/dashboard/AttendeeTable.jsx
  • client/src/components/dashboard/AttendeeTableRow.jsx
  • client/src/components/dashboard/DashboardButton.jsx
  • client/src/components/dashboard/ProjectInfo.jsx
  • client/src/components/dashboard/RosterTable.jsx
  • client/src/components/dashboard/RosterTableRow.jsx
  • client/src/components/data.js
  • client/src/components/manageProjects/addProject.jsx
  • client/src/components/manageProjects/createNewEvent.jsx
  • client/src/components/manageProjects/editMeetingTimes.js
  • client/src/components/manageProjects/editMeetingTimes.jsx
  • client/src/components/manageProjects/editPMs/buttonGroup.jsx
  • client/src/components/manageProjects/editPMs/editProjectMembers.jsx
  • client/src/components/manageProjects/editPMs/projectMembersList.jsx
  • client/src/components/manageProjects/editProject.js
  • client/src/components/manageProjects/editProject.jsx
  • client/src/components/manageProjects/editableField.jsx
  • client/src/components/manageProjects/editableMeeting.jsx
  • client/src/components/manageProjects/eventForm.js
  • client/src/components/manageProjects/eventForm.jsx
  • client/src/components/manageProjects/selectProject.jsx
  • client/src/components/manageProjects/utilities/tests/addDurationToTime.test.js
  • client/src/components/manageProjects/utilities/validateEditableField.js
  • client/src/components/manageProjects/utilities/validateEventForm.js
  • client/src/components/parts/boxes/TitledBox.jsx
  • client/src/components/parts/boxes/TitledBoxIFrame.jsx
  • client/src/components/parts/form/ValidatedTextField.jsx
  • client/src/components/presentational/CheckInButtons.js
  • client/src/components/presentational/CheckInButtons.jsx
  • client/src/components/presentational/CreateNewProfileButton.jsx
  • client/src/components/presentational/DashboardReport.jsx
  • client/src/components/presentational/newUserForm.js
  • client/src/components/presentational/newUserForm.jsx
  • client/src/components/presentational/profile/ProfileOption.jsx
  • client/src/components/presentational/profile/UserEvents.jsx
  • client/src/components/presentational/profile/UserTable.js
  • client/src/components/presentational/profile/UserTable.jsx
  • client/src/components/presentational/profile/UserTeams.jsx
  • client/src/components/presentational/projectDashboardContainer.jsx
  • client/src/components/presentational/returnUserForm.js
  • client/src/components/presentational/returnUserForm.jsx
  • client/src/components/presentational/upcomingEvent.js
  • client/src/components/presentational/upcomingEvent.jsx
  • client/src/components/user-admin/AddNewProject.jsx
  • client/src/components/user-admin/EditUsers.js
  • client/src/components/user-admin/EditUsers.jsx
  • client/src/components/user-admin/UserManagement.js
  • client/src/components/user-admin/UserManagement.jsx
  • client/src/components/user-admin/UserPermissionSearch.jsx
  • client/src/context/authContext.js
  • client/src/context/authContext.jsx
  • client/src/context/searchContext.jsx
  • client/src/context/snackbarContext.jsx
  • client/src/context/userContext.jsx
  • client/src/fonts/open-sans/LICENSE.txt
  • client/src/hooks/withAuth.jsx
  • client/src/index.jsx
  • client/src/index.scss
  • client/src/pages/CheckInForm.jsx
  • client/src/pages/EmailSent.jsx
  • client/src/pages/Event.jsx
  • client/src/pages/Events.js
  • client/src/pages/Events.jsx
  • client/src/pages/HealthCheck.jsx
  • client/src/pages/Home.js
  • client/src/pages/Home.jsx
  • client/src/pages/ManageProjects.jsx
  • client/src/pages/NewUser.js
  • client/src/pages/NewUser.jsx
  • client/src/pages/OnboardOffboardVisibility.jsx
  • client/src/pages/ProjectLeaderDashboard.jsx
  • client/src/pages/ProjectList.js
  • client/src/pages/ProjectList.jsx
  • client/src/pages/ReturningUser.js
  • client/src/pages/ReturningUser.jsx
  • client/src/pages/SecretPassword.jsx
  • client/src/pages/Success.jsx
  • client/src/pages/UserAdmin.jsx
  • client/src/pages/UserDashboard.jsx
  • client/src/pages/UserPermission.jsx
  • client/src/pages/UserProfile.js
  • client/src/pages/UserProfile.jsx
  • client/src/pages/UserWelcome.jsx
  • client/src/pages/Users.jsx
  • client/src/sass/AdminLogin.scss
  • client/src/sass/CheckIn.scss
  • client/src/sass/Events.scss
  • client/src/sass/Home.scss
  • client/src/sass/ManageProjects.scss
  • client/src/sass/ProjectLeaderDashboard.module.scss
  • client/src/sass/UserAdmin.scss
  • client/src/sass/Users.scss
  • client/src/tailwind.css
  • client/src/theme/index.js
  • client/src/utils/authUtils.js
  • client/src/utils/blacklist.js
  • client/src/utils/stringUtils.js
  • client/tailwind.config.js
  • client/vite.config.mjs
  • package.json
  • scripts/list-lint-files.mjs
  • shared/authorizationUtils.js
  • shared/roles.js

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch update-node-to-24

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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.

Update Node.js from v18 to v24