Skip to content

chore(security): bump hono + refresh follow-redirects lockfile - #776

Merged
LucasSantana-Dev merged 14 commits into
mainfrom
feature/section-header-status-band
Apr 22, 2026
Merged

LucasSantana-Dev merged 14 commits into
mainfrom
feature/section-header-status-band

Conversation

@LucasSantana-Dev

Copy link
Copy Markdown
Owner

Summary

Closes two npm audit moderates with upstream fixes available — the two remaining Dependabot alerts in the 2026-04-22 backlog map (A.2) that had a real fix path.

  • hono override bumped >=4.12.12 → >=4.12.14 (closes JSX attribute-injection moderate, CWE-79). Resolves to 4.12.14.
  • follow-redirects lockfile refreshed to honor the pre-existing ^1.15.12 override (lockfile was stuck at 1.15.11 — auth-header-leak CWE-200). Resolves to 1.16.0.

Post-change npm audit --package-lock-only --json | jq '.metadata.vulnerabilities':

{ "info": 0, "low": 0, "moderate": 0, "high": 0, "critical": 0, "total": 0 }

Scope

2 files, +7/-7:

  • package.json — one-line override bump on hono.
  • package-lock.json — follow-redirects (1.15.11 → 1.16.0) + hono (4.12.12 → 4.12.14) resolved-version/integrity updates only. No other deps shifted.

Why only two deps

The 4 open Dependabot alerts are: hono, @hono/node-server (CVE-2026-39406), file-type (CVE-2026-31808), follow-redirects. Of those, only hono and follow-redirects have upstream-published patches. The other two remain monitored; the repo already overrides @hono/node-server to the latest >=1.19.13 and file-type to >=21.3.2, which are the highest currently available.

Test plan

  • npm audit --package-lock-only --json reports 0 vulns at all severities.
  • Diff is minimal (2 files, 7/7 lines).
  • @prisma/dev peer range hono@^4.12.12 still satisfied by 4.12.14.
  • CI (Quality Gates + SonarCloud + Security) green.
  • npm install in CI resolves deterministically (no conflicting override).

🤖 Generated with Claude Code

LucasSantana-Dev and others added 13 commits April 22, 2026 02:30
PR 2 of the 8-PR Lucky redesign port plan (docs/LOVABLE_PROMPT.md §10,
infrastructure phase). Pure additive extension to packages/frontend/src/
components/ui/SectionHeader.tsx — no existing props changed, no existing
usages broken.

New props
- eyebrowIcon?: ReactNode — renders before the eyebrow text at 16×16 in the
  lucky-text-tertiary tone. The canonical redesign pattern (mono uppercase
  eyebrow + lucide icon — e.g. ShieldAlert + "Moderation Security").
- statusBand?: StatusBandTile[] — renders a responsive 2-up-md-4-up grid
  below the header with each tile showing uppercase mono label + colored
  status. Uses the new short-form tokens landed in PR #763
  (bg-sidebar, border-panel, bg-canvas, bg-elevated, bg-highlight) so no
  further token work needed.

StatusBandTone
New exported type: 'success' | 'brand' | 'accent' | 'warning' | 'error'
| 'muted'. Mapped to lucky-success/brand/brand-strong/warning/error/
text-tertiary respectively. Page ports pass one tone per tile based on
real data (moderation health, automation count, music connection, etc.) —
no mocked status strings, per LOVABLE_PROMPT.md §4.2.

Tests (src/components/ui/DesignPrimitives.test.tsx)
New test: "renders section header with eyebrow icon + status band".
Covers eyebrowIcon render, band role=list with aria-label=Module status,
per-tile label + status text, and per-tile icon slot.

Existing test "renders section header with actions" kept as-is — all
original props still work.

Accessibility
- Eyebrow icon: aria-hidden=true (decorative; the eyebrow text carries the semantics).
- Status band: role=list + listitems, aria-label="Module status" for screen readers.
- Tile icons: aria-hidden=true.

Bundle impact: 4 new SVG icons pulled in via lucide-react in tests only;
zero net bundle growth at runtime (the component imports no icons itself).

Validation
- npm run type:check: clean
- npm run lint: clean, 0 warnings
- npx vitest run src/components/ui/DesignPrimitives.test.tsx: 6/6 passing
- npm run build: clean, 4.42s

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Addresses CodeRabbit minor: key={tile.label} could collide if two tiles
share a label. Adds optional id?: string to StatusBandTile interface and
falls back to a deterministic ${label}:${status}:${index} composite key.

