Skip to content

Lib updates#1035

Merged
Isti01 merged 2 commits into
stagingfrom
feature/lib-updates
May 26, 2026
Merged

Lib updates#1035
Isti01 merged 2 commits into
stagingfrom
feature/lib-updates

Conversation

@Isti01
Copy link
Copy Markdown
Collaborator

@Isti01 Isti01 commented May 26, 2026

Summary by CodeRabbit

  • New Features

    • Added reusable chart components with improved theming and visualization capabilities for data display.
  • Dependencies

    • Updated Firebase, React Router, TanStack Query, date-fns, and other core libraries to latest versions.
    • Updated backend build tools including Gradle plugins, OAuth, AWS S3, and monitoring libraries.
  • Style

    • Migrated UI icons across the application for improved consistency and visual coherence.
  • Chores

    • Updated Gradle and build tooling versions for enhanced stability.
    • Optimized build configuration to improve bundling efficiency.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 26, 2026

Warning

Review limit reached

@Isti01, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 50 minutes and 34 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: dafa7877-6113-4360-9e32-7c59cd2aa4e9

📥 Commits

Reviewing files that changed from the base of the PR and between 25e0849 and d23efa5.

⛔ Files ignored due to path filters (2)
  • backend/gradle/wrapper/gradle-wrapper.jar is excluded by !**/*.jar
  • frontend/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (18)
  • backend/build.gradle.kts
  • backend/gradle/wrapper/gradle-wrapper.properties
  • backend/gradlew
  • backend/gradlew.bat
  • frontend/.npmrc
  • frontend/package.json
  • frontend/public/firebase-messaging-sw.js
  • frontend/src/common-components/map/MapMarker.tsx
  • frontend/src/components/ui/chart.tsx
  • frontend/src/pages/events/eventList.page.tsx
  • frontend/src/pages/news/components/News.tsx
  • frontend/src/pages/news/components/NewsListItem.tsx
  • frontend/src/pages/profile/components/GroupLeaderContactList.tsx
  • frontend/src/pages/profile/components/ProfileQR.tsx
  • frontend/src/pages/qr-fight/components/LevelDataDisplay.tsx
  • frontend/src/pages/riddle/riddleHistory.page.tsx
  • frontend/src/util/views/socialPage.view.ts
  • frontend/vite.config.ts
📝 Walkthrough

Walkthrough

This PR modernizes the application's frontend and backend infrastructure through four independent changes: upgrading Gradle and backend dependencies, migrating the icon system from FontAwesome to lucide-react, introducing a new Recharts-based chart infrastructure, and updating frontend dependencies and build configuration.

Changes

Backend Build Tools and Dependencies

Layer / File(s) Summary
Gradle tooling and dependency version updates
backend/build.gradle.kts, backend/gradle/wrapper/gradle-wrapper.properties, backend/gradlew, backend/gradlew.bat
Gradle plugins (OWASP, SonarQube) and key dependencies (Google Auth OAuth2, Micrometer, Kotlin coroutines, AWS S3 SDK) are updated to newer versions. Gradle wrapper is upgraded to 9.5.1 with added retry/backoff networking settings. Gradle start scripts improve error handling and exit behavior.

Frontend Icon System Migration: FontAwesome to lucide-react

Layer / File(s) Summary
Component icon library migration and type cleanup
frontend/src/common-components/map/MapMarker.tsx, frontend/src/pages/events/eventList.page.tsx, frontend/src/pages/news/components/News.tsx, frontend/src/pages/news/components/NewsListItem.tsx, frontend/src/pages/profile/components/GroupLeaderContactList.tsx, frontend/src/pages/profile/components/ProfileQR.tsx, frontend/src/pages/riddle/riddleHistory.page.tsx, frontend/src/util/views/socialPage.view.ts
Eight components replace FontAwesome icons with lucide-react equivalents: marker shapes, navigation arrows, alerts, profile icons, and calendar/QR code icons. The SocialPageView type definition that depended on react-icons IconType is removed.

Recharts-based Chart Infrastructure

Layer / File(s) Summary
Chart component library with theming and tooltip/legend support
frontend/src/components/ui/chart.tsx
New chart module introduces ChartConfig type, ChartContext/useChart hook, and ChartContainer wrapper providing theming via CSS variables. ChartTooltipContent and ChartLegendContent wrap Recharts primitives with metadata extraction and dynamic indicator/icon rendering. Utility function getPayloadConfigFromPayload resolves series metadata from Recharts payloads.
LevelDataDisplay chart integration
frontend/src/pages/qr-fight/components/LevelDataDisplay.tsx
Refactored to render top 5 team scores using the new ChartContainer and Recharts BarChart instead of the previous Nivo ResponsiveBar. A local chartConfig object configures the bar series using the new infrastructure.

Frontend Dependencies and Build Configuration

Layer / File(s) Summary
npm dependencies and package manager configuration
frontend/package.json, frontend/.npmrc
Firebase packages and numerous runtime/devDependencies (React, React Router, react-hook-form, React Query, recharts, date-fns, lucide-react, Tailwind, TypeScript ESLint, Vite tooling) are bumped to newer versions. npm packageManager version increases from 11.2.0+ to 11.11.0+. .npmrc adds min-release-age=1 configuration.
Build output configuration
frontend/vite.config.ts
Vite build configuration changes from inlineDynamicImports to codeSplitting: false for bundle output control.

🎯 3 (Moderate) | ⏱️ ~25 minutes


  • Suggested reviewers:
    • SzBeni2003

🐰 Icons swap'd from Awesome to Lucide so bright,
Charts now render with Recharts' delight,
Dependencies dance to a newer version's song,
Build tools upgraded, nothing goes wrong! 📊✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Lib updates' is vague and generic, failing to convey meaningful information about the substantial changeset that includes icon library migration, build configuration updates, and dependency upgrades across multiple files. Consider a more descriptive title that captures the main change, such as 'Migrate from react-icons to lucide-react and update dependencies' or 'Update frontend icon library and backend/frontend dependencies'.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/lib-updates

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.

@vercel
Copy link
Copy Markdown

vercel Bot commented May 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmsch-cst Ready Ready Preview, Comment May 26, 2026 9:03pm
cmsch-felezobal Ready Ready Preview, Comment May 26, 2026 9:03pm
cmsch-golyakorte Ready Ready Preview, Comment May 26, 2026 9:03pm
cmsch-skktv Ready Ready Preview, Comment May 26, 2026 9:03pm
cmsch-vitorlaskupa Ready Ready Preview, Comment May 26, 2026 9:03pm

Request Review

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (1)
frontend/src/components/ui/chart.tsx (1)

168-170: 💤 Low value

Provide a fallback for the React key.

item.dataKey can be undefined in some Recharts payload scenarios. Consider using index as a fallback to ensure stable keys.

♻️ Proposed fix
-                <div
-                  key={item.dataKey}
+                <div
+                  key={item.dataKey ?? index}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/ui/chart.tsx` around lines 168 - 170, The React list
key uses item.dataKey which can be undefined; update the component render (the
map where item and index are available) to use a stable fallback such as index
when item.dataKey is falsy — e.g., replace key={item.dataKey} with
key={item.dataKey ?? index} or similar logic inside the map that renders the
<div> so the key is always defined; ensure you reference the same item variable
from the map callback and preserve existing uniqueness intent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@backend/build.gradle.kts`:
- Line 8: Align or justify the dependency-check plugin version: update the
org.owasp.dependencycheck plugin entry in backend/build.gradle.kts to the
published stable version (12.2.0) unless you have a specific reason to pin
12.2.2 and document that justification in the commit message; also verify the
other pinned BOM/dependency versions listed (org.sonarqube 7.3.0.8198,
com.google.auth 1.47.0, io.micrometer 1.16.5, kotlinx-coroutines-core 1.11.0,
software.amazon.awssdk:s3 2.44.12) are intended and consistent with the project
policy, and add a short comment noting that S3 SDK v2.44.12 is API-compatible
with existing backend code (S3StorageService.kt using S3Client.builder,
ListObjectsRequest, HeadObjectRequest, PutObjectRequest, GetObjectRequest,
DeleteObjectRequest) so no code changes are required.

In `@backend/gradle/wrapper/gradle-wrapper.properties`:
- Around line 5-6: The gradle-wrapper.properties currently sets retries=0 which
disables all download retries and makes builds fragile; update the configuration
to a reasonable retry count (e.g., set retries to 2 or 3) and keep or increase
retryBackOffMs (e.g., 2000) so the Gradle wrapper will retry transient network
failures; modify the properties for keys "retries" and "retryBackOffMs"
accordingly to improve resilience.

In `@frontend/package.json`:
- Line 117: The package.json "packageManager" field currently uses an invalid
descriptor "npm@11.11.0+"; update the packageManager value to a valid Corepack
format by either removing the trailing plus to "npm@11.11.0" or replacing it
with a full hash form "npm@11.11.0+<algo>.<hash>" (e.g., +sha512.<hash>),
ensuring the "packageManager" field contains an exact version or
exact-version+hash as required.

In `@frontend/src/common-components/map/MapMarker.tsx`:
- Line 4: The import list in MapMarker.tsx is not alphabetically ordered causing
the linter failure; reorder the named imports from lucide-react so they are
sorted alphabetically (Car, Crosshair, Home, Info, MapPin, RadioTower, Tent,
User) in the import statement that currently lists Home, Info, Car, Crosshair,
Tent, RadioTower, MapPin, User.

In `@frontend/src/components/ui/chart.tsx`:
- Around line 205-207: The tooltip condition currently uses a truthy check
`item.value &&` which hides legitimate zero values; update the render guard in
the chart tooltip to check for null/undefined instead (e.g., `item.value !=
null` or `item.value !== undefined && item.value !== null`) so that 0 is
rendered; locate the conditional around `item.value` in the component (the span
that formats with `item.value.toLocaleString()`) and replace the truthy check
with a null/undefined check to allow zero to display.

---

Nitpick comments:
In `@frontend/src/components/ui/chart.tsx`:
- Around line 168-170: The React list key uses item.dataKey which can be
undefined; update the component render (the map where item and index are
available) to use a stable fallback such as index when item.dataKey is falsy —
e.g., replace key={item.dataKey} with key={item.dataKey ?? index} or similar
logic inside the map that renders the <div> so the key is always defined; ensure
you reference the same item variable from the map callback and preserve existing
uniqueness intent.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e93b544b-08d2-4b7a-b937-d0a0cbbc65b1

📥 Commits

Reviewing files that changed from the base of the PR and between d94eac3 and 25e0849.

⛔ Files ignored due to path filters (2)
  • backend/gradle/wrapper/gradle-wrapper.jar is excluded by !**/*.jar
  • frontend/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (17)
  • backend/build.gradle.kts
  • backend/gradle/wrapper/gradle-wrapper.properties
  • backend/gradlew
  • backend/gradlew.bat
  • frontend/.npmrc
  • frontend/package.json
  • frontend/src/common-components/map/MapMarker.tsx
  • frontend/src/components/ui/chart.tsx
  • frontend/src/pages/events/eventList.page.tsx
  • frontend/src/pages/news/components/News.tsx
  • frontend/src/pages/news/components/NewsListItem.tsx
  • frontend/src/pages/profile/components/GroupLeaderContactList.tsx
  • frontend/src/pages/profile/components/ProfileQR.tsx
  • frontend/src/pages/qr-fight/components/LevelDataDisplay.tsx
  • frontend/src/pages/riddle/riddleHistory.page.tsx
  • frontend/src/util/views/socialPage.view.ts
  • frontend/vite.config.ts
