Skip to content

Refactor components for improved maintainability and functionality#1670

Merged
DaFum merged 9 commits into
mainfrom
Audit
May 18, 2026
Merged

Refactor components for improved maintainability and functionality#1670
DaFum merged 9 commits into
mainfrom
Audit

Conversation

@DaFum

@DaFum DaFum commented May 18, 2026

Copy link
Copy Markdown
Owner

Enhance the codebase by extracting components into separate files, adding PropTypes for type checking, and implementing new overlay and slider components. Update utilities for safer operations and improve test coverage to ensure reliability. This refactor aims to streamline the code structure and enhance overall maintainability.

DaFum added 2 commits May 18, 2026 12:22
…tionality

- Extracted various components (HeaderTitle, KabelsalatBoard, Overlays, Rules, SocketList, etc.) into separate files for better organization.
- Added PropTypes to MainMenuSocials and Rules components for type checking.
- Created new overlay components (GameOverOverlay, PoweredOnOverlay, ShockOverlay) for better modularity.
- Refactored plug and socket components (DcPlug, IecPlug, JackPlug, etc.) into static UI components.
- Introduced SegmentedSlider component to replace existing slider implementations in VolumeSlider and BrutalFader for better accessibility and usability.
- Implemented catalog effect utilities (isCatalogEffect, normalizeCatalogEffect) for improved effect validation.
- Enhanced storage utility functions (safeStorage, safeStorageNoFallback) for safer localStorage operations.
- Updated tests to cover new functionalities and ensure reliability across components and utilities.
@qodo-code-review

Copy link
Copy Markdown
Contributor

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@vercel

vercel Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
neurotoxic-game Ready Ready Preview, Comment May 18, 2026 3:08pm

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: c590b1e2-381e-4df3-b051-28f547257e60

📥 Commits

Reviewing files that changed from the base of the PR and between f452f3a and 56f0276.

📒 Files selected for processing (10)
  • src/hooks/useNetworkStatus.ts
  • src/utils/catalogEffectUtils.ts
  • src/utils/errorHandler.ts
  • src/utils/storage.ts
  • src/utils/unlockCheck.ts
  • tests/node/catalogEffectUtils.test.js
  • tests/ui/useAmpLogic.test.jsx
  • tests/ui/useRoadieLogic.test.jsx
  • tests/ui/useTourbusLogic.test.jsx
  • tests/useRhythmGameLogicTestUtils.js

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Scene router with lazy-loaded scenes; new UI components: Pre‑Gig Start button, Clinic Member card, Gig Modifiers block, multiple Kabelsalat overlays, credit header/footer pieces, Segmented Slider, Volume/Brutalist control updates, GameOver buttons.
  • Improvements

    • Safer storage/error reporting, catalog effect validation, refined UI controls (toggle/fader), more granular state subscriptions for performance, clearer audit report content.
  • Chores

    • Widespread refactor of state hooks and expanded tests for stability, integration, and performance.

Walkthrough

Broad refactor switching components/hooks/scenes from useGameState to useGameSelector/useGameActions; adds storage/catalog-effect utilities, EffectTextureManager, SegmentedSlider and controlled Brutalist UI components, travel-event options, Kabelsalat subcomponents, extensive test updates/mocks, and a rewritten AUDIT_REPORT.md and symbols.json.

Changes

Core selector/actions refactor, utilities, and UI/UIX updates

Layer / File(s) Summary
Selector/actions migration and supporting modules
src/**/*, tests/**/*, AUDIT_REPORT.md, symbols.json
Moves state reads to useGameSelector and dispatches to useGameActions across components, scenes, and hooks; tightens GameState action types; replaces local storage wrappers with shared safeStorageOperation in src/utils/storage.ts; adds isCatalogEffect/normalizeCatalogEffect; introduces EffectTextureManager; adds ProcessTravelEventsOptions and processTravelEvents(..., options); extracts Kabelsalat subcomponents and overlays; rewrites Brutalist controls to use SegmentedSlider/ToggleSwitch; updates many tests to mock useGameSelector/useGameActions and centralizes mock state; updates AUDIT_REPORT.md and symbols.json.

Sequence Diagram(s)