packages/frontend/src/components/ui/SectionHeader.tsx
- StatusBandTile gains optional id field
- map callback receives (tile, index); key uses tile.id ?? composite

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@LucasSantana-Dev
LucasSantana-Dev enabled auto-merge (squash) April 22, 2026 14:28
@vercel

vercel Bot commented Apr 22, 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 Apr 22, 2026 2:30pm

Request Review

@coderabbitai

coderabbitai Bot commented Apr 22, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@LucasSantana-Dev has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 20 minutes and 10 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 20 minutes and 10 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, 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 have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 45b50f17-ffdb-4094-b79a-f686a7bf6042

📥 Commits

Reviewing files that changed from the base of the PR and between e2b4bf8 and e7fc84c.

📒 Files selected for processing (2)
  • packages/frontend/src/components/ui/DesignPrimitives.test.tsx
  • packages/frontend/src/components/ui/SectionHeader.tsx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/section-header-status-band

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

Copy link
Copy Markdown

Size Change: 0 B

Total Size: 363 kB

ℹ️ View Unchanged
Filename Size
packages/frontend/dist/assets/ActionPanel-BZfj_oAQ.js 399 B
packages/frontend/dist/assets/api-C309rQF-.js 3.38 kB
packages/frontend/dist/assets/authStore-CFCQTbTK.js 559 B
packages/frontend/dist/assets/AutoMessages-CIZyZKSv.js 2.68 kB
packages/frontend/dist/assets/AutoMod-Du3gALEo.js 4.09 kB
packages/frontend/dist/assets/badge-CAg46NEB.js 501 B
packages/frontend/dist/assets/Card-ChnzDUrq.js 455 B
packages/frontend/dist/assets/CommandsConfig-1LDbZusq.js 1.47 kB
packages/frontend/dist/assets/Config-B57GWc0C.js 1.7 kB
packages/frontend/dist/assets/CustomCommands-BeIT8ATq.js 2.16 kB
packages/frontend/dist/assets/DashboardOverview-kl-6zPdB.js 3.39 kB
packages/frontend/dist/assets/dialog-BFdvqzhi.js 948 B
packages/frontend/dist/assets/EmbedBuilder-BVSdvFho.js 3.34 kB
packages/frontend/dist/assets/Features-pid_xb3g.js 2.86 kB
packages/frontend/dist/assets/GuildAutomation-C8y2Edv1.js 2.92 kB
packages/frontend/dist/assets/guildStore-C4PyqPrV.js 797 B
packages/frontend/dist/assets/index-Dhwz_F01.js 51.1 kB
packages/frontend/dist/assets/index-Qx-yk0Yw.css 16.4 kB
packages/frontend/dist/assets/input-B2B70Afe.js 463 B
packages/frontend/dist/assets/label-DM4Yos7b.js 490 B
packages/frontend/dist/assets/Landing-DYxAL1Ek.js 3.59 kB
packages/frontend/dist/assets/LastFm-CWHIDR5N.js 1.74 kB
packages/frontend/dist/assets/Levels-lITEiQbD.js 2.63 kB
packages/frontend/dist/assets/Login-DWR9QQAD.js 2.5 kB
packages/frontend/dist/assets/Lyrics-CZ_dVgoR.js 1.33 kB
packages/frontend/dist/assets/Moderation-D5hFjtq5.js 3.85 kB
packages/frontend/dist/assets/Music-BKicjJNt.js 7.09 kB
packages/frontend/dist/assets/MusicConfig-DztYt2Ft.js 1.6 kB
packages/frontend/dist/assets/PreferredArtists-Nv69OT4v.js 3.7 kB
packages/frontend/dist/assets/PrivacyPolicy-FGxBiThm.js 1.38 kB
packages/frontend/dist/assets/ReactionRoles-DrD30uBu.js 1.89 kB
packages/frontend/dist/assets/rolldown-runtime-BYbx6iT9.js 471 B
packages/frontend/dist/assets/SectionHeader-58MZTZkP.js 866 B
packages/frontend/dist/assets/select-RXSUpVQr.js 1.23 kB
packages/frontend/dist/assets/ServerLogs-BM4GQs_o.js 2.91 kB
packages/frontend/dist/assets/ServerSettings-8oK5_aG9.js 4.22 kB
packages/frontend/dist/assets/ServersPage-d9P2KhDm.js 2.92 kB
packages/frontend/dist/assets/shim-lekosUrx.js 509 B
packages/frontend/dist/assets/Skeleton-BXVdRWw_.js 234 B
packages/frontend/dist/assets/Spotify-Ccmplcv3.js 1.75 kB
packages/frontend/dist/assets/Starboard-CvtlAmRL.js 2.08 kB
packages/frontend/dist/assets/StatTile--JKqTr_E.js 603 B
packages/frontend/dist/assets/switch-BrSUprod.js 541 B
packages/frontend/dist/assets/TermsOfService-l_BYCXiO.js 1.37 kB
packages/frontend/dist/assets/TrackHistory-dUxz49aW.js 2.17 kB
packages/frontend/dist/assets/TwitchNotifications-B6XcRixO.js 2.44 kB
packages/frontend/dist/assets/usePageMetadata-DSy5BFWn.js 330 B
packages/frontend/dist/assets/utils-C1a-f-au.js 145 B
packages/frontend/dist/assets/vendor-forms-CdqfM_vI.js 25.4 kB
packages/frontend/dist/assets/vendor-radix-BLJl2XeP.js 38.9 kB
packages/frontend/dist/assets/vendor-react-CM1lAMeX.js 55.6 kB
packages/frontend/dist/assets/vendor-state-YvEV5drJ.js 22.2 kB
packages/frontend/dist/assets/vendor-ui-wEQnZZ2i.js 64.6 kB