💤 Files with no reviewable changes (2)
  • frontend/src/util/views/socialPage.view.ts
  • frontend/src/pages/profile/components/GroupLeaderContactList.tsx

Comment thread backend/build.gradle.kts
Comment on lines +5 to +6
retries=0
retryBackOffMs=500
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Reconsider disabling network retries entirely.

Setting retries=0 disables all retry attempts when downloading the Gradle distribution. This makes the build fragile and will cause immediate failures on temporary network issues (common in CI/CD environments or on unreliable networks).

The retryBackOffMs=500 setting becomes meaningless with zero retries.

Consider enabling a reasonable retry count to improve build resilience:

🔄 Recommended configuration
-retries=0
-retryBackOffMs=500
+retries=3
+retryBackOffMs=1000
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
retries=0
retryBackOffMs=500
retries=3
retryBackOffMs=1000
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@backend/gradle/wrapper/gradle-wrapper.properties` around lines 5 - 6, The
gradle-wrapper.properties currently sets retries=0 which disables all download
retries and makes builds fragile; update the configuration to a reasonable retry
count (e.g., set retries to 2 or 3) and keep or increase retryBackOffMs (e.g.,
2000) so the Gradle wrapper will retry transient network failures; modify the
properties for keys "retries" and "retryBackOffMs" accordingly to improve
resilience.

Comment thread frontend/package.json
]
},
"packageManager": "npm@11.2.0+"
"packageManager": "npm@11.11.0+"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

pm=$(jq -r '.packageManager // empty' frontend/package.json)
echo "packageManager=$pm"

# Corepack descriptor: <name>@<x.y.z> with optional +sha... suffix
if echo "$pm" | grep -Eq '^(npm|pnpm|yarn)@[0-9]+\.[0-9]+\.[0-9]+(\+sha[0-9]+\.[a-f0-9]+)?$'; then
  echo "Descriptor format looks valid."
else
  echo "Invalid Corepack packageManager descriptor format."
  exit 1
fi

Repository: kir-dev/cmsch

Length of output: 136


🏁 Script executed:

#!/bin/bash
set -euo pipefail
nl -ba frontend/package.json | sed -n '105,130p'

Repository: kir-dev/cmsch

Length of output: 100


🌐 Web query:

Corepack packageManager descriptor format "name@version+..." exact syntax sha512 integrity expected format npm@11.11.0+

💡 Result:

The Corepack packageManager descriptor in package.json uses a specific format to define which package manager and version a project should use, optionally including a cryptographic hash for integrity validation [1]. The standard syntax is: name@version[+hash] [1] Where: - name: The package manager name (supported values: npm, yarn, pnpm) [1]. - version: The specific semver version (e.g., 11.11.0) [1]. - +hash (optional): A string containing the hash algorithm and the actual hash value, separated by a period (e.g., +sha512.abcdef...) [1][2]. For your example, a valid descriptor format would be: "npm@11.11.0+sha512.<actual_hash_value>" The hash is not strictly required but is strongly recommended as a security best practice [1][3]. Corepack supports various hash algorithms (e.g., sha224, sha256, sha512) [1][2][4]. If you do not know the hash for a specific version, you can sometimes omit it, or use a tool-assisted workflow like corepack use @ to let Corepack automatically update the field in your package.json with the correct format and hash [1][5][2]. Manual entry is possible but requires providing the correct hash associated with the package manager's released tarball [1][6].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
grep -n '"packageManager"' frontend/package.json

Repository: kir-dev/cmsch

Length of output: 96


Fix Corepack packageManager descriptor in frontend/package.json.

frontend/package.json currently has "packageManager": "npm@11.11.0+", but Corepack expects either npm@<exact-version> or npm@<exact-version>+<hash-algorithm>.<hash> (e.g., +sha512....). The trailing + with no hash is an invalid descriptor and can break contributor installs that rely on this field.

✅ Suggested fix
-  "packageManager": "npm@11.11.0+"
+  "packageManager": "npm@11.11.0"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"packageManager": "npm@11.11.0+"
"packageManager": "npm@11.11.0"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/package.json` at line 117, The package.json "packageManager" field
currently uses an invalid descriptor "npm@11.11.0+"; update the packageManager
value to a valid Corepack format by either removing the trailing plus to
"npm@11.11.0" or replacing it with a full hash form "npm@11.11.0+<algo>.<hash>"
(e.g., +sha512.<hash>), ensuring the "packageManager" field contains an exact
version or exact-version+hash as required.