sequenceDiagram
  participant UI as UI Component / Hook
  participant Selector as useGameSelector
  participant Actions as useGameActions
  participant Utils as storage/catalogEffect/SegmentedSlider
  UI->>Selector: select state slices (player, band, gameMap, settings, etc.)
  UI->>Actions: invoke dispatchers (changeScene, addToast, completeMinigame, safeStorage ops)
  UI->>Utils: call safeStorageOperation, normalizeCatalogEffect, render SegmentedSlider
  Actions-->>UI: state updates -> Selector-driven re-render
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Poem

A rabbit taps the rhythm bar, hop-tock, hop-tock,
Sliders gleam in neon shock.
Selectors nibble state so clean,
Actions sprint the verdant green.
Textures bloom, events align—carrots cached, effects refined.

✨ 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 Audit

@github-actions

github-actions Bot commented May 18, 2026

Copy link
Copy Markdown

📝 PR Kommentar-Zusammenfassung

Wird automatisch aktualisiert, sobald sich Kommentare ändern.

Keine offenen Review-Threads vorhanden.

@gemini-code-assist gemini-code-assist Bot 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.

Code Review

This pull request refactors several UI components, including BrutalToggle, BrutalFader, and VolumeSlider, to utilize new shared primitives like SegmentedSlider and ToggleSwitch. It also introduces catalogEffectUtils for improved catalog validation and updates arrivalUtils to support configurable gig node travel events. Review feedback highlights that BrutalToggle and BrutalFader should be made controlled components to ensure state synchronization, and suggests removing redundant aria-label attributes in SegmentedSlider to improve accessibility.

Comment thread src/ui/shared/BrutalistUI.tsx
Comment thread src/ui/shared/BrutalistUI.tsx
Comment thread src/ui/shared/SegmentedSlider.tsx Outdated

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 is primarily a maintainability refactor: it extracts reusable building blocks (a SegmentedSlider primitive, a catalogEffectUtils module, and storage wrappers), simplifies BrutalToggle/BrutalFader/VolumeSlider to delegate to those primitives, consolidates the processTravelEvents policy into a single includeGigNodes option, and removes scattered "review header" comments across many files. Several new node/UI tests are added.