compressed-size-action

@sonarqubecloud

Copy link
Copy Markdown

@LucasSantana-Dev
LucasSantana-Dev merged commit fa90375 into main Apr 22, 2026
12 checks passed
LucasSantana-Dev added a commit that referenced this pull request May 13, 2026
* feat(frontend): SectionHeader eyebrowIcon + statusBand

PR 2 of the 8-PR Lucky redesign port plan (docs/LOVABLE_PROMPT.md §10,
infrastructure phase). Pure additive extension to packages/frontend/src/
components/ui/SectionHeader.tsx — no existing props changed, no existing
usages broken.

New props
- eyebrowIcon?: ReactNode — renders before the eyebrow text at 16×16 in the
  lucky-text-tertiary tone. The canonical redesign pattern (mono uppercase
  eyebrow + lucide icon — e.g. ShieldAlert + "Moderation Security").
- statusBand?: StatusBandTile[] — renders a responsive 2-up-md-4-up grid
  below the header with each tile showing uppercase mono label + colored
  status. Uses the new short-form tokens landed in PR #763
  (bg-sidebar, border-panel, bg-canvas, bg-elevated, bg-highlight) so no
  further token work needed.

StatusBandTone
New exported type: 'success' | 'brand' | 'accent' | 'warning' | 'error'
| 'muted'. Mapped to lucky-success/brand/brand-strong/warning/error/
text-tertiary respectively. Page ports pass one tone per tile based on
real data (moderation health, automation count, music connection, etc.) —
no mocked status strings, per LOVABLE_PROMPT.md §4.2.

Tests (src/components/ui/DesignPrimitives.test.tsx)
New test: "renders section header with eyebrow icon + status band".
Covers eyebrowIcon render, band role=list with aria-label=Module status,
per-tile label + status text, and per-tile icon slot.

Existing test "renders section header with actions" kept as-is — all
original props still work.

Accessibility
- Eyebrow icon: aria-hidden=true (decorative; the eyebrow text carries the semantics).
- Status band: role=list + listitems, aria-label="Module status" for screen readers.
- Tile icons: aria-hidden=true.

Bundle impact: 4 new SVG icons pulled in via lucide-react in tests only;
zero net bundle growth at runtime (the component imports no icons itself).

Validation
- npm run type:check: clean
- npm run lint: clean, 0 warnings
- npx vitest run src/components/ui/DesignPrimitives.test.tsx: 6/6 passing
- npm run build: clean, 4.42s

* fix(frontend): stable React keys for SectionHeader statusBand tiles

Addresses CodeRabbit minor: key={tile.label} could collide if two tiles
share a label. Adds optional id?: string to StatusBandTile interface and
falls back to a deterministic ${label}:${status}:${index} composite key.

packages/frontend/src/components/ui/SectionHeader.tsx
- StatusBandTile gains optional id field
- map callback receives (tile, index); key uses tile.id ?? composite

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview — d74e28f6 Deployed Apr 22, 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.

1 participant