Polish kill feed visuals and smoke overlay#41
Conversation
📝 WalkthroughWalkthroughThis PR replaces ad-hoc notification timeouts with a FIFO queue and cancellable timers, refactors popup scheduling and smoke video restart, refreshes CSS theme and notification animations (new keyframes and styles), updates DESTROY_REGEX and per-event handling to be more flexible, gates the demo sample behind ?demo, replaces showNotification with addNotification, adds an end-to-end Jest test for the queue flow, and updates workspace/settings/specials/README data and formatting. Sequence Diagram(s)sequenceDiagram
participant Client
participant NotificationQueue
participant UIPopup
participant SmokeVideo
Client->>NotificationQueue: addNotification(payload)
NotificationQueue->>UIPopup: dequeue & popup(payload)
UIPopup->>UIPopup: schedule onShow timer
UIPopup->>SmokeVideo: reset and play
UIPopup->>UIPopup: schedule hide timer / clear previous timers
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. 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. Comment |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR updates the kill feed UI presentation (colors/animations), refines notification timing/queue behavior, and improves smoke overlay playback behavior while updating event parsing/mappings.
Changes:
- Adjust notification queue behavior (FIFO) and refine animation/playback timers; restart smoke video from the beginning on each notification.
- Update kill feed visuals (CSS + HTML) including a new “DESTROYED” label and video attributes.
- Update event parsing/mappings (regex + special mappings) and change destroyed vehicle identifiers to asset paths.
Reviewed changes
Copilot reviewed 11 out of 14 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/ui.test.ts | Adds a UI test to validate notification queuing + smoke playback timing. |
| src/ui.ts | Changes queue ordering/timings, adds timer cleanup, and resets smoke video playback. |
| src/thunder.ts | Adjusts event loop control flow and switches vehicle identifiers to assetPath. |
| src/main.ts | Uses addNotification for demos and fixes local lang loading promise resolution. |
| src/NotificationFeed.html | Adds action text and updates smoke video attributes for autoplay behavior. |
| src/assets/style.css | Overhauls notification styling, animations, and smoke/ammo visuals. |
| src/lang/locale.ts | Updates destroy event regex to support more complex names/optional groups. |
| src/lang/mappings/specials.json | Adds additional special-case vehicle mappings. |
| src/settings.json | Replaces sample squad settings values and reformats JSON. |
| pnpm-workspace.yaml | Adds allowBuilds configuration entries. |
| src/assets/img/APFSDS.svg | Removes an SVG asset. |
| src/setting/settings.ts | Adds trailing newline. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| const NOTIFICATION_SHOW_INTERVAL = 2 * 1_000; | ||
| /** Queue of not delivered notifications */ | ||
| const notificationQueue: Notification[] = []; | ||
|
|
||
| const notificationTimers: ReturnType<typeof setTimeout>[] = []; | ||
| const NOTIFICATION_TOTAL_INTERVAL = 6 * 1_000; |
| const destroyEvent = langService.parseEventFromRaw(event.msg); | ||
| if (!destroyEvent) { | ||
| // not a destroy message likely an award? | ||
| return; | ||
| continue; | ||
| } | ||
|
|
||
| const killerAvatar = getSquadAvatar(destroyEvent.killer); | ||
| const destroyerTank = destroyEvent.destroyerVehicle.localizedName; | ||
| const destroyedTank = destroyEvent.destroyedVehicle.localizedName; | ||
|
|
||
| const destroyerTank = destroyEvent.destroyerVehicle.assetPath ?? ""; | ||
| const destroyedTank = destroyEvent.destroyedVehicle.assetPath ?? ""; | ||
|
|
||
| logFailedMappings(destroyerTank, destroyedTank, killerAvatar, destroyEvent, event.msg); | ||
|
|
||
| if (!killerAvatar || !destroyerTank || !destroyedTank) { | ||
| // not squad member - ignore or couldn't find image | ||
| return; | ||
| if (!killerAvatar) { | ||
| // not squad member - ignore | ||
| continue; |
|
|
||
| # PNPM approved build scripts | ||
| ignoredBuiltDependencies: | ||
| - esbuild |
| { "username": "cupid00772", "avatar": "cardicon_norman_schwarzkopf" }, | ||
| { "username": "Akula0517", "avatar": "cardicon_metal_santa" } |
| const DESTROY_REGEX = "(.[^(]+) \\((.+)\\) (?:<groundDestroyed>|<planeDestroyed>) ([^(]+) \\((.+)\\)"; | ||
|
|
||
| const DESTROY_REGEX = "(.[^(]+) \\((.+?(?:\\([^)]*\\))?)\\) (?:<groundDestroyed>|<planeDestroyed>) ([^(]+?)(?: \\(([^)]+(?:\\([^)]*\\))?)\\))?$"; | ||
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (2)
src/settings.json (1)
3-6: 💤 Low valueConsider using generic placeholder names for default configuration.
The default squad members now include
cupid00772(the PR author) andAkula0517. For a public project, default configuration files typically use generic placeholder names (e.g.,Player1,Player2, orYourUsername) rather than specific personal usernames.💡 Suggested alternative with generic placeholders
"squad": [ - { "username": "cupid00772", "avatar": "cardicon_norman_schwarzkopf" }, - { "username": "Akula0517", "avatar": "cardicon_metal_santa" } + { "username": "YourUsername", "avatar": "cardicon_default" }, + { "username": "SquadMate", "avatar": "cardicon_default" } ]🤖 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 `@src/settings.json` around lines 3 - 6, The default config currently hardcodes personal usernames in the "squad" array (e.g., "cupid00772", "Akula0517"); replace those entries in src/settings.json with generic placeholders like "Player1" and "Player2" (or "YourUsername") so the "squad" array contains non-personal, example values; ensure the JSON structure and property names ("squad", "username", "avatar") remain unchanged and avatars can remain example strings or be set to null/placeholder values.src/assets/style.css (1)
309-341: 💤 Low valueConsider using percentage notation for consistency.
Stylelint suggests using
0%and100%instead offromandtofor consistency with the intermediate keyframes (24%,64%).♻️ Proposed fix for consistency
`@keyframes` ammo-slide { - from { + 0% { /* Do not hide it fully, because it causes a pop effect, but show it like it would appearing to the eye */ opacity: 0.28; /* Start from left side */ margin-right: 62%; transform: translateY(9px) scale(0.9); filter: brightness(0.9); } 24% { opacity: 1; margin-right: 41%; transform: translateY(1px) scale(1.12); filter: brightness(1.42) drop-shadow(0 0 14px rgb(255 213 132 / 78%)); } 64% { opacity: 1; margin-right: 8%; margin-left: 57%; transform: translateY(-1px) scale(1.07); filter: brightness(1.24) drop-shadow(0 0 10px rgb(255 198 102 / 55%)); } - to { + 100% { opacity: 0.95; /* move it only slightly above center to not go over the tank */ margin-right: 0; margin-left: 74%; transform: translateY(0) scale(1.03); filter: brightness(1.1); } }🤖 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 `@src/assets/style.css` around lines 309 - 341, Replace the keyframe selectors "from" and "to" with percentage notation "0%" and "100%" to match the existing intermediate keyframes (e.g., "24%", "64%"); update the "from" block to "0%" and the "to" block to "100%" while preserving all declarations (opacity, margin-right, margin-left, transform, filter) and spacing so the animation behavior remains identical.
🤖 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 `@pnpm-workspace.yaml`:
- Around line 1-9: Remove the deprecated ignoredBuiltDependencies section and
migrate its intent into allowBuilds: delete the ignoredBuiltDependencies block
entirely and update the allowBuilds map so packages that should not run builds
(esbuild, unrs-resolver) are explicitly set to false while keeping '@swc/core'
set to true; update the allowBuilds entries (symbols: allowBuilds, esbuild,
unrs-resolver, '@swc/core', ignoredBuiltDependencies) accordingly.
In `@src/lang/mappings/specials.json`:
- Line 3: The key "Panczir'-SM-SV" in specials.json is misspelled; update that
object key to "Pantsir SM-SV" so it matches the English mapping and other
transliterations while keeping the same value
{"type":"ground","file":"ussr_pantsyr_sm_sv"}; locate the entry by the key
"Panczir'-SM-SV" and rename it to "Pantsir SM-SV" (no other changes to the
object or file path).
In `@src/thunder.ts`:
- Around line 101-109: The code builds destroyerTank and destroyedTank from
destroyEvent.destroyerVehicle.assetPath /
destroyEvent.destroyedVehicle.assetPath and proceeds to log and enqueue
notifications even when those are empty; update the logic in the block that
calls logFailedMappings and enqueues notifications (using destroyerTank,
destroyedTank, killerAvatar, destroyEvent, event.msg) to validate the asset
paths first — either skip creating the notification when destroyerTank or
destroyedTank is an empty string, or substitute a known default icon path before
logging/enqueuing; ensure the check occurs immediately after computing
destroyerTank/destroyedTank and before calling logFailedMappings or any
notification-enqueue code so incomplete notifications are not produced.
In `@src/ui.ts`:
- Line 35: Remove the unused constant NOTIFICATION_SHOW_INTERVAL from the file:
locate the declaration "const NOTIFICATION_SHOW_INTERVAL = 2 * 1_000;" and
delete it so the module only uses NOTIFICATION_TOTAL_INTERVAL for notification
timing; ensure no other references to NOTIFICATION_SHOW_INTERVAL remain (search
for the symbol) and run tests/lint to confirm no unused-variable warnings.
---
Nitpick comments:
In `@src/assets/style.css`:
- Around line 309-341: Replace the keyframe selectors "from" and "to" with
percentage notation "0%" and "100%" to match the existing intermediate keyframes
(e.g., "24%", "64%"); update the "from" block to "0%" and the "to" block to
"100%" while preserving all declarations (opacity, margin-right, margin-left,
transform, filter) and spacing so the animation behavior remains identical.
In `@src/settings.json`:
- Around line 3-6: The default config currently hardcodes personal usernames in
the "squad" array (e.g., "cupid00772", "Akula0517"); replace those entries in
src/settings.json with generic placeholders like "Player1" and "Player2" (or
"YourUsername") so the "squad" array contains non-personal, example values;
ensure the JSON structure and property names ("squad", "username", "avatar")
remain unchanged and avatars can remain example strings or be set to
null/placeholder values.
🪄 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: CHILL
Plan: Pro
Run ID: 0205aff2-d27a-4549-867f-1e6ce1b54a90
⛔ Files ignored due to path filters (2)
src/assets/img/APFSDS.svgis excluded by!**/*.svgsrc/assets/vid/smoke.webmis excluded by!**/*.webm
📒 Files selected for processing (12)
pnpm-workspace.yamlsrc/NotificationFeed.htmlsrc/assets/style.csssrc/lang/locale.tssrc/lang/mappings/english.jsonsrc/lang/mappings/specials.jsonsrc/main.tssrc/setting/settings.tssrc/settings.jsonsrc/thunder.tssrc/ui.tstests/ui.test.ts
📜 Review details
🧰 Additional context used
🪛 Stylelint (17.11.0)
src/assets/style.css
[error] 309-309: Expected "from" to be "0%" (keyframe-selector-notation)
(keyframe-selector-notation)
[error] 333-333: Expected "to" to be "100%" (keyframe-selector-notation)
(keyframe-selector-notation)
🔇 Additional comments (17)
src/setting/settings.ts (1)
83-83: LGTM!src/ui.ts (6)
42-49: LGTM!
66-66: LGTM!
75-75: LGTM!
93-95: LGTM!
174-197: LGTM!
212-219: LGTM!src/assets/style.css (4)
17-21: LGTM!Also applies to: 34-36
79-137: LGTM!
140-189: LGTM!
193-372: LGTM!src/NotificationFeed.html (2)
34-34: LGTM!
37-37: LGTM!src/thunder.ts (1)
96-96: LGTM!src/main.ts (1)
1-1: LGTM!Also applies to: 50-50, 64-67, 81-81
tests/ui.test.ts (1)
1-137: LGTM!src/lang/locale.ts (1)
15-16: Regex pattern verified against battle log samples.The regex correctly matches all battle log destroy event patterns, including:
- Messages with clan tags:
"-GFF7- Somebody (IT-1) zerstört -GFF7- CassualTux (Magach 6M)"- Nested parentheses in vehicle names:
"(XM1 (GM))"and"(Class 3 (P))"- Both ground and air destroy triggers:
zerstörtandabgeschossen- Optional killed player vehicle segments
Group extraction works correctly for all cases.
| allowBuilds: | ||
| '@swc/core': true | ||
| esbuild: true | ||
| unrs-resolver: true | ||
|
|
||
| # PNPM approved build scripts | ||
| ignoredBuiltDependencies: | ||
| - esbuild | ||
| - unrs-resolver |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What is the difference between allowBuilds and ignoredBuiltDependencies in pnpm-workspace.yaml configuration?
💡 Result:
In pnpm-workspace.yaml, allowBuilds and ignoredBuiltDependencies are both about whether pnpm will run a package’s “build” scripts during install—but ignoredBuiltDependencies was an older/removed setting, while allowBuilds is the current one. 1) allowBuilds (current setting) - allowBuilds is a map of package matchers to explicitly allow (true) or disallow (false) script execution. [1] - Default behavior: packages not listed are disallowed by default, with an error printed (because strictDepBuilds is true by default). [1] - During install, pnpm may add placeholders for ignored builds that aren’t yet listed in allowBuilds into pnpm-workspace.yaml so you can decide what to do (set them to true/false). [1] - pnpm approve-builds writes entries into allowBuilds in pnpm-workspace.yaml (true for approved, false for unapproved). [2] 2) ignoredBuiltDependencies (older/removed setting) - pnpm’s documentation says that ignoredBuiltDependencies (along with other older settings like onlyBuiltDependencies / neverBuiltDependencies / ignoreDepScripts) was removed in v11 and replaced by allowBuilds. [1] So the practical difference is: - You should use allowBuilds going forward (v11+). It is the mechanism to “allow or deny builds per package” via a true/false map. [1] - ignoredBuiltDependencies is not the supported modern config key; it was replaced by allowBuilds in pnpm v11+. [1] If you were migrating an older pnpm-workspace.yaml that used ignoredBuiltDependencies, the equivalent is to put those same package matchers in allowBuilds with a false value (i.e., allowBuilds: { : false }). This equivalence is reflected by pnpm removing ignoredBuiltDependencies and documenting allowBuilds as its replacement. [1]
Citations:
Remove the deprecated ignoredBuiltDependencies configuration.
The ignoredBuiltDependencies section (lines 7-9) is deprecated and was removed in pnpm v11+. It has been replaced by allowBuilds.
To modernize this configuration, remove the ignoredBuiltDependencies section entirely. If esbuild and unrs-resolver should not run builds, set them to false in allowBuilds instead:
allowBuilds:
'@swc/core': true
esbuild: false
unrs-resolver: false
🤖 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 `@pnpm-workspace.yaml` around lines 1 - 9, Remove the deprecated
ignoredBuiltDependencies section and migrate its intent into allowBuilds: delete
the ignoredBuiltDependencies block entirely and update the allowBuilds map so
packages that should not run builds (esbuild, unrs-resolver) are explicitly set
to false while keeping '@swc/core' set to true; update the allowBuilds entries
(symbols: allowBuilds, esbuild, unrs-resolver, '@swc/core',
ignoredBuiltDependencies) accordingly.
| } | ||
| } | ||
| "☢Canberra B Mk 6": { "type": "air", "file": "canberra_bimk6" }, | ||
| "Panczir'-SM-SV": { "type": "ground", "file": "ussr_pantsyr_sm_sv" }, |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Search for both spelling variations to understand which is used
echo "=== Searching for 'Panczir' ==="
rg -i "panczir" --type=json --type=ts
echo "=== Searching for 'Pantsir' ==="
rg -i "pantsir" --type=json --type=ts
echo "=== Searching for 'Pantsyr' ==="
rg -i "pantsyr" --type=json --type=tsRepository: TuxCoding/ThunderOverlay
Length of output: 3153
Update the vehicle name key to match the English translation.
The key "Panczir'-SM-SV" in specials.json should be "Pantsir SM-SV" to match the English translation in english.json. Both map to the same file path ussr_pantsyr_sm_sv, but the spelling should be consistent across language mappings. "Pantsir" is the standard transliteration used for all other variants of this weapon system in the codebase.
🤖 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 `@src/lang/mappings/specials.json` at line 3, The key "Panczir'-SM-SV" in
specials.json is misspelled; update that object key to "Pantsir SM-SV" so it
matches the English mapping and other transliterations while keeping the same
value {"type":"ground","file":"ussr_pantsyr_sm_sv"}; locate the entry by the key
"Panczir'-SM-SV" and rename it to "Pantsir SM-SV" (no other changes to the
object or file path).
| const destroyerTank = destroyEvent.destroyerVehicle.assetPath ?? ""; | ||
| const destroyedTank = destroyEvent.destroyedVehicle.assetPath ?? ""; | ||
|
|
||
| logFailedMappings(destroyerTank, destroyedTank, killerAvatar, destroyEvent, event.msg); | ||
|
|
||
| if (!killerAvatar || !destroyerTank || !destroyedTank) { | ||
| // not squad member - ignore or couldn't find image | ||
| return; | ||
| if (!killerAvatar) { | ||
| // not squad member - ignore | ||
| continue; | ||
| } |
There was a problem hiding this comment.
Consider validating tank asset paths before creating notifications.
The code now derives tank identifiers from assetPath with empty-string fallbacks and only checks killerAvatar before creating notifications. This means notifications can be enqueued with missing tank icons (destroyerTank or destroyedTank as empty strings), which may result in incomplete visual displays.
While ui.ts has error handlers that hide broken images, users might still see notifications with missing vehicle icons. Consider whether this is the intended behavior or if tank asset validation should be added.
🛡️ Optional validation to prevent incomplete notifications
logFailedMappings(destroyerTank, destroyedTank, killerAvatar, destroyEvent, event.msg);
- if (!killerAvatar) {
+ if (!killerAvatar || !destroyerTank || !destroyedTank) {
// not squad member - ignore
continue
}🤖 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 `@src/thunder.ts` around lines 101 - 109, The code builds destroyerTank and
destroyedTank from destroyEvent.destroyerVehicle.assetPath /
destroyEvent.destroyedVehicle.assetPath and proceeds to log and enqueue
notifications even when those are empty; update the logic in the block that
calls logFailedMappings and enqueues notifications (using destroyerTank,
destroyedTank, killerAvatar, destroyEvent, event.msg) to validate the asset
paths first — either skip creating the notification when destroyerTank or
destroyedTank is an empty string, or substitute a known default icon path before
logging/enqueuing; ensure the check occurs immediately after computing
destroyerTank/destroyedTank and before calling logFailedMappings or any
notification-enqueue code so incomplete notifications are not produced.
|
|
||
| const NOTIFICATION_SHOW_INTERVAL = 10 * 1_000; | ||
|
|
||
| const NOTIFICATION_SHOW_INTERVAL = 2 * 1_000; |
There was a problem hiding this comment.
Remove unused constant.
NOTIFICATION_SHOW_INTERVAL is defined but never used in the file. The notification timing now uses NOTIFICATION_TOTAL_INTERVAL exclusively.
🧹 Proposed fix
-const NOTIFICATION_SHOW_INTERVAL = 2 * 1_000;
/** Queue of not delivered notifications */
const notificationQueue: Notification[] = [];📝 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.
| const NOTIFICATION_SHOW_INTERVAL = 2 * 1_000; | |
| /** Queue of not delivered notifications */ | |
| const notificationQueue: Notification[] = []; |
🤖 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 `@src/ui.ts` at line 35, Remove the unused constant NOTIFICATION_SHOW_INTERVAL
from the file: locate the declaration "const NOTIFICATION_SHOW_INTERVAL = 2 *
1_000;" and delete it so the module only uses NOTIFICATION_TOTAL_INTERVAL for
notification timing; ensure no other references to NOTIFICATION_SHOW_INTERVAL
remain (search for the symbol) and run tests/lint to confirm no unused-variable
warnings.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
README.md (1)
108-109: ⚡ Quick winUse cross-platform relative paths in setup steps.
Lines 108-109 use leading
\...paths, which can be read as absolute paths on Unix-like systems and are less portable in docs.Suggested doc fix
-3. Configure your squad members by editing `\src\settings.json` -4. add all kinds of warthunder vehicle into `\src\assets\img\vehicles`(AI is very useful) +3. Configure your squad members by editing `src/settings.json` +4. Add vehicle images to `src/assets/img/vehicles` (AI upscaling/search tools can help)🤖 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 `@README.md` around lines 108 - 109, The README setup steps use Windows-style leading backslash paths ("\src\settings.json" and "\src\assets\img\vehicles") which are non-portable; update those entries to use cross-platform relative paths with forward slashes (e.g., "src/settings.json" and "src/assets/img/vehicles") so the instructions work on Unix-like and Windows environments and avoid being interpreted as absolute paths.
🤖 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 `@README.md`:
- Line 26: Update the README.md documentation to reference the correct mappings
filename: replace the incorrect "special.json" string with "specials.json" so
links and instructions point to the existing mappings file; ensure the textual
mention in README.md now matches the actual file name "specials.json".
---
Nitpick comments:
In `@README.md`:
- Around line 108-109: The README setup steps use Windows-style leading
backslash paths ("\src\settings.json" and "\src\assets\img\vehicles") which are
non-portable; update those entries to use cross-platform relative paths with
forward slashes (e.g., "src/settings.json" and "src/assets/img/vehicles") so the
instructions work on Unix-like and Windows environments and avoid being
interpreted as absolute paths.
🪄 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: CHILL
Plan: Pro
Run ID: 1b20a67f-a990-4e71-af60-3c822a45d81c
📒 Files selected for processing (2)
README.mdsrc/settings.json
📜 Review details
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~245-~245: Consider a more concise word here.
Context: ...nd is keyed out to add an alpha channel in order to make it transparent as well. ## Credit...
(IN_ORDER_TO_PREMIUM)
🔇 Additional comments (1)
src/settings.json (1)
2-20: LGTM!
| - Helicopter | ||
| - Navy | ||
| - Nukes and drones too ;) | ||
| - Nukes and drones too ;) (Manually added in `ThunderOverlay\src\lang\mappings\special.json`) |
There was a problem hiding this comment.
Fix incorrect mapping filename in docs.
Line 26 points to special.json, but the mappings file is specials.json. This will send users to a non-existent path.
Suggested doc fix
- - Nukes and drones too ;) (Manually added in `ThunderOverlay\src\lang\mappings\special.json`)
+ - Nukes and drones too ;) (Manually added in `ThunderOverlay/src/lang/mappings/specials.json`)📝 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.
| - Nukes and drones too ;) (Manually added in `ThunderOverlay\src\lang\mappings\special.json`) | |
| - Nukes and drones too ;) (Manually added in `ThunderOverlay/src/lang/mappings/specials.json`) |
🤖 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 `@README.md` at line 26, Update the README.md documentation to reference the
correct mappings filename: replace the incorrect "special.json" string with
"specials.json" so links and instructions point to the existing mappings file;
ensure the textual mention in README.md now matches the actual file name
"specials.json".
Summary of your change
Related issue
Summary by CodeRabbit
New Features
?demoURL parameterBug Fixes
Style
Documentation
Tests