Changes:

  • Extract SegmentedSlider, catalogEffectUtils (isCatalogEffect/normalizeCatalogEffect), and safeStorage/safeStorageNoFallback/safeStorageOperation wrappers into dedicated modules, with BrutalistUI, VolumeSlider, ShopTab, upgradeCatalog, usePersistence, useLeaderboardSync, unlockManager, useMainMenu, and GameState updated to consume them.
  • Add an includeGigNodes option to processTravelEvents so useTravelLogic no longer duplicates the transport→band fallback policy inline.
  • Strip stale (#1) Actual Updates: … review-style comment blocks from a large number of source files; rewrite AUDIT_REPORT.md and refresh symbols.json / tests accordingly.

Reviewed changes

Copilot reviewed 74 out of 74 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/ui/shared/SegmentedSlider.tsx New shared segmented slider primitive used by VolumeSlider and BrutalFader.
src/ui/shared/VolumeSlider.tsx Re-implemented on top of SegmentedSlider.
src/ui/shared/BrutalistUI.tsx BrutalToggle delegates to ToggleSwitch; BrutalFader delegates to SegmentedSlider with clamped values.
src/ui/shared/index.tsx Exports new SegmentedSlider from the barrel.
src/utils/catalogEffectUtils.ts New module centralizing isCatalogEffect/normalizeCatalogEffect.
src/ui/bandhq/ShopTab.tsx Uses shared isCatalogEffect instead of local copy.
src/data/upgradeCatalog.ts Uses shared normalizeCatalogEffect.
src/utils/storage.ts New safeStorage, safeStorageNoFallback, and re-exported safeStorageOperation wrappers.
src/utils/unlockManager.ts, src/hooks/useLeaderboardSync.ts, src/scenes/mainmenu/useMainMenu.ts, src/context/GameState.tsx, src/context/usePersistence.ts Switched storage helpers' import path to src/utils/storage.
src/utils/arrivalUtils.ts Added includeGigNodes option to processTravelEvents.
src/hooks/useTravelLogic.ts Collapses inline gig-node travel-event branch into a single processTravelEvents call.
src/hooks/useArrivalLogic.ts Doc comment update describing default skip policy.
Many src/.tsx, src/.ts Removal of stale Actual Updates: review comments; no behavior change.
tests/node/storage.test.js Coverage for new safeStorage wrappers.
tests/node/catalogEffectUtils.test.js Coverage for new isCatalogEffect.
tests/node/arrivalUtils.test.js Coverage for new includeGigNodes option.
tests/ui/VolumeSlider.test.jsx, tests/ui/ToggleSwitch.test.jsx Smoke tests asserting BrutalFader/BrutalToggle delegate to shared primitives.
symbols.json Updated to reflect moved/added exports.
AUDIT_REPORT.md Rewritten with new findings table.

DaFum and others added 4 commits May 18, 2026 13:23
…seGameState().

What changed:
Replaced production consumers with useGameSelector(...) for state reads and useGameActions() for dispatchers.
Left the legacy useGameState export in GameState.tsx (line 1016) for compatibility.
Added an architecture guard in architecture.test.jsx (line 103) to prevent new production useGameState references.
Updated affected test mocks to expose useGameSelector and useGameActions.
Verification:
pnpm run test:ui passed: 135 files, 775 tests.
pnpm run test:node passed: 1940 tests.
pnpm run test passed.
pnpm run lint exits 0, with one existing warning in src/hooks/useNetworkStatus.ts:45.
pnpm run typecheck passed.
pnpm run build passed.
pnpm run typecheck:core still fails on untouched unlockCheck.ts (line 165): Operator '<' cannot be applied to types '{}' and 'number'.
rg "useGameState" src now only finds the legacy hook declaration itself. Commit message candidate: refactor(game-state): replace deprecated useGameState consumers.
- Add spawnRivalBand to GameDispatchActions type (fixes Copilot CI flag on
  src/scenes/Overworld.tsx:51 where the destructure introduced a TS error).
- Tighten architecture guard: use word-boundary regex + strip comments so
  JSDoc references no longer trip it; add positive assertion that the legacy
  useGameState export still exists.
- Rewrite Credits.test.jsx and GameOver.test.jsx harnesses to use
  useGameSelector/useGameActions instead of the deprecated useGameState
  compat shim, so tests exercise the same code path as production.
- Replace mockReturnValueOnce foot-gun in useQuestsModal.test.jsx with a
  vi.hoisted state holder so all selector calls see the same snapshot.
- Replace fresh-object-literal selector in App.tsx GameContent with one
  selector per slice (avoids re-render storms).
- Add useDarkWebLeak unit test (was missing).
- Add useGameActions + useGameSelector stability tests.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- useDarkWebLeak.test.jsx: audio hub mock now exposes both audioManager and
  audioService per the project audio-mock contract.
- proceedToTour.bench.jsx, RoadieRunScene.perf.test.jsx: stabilize mock state
  with a single shared object so selectors don't reallocate per call and skew
  benchmark timing.
- GameState.stability.test.jsx: add afterEach vi.unstubAllGlobals() so the
  stubbed localStorage doesn't leak between suites.
- useKabelsalatGameEnd.test.jsx, useKabelsalatState.test.jsx: replace empty
  selector({}) fixture with a canonical mock state and split actions out.
- usePostGigLogic.test.jsx, useArrivalLogicTestUtils.js: useGameActions mock
  now returns only the function-valued (action) keys via extractActions(),
  honoring the production state/actions split.
- useQuestsModal.test.jsx (ui/): split actions from state in the mock.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Refactor game state management to remove deprecated useGameState
- BrutalToggle: accept optional controlled-mode props (`isOn` + `onToggle`).
  When provided, the rendered state tracks the prop so callers can sync from
  external state (settings load, reset). Uncontrolled mode via `initialState`
  is preserved.
- BrutalFader: same controlled-mode pattern via `value` + `onChange`.
- SegmentedSlider: drop the redundant `aria-label` and `aria-pressed` on the
  segment buttons — they are `aria-hidden='true'` so screen readers skip them.
  Accessibility is handled by the visible range input at line 50. The now-
  unused `getSegmentAriaLabel` prop and its `useTranslation` dep are removed,
  along with the dead callers in `BrutalFader` and `VolumeSlider`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Critical:
- storage.ts setSafeStorageItem/getSafeStorageItem no longer swallow errors
  silently. Quota-exceeded, SecurityError, JSON parse failures, and storage
  read failures now route through `handleError(new StorageError(...), {
  silent: true })` so save loss has a diagnostic trail. Distinguishes
  "missing key" from "corrupt key".

Important:
- BrutalToggle/BrutalFader: only strict booleans / finite numbers are
  treated as controlled, so a stray `NaN` or `null` falls through to
  uncontrolled mode rather than stuck-state. Internal state mirrors the
  controlled value so transitioning back to uncontrolled retains the last
  value instead of snapping to `initialState`/`initialValue`.
- catalogEffectUtils.normalizeCatalogEffect now returns a sanitized clone
  containing only the validated fields per variant, dropping `__proto__`,
  `constructor`, and any other hostile keys before the value enters game
  state. `isCatalogEffect` uses `Object.hasOwn` for all property checks.

Tests:
- New catalog tests: `normalizeCatalogEffect` happy paths, throw cases,
  optional `value` preservation on `passive`, prototype-pollution
  sanitization, and rejection of payloads whose discriminator only lives
  on the prototype.
- New BrutalToggle/BrutalFader controlled-mode tests: tracks prop changes
  across rerenders, clamps controlled values, treats `NaN`/`Infinity` as
  uncontrolled at mount, preserves last controlled value when reverting
  to uncontrolled.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 6

🤖 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 `@src/utils/catalogEffectUtils.ts`:
- Around line 22-39: The numeric checks in the catalog effect validation (cases
like 'inventory_add', 'stat_modifier' and 'inventory_set' handling the
effect.value field) only use typeof === 'number' which permits NaN/Infinity;
change those checks to require finite numbers (use Number.isFinite on
effect.value) wherever effect.value is validated (including the other
occurrences around lines 68-88) so invalid non-finite numeric effect values are
rejected; keep the rest of the predicate logic (Object.hasOwn, type checks,
EFFECT_TARGETS) unchanged.

In `@src/utils/storage.ts`:
- Around line 104-122: The wrappers safeStorage and safeStorageNoFallback use
unsafe double-casts ("as unknown as") which hide nullability from
runSafeStorageOperation and can cause a null to be returned where T is expected;
replace the double-casts by giving runSafeStorageOperation a proper TypeScript
signature or overloads that match both call sites (e.g., (op: string, exec: ()
=> T, fallback: T) => T and (op: string, exec: () => T) => T) or add explicit
runtime checks/type guards around the result of runSafeStorageOperation before
returning; update safeStorage/safeStorageNoFallback to call the correctly typed
function (or throw/return fallback when the result is null/undefined) instead of
masking types with as unknown as.

In `@tests/ui/useAmpLogic.test.jsx`:
- Around line 14-19: Replace the empty object passed to useGameSelector with a
canonical selector fixture so selector behavior in tests matches runtime state;
locate the test mock where useGameSelector is invoked (near useGameActions,
mockCompleteAmpCalibration, mockChangeScene) and provide a canonical fixture
object (e.g., canonicalGameState or canonicalSelector) containing the standard
keys/selectors used by your app, then pass that object into useGameSelector
instead of {}.

In `@tests/ui/useRoadieLogic.test.jsx`:
- Around line 24-26: The test currently maps useGameActions to the full
mockUseGameState which returns the entire state; change the mock so
useGameActions returns only the actions portion of that state (e.g., call
mockUseGameState() and return its actions object) so the mocked contract matches
production; update the mapping for useGameActions (and keep useGameSelector
using selector(mockUseGameState())) to ensure hooks that expect action-only
usage are tested correctly.

In `@tests/ui/useTourbusLogic.test.jsx`:
- Around line 20-23: The mock for useGameActions is currently set to return
mockUseGameState, which leaks state into the actions mock; replace that by
creating a distinct mock action object/function (e.g., mockUseGameActions) that
only exposes action methods used by the tests and assign useGameActions:
mockUseGameActions instead of useGameState; keep useGameSelector implementation
but ensure mockUseGameActions does not include state fields from
mockUseGameState so tests only interact with action APIs.

In `@tests/useRhythmGameLogicTestUtils.js`:
- Around line 113-119: The mock for useGameActions currently returns the full
state because useGameActions is wired to mockUseGameState; change it to expose
only dispatcher functions by adding an extractActions helper (as used in
useArrivalLogicTestUtils.js) that filters mockUseGameState() to return only
function-valued properties, then wire useGameActions to call
extractActions(mockUseGameState()) while leaving mockUseGameState and
mockGameSelector unchanged so tests respect the production contract.
🪄 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: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2bb16aca-f39f-4a29-9f87-0647e196ed90

📥 Commits

Reviewing files that changed from the base of the PR and between 9a406cd and f452f3a.

📒 Files selected for processing (142)
  • AUDIT_REPORT.md
  • src/App.tsx
  • src/components/MinigameSceneFrame.tsx
  • src/components/PixiStageController.ts
  • src/components/SceneRouter.tsx
  • src/components/clinic/ClinicHeader.tsx
  • src/components/clinic/ClinicMemberCard.tsx
  • src/components/postGig/DealCard.tsx
  • src/components/postGig/DealsPhase.tsx
  • src/components/pregig/GigModifiersBlock.tsx
  • src/components/pregig/PreGigHeader.tsx
  • src/components/pregig/PreGigStartButton.tsx
  • src/components/stage/EffectTextureManager.ts
  • src/components/stage/stageRenderUtils.ts
  • src/context/GameState.tsx
  • src/context/usePersistence.ts
  • src/data/upgradeCatalog.ts
  • src/hooks/minigames/useAmpLogic.ts
  • src/hooks/minigames/useRoadieLogic.ts
  • src/hooks/minigames/useTourbusLogic.ts
  • src/hooks/rhythmGame/useRhythmGameScoring.ts
  • src/hooks/useArrivalLogic.ts
  • src/hooks/useBloodBank.ts
  • src/hooks/useChatterLogic.ts
  • src/hooks/useClinicLogic.ts
  • src/hooks/useContrabandStash.ts
  • src/hooks/useDarkWebLeak.ts
  • src/hooks/useDealNegotiation.ts
  • src/hooks/useLeaderboardSync.ts
  • src/hooks/useMerchPress.ts
  • src/hooks/usePirateRadio.ts
  • src/hooks/usePostGigLogic.ts
  • src/hooks/usePreGigLogic.ts
  • src/hooks/useQuestsModal.ts
  • src/hooks/useRhythmGameLogic.ts
  • src/hooks/useTravelLogic.ts
  • src/hooks/useTutorial.ts
  • src/scenes/AmpCalibrationScene.tsx
  • src/scenes/Credits.tsx
  • src/scenes/GameOver.tsx
  • src/scenes/Gig.tsx
  • src/scenes/IntroVideo.tsx
  • src/scenes/Overworld.tsx
  • src/scenes/RoadieRunScene.tsx
  • src/scenes/Settings.tsx
  • src/scenes/credits/CreditEntry.tsx
  • src/scenes/credits/CreditFooter.tsx
  • src/scenes/credits/CreditHeader.tsx
  • src/scenes/gameover/GameOverBackground.tsx
  • src/scenes/gameover/GameOverButtons.tsx
  • src/scenes/gameover/GameOverHeader.tsx
  • src/scenes/gameover/GameOverStats.tsx
  • src/scenes/intro/components/AutoplayOverlay.tsx
  • src/scenes/kabelsalat/components/CableItem.tsx
  • src/scenes/kabelsalat/components/ConnectionPaths.tsx
  • src/scenes/kabelsalat/components/HardwareProps.tsx
  • src/scenes/kabelsalat/components/Header.tsx
  • src/scenes/kabelsalat/components/HeaderTimer.tsx
  • src/scenes/kabelsalat/components/HeaderTitle.tsx
  • src/scenes/kabelsalat/components/KabelsalatBoard.tsx
  • src/scenes/kabelsalat/components/Overlays.tsx
  • src/scenes/kabelsalat/components/Rules.tsx
  • src/scenes/kabelsalat/components/SocketList.tsx
  • src/scenes/kabelsalat/components/overlays/KabelsalatGameOverOverlay.tsx
  • src/scenes/kabelsalat/components/overlays/PoweredOnOverlay.tsx
  • src/scenes/kabelsalat/components/overlays/ShockOverlay.tsx
  • src/scenes/kabelsalat/components/plugs/DcPlug.tsx
  • src/scenes/kabelsalat/components/plugs/IecPlug.tsx
  • src/scenes/kabelsalat/components/plugs/JackPlug.tsx
  • src/scenes/kabelsalat/components/plugs/MidiPlug.tsx
  • src/scenes/kabelsalat/components/plugs/XlrPlug.tsx
  • src/scenes/kabelsalat/components/sockets/DcSocket.tsx
  • src/scenes/kabelsalat/components/sockets/IecSocket.tsx
  • src/scenes/kabelsalat/components/sockets/JackSocket.tsx
  • src/scenes/kabelsalat/components/sockets/MidiSocket.tsx
  • src/scenes/kabelsalat/components/sockets/XlrSocket.tsx
  • src/scenes/kabelsalat/hooks/useKabelsalatGameEnd.ts
  • src/scenes/mainmenu/MainMenuSocials.tsx
  • src/scenes/mainmenu/useMainMenu.ts
  • src/ui/ContrabandStash.tsx
  • src/ui/bandhq/SetlistTab.tsx
  • src/ui/bandhq/ShopTab.tsx
  • src/ui/bandhq/hooks/useBandHQLogic.ts
  • src/ui/shared/BrutalistUI.tsx
  • src/ui/shared/SegmentedSlider.tsx
  • src/ui/shared/VolumeSlider.tsx
  • src/ui/shared/index.tsx
  • src/utils/arrivalUtils.ts
  • src/utils/catalogEffectUtils.ts
  • src/utils/eventEngine.ts
  • src/utils/socialEngine.ts
  • src/utils/storage.ts
  • src/utils/unlockManager.ts
  • src/utils/upgradeUtils.ts
  • symbols.json
  • tests/hooks/useBloodBank.test.jsx
  • tests/hooks/useDarkWebLeak.test.jsx
  • tests/hooks/useDealNegotiation.test.jsx
  • tests/hooks/usePirateRadio.test.jsx
  • tests/hooks/useQuestsModal.test.jsx
  • tests/integration/GigIntegration.test.jsx
  • tests/node/arrivalUtils.test.js
  • tests/node/catalogEffectUtils.test.js
  • tests/node/rhythmGameLogicMultiSong.test.js
  • tests/node/storage.test.js
  • tests/node/useClinicLogic.test.js
  • tests/performance/MainMenuStability.test.jsx
  • tests/performance/RoadieLogic.perf.test.jsx
  • tests/performance/RoadieRunScene.perf.test.jsx
  • tests/performance/SettingsStability.test.jsx
  • tests/performance/proceedToTour.bench.jsx
  • tests/performance/proceedToTourTime.bench.test.jsx
  • tests/ui/Credits.test.jsx
  • tests/ui/DealsPhase.test.jsx
  • tests/ui/GameOver.test.jsx
  • tests/ui/GameState.stability.test.jsx
  • tests/ui/Gig.optimization.test.jsx
  • tests/ui/Gig.scene.test.jsx
  • tests/ui/IntroVideo.test.jsx
  • tests/ui/KabelsalatScene.test.jsx
  • tests/ui/MainMenu.identity.test.jsx
  • tests/ui/MainMenu.test.jsx
  • tests/ui/MerchPressModal.test.jsx
  • tests/ui/MinigameSceneFrame.test.jsx
  • tests/ui/PostGig.component.test.jsx
  • tests/ui/PostGig.leaderboard.test.jsx
  • tests/ui/PreGig.test.jsx
  • tests/ui/SetlistTab.test.jsx
  • tests/ui/ToggleSwitch.test.jsx
  • tests/ui/TutorialManager.test.jsx
  • tests/ui/VolumeSlider.test.jsx
  • tests/ui/useAmpLogic.test.jsx
  • tests/ui/useContrabandStash.test.jsx
  • tests/ui/useKabelsalatGameEnd.test.jsx
  • tests/ui/useKabelsalatState.test.jsx
  • tests/ui/usePostGigLogic.test.jsx
  • tests/ui/useQuestsModal.test.jsx
  • tests/ui/useRoadieLogic.test.jsx
  • tests/ui/useTourbusLogic.test.jsx
  • tests/useArrivalLogicTestUtils.js
  • tests/useRhythmGameLogicTestUtils.js
  • tests/utils/architecture.test.jsx
💤 Files with no reviewable changes (47)
  • src/scenes/credits/CreditHeader.tsx
  • src/scenes/kabelsalat/components/plugs/XlrPlug.tsx
  • src/scenes/kabelsalat/components/Rules.tsx
  • src/scenes/gameover/GameOverButtons.tsx
  • src/scenes/kabelsalat/components/plugs/MidiPlug.tsx
  • src/scenes/gameover/GameOverHeader.tsx
  • src/utils/socialEngine.ts
  • src/scenes/kabelsalat/components/sockets/DcSocket.tsx
  • src/scenes/credits/CreditEntry.tsx
  • src/ui/bandhq/hooks/useBandHQLogic.ts
  • src/hooks/useChatterLogic.ts
  • src/scenes/kabelsalat/components/ConnectionPaths.tsx
  • src/scenes/gameover/GameOverStats.tsx
  • src/components/stage/stageRenderUtils.ts
  • src/ui/ContrabandStash.tsx
  • src/scenes/kabelsalat/components/Header.tsx
  • src/scenes/kabelsalat/components/HeaderTitle.tsx
  • src/scenes/gameover/GameOverBackground.tsx
  • src/scenes/mainmenu/MainMenuSocials.tsx
  • src/components/postGig/DealCard.tsx
  • src/scenes/kabelsalat/components/Overlays.tsx
  • src/scenes/kabelsalat/components/sockets/XlrSocket.tsx
  • src/scenes/kabelsalat/components/overlays/ShockOverlay.tsx
  • src/scenes/kabelsalat/components/plugs/JackPlug.tsx
  • src/scenes/kabelsalat/components/HardwareProps.tsx
  • src/components/pregig/PreGigHeader.tsx
  • src/scenes/kabelsalat/components/overlays/KabelsalatGameOverOverlay.tsx
  • src/components/pregig/PreGigStartButton.tsx
  • src/scenes/kabelsalat/components/SocketList.tsx
  • src/components/SceneRouter.tsx
  • src/scenes/kabelsalat/components/sockets/JackSocket.tsx
  • src/components/clinic/ClinicHeader.tsx
  • src/scenes/credits/CreditFooter.tsx
  • src/utils/eventEngine.ts
  • src/scenes/kabelsalat/components/plugs/IecPlug.tsx
  • src/components/PixiStageController.ts
  • src/scenes/kabelsalat/components/sockets/MidiSocket.tsx
  • src/scenes/kabelsalat/components/sockets/IecSocket.tsx
  • src/scenes/intro/components/AutoplayOverlay.tsx
  • src/scenes/kabelsalat/components/CableItem.tsx
  • src/scenes/kabelsalat/components/overlays/PoweredOnOverlay.tsx
  • src/scenes/kabelsalat/components/plugs/DcPlug.tsx
  • src/scenes/kabelsalat/components/HeaderTimer.tsx
  • src/components/stage/EffectTextureManager.ts
  • src/scenes/kabelsalat/components/KabelsalatBoard.tsx
  • src/components/pregig/GigModifiersBlock.tsx
  • src/components/clinic/ClinicMemberCard.tsx

Comment thread src/utils/catalogEffectUtils.ts
Comment thread src/utils/storage.ts
Comment thread tests/ui/useAmpLogic.test.jsx
Comment thread tests/ui/useRoadieLogic.test.jsx
Comment thread tests/ui/useTourbusLogic.test.jsx
Comment thread tests/useRhythmGameLogicTestUtils.js
@github-actions

Copy link
Copy Markdown

Lint Fix Preview

Target roots:

  • src/

No changes would be made by running either formatting or lint auto-fixes.

Duplicate code

No significant duplicates found (per jscpd thresholds).

@DaFum DaFum merged commit a5b1113 into main May 18, 2026
16 of 23 checks passed
@DaFum DaFum deleted the Audit branch May 18, 2026 15:12
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