Comment thread frontend/src/common-components/map/MapMarker.tsx Outdated
Comment on lines +205 to +207
{item.value && (
<span className="font-mono font-medium tabular-nums text-foreground">{item.value.toLocaleString()}</span>
)}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Zero values will not be displayed in tooltips.

The truthy check item.value && evaluates to false when item.value === 0, hiding legitimate zero values from the tooltip.

🐛 Proposed fix
-                        {item.value && (
+                        {item.value != null && (
                           <span className="font-mono font-medium tabular-nums text-foreground">{item.value.toLocaleString()}</span>
                         )}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{item.value && (
<span className="font-mono font-medium tabular-nums text-foreground">{item.value.toLocaleString()}</span>
)}
{item.value != null && (
<span className="font-mono font-medium tabular-nums text-foreground">{item.value.toLocaleString()}</span>
)}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/ui/chart.tsx` around lines 205 - 207, The tooltip
condition currently uses a truthy check `item.value &&` which hides legitimate
zero values; update the render guard in the chart tooltip to check for
null/undefined instead (e.g., `item.value != null` or `item.value !== undefined
&& item.value !== null`) so that 0 is rendered; locate the conditional around
`item.value` in the component (the span that formats with
`item.value.toLocaleString()`) and replace the truthy check with a
null/undefined check to allow zero to display.

@Isti01 Isti01 merged commit 847d15b into staging May 26, 2026
14 of 15 checks passed
@Isti01 Isti01 deleted the feature/lib-updates branch May 26, 2026 21:08
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