Skip to content

feat(ui): community pages — Starboard and Levels as connected components - #955

Merged
LucasSantana-Dev merged 6 commits into
mainfrom
ui/community-2026-05-15
May 27, 2026
Merged

LucasSantana-Dev merged 6 commits into
mainfrom
ui/community-2026-05-15

Conversation

@LucasSantana-Dev

@LucasSantana-Dev LucasSantana-Dev commented May 23, 2026 •

Copy link
Copy Markdown
Owner

Summary

Rewrites Starboard and Levels pages as connected components that pull data from useGuildStore and the central api service — replacing the previous prop-based stubs.

  • Starboard: config management (channel ID, emoji, threshold, self-star toggle), top-starred entries list, enable/disable flow
  • Levels: leaderboard, XP config (enable/XP per message/cooldown/announce channel), level rewards (add/remove with role name lookup from RBAC)

Both components:

  • Fetch data in useEffect with a mounted cleanup flag to prevent setState on unmounted components
  • Show skeletons during load, "No server selected" when guild is absent
  • Handle API errors with typed ApiError + console.error + user-facing toast
  • Use selectedGuild?.id as the effect dependency

Input validation: emoji trim + ⭐ fallback, parseInt NaN guard on reward level, numeric inputs with min/max constraints.

All 646 frontend tests pass.

Summary by CodeRabbit

  • Style

    • Refined UI layouts and formatting across multiple admin and configuration pages for improved readability and consistency.
  • Chores

    • Updated architecture decision records for npm cache strategy optimization.
    • Reformatted test files to improve code organization and maintainability.

Review Change Stack

…ric layout and quote-card patterns

Levels: Anchor to Discord (role-color rows, native server vibe) + Linear (compact density).
- LeaderboardRowPrimary: emphasize rank 1 with p-6 gradient bg (panel→elevated), 3xl heading,
  level badge, XpBar (solid #ec4899), footer XP metrics
- LeaderboardRowCompact: ranks 2-10 in divided list (36px-style rows, monospace rank, hover state)
- Settings/Rewards panels tighter Label spacing (space-y-1.5)

Starboard: Anchor to Notion (warm-minimal, quote-card aesthetic).
- EntryCard: left border (w-1 bg-lucky-brand/60), content-first (p text-sm leading-relaxed),
  metadata footer (monospace star count, author, date)
- Single-column grid (grid-cols-1 gap-3)
- SkeletonCard updated to match quote structure

Tokens: locked to Lucky CSS vars (--color-lucky-brand #ec4899, --font-lucky-display Sora, etc.)
No em dashes, no gradients (except controlled bg-gradient-to-br), no default shadows,
no identical card grids, no glassmorphism.
Make leaderboard, rewards, settings, entries, and channels optional props with sensible defaults. Pages can now be rendered from App.tsx and tests without providing props, and they internally handle empty data gracefully. Fixes TS2739 prop-contract regression.
@vercel

vercel Bot commented May 23, 2026 •

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
lucky Ready Ready Preview, Comment May 27, 2026 1:56pm

Request Review

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@coderabbitai

coderabbitai Bot commented May 23, 2026 •

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request combines comprehensive formatting updates across test and frontend UI files with two substantial page refactors and one documentation enhancement. The main changes involve reformatting Jest tests and JSX attributes for improved readability, along with significant logic updates to the Levels and Starboard pages, GuildAutomation UI, and npm cache strategy documentation.

Changes

Frontend Pages & Services

Layer / File(s) Summary
Docker npm cache key strategy ADR
docs/decisions/2026-05-24-docker-npm-cache-key-strategy.md
Dockerfile parameterizes /root/.npm cache mount IDs using NPM_CACHE_KEY build-arg; workflow passes hashFiles('package-lock.json') to invalidate caches on lockfile changes.
Levels page refactor and state management
packages/frontend/src/pages/Levels.tsx
Page simplified by removing framer-motion animations, changing config form state from strings to numeric types, rewriting data-loading with mounted guard, introducing getRoleName helper, and updating reward CRUD handlers and UI composition.
Starboard page refactor
packages/frontend/src/pages/Starboard.tsx
Page rewritten to remove animated entry cards, consolidate config state (StarboardConfig | null), add mounted guard in useEffect, introduce formatDate helper, and adjust numeric threshold parsing and save/disable flows.
GuildAutomation UI enhancements
packages/frontend/src/pages/GuildAutomation.tsx
RunCard now renders status as Badge; PlanResultView and ApplyResultView display type/resource metadata; per-change status changed from StatusIcon to styled Badge; manifest editor state and error handling reformatted.
Frontend pages formatting updates
packages/frontend/src/pages/Admin.tsx, packages/frontend/src/pages/Config.tsx, packages/frontend/src/pages/LastFm.tsx, packages/frontend/src/pages/Spotify.tsx
JSX attributes, inline style objects, and function arguments reformatted onto multiple lines; setStatus updaters in LastFm and Spotify refactored to multiline conditionals; no logic changes.
Comprehensive test suite formatting updates
packages/bot/src/functions/..., packages/bot/src/handlers/..., packages/bot/src/services/..., packages/bot/src/utils/..., packages/frontend/src/pages/ServerSettings.test.tsx
All Jest test files reformatted: mock setups, parameterized it.each arrays, function calls, and expectation blocks reorganized onto multiple lines; test logic and assertions unchanged.

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly Related PRs

  • LucasSantana-Dev/Lucky#965: Updates to ServerSettings test container element resolution directly overlap with this PR's test formatting in the same area.
  • LucasSantana-Dev/Lucky#929: Changes to collaborativePlaylist.spec.ts including setMode expectations directly relate to this PR's test coverage for the same service.
  • LucasSantana-Dev/Lucky#969: Shares GuildAutomation page modifications including RunCard and result panel rendering updates.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: a feature update converting Starboard and Levels pages into connected components, which is clearly the most significant alteration in the changeset.
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ui/community-2026-05-15

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.

@github-actions github-actions Bot added dependencies Pull requests that update a dependency file frontend size/xl labels May 23, 2026
@socket-security

socket-security Bot commented May 23, 2026 •

Copy link
Copy Markdown

No dependency changes detected. Learn more about Socket for GitHub.

👍 No dependency changes detected in pull request

Comment thread packages/frontend/src/pages/Levels.tsx Fixed
Resolve conflicts:
- package.json: take main's v2.15.0 version + updated scripts
- pnpm-lock.yaml: take main's lock state

Fix TypeScript errors in PR changes:
- Levels.tsx: remove unused 'config' state variable and LevelConfig import
- Starboard.tsx: fix Button variant from 'outline' to 'secondary'

Levels.tsx and Starboard.tsx component changes preserved from branch.
@github-actions github-actions Bot added bot and removed dependencies Pull requests that update a dependency file labels May 25, 2026

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@github-actions

github-actions Bot commented May 25, 2026 •

Copy link
Copy Markdown

Size Change: -820 B (-0.19%)

Total Size: 425 kB

📦 View Changed
Filename Size Change
packages/frontend/dist/assets/Admin-55ze6bDo.js 2.31 kB +2.31 kB (new file) 🆕
packages/frontend/dist/assets/Admin-DHMLwBrU.js 0 B -2.31 kB (removed) 🏆
packages/frontend/dist/assets/api-D7ggJ795.js 0 B -3.37 kB (removed) 🏆
packages/frontend/dist/assets/api-DByUb1-v.js 3.35 kB +3.35 kB (new file) 🆕
packages/frontend/dist/assets/AutoMessages-1lJcgKiD.js 2.66 kB +2.66 kB (new file) 🆕
packages/frontend/dist/assets/AutoMessages-Ck0lAJft.js 0 B -2.66 kB (removed) 🏆
packages/frontend/dist/assets/AutoMod-BAmm0xL2.js 4.07 kB +4.07 kB (new file) 🆕
packages/frontend/dist/assets/AutoMod-CmufQQ0O.js 0 B -4.08 kB (removed) 🏆
packages/frontend/dist/assets/badge-b7EzBVfk.js 0 B -502 B (removed) 🏆
packages/frontend/dist/assets/badge-Bmr0n1k7.js 503 B +503 B (new file) 🆕
packages/frontend/dist/assets/Card-3QdJli_Z.js 505 B +505 B (new file) 🆕
packages/frontend/dist/assets/Card-B4TNubxf.js 0 B -506 B (removed) 🏆
packages/frontend/dist/assets/Changelog-C3cAz_pm.js 0 B -30.3 kB (removed) 🏆
packages/frontend/dist/assets/Changelog-DDrybkJB.js 30.3 kB +30.3 kB (new file) 🆕
packages/frontend/dist/assets/CommandsConfig-Dc519r85.js 0 B -1.46 kB (removed) 🏆
packages/frontend/dist/assets/CommandsConfig-DgHecx7f.js 1.46 kB +1.46 kB (new file) 🆕
packages/frontend/dist/assets/Config-CaS-g3pp.js 0 B -1.93 kB (removed) 🏆
packages/frontend/dist/assets/Config-CxVYRqeo.js 1.93 kB +1.93 kB (new file) 🆕
packages/frontend/dist/assets/CustomCommands-BnWX_-Kw.js 0 B -2.11 kB (removed) 🏆
packages/frontend/dist/assets/CustomCommands-D5t6ekpW.js 2.11 kB +2.11 kB (new file) 🆕
packages/frontend/dist/assets/DashboardOverview-CJbnsQ4h.js 0 B -3.9 kB (removed) 🏆
packages/frontend/dist/assets/DashboardOverview-DoHbUvDT.js 3.9 kB +3.9 kB (new file) 🆕
packages/frontend/dist/assets/dialog-D5tmK3Ze.js 0 B -947 B (removed) 🏆
packages/frontend/dist/assets/dialog-esG5n2Iw.js 948 B +948 B (new file) 🆕
packages/frontend/dist/assets/Docs--3tNdzKY.js 0 B -17.6 kB (removed) 🏆
packages/frontend/dist/assets/Docs-D7k6J7Ia.js 17.6 kB +17.6 kB (new file) 🆕
packages/frontend/dist/assets/DocsShell-CEWVMOW6.js 0 B -1.42 kB (removed) 🏆
packages/frontend/dist/assets/DocsShell-Mu6HJKjZ.js 1.42 kB +1.42 kB (new file) 🆕
packages/frontend/dist/assets/EmbedBuilder-CP8NY3aE.js 0 B -3.32 kB (removed) 🏆
packages/frontend/dist/assets/EmbedBuilder-Cz2O7WV0.js 3.33 kB +3.33 kB (new file) 🆕
packages/frontend/dist/assets/Features-6A0Tzviw.js 0 B -755 B (removed) 🏆
packages/frontend/dist/assets/Features-C4vGHIG2.js 759 B +759 B (new file) 🆕
packages/frontend/dist/assets/GuildAutomation-CjF8Syei.js 0 B -2.86 kB (removed) 🏆
packages/frontend/dist/assets/GuildAutomation-CnjjcV7r.js 2.86 kB +2.86 kB (new file) 🆕
packages/frontend/dist/assets/index-B9ExmBhv.css 17.8 kB +17.8 kB (new file) 🆕
packages/frontend/dist/assets/index-BB-S3_E_.js 54.8 kB +54.8 kB (new file) 🆕
packages/frontend/dist/assets/index-CLKRdN9F.js 0 B -54.8 kB (removed) 🏆
packages/frontend/dist/assets/index-CmTxpJil.css 0 B -17.8 kB (removed) 🏆
packages/frontend/dist/assets/input-BkUmZNAh.js 466 B +466 B (new file) 🆕
packages/frontend/dist/assets/input-npmXl2r-.js 0 B -463 B (removed) 🏆
packages/frontend/dist/assets/label-D_o_Cafb.js 478 B +478 B (new file) 🆕
packages/frontend/dist/assets/label-Dc0PvbiW.js 0 B -477 B (removed) 🏆
packages/frontend/dist/assets/Landing-BIfmBkoL.js 5.05 kB +5.05 kB (new file) 🆕
packages/frontend/dist/assets/Landing-Bw5Uot8t.js 0 B -5.05 kB (removed) 🏆
packages/frontend/dist/assets/LastFm-CUJmLqrv.js 0 B -1.94 kB (removed) 🏆
packages/frontend/dist/assets/LastFm-DCZGds7O.js 1.94 kB +1.94 kB (new file) 🆕
packages/frontend/dist/assets/Levels-2wGvjhnS.js 2.09 kB +2.09 kB (new file) 🆕
packages/frontend/dist/assets/Levels-Bl_leeWw.js 0 B -2.61 kB (removed) 🏆
packages/frontend/dist/assets/Login-CsbDiLyo.js 0 B -2.49 kB (removed) 🏆
packages/frontend/dist/assets/Login-Cz_2FtB7.js 2.49 kB +2.49 kB (new file) 🆕
packages/frontend/dist/assets/Lyrics-BvjbGbnx.js 1.33 kB +1.33 kB (new file) 🆕
packages/frontend/dist/assets/Lyrics-CFaG9VUs.js 0 B -1.33 kB (removed) 🏆
packages/frontend/dist/assets/Moderation-BFmhai77.js 3.82 kB +3.82 kB (new file) 🆕
packages/frontend/dist/assets/Moderation-klgOHAPB.js 0 B -3.82 kB (removed) 🏆
packages/frontend/dist/assets/Music-bvEmzTKd.js 7.09 kB +7.09 kB (new file) 🆕
packages/frontend/dist/assets/Music-DXeC082Z.js 0 B -7.1 kB (removed) 🏆
packages/frontend/dist/assets/MusicConfig-Da_Djheq.js 1.6 kB +1.6 kB (new file) 🆕
packages/frontend/dist/assets/MusicConfig-QFpE_c90.js 0 B -1.6 kB (removed) 🏆
packages/frontend/dist/assets/PreferredArtists-CZo9_ZUe.js 3.75 kB +3.75 kB (new file) 🆕
packages/frontend/dist/assets/PreferredArtists-D5a9u3Ta.js 0 B -3.75 kB (removed) 🏆
packages/frontend/dist/assets/PrivacyPolicy-BLdFi_b7.js 1.77 kB +1.77 kB (new file) 🆕
packages/frontend/dist/assets/PrivacyPolicy-Cr2uIJYa.js 0 B -1.77 kB (removed) 🏆
packages/frontend/dist/assets/ReactionRoles-BB-ZvHzs.js 0 B -1.87 kB (removed) 🏆
packages/frontend/dist/assets/ReactionRoles-Ci7sWA1Y.js 1.87 kB +1.87 kB (new file) 🆕
packages/frontend/dist/assets/SectionHeader-BMQBGf1m.js 894 B +894 B (new file) 🆕
packages/frontend/dist/assets/SectionHeader-Cc166nCP.js 0 B -896 B (removed) 🏆
packages/frontend/dist/assets/select-B1OkVLtq.js 0 B -1.23 kB (removed) 🏆
packages/frontend/dist/assets/select-BX-4FBx2.js 1.23 kB +1.23 kB (new file) 🆕
packages/frontend/dist/assets/ServerLogs-CeF5Fydt.js 3.03 kB +3.03 kB (new file) 🆕
packages/frontend/dist/assets/ServerLogs-Dp7ZF6_d.js 0 B -3.03 kB (removed) 🏆
packages/frontend/dist/assets/ServerSettings-BheUw0Ih.js 4.35 kB +4.35 kB (new file) 🆕
packages/frontend/dist/assets/ServerSettings-DcFdGLDY.js 0 B -4.34 kB (removed) 🏆
packages/frontend/dist/assets/ServersPage-XcOAWIzr.js 0 B -2.99 kB (removed) 🏆
packages/frontend/dist/assets/ServersPage-ZQj1MHcv.js 2.99 kB +2.99 kB (new file) 🆕
packages/frontend/dist/assets/Skeleton-01Na4TuE.js 0 B -236 B (removed) 🏆
packages/frontend/dist/assets/Skeleton-DMSCTBrX.js 234 B +234 B (new file) 🆕
packages/frontend/dist/assets/Spotify-BnoogNlP.js 0 B -1.94 kB (removed) 🏆
packages/frontend/dist/assets/Spotify-DJEz46A7.js 1.94 kB +1.94 kB (new file) 🆕
packages/frontend/dist/assets/Starboard-Bh4m-8F6.js 1.7 kB +1.7 kB (new file) 🆕
packages/frontend/dist/assets/Starboard-Jy7e7p5R.js 0 B -2.06 kB (removed) 🏆
packages/frontend/dist/assets/StatTile-CJOLkpTZ.js 639 B +639 B (new file) 🆕
packages/frontend/dist/assets/StatTile-CmsB3kY8.js 0 B -637 B (removed) 🏆
packages/frontend/dist/assets/switch-Cc9qVsN0.js 543 B +543 B (new file) 🆕
packages/frontend/dist/assets/switch-DdSw6oMB.js 0 B -544 B (removed) 🏆
packages/frontend/dist/assets/TermsOfService-B01Z7d7l.js 0 B -1.61 kB (removed) 🏆
packages/frontend/dist/assets/TermsOfService-DhmfJKWu.js 1.61 kB +1.61 kB (new file) 🆕
packages/frontend/dist/assets/TrackHistory-BH4ZuCGH.js 0 B -2.17 kB (removed) 🏆
packages/frontend/dist/assets/TrackHistory-BZLxxgqb.js 2.17 kB +2.17 kB (new file) 🆕
packages/frontend/dist/assets/TwitchNotifications-Br0je7nl.js 2.44 kB +2.44 kB (new file) 🆕
packages/frontend/dist/assets/TwitchNotifications-wBfaKnqc.js 0 B -2.44 kB (removed) 🏆
packages/frontend/dist/assets/useActiveHeading-BjV5Gl8e.js 0 B -1.35 kB (removed) 🏆
packages/frontend/dist/assets/useActiveHeading-D9DmOyZ-.js 1.36 kB +1.36 kB (new file) 🆕
packages/frontend/dist/assets/useFeatures-BOBuE1r6.js 0 B -2.03 kB (removed) 🏆
packages/frontend/dist/assets/useFeatures-DT9JADKG.js 2.03 kB +2.03 kB (new file) 🆕
packages/frontend/dist/assets/vendor-ui-B2w0d3pe.js 0 B -65.5 kB (removed) 🏆
packages/frontend/dist/assets/vendor-ui-DP__P0Kk.js 65.5 kB +65.5 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size
packages/frontend/dist/assets/legalNav-B6k3CWsW.js 274 B
packages/frontend/dist/assets/rolldown-runtime-Cyuzqnbw.js 471 B
packages/frontend/dist/assets/usePageMetadata-DTv-6eVb.js 327 B
packages/frontend/dist/assets/vendor-forms-C-bof8GF.js 25.9 kB
packages/frontend/dist/assets/vendor-radix-CdD3qYv_.js 38.9 kB
packages/frontend/dist/assets/vendor-react-2NHyFaPT.js 55.7 kB
packages/frontend/dist/assets/vendor-state-Bw5Cn1Hd.js 24.2 kB

compressed-size-action

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/decisions/2026-05-24-docker-npm-cache-key-strategy.md (1)

48-54: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clarify Alternative A’s rationale about cache mount persistence
Alternative A’s conclusion fits type=gha behavior (BuildKit cache mounts from RUN --mount=type=cache aren’t preserved in the exported GitHub Actions cache by default), but the wording “GHA runners are ephemeral” doesn’t pinpoint the mechanism. Rephrase to attribute the non-persistence to --cache-to type=gha/BuildKit not exporting mount contents (and keep consistent with the doc’s distinction between “mount cache” vs the “GHA layer cache”).

🤖 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 `@docs/decisions/2026-05-24-docker-npm-cache-key-strategy.md` around lines 48 -
54, Alternative A's rationale should be clarified to state that the
non-persistence is due to BuildKit's export behavior (e.g. `--cache-to type=gha`
not exporting contents written to `RUN --mount=type=cache`) rather than the
general ephemerality of GHA runners; update the text in the "Alternative A"
paragraph to mention `RUN --mount=type=cache` and `--cache-to type=gha`
explicitly, explain that BuildKit does not export mount contents into the GitHub
Actions cache by default, and adjust the wording to preserve the doc's
distinction between the "mount cache" and the "GHA layer cache."
🤖 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 `@packages/frontend/src/pages/GuildAutomation.tsx`:
- Around line 87-92: The chevron currently only renders when run.summary exists;
change the condition to render the expand/collapse affordance whenever there is
any expandable content (e.g. run.summary or run.error). Update the JSX that
checks run.summary to instead check (run.summary || run.error) so the
ChevronUp/ChevronDown toggle still uses the existing expanded state to decide
which icon to show (symbols: run.summary, run.error, expanded, ChevronUp,
ChevronDown).

In `@packages/frontend/src/pages/Levels.tsx`:
- Around line 323-330: The remove button is an icon-only button (using
TrashIcon) and needs an accessible name; update the button in Levels.tsx that
calls handleRemoveReward(reward.level) to include an aria-label (or
aria-labelledby/visually hidden text) such as aria-label={`Remove reward for
level ${reward.level}`} so screen readers can announce the action while keeping
the existing onClick and styling intact.
- Around line 120-137: The add/remove reward handlers are using the current
closure's rewards array which can be stale for async calls; update both places
to use the functional state updater form of setRewards so updates are applied to
the latest state. Specifically, in the add-reward handler (the block that
currently calls setRewards([...rewards, reward])) change it to use
setRewards(prev => [...prev, reward]), and in handleRemoveReward replace
setRewards(rewards.filter(r => r.level !== level)) with setRewards(prev =>
prev.filter(r => r.level !== level)). This ensures concurrent async mutations
won’t overwrite each other.

In `@packages/frontend/src/pages/Starboard.tsx`:
- Around line 83-89: The save path calls api.starboard.updateConfig but does not
persist the returned config into component state, so the UI (variables like
config and related UI elements such as the “Active” badge and Disable button)
remains stale; update the save handler (where api.starboard.updateConfig is
awaited) to capture the returned config object and set it into the component
state (e.g., call the state setter that holds config) after a successful
response, then show the toast as before so the UI immediately reflects the saved
configuration.

---

Outside diff comments:
In `@docs/decisions/2026-05-24-docker-npm-cache-key-strategy.md`:
- Around line 48-54: Alternative A's rationale should be clarified to state that
the non-persistence is due to BuildKit's export behavior (e.g. `--cache-to
type=gha` not exporting contents written to `RUN --mount=type=cache`) rather
than the general ephemerality of GHA runners; update the text in the
"Alternative A" paragraph to mention `RUN --mount=type=cache` and `--cache-to
type=gha` explicitly, explain that BuildKit does not export mount contents into
the GitHub Actions cache by default, and adjust the wording to preserve the
doc's distinction between the "mount cache" and the "GHA layer cache."
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 599e708e-a797-4ab5-90dd-c5686bf606b1

📥 Commits

Reviewing files that changed from the base of the PR and between 9bf7c0e and 529cce0.

📒 Files selected for processing (29)
  • docs/decisions/2026-05-24-docker-npm-cache-key-strategy.md
  • packages/bot/src/functions/management/commands/customcommand.spec.ts
  • packages/bot/src/handlers/player/streamBridge.spec.ts
  • packages/bot/src/handlers/player/trackNowPlaying.spec.ts
  • packages/bot/src/services/musicRecommendation/recommendationHelpers.spec.ts
  • packages/bot/src/utils/general/responseEmbeds/buildTrackEmbed.spec.ts
  • packages/bot/src/utils/music/autoplay/candidateScorer.spec.ts
  • packages/bot/src/utils/music/autoplay/diversitySelector.spec.ts
  • packages/bot/src/utils/music/autoplay/lastFmSeeds.spec.ts
  • packages/bot/src/utils/music/autoplay/sessionMood.spec.ts
  • packages/bot/src/utils/music/candidateFallback.spec.ts
  • packages/bot/src/utils/music/collaborativePlaylist.spec.ts
  • packages/bot/src/utils/music/duplicateDetection/similarityChecker.spec.ts
  • packages/bot/src/utils/music/languageHeuristics.spec.ts
  • packages/bot/src/utils/music/namedSessions.spec.ts
  • packages/bot/src/utils/music/queue/queueStrategy.spec.ts
  • packages/bot/src/utils/music/queueEditOps.spec.ts
  • packages/bot/src/utils/music/queueStateManager.spec.ts
  • packages/bot/src/utils/music/service.spec.ts
  • packages/bot/src/utils/music/trackUtils/cacheManager.spec.ts
  • packages/bot/src/utils/music/trackUtils/index.spec.ts
  • packages/frontend/src/pages/Admin.tsx
  • packages/frontend/src/pages/Config.tsx
  • packages/frontend/src/pages/GuildAutomation.tsx
  • packages/frontend/src/pages/LastFm.tsx
  • packages/frontend/src/pages/Levels.tsx
  • packages/frontend/src/pages/ServerSettings.test.tsx
  • packages/frontend/src/pages/Spotify.tsx
  • packages/frontend/src/pages/Starboard.tsx
💤 Files with no reviewable changes (1)
  • packages/bot/src/handlers/player/trackNowPlaying.spec.ts

Comment thread packages/frontend/src/pages/GuildAutomation.tsx
Comment thread packages/frontend/src/pages/Levels.tsx
Comment thread packages/frontend/src/pages/Levels.tsx
Comment thread packages/frontend/src/pages/Starboard.tsx

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@sonarqubecloud

Copy link
Copy Markdown

@LucasSantana-Dev
LucasSantana-Dev merged commit fafa2ac into main May 27, 2026
40 of 41 checks passed
@LucasSantana-Dev
LucasSantana-Dev deleted the ui/community-2026-05-15 branch May 27, 2026 14:06

This branch was successfully deployed

1 active deployment
Preview — fab30773 Deployed May 27, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants