-
Notifications
You must be signed in to change notification settings - Fork 1
Add some idle gmaes #455
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add some idle gmaes #455
Conversation
WalkthroughAdds three new games to the catalog and introduces full static app bundles for each (Idle Chopper, Idle Dices, Idle Idle GameDev), including HTML entrypoints, manifests, assets (atlases, fonts, data), and generated service workers for offline caching. No code API changes; data and static assets only. Changes
Sequence Diagram(s)sequenceDiagram
participant U as User
participant B as Browser
participant H as index.html
participant A as app.js
participant P as preload.json
participant R as Assets
U->>B: Navigate to game URL
B->>H: Load HTML
H->>A: onload init()
A->>P: Fetch preload manifest
A->>R: Preload atlases/fonts/sounds/images
A-->>B: Render canvas/UI
sequenceDiagram
participant B as Browser
participant SW as Service Worker
participant C as Cache
participant N as Network
B->>SW: fetch(request)
SW->>C: match(cacheKey)
alt Cache hit
C-->>SW: response
SW-->>B: respond with cache
else Miss
SW->>N: fetch(request)
N-->>SW: response (200)
SW->>C: put(cacheKey, cleanResponse)
SW-->>B: respond with network
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested reviewers
✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
Status, Documentation and Community
|
nathblade16
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Works
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 16
🧹 Nitpick comments (17)
static/_app/tools/idle-dices/assets/img/ingame.json (1)
731-739: Consider content-hashed filenames for cache bustingIf not already handled by the service worker/revisioning, prefer content-hashed asset filenames (e.g., ingame..png/json) to guarantee efficient cache invalidation on updates.
static/_app/tools/idle-idle-gamedev/css/baseStyle.css (2)
339-347: Gradient direction + shorthand override warning (intentional fallback OK if desired)
- Use a valid angle for the gradient.
- If the background color is intended as a fallback, keep it; otherwise remove redundancy to satisfy the linter.
- background-color: #fff; - background: linear-gradient(0,cadetblue,darkcyan); + /* fallback color for older browsers */ + background-color: #fff; + background: linear-gradient(0deg, cadetblue, darkcyan);
239-246: Border shorthand overrides prior border-color; consolidate to a single declarationThe later "border" resets color and width, making "border-color: white!important" redundant. Consolidate to avoid confusion and satisfy linters.
.btn{ padding: 0.5vh; margin: 0.5vh; border-radius: 1vh; - border-color: white!important; - font-size: 1.6vh; - border: 0.1vh solid white; + border: 0.1vh solid white !important; + font-size: 1.6vh; }static/_app/tools/idle-idle-gamedev/css/bootstrap-vue.css (1)
99-143: Third-party CSS provenance: add license/attribution header.This section notes derivation from external sources (Bootstrap-Vue issue/workaround; a blog). Ensure licensing/compliance by adding a provenance header to this file (or consolidating attribution in a central NOTICE file) per repo policy.
Suggested header at the top of the file:
+/* + * Contains styling derived from: + * - Bootstrap-Vue (workaround for issue #1560) + * - "A Responsive Accessible Table" (adrianroselli.com) + * Please ensure appropriate LICENSE/NOTICE entries are present. + */static/_app/tools/idle-dices/manifest.json (1)
1-52: Optional: include a maskable icon for better Android UI integration.If available, add a maskable variant (with safe padding) to avoid clipping on Android adaptive icons.
Would you like me to scan the repo for maskable icon assets and propose an update?
static/_app/tools/idle-chopper/index.html (1)
18-26: Fix CSS font-family fallback listThe declaration uses a single font family token with a space, which won’t match either Verdana or monospace. Use a comma-separated fallback list.
Apply this diff:
- font-family: Verdana monospace; + font-family: Verdana, monospace;static/_app/tools/idle-dices/index.html (3)
1-1: Avoid loading Cordova in web context or gate it gracefullyIncluding cordova.js in a non-Cordova environment generally 404s and can cause noisy errors. If Cordova builds are needed, consider runtime-gating or dynamically injecting only in that environment.
Apply this minimal change to avoid blocking parsing while keeping compatibility:
-<script src=cordova.js></script> +<script src=cordova.js defer></script>Optionally, handle absence in app.js:
if (!window.cordova) { // Cordova not available in web context; skip Cordova-specific setup }
1-1: Improve accessibility of viewport settingsDisallowing zoom with user-scalable=no harms accessibility. Also consider specifying width=device-width.
-<meta name=viewport content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1"> +<meta name=viewport content="initial-scale=1, width=device-width">
1-1: Defer non-critical scripts to reduce main-thread blocking during parseDefer the local app script and the third-party SDK to improve first paint; body onload=init() will still fire after scripts execute.
-<script src=js/app.js></script><script src=https://sdk.crazygames.com/crazygames-sdk-v1.js></script> +<script src=js/app.js defer></script><script src=https://sdk.crazygames.com/crazygames-sdk-v1.js defer></script>static/_app/tools/idle-dices/service-worker.js (2)
230-239: No navigation fallback configured for SPA-style routesnavigateFallback is empty, so navigations to deep links will miss offline. If the app uses client-side routing, set navigateFallback to './index.html' and define an allowlist.
// In generator config, not this generated file: navigateFallback: '/_app/tools/idle-dices/index.html', navigateFallbackWhitelist: [/^\/_app\/tools\/idle-dices\/.*/],
44-44: Consider ignoring more tracking parametersOnly /^utm_/ is ignored. Real-world traffic often includes fbclid, gclid, ref, source, etc., which can cause cache misses.
// In generator config: ignoreUrlParametersMatching: [/^utm_/, /^fbclid$/, /^gclid$/, /^ref$/, /^source$/],static/_app/tools/idle-chopper/service-worker.js (2)
230-239: Add navigation fallback for offline navigationsIf the app uses client-side routing or deep links, configure navigateFallback to index.html in the generator config to serve the shell offline.
// generator config navigateFallback: '/_app/tools/idle-chopper/index.html', navigateFallbackWhitelist: [/^\/_app\/tools\/idle-chopper\/.*/],
44-44: Expand ignored URL parameters to reduce cache fragmentationInclude common campaign params beyond utm_ to avoid duplicate cache entries.
ignoreUrlParametersMatching: [/^utm_/, /^fbclid$/, /^gclid$/, /^ref$/, /^source$/],static/_app/tools/idle-idle-gamedev/index.html (2)
1-1: Defer blocking scriptsDefer both app.js and the CrazyGames SDK to avoid blocking parse; body onload still fires after script execution.
-<script src=js/app.js></script><script src=https://sdk.crazygames.com/crazygames-sdk-v1.js></script> +<script src=js/app.js defer></script><script src=https://sdk.crazygames.com/crazygames-sdk-v1.js defer></script>
1-1: Viewport: allow zoom for accessibilityAvoid user-scalable=no; it reduces accessibility. Height=device-height is rarely needed and can cause issues.
-<meta name=viewport content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"> +<meta name=viewport content="initial-scale=1, width=device-width">static/_app/tools/idle-idle-gamedev/service-worker.js (2)
230-239: No navigation fallback configuredFor SPA routes or deep links, set navigateFallback to index.html in the generator config.
// generator config navigateFallback: '/_app/tools/idle-idle-gamedev/index.html', navigateFallbackWhitelist: [/^\/_app\/tools\/idle-idle-gamedev\/.*/],
44-44: Ignore more tracking params to improve cache hit rateBroaden ignoreUrlParametersMatching to avoid cache misses due to fbclid/gclid/etc.
ignoreUrlParametersMatching: [/^utm_/, /^fbclid$/, /^gclid$/, /^ref$/, /^source$/],
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (175)
static/_app/tools/idle-chopper/assets/fonts/cousine-regular-webfont.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-chopper/assets/fonts/cousine-regular-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-chopper/assets/fonts/cousine-regular-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-chopper/assets/fonts/roboto-thin-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-chopper/assets/fonts/roboto-thin-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-chopper/assets/fonts/robotomono-thin-webfont.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-chopper/assets/fonts/robotomono-thin-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-chopper/assets/fonts/robotomono-thin-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-chopper/assets/img/icon/icon128.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/icon/icon168.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/icon/icon192.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/icon/icon256.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/icon/icon32.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/icon/icon512.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/icon/icon64.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/icon/icon96.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/ingame.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/img/ui.pngis excluded by!**/*.pngstatic/_app/tools/idle-chopper/assets/sounds/1.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/1.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/10.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/10.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/11.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/11.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/12.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/12.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/13.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/13.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/2.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/2.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/3.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/3.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/4.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/4.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/5.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/5.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/6.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/6.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/7.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/7.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/8.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/8.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/9.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/9.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/bird1.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/bird1.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/bird2.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/bird2.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/button.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/button.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/crow1.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/crow1.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/crow2.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/crow2.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/desertwind.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/desertwind.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/eagle.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/eagle.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/fall.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/fall.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/get.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/get.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/insects.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/insects.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/insects2.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/insects2.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/levelup.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/levelup.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/monkey1.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/monkey1.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/monkey2.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/monkey2.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/snake.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/snake.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/step.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/step.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/success.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/success.oggis excluded by!**/*.oggstatic/_app/tools/idle-chopper/assets/sounds/wind.m4ais excluded by!**/*.m4astatic/_app/tools/idle-chopper/assets/sounds/wind.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/fonts/cousine-regular-webfont.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-dices/assets/fonts/cousine-regular-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-dices/assets/fonts/cousine-regular-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-dices/assets/fonts/roboto-medium-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-dices/assets/fonts/roboto-medium-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-dices/assets/fonts/roboto-thin-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-dices/assets/fonts/roboto-thin-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-dices/assets/fonts/robotomono-thin-webfont.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-dices/assets/fonts/robotomono-thin-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-dices/assets/fonts/robotomono-thin-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-dices/assets/img/bg/backgroun2.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/bg/background.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/bg/tileable.jpgis excluded by!**/*.jpgstatic/_app/tools/idle-dices/assets/img/font/font.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/font/outline_0.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/font/regular_0.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon128.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon168.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon192.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon256.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon32.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon512.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon64.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/icon/icon96.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/ingame.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/screen.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/smallicon/Element 424.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/smallicon/smallIcon24.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/smallicon/smallIcon36.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/smallicon/smallIcon48.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/smallicon/smallIcon72.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/smallicon/smallIcon96.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/ui.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/img/whiteSquare.pngis excluded by!**/*.pngstatic/_app/tools/idle-dices/assets/sounds/button.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/button.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/dice.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/dice.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/music.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/music.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/spin.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/spin.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/success.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/success.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/success2.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/success2.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/success3.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/success3.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/success4.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/success4.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/success5.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/success5.oggis excluded by!**/*.oggstatic/_app/tools/idle-dices/assets/sounds/success6.m4ais excluded by!**/*.m4astatic/_app/tools/idle-dices/assets/sounds/success6.oggis excluded by!**/*.oggstatic/_app/tools/idle-idle-gamedev/assets/fonts/cousine-regular-webfont.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-idle-gamedev/assets/fonts/cousine-regular-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-idle-gamedev/assets/fonts/cousine-regular-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-idle-gamedev/assets/fonts/roboto-thin-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-idle-gamedev/assets/fonts/roboto-thin-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-idle-gamedev/assets/fonts/robotomono-thin-webfont.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-idle-gamedev/assets/fonts/robotomono-thin-webfont.woffis excluded by!**/*.woffstatic/_app/tools/idle-idle-gamedev/assets/fonts/robotomono-thin-webfont.woff2is excluded by!**/*.woff2static/_app/tools/idle-idle-gamedev/assets/img/bg/tileable.jpgis excluded by!**/*.jpgstatic/_app/tools/idle-idle-gamedev/assets/img/crazygames.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/font/outline_0.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/font/regular_0.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon128.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon168.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon192.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon256.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon32.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon512.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon64.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/icon/icon96.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/ingame.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/lutsgameslogo.svgis excluded by!**/*.svgstatic/_app/tools/idle-idle-gamedev/assets/img/ui.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/img/whiteSquare.pngis excluded by!**/*.pngstatic/_app/tools/idle-idle-gamedev/assets/sounds/button.m4ais excluded by!**/*.m4astatic/_app/tools/idle-idle-gamedev/assets/sounds/button.oggis excluded by!**/*.oggstatic/_app/tools/idle-idle-gamedev/webfonts/fa-brands-400.eotis excluded by!**/*.eotstatic/_app/tools/idle-idle-gamedev/webfonts/fa-brands-400.svgis excluded by!**/*.svgstatic/_app/tools/idle-idle-gamedev/webfonts/fa-brands-400.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-idle-gamedev/webfonts/fa-brands-400.woffis excluded by!**/*.woffstatic/_app/tools/idle-idle-gamedev/webfonts/fa-brands-400.woff2is excluded by!**/*.woff2static/_app/tools/idle-idle-gamedev/webfonts/fa-regular-400.eotis excluded by!**/*.eotstatic/_app/tools/idle-idle-gamedev/webfonts/fa-regular-400.svgis excluded by!**/*.svgstatic/_app/tools/idle-idle-gamedev/webfonts/fa-regular-400.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-idle-gamedev/webfonts/fa-regular-400.woffis excluded by!**/*.woffstatic/_app/tools/idle-idle-gamedev/webfonts/fa-regular-400.woff2is excluded by!**/*.woff2static/_app/tools/idle-idle-gamedev/webfonts/fa-solid-900.eotis excluded by!**/*.eotstatic/_app/tools/idle-idle-gamedev/webfonts/fa-solid-900.svgis excluded by!**/*.svgstatic/_app/tools/idle-idle-gamedev/webfonts/fa-solid-900.ttfis excluded by!**/*.ttfstatic/_app/tools/idle-idle-gamedev/webfonts/fa-solid-900.woffis excluded by!**/*.woffstatic/_app/tools/idle-idle-gamedev/webfonts/fa-solid-900.woff2is excluded by!**/*.woff2
📒 Files selected for processing (37)
src/lib/gmaes.ts(1 hunks)static/_app/tools/idle-chopper/assets/img/ingame.json(1 hunks)static/_app/tools/idle-chopper/assets/img/ui.json(1 hunks)static/_app/tools/idle-chopper/data/config.json(1 hunks)static/_app/tools/idle-chopper/data/preload.json(1 hunks)static/_app/tools/idle-chopper/data/text.json(1 hunks)static/_app/tools/idle-chopper/index.html(1 hunks)static/_app/tools/idle-chopper/manifest.json(1 hunks)static/_app/tools/idle-chopper/service-worker.js(1 hunks)static/_app/tools/idle-dices/assets/img/font/font.fnt(1 hunks)static/_app/tools/idle-dices/assets/img/font/outline.fnt(1 hunks)static/_app/tools/idle-dices/assets/img/font/regular.fnt(1 hunks)static/_app/tools/idle-dices/assets/img/ingame.json(1 hunks)static/_app/tools/idle-dices/assets/img/ui.json(1 hunks)static/_app/tools/idle-dices/data/changelog.json(1 hunks)static/_app/tools/idle-dices/data/config.json(1 hunks)static/_app/tools/idle-dices/data/preload.json(1 hunks)static/_app/tools/idle-dices/data/text.json(1 hunks)static/_app/tools/idle-dices/index.html(1 hunks)static/_app/tools/idle-dices/manifest.json(1 hunks)static/_app/tools/idle-dices/service-worker.js(1 hunks)static/_app/tools/idle-idle-gamedev/assets/img/font/outline.fnt(1 hunks)static/_app/tools/idle-idle-gamedev/assets/img/font/regular.fnt(1 hunks)static/_app/tools/idle-idle-gamedev/assets/img/ingame.json(1 hunks)static/_app/tools/idle-idle-gamedev/assets/img/ui.json(1 hunks)static/_app/tools/idle-idle-gamedev/css/baseStyle.css(1 hunks)static/_app/tools/idle-idle-gamedev/css/bootstrap-vue.css(1 hunks)static/_app/tools/idle-idle-gamedev/css/fontawesome.css(1 hunks)static/_app/tools/idle-idle-gamedev/css/style.css(1 hunks)static/_app/tools/idle-idle-gamedev/css/tooltip.css(1 hunks)static/_app/tools/idle-idle-gamedev/data/changelog.json(1 hunks)static/_app/tools/idle-idle-gamedev/data/config.json(1 hunks)static/_app/tools/idle-idle-gamedev/data/preload.json(1 hunks)static/_app/tools/idle-idle-gamedev/data/text.json(1 hunks)static/_app/tools/idle-idle-gamedev/index.html(1 hunks)static/_app/tools/idle-idle-gamedev/manifest.json(1 hunks)static/_app/tools/idle-idle-gamedev/service-worker.js(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.*
⚙️ CodeRabbit Configuration File
**/*.*: Do not correct spelling errors or grammar mistakes.
Files:
static/_app/tools/idle-idle-gamedev/data/config.jsonstatic/_app/tools/idle-dices/data/text.jsonstatic/_app/tools/idle-dices/manifest.jsonstatic/_app/tools/idle-idle-gamedev/assets/img/font/regular.fntstatic/_app/tools/idle-idle-gamedev/assets/img/ui.jsonstatic/_app/tools/idle-idle-gamedev/assets/img/ingame.jsonstatic/_app/tools/idle-idle-gamedev/css/tooltip.cssstatic/_app/tools/idle-dices/assets/img/ui.jsonstatic/_app/tools/idle-chopper/data/preload.jsonstatic/_app/tools/idle-dices/assets/img/font/font.fntstatic/_app/tools/idle-dices/service-worker.jsstatic/_app/tools/idle-idle-gamedev/data/changelog.jsonstatic/_app/tools/idle-chopper/index.htmlstatic/_app/tools/idle-idle-gamedev/css/baseStyle.cssstatic/_app/tools/idle-idle-gamedev/assets/img/font/outline.fntstatic/_app/tools/idle-chopper/data/text.jsonstatic/_app/tools/idle-dices/data/preload.jsonstatic/_app/tools/idle-chopper/manifest.jsonstatic/_app/tools/idle-idle-gamedev/data/preload.jsonstatic/_app/tools/idle-dices/index.htmlstatic/_app/tools/idle-chopper/assets/img/ingame.jsonstatic/_app/tools/idle-dices/assets/img/font/regular.fntstatic/_app/tools/idle-idle-gamedev/manifest.jsonstatic/_app/tools/idle-chopper/service-worker.jsstatic/_app/tools/idle-idle-gamedev/css/bootstrap-vue.cssstatic/_app/tools/idle-dices/assets/img/font/outline.fntstatic/_app/tools/idle-idle-gamedev/index.htmlstatic/_app/tools/idle-chopper/data/config.jsonstatic/_app/tools/idle-chopper/assets/img/ui.jsonstatic/_app/tools/idle-idle-gamedev/data/text.jsonstatic/_app/tools/idle-dices/data/config.jsonsrc/lib/gmaes.tsstatic/_app/tools/idle-dices/data/changelog.jsonstatic/_app/tools/idle-dices/assets/img/ingame.jsonstatic/_app/tools/idle-idle-gamedev/css/style.cssstatic/_app/tools/idle-idle-gamedev/service-worker.jsstatic/_app/tools/idle-idle-gamedev/css/fontawesome.css
🪛 Biome (2.1.2)
static/_app/tools/idle-idle-gamedev/css/baseStyle.css
[error] 302-302: Expected a declaration, or an at rule but instead found '//'.
Expected a declaration, or an at rule here.
(parse)
[error] 230-230: Unexpected nonstandard direction
You should fix the direction value to follow the syntax.
See MDN web docs for more details.
(lint/correctness/noInvalidDirectionInLinearGradient)
[error] 245-245: Unexpected shorthand property border after border-color
(lint/suspicious/noShorthandPropertyOverrides)
[error] 345-345: Unexpected shorthand property background after background-color
(lint/suspicious/noShorthandPropertyOverrides)
[error] 345-345: Unexpected nonstandard direction
You should fix the direction value to follow the syntax.
See MDN web docs for more details.
(lint/correctness/noInvalidDirectionInLinearGradient)
[error] 320-320: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
display is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
static/_app/tools/idle-idle-gamedev/css/style.css
[error] 55-55: Unexpected nonstandard direction
You should fix the direction value to follow the syntax.
See MDN web docs for more details.
(lint/correctness/noInvalidDirectionInLinearGradient)
[error] 72-72: Unexpected nonstandard direction
You should fix the direction value to follow the syntax.
See MDN web docs for more details.
(lint/correctness/noInvalidDirectionInLinearGradient)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: build
- GitHub Check: Cloudflare Pages
🔇 Additional comments (38)
static/_app/tools/idle-idle-gamedev/data/config.json (2)
1-6: LGTM — minimal, valid JSON configNo structural issues identified.
2-5: Confirm parsing of 0x-prefixed color stringsWe searched the repo for any code consuming
"0x…"color values and didn’t find parsing logic. The config files under
- static/_app/tools/idle-idle-gamedev/data/config.json
- static/_app/tools/idle-chopper/data/config.json
- static/_app/tools/idle-dices/data/config.json
still define colors as strings like
"0x8b628a". JSON.parse will give you a JS string"0x8b628a", but neither CSS nor canvas APIs accept that format directly (they expect"#rrggbb"or numeric RGB(A) values).Please verify that wherever you read these config colors you convert them appropriately—for example:
• UseparseInt(colorString, 16)to get a number, thendecimalToRgbor bit-shift to build anr,g,bobject.
• Or prepend"#"and pass to CSS:"#" + colorString.slice(2).If no such parsing exists, either add it where you load the config or switch the JSON values to
"#rrggbb"syntax.static/_app/tools/idle-dices/data/changelog.json (1)
1-520: changelog.json is valid JSON
The file has been sanity-checked withjqand is well-formed; no further action is required.static/_app/tools/idle-idle-gamedev/data/changelog.json (1)
1-134: LGTM — structured, coherent changelogThe structure is consistent and consumable by typical changelog renderers.
static/_app/tools/idle-idle-gamedev/assets/img/font/regular.fnt (2)
1-281: LGTM — standard BMFont XMLLooks consistent with BMFont exports and expected metrics.
5-9: Font asset verification passed
- Glyph count (271) matches the declared count in
regular.fnt.- Texture page
regular_0.pngis present underassets/img/font/.- Preload entries found in
service-worker.jsprecacheConfig and indata/preload.json.No further action required.
static/_app/tools/idle-idle-gamedev/assets/img/font/outline.fnt (2)
1-281: LGTM — outline variant matches regular metricsNo structural issues; aligns with the regular font.
3-7: ✅ Outline font asset presence and glyph count consistency verified
- Found
outline_0.pnginstatic/_app/tools/idle-idle-gamedev/assets/img/font/- Declared glyph count (271) matches actual
<char>entries inoutline.fntNo further action required.
static/_app/tools/idle-idle-gamedev/assets/img/ui.json (2)
1-242: LGTM — atlas structure looks standardFrame entries and meta are consistent with TexturePacker output.
243-251: Preload and Cache Validation for UI Atlas ConfirmedAll checks passed—no missing assets or references:
- static/_app/tools/idle-idle-gamedev/assets/img/ui.json is valid JSON.
- static/_app/tools/idle-idle-gamedev/assets/img/ui.png exists.
- Both ui.json and ui.png are included in the
precacheConfigin service-worker.js.No further action required.
static/_app/tools/idle-dices/assets/img/font/regular.fnt (2)
1-281: LGTM — BMFont descriptor looks correctNo structural or integrity issues noted.
5-9: Font assets and references are correctly configured ✅
regular_0.pngis present.- Glyph count in
regular.fntmatches the declared count (271).data/preload.jsonincludes the"regular"font entry.service-worker.js’s precache list contains./assets/img/font/regular_0.png.No further action required.
static/_app/tools/idle-idle-gamedev/assets/img/ingame.json (1)
1-1428: Atlas manifest looks good and consistent with TexturePacker outputNo structural issues spotted in frames/meta. The referenced image "ingame.png" and smartupdate signature look standard for TexturePacker.
static/_app/tools/idle-dices/assets/img/font/font.fnt (1)
1-223: BMFont descriptor is well-formedThe XML structure and glyph table look consistent with AngelCode BMFont formatting. Nothing to change here.
static/_app/tools/idle-idle-gamedev/data/text.json (1)
2-1038: Verify mixed placeholder tokens in idle-idle-gamedev text.jsonIt looks like the English locale mixes several placeholder styles—plain “%” for values (e.g. “Power: %”), indexed tokens like “%1”, “%2”, “%3”, and suffix-style “x%” (e.g. “Logic Exp Multi x%”). I did not find any obvious code paths that normalize or interpolate all of these forms, so please double-check that your runtime formatter supports:
- Unindexed “%” placeholders (for single values)
- Numbered placeholders “%1”, “%2”, “%3”
- Literal percent signs when used as suffixes (e.g. “x%”)
Suspicious entries include (non-exhaustive):
- data.popups.goneFor: “You were gone for %1. You gained %2 bonus seconds”
- data.popups.butcher: “…power multiplied by %1. Are you sure?”
- upgrades.*.desc: “Power: %”
- several upgrades and rewards with “%3” or “x%”
Ensure your interpolation logic can distinguish numeric tokens vs. display percent signs and that no tokens end up un-replaced or double-replaced at runtime.
static/_app/tools/idle-dices/assets/img/font/outline.fnt (1)
1-281: Outline font XML is validResource linkage and glyph metrics appear correct; nothing stands out as problematic.
static/_app/tools/idle-dices/data/config.json (1)
3-14: Mixed color formats may cause consumer parsing issuesColors use both "#RRGGBB" and "0x..." string formats. Confirm the consuming code accepts both representations or normalize to a single format. Inconsistent formats often lead to subtle UI issues if the parser expects one canonical form.
Would you like me to normalize the palette to a single hex format (e.g., "#RRGGBB")?
static/_app/tools/idle-idle-gamedev/css/bootstrap-vue.css (1)
1-7: Vue fade transitions look good.Transitions are minimal and performant; no concerns.
static/_app/tools/idle-dices/data/text.json (1)
1-5: Credits JSON is valid and minimal.Structure is correct and aligns with expected preload usage.
static/_app/tools/idle-chopper/data/text.json (1)
1-5: Credits JSON is valid and minimal.Mirrors Idle Dices structure; safe to cache via SW.
static/_app/tools/idle-chopper/manifest.json (1)
6-46: Manifest icon sizes are correct as-isThe sizes in
static/_app/tools/idle-chopper/manifest.jsonaccurately reflect each PNG’s actual pixel dimensions (33×28, 65×54, etc.), as confirmed by the verification script. Changing the manifest to square values (32×32, 64×64, …) would introduce mismatches unless the source images themselves are resized.• No changes required to the manifest.
• If you need square icons for broader browser support, update the PNG assets rather than the manifest entries.Likely an incorrect or invalid review comment.
static/_app/tools/idle-dices/manifest.json (1)
1-52: Manifest looks consistent and ready for PWA.name/short_name, start_url, display, orientation, theme and background colors are set; icon sizes are standard.
static/_app/tools/idle-dices/assets/img/ui.json (2)
1-356: UI atlas JSON appears standard (TexturePacker) and self-consistent.No red flags in structure; meta and frames fields look correct.
347-356: Atlas validation passed – all frames within bounds and ui.png is present.
No issues detected instatic/_app/tools/idle-dices/assets/img/ui.json(all frames lie within 2048×2048 andui.pngexists).static/_app/tools/idle-chopper/assets/img/ui.json (2)
1-253: UI atlas JSON structure looks correct.TexturePacker meta and frames align with expected schema.
243-251: Atlas bounds and ui.png verifiedThe
static/_app/tools/idle-chopper/assets/img/ui.pngfile exists, and all frames inui.jsonfit within the 1024×2048 atlas without any out-of-bounds entries. No further action required.static/_app/tools/idle-chopper/assets/img/ingame.json (2)
1-1428: In-game atlas JSON is comprehensive and follows the expected schema.No structural issues spotted.
1419-1427: Atlas consistency and image presence confirmed.
– Verified thatstatic/_app/tools/idle-chopper/assets/img/ingame.pngexists.
– All frame coordinates are non-negative and within the 2048×2048 bounds, with no out-of-bounds entries.
No action required.static/_app/tools/idle-idle-gamedev/data/preload.json (1)
1-52: All referenced assets verified successfullyI ran a verification script against
static/_app/tools/idle-idle-gamedev/data/preload.jsonand confirmed that every file listed (JSON, fonts, atlases, images, and sounds) exists under the Idle IdleGameDev directory—no missing assets detected. You can safely proceed without runtime 404 concerns.static/_app/tools/idle-chopper/data/preload.json (2)
10-21: Atlas references look consistent with expected structureThe ingame/ui atlases are declared with urlData/urlImg pairs, which aligns with common atlas loaders.
24-239: ✅ All sound file basenames resolved to actual files
I’ve verified that everyfileentry instatic/_app/tools/idle-chopper/data/preload.json(including “1” through “13” and all named assets) corresponds to an existing sound file with an extension understatic/_app/tools/idle-chopper. No missing assets were found.static/_app/tools/idle-idle-gamedev/css/fontawesome.css (2)
1-5: Font Awesome license header retained; goodIncluding the license header is appropriate for distribution.
5-5: Webfonts presence verified – all expected Font Awesome files are in place
No missing webfont files understatic/_app/tools/idle-idle-gamedev/webfonts. The@font-facereferences instatic/_app/tools/idle-idle-gamedev/css/fontawesome.cssare valid.static/_app/tools/idle-dices/data/preload.json (2)
1-137: All preload assets verified — no missing references
Ran a filesystem check against static/_app/tools/idle-dices/data/preload.json and confirmed every referenced asset is present under static/_app/tools/idle-dices. Runtime 404s for these assets have been ruled out.
37-39: Fix typo in idle-dices background image filenameThe asset and its reference are both spelled “backgroun2.png” (missing “d”). To avoid confusion and potential 404s, please rename the file and update the JSON accordingly:
- Rename
static/_app/tools/idle-dices/assets/img/bg/backgroun2.png→
static/_app/tools/idle-dices/assets/img/bg/background2.png- Update URL in
static/_app/tools/idle-dices/data/preload.json(around lines 37–39)Suggested diff:
--- a/static/_app/tools/idle-dices/data/preload.json +++ b/static/_app/tools/idle-dices/data/preload.json @@ -37,3 +37,3 @@ "name": "bg2", - "url": "bg/backgroun2.png" + "url": "bg/background2.png" },Likely an incorrect or invalid review comment.
static/_app/tools/idle-dices/service-worker.js (1)
153-186: Precache asset verification complete—no missing files detectedAll URLs listed in the precacheConfig for
static/_app/tools/idle-dices/service-worker.js(lines 153–186) were found understatic/_app/tools/idle-dices. The SW install step will not abort due to missing assets.• Reminder: continue to scope your precacheConfig to same-origin, build-time assets only to avoid future install failures.
static/_app/tools/idle-chopper/service-worker.js (1)
40-40: Precache coverage looks good (includes js/app.js)Core app script is included in precacheConfig, enabling offline startup.
static/_app/tools/idle-idle-gamedev/service-worker.js (1)
40-40: Precache coverage includes core assets and app.jsSolid coverage for offline usage, including CSS, webfonts, and js/app.js.
| }, | ||
| { | ||
| name: 'Idle Dice', | ||
| description: 'Something to do with dice probably', | ||
| category: 'Uncategorized', | ||
| tags: [], | ||
| links: [ | ||
| { | ||
| name: 'Developer website', | ||
| url: 'https://lutsgames.com/' | ||
| } | ||
| ], | ||
| url: '/_app/tools/idle-dices/index.html' | ||
| }, | ||
| { | ||
| name: 'Idle Chopper', | ||
| description: 'Chop wood', | ||
| category: 'Uncategorized', | ||
| tags: [], | ||
| links: [ | ||
| { | ||
| name: 'Developer website', | ||
| url: 'https://lutsgames.com/' | ||
| } | ||
| ], | ||
| url: '/_app/tools/idle-chopper/index.html' | ||
| }, | ||
| { | ||
| name: 'Idle Idle Game Dev', | ||
| description: '"Develop" idle games while idle', | ||
| category: 'Uncategorized', | ||
| tags: [], | ||
| links: [ | ||
| { | ||
| name: 'Developer website', | ||
| url: 'https://lutsgames.com/' | ||
| } | ||
| ], | ||
| url: '/_app/tools/idle-idle-gamedev/index.html' | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
New game entries wired correctly; verify static targets exist
Data structure and mapping look consistent. Please verify the three URLs resolve to actual index.html files.
🏁 Script executed:
#!/bin/bash
set -euo pipefail
declare -a URLS=(
"/_app/tools/idle-dices/index.html"
"/_app/tools/idle-chopper/index.html"
"/_app/tools/idle-idle-gamedev/index.html"
)
# Translate URL path to repo path (strip leading slash)
for u in "${URLS[@]}"; do
path="${u#/}"
if [[ -f "$path" ]]; then
echo "OK: $u -> $path"
else
echo "MISSING: $u -> $path"
fi
doneLength of output: 1042
Missing static targets for new game entries
The URLs added in src/lib/gmaes.ts (lines 372–411) point to index.html files that aren’t present in the repo. Please add the corresponding build artifacts or correct the paths:
• _app/tools/idle-dices/index.html
• _app/tools/idle-chopper/index.html
• _app/tools/idle-idle-gamedev/index.html
🤖 Prompt for AI Agents
In src/lib/gmaes.ts around lines 372–411 the three game entries reference static
files at _app/tools/idle-dices/index.html, _app/tools/idle-chopper/index.html,
and _app/tools/idle-idle-gamedev/index.html that do not exist in the repo; fix
by either (A) adding the missing static build artifacts at those exact paths
(place the index.html and any assets under the repository’s static/public build
output so they are served at /_app/tools/<name>/index.html), or (B) update each
url field to point to the correct existing path in the repo (for example a
different folder or a hosted URL). Ensure paths are consistent with the
build/deploy layout and update any build scripts if needed so the files are
produced and published.
| { | ||
| "name": "desert", | ||
| "sounds": [ | ||
| { | ||
| "name": "desertwind", | ||
| "start": true, | ||
| "interval_min": 73, | ||
| "interval_max": 73 | ||
| }, | ||
| { | ||
| "name": "eagle", | ||
| "interval_min": 24, | ||
| "interval_max": 50 | ||
| }, | ||
| { | ||
| "name": "snake", | ||
| "interval_min": 26, | ||
| "interval_max": 50 | ||
| } | ||
| ] | ||
| } | ||
| ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing ambient preset: 'tundra' is referenced but not defined
The worlds below reference ambient: "tundra", but the ambient array only defines forest, boreal, jungle, desert. This will cause lookups to fail at runtime.
Add a 'tundra' ambient (you can base it on boreal) to fix references:
{
"name": "desert",
"sounds": [
{
"name": "desertwind",
"start": true,
"interval_min": 73,
"interval_max": 73
},
{
"name": "eagle",
"interval_min": 24,
"interval_max": 50
},
{
"name": "snake",
"interval_min": 26,
"interval_max": 50
}
]
- }
+ },
+ {
+ "name": "tundra",
+ "sounds": [
+ {
+ "name": "wind",
+ "start": true,
+ "interval_min": 49,
+ "interval_max": 50
+ },
+ {
+ "name": "crow1",
+ "interval_min": 25,
+ "interval_max": 50
+ },
+ {
+ "name": "crow2",
+ "interval_min": 10,
+ "interval_max": 50
+ }
+ ]
+ }Alternatively, change the worlds to use "boreal" if that was intended.
📝 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.
| { | |
| "name": "desert", | |
| "sounds": [ | |
| { | |
| "name": "desertwind", | |
| "start": true, | |
| "interval_min": 73, | |
| "interval_max": 73 | |
| }, | |
| { | |
| "name": "eagle", | |
| "interval_min": 24, | |
| "interval_max": 50 | |
| }, | |
| { | |
| "name": "snake", | |
| "interval_min": 26, | |
| "interval_max": 50 | |
| } | |
| ] | |
| } | |
| ], | |
| { | |
| "name": "desert", | |
| "sounds": [ | |
| { | |
| "name": "desertwind", | |
| "start": true, | |
| "interval_min": 73, | |
| "interval_max": 73 | |
| }, | |
| { | |
| "name": "eagle", | |
| "interval_min": 24, | |
| "interval_max": 50 | |
| }, | |
| { | |
| "name": "snake", | |
| "interval_min": 26, | |
| "interval_max": 50 | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "tundra", | |
| "sounds": [ | |
| { | |
| "name": "wind", | |
| "start": true, | |
| "interval_min": 49, | |
| "interval_max": 50 | |
| }, | |
| { | |
| "name": "crow1", | |
| "interval_min": 25, | |
| "interval_max": 50 | |
| }, | |
| { | |
| "name": "crow2", | |
| "interval_min": 10, | |
| "interval_max": 50 | |
| } | |
| ] | |
| } | |
| ], |
🤖 Prompt for AI Agents
In static/_app/tools/idle-chopper/data/config.json around lines 79 to 100 the
ambient list defines forest, boreal, jungle and desert but worlds reference an
ambient named "tundra", causing runtime lookup failures; add a new "tundra"
ambient object (you can duplicate the "boreal" entry and adjust names/sounds if
needed) into the ambient array before the closing bracket so "tundra" exists, or
alternatively update any worlds that reference "tundra" to use "boreal" if that
was intended.
| @@ -0,0 +1,63 @@ | |||
| <!DOCTYPE html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"><link rel=manifest href=manifest.json><link rel=apple-touch-icon sizes=32x32 href=assets/img/icon/icon32.png><link rel=apple-touch-icon sizes=64x64 href=assets/img/icon/icon64.png><link rel=apple-touch-icon sizes=96x96 href=assets/img/icon/icon96.png><link rel=apple-touch-icon sizes=128x128 href=assets/img/icon/icon128.png><link rel=apple-touch-icon sizes=168x168 href=assets/img/icon/icon168.png><link rel=apple-touch-icon sizes=192x192 href=assets/img/icon/icon192.png><link rel=apple-touch-icon sizes=256x256 href=assets/img/icon/icon256.png><link rel=apple-touch-icon sizes=512x512 href=assets/img/icon/icon512.png><title>Idle Chopper</title><script src=js/app.js></script><style> | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Confirm js/app.js is present and defines init()
The page calls init() on load. Broken script path or missing function will render a blank page.
🏁 Script executed:
#!/bin/bash
set -euo pipefail
BASE="static/_app/tools/idle-chopper"
echo "Looking for $BASE/js/app.js and init() symbol..."
if [[ -f "$BASE/js/app.js" ]]; then
echo "Found js/app.js"
else
echo "MISSING: $BASE/js/app.js"; exit 2
fi
# Grep for init( in a minified bundle; allow false negatives if bundled
rg -n --no-heading '\bfunction\s+init\b|\binit\s*\(' "$BASE/js/app.js" -A 2 || echo "init() not found (might be bundled/minified elsewhere)"Length of output: 527
🏁 Script executed:
#!/bin/bash
set -euo pipefail
BASE="static/_app/tools/idle-chopper"
echo ">>> Searching index.html for init() references:"
rg -n 'init' "$BASE/index.html" || echo "no init() reference in index.html"
echo -e "\n>>> Searching index.html for onload attributes:"
rg -n 'onload' "$BASE/index.html" || echo "no onload attribute in index.html"
echo -e "\n>>> Showing the first 200 lines of index.html for context:"
sed -n '1,200p' "$BASE/index.html"Length of output: 5740
Ensure a global init() exists in js/app.js
The HTML (static/_app/tools/idle-chopper/index.html, line 63) uses onload=init();, but js/app.js defines no init symbol. Without it, the page will error and render blank.
• Location: static/_app/tools/idle-chopper/index.html (body onload)
• Missing in: static/_app/tools/idle-chopper/js/app.js
Please define (or export) a global init() in js/app.js or remove/adjust the onload call to match your entry point.
🤖 Prompt for AI Agents
In static/_app/tools/idle-chopper/index.html (body onload at/around line 63) the
HTML calls onload=init() but js/app.js does not export a global init, causing a
runtime error; fix by adding a global init function in
static/_app/tools/idle-chopper/js/app.js (attach it to window, e.g. window.init
= function(){...}) that performs the page startup tasks currently expected on
load, or alternatively remove/replace the onload call in index.html to call the
actual startup function already defined in js/app.js—ensure the names match and
that init is globally accessible from the HTML.
| "meta": { | ||
| "app": "https://www.codeandweb.com/texturepacker", | ||
| "version": "1.0", | ||
| "image": "ingame.png", | ||
| "format": "RGBA8888", | ||
| "size": {"w":1024,"h":1024}, | ||
| "scale": "1", | ||
| "smartupdate": "$TexturePacker:SmartUpdate:dc6937d6458efe047afcb8f32ec600ed:9a9f7d154d9f897d9ea2fa6621fda7d3:a0a7aae19725baf1127883d8cc485c4f$" | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Add basic asset integrity checks (presence and JSON validity)
Ensure ingame.png exists alongside this atlas and the JSON parses correctly in CI to prevent runtime asset loading failures.
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# 1) Validate JSON
jq . static/_app/tools/idle-dices/assets/img/ingame.json >/dev/null && echo "ingame.json is valid JSON"
# 2) Verify the referenced image exists
img_path=$(jq -r '.meta.image' static/_app/tools/idle-dices/assets/img/ingame.json)
test -f "static/_app/tools/idle-dices/assets/img/${img_path}" && echo "Found image: ${img_path}" || { echo "Missing image: ${img_path}"; exit 1; }Length of output: 352
Add CI Asset Integrity Checks
I’ve confirmed that ingame.json parses successfully and ingame.png exists under static/_app/tools/idle-dices/assets/img/. To prevent future runtime load failures, please introduce a CI step that:
- Validates the JSON schema/format (e.g., via
jq . static/_app/tools/idle-dices/assets/img/ingame.json) - Ensures the referenced image file (
meta.image) is present in the same directory
Example snippet to include in your CI pipeline:
jq . static/_app/tools/idle-dices/assets/img/ingame.json
img=$(jq -r .meta.image static/_app/tools/idle-dices/assets/img/ingame.json)
test -f static/_app/tools/idle-dices/assets/img/"$img"🤖 Prompt for AI Agents
In static/_app/tools/idle-dices/assets/img/ingame.json around lines 731-739, add
a CI job that validates the JSON parses and that the image referenced by
meta.image exists in the same directory; implement a pipeline step that runs a
JSON parse/validation (e.g., with jq) against this file, extracts .meta.image,
and asserts that that filename exists under
static/_app/tools/idle-dices/assets/img/, failing the job if parsing fails or
the file is missing.
| "version": "1.3.25", | ||
| "log": [ | ||
| "fixed: fixed tooltips being displayed in normal screen" | ||
| ] | ||
| }, | ||
| { | ||
| "version": "1.3.25", | ||
| "log": [ | ||
| "fixed: fixed tooltips being displayed in normal screen" | ||
| ] | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Duplicate version entry 1.3.25 — deduplicate to prevent double-rendering
Version "1.3.25" appears twice with identical content. This can cause duplicate entries in UI and complicate downstream processing.
Apply this diff to remove the duplicate block (keep the first occurrence):
{
"version": "1.3.25",
"log": [
"fixed: fixed tooltips being displayed in normal screen"
]
},
- {
- "version": "1.3.25",
- "log": [
- "fixed: fixed tooltips being displayed in normal screen"
- ]
- },📝 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.
| "version": "1.3.25", | |
| "log": [ | |
| "fixed: fixed tooltips being displayed in normal screen" | |
| ] | |
| }, | |
| { | |
| "version": "1.3.25", | |
| "log": [ | |
| "fixed: fixed tooltips being displayed in normal screen" | |
| ] | |
| }, | |
| { | |
| "version": "1.3.25", | |
| "log": [ | |
| "fixed: fixed tooltips being displayed in normal screen" | |
| ] | |
| }, |
🤖 Prompt for AI Agents
In static/_app/tools/idle-dices/data/changelog.json around lines 201 to 211
there are two identical entries for version "1.3.25" which will cause duplicate
UI entries; remove the second duplicate object (the later block starting at the
second "version": "1.3.25") and adjust surrounding commas so the JSON remains
valid, keeping only the first occurrence with its log array.
| background: linear-gradient(0,#303030,#424242); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix invalid linear-gradient direction syntax
"linear-gradient(0, ...)" is not standard. Use an angle with units (e.g., 0deg) or a direction keyword (e.g., to top).
-.luts-header{
- background: linear-gradient(0,#303030,#424242);
+.luts-header{
+ background: linear-gradient(0deg, #303030, #424242);📝 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.
| background: linear-gradient(0,#303030,#424242); | |
| } | |
| .luts-header{ | |
| background: linear-gradient(0deg, #303030, #424242); | |
| } |
🧰 Tools
🪛 Biome (2.1.2)
[error] 55-55: Unexpected nonstandard direction
You should fix the direction value to follow the syntax.
See MDN web docs for more details.
(lint/correctness/noInvalidDirectionInLinearGradient)
🤖 Prompt for AI Agents
In static/_app/tools/idle-idle-gamedev/css/style.css around lines 55 to 56, the
linear-gradient is using a non-standard direction value "0"; replace it with a
valid angle or direction keyword (for example use "0deg" or "to top") so the
rule becomes something like linear-gradient(0deg, #303030, #424242) or
linear-gradient(to top, #303030, #424242) to fix the invalid syntax.
| .modal-container{ | ||
| background: linear-gradient(0,#303030,#424242); | ||
| border: #aaa ridge 0.5vmin; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same gradient direction issue in modal-container
Correct the gradient to a valid angle or keyword.
.modal-container{
- background: linear-gradient(0,#303030,#424242);
+ background: linear-gradient(0deg, #303030, #424242);
border: #aaa ridge 0.5vmin;
}📝 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.
| .modal-container{ | |
| background: linear-gradient(0,#303030,#424242); | |
| border: #aaa ridge 0.5vmin; | |
| } | |
| .modal-container{ | |
| background: linear-gradient(0deg, #303030, #424242); | |
| border: #aaa ridge 0.5vmin; | |
| } |
🧰 Tools
🪛 Biome (2.1.2)
[error] 72-72: Unexpected nonstandard direction
You should fix the direction value to follow the syntax.
See MDN web docs for more details.
(lint/correctness/noInvalidDirectionInLinearGradient)
🤖 Prompt for AI Agents
In static/_app/tools/idle-idle-gamedev/css/style.css around lines 71 to 74, the
linear-gradient uses an invalid direction value "0" which is not a valid
angle/keyword; update the gradient to a valid angle or keyword (for example
"0deg", "180deg", "to bottom", or "to top") so the background renders
correctly—replace linear-gradient(0,#303030,#424242) with a valid form like
linear-gradient(180deg, #303030, #424242) or linear-gradient(to bottom, #303030,
#424242).
| .tooltip.popover .popover-inner { | ||
| background: #f9f9f9; | ||
| color: black; | ||
| padding: 24px; | ||
| border-radius: 5px; | ||
| box-shadow: 0 5px 30px rgba(black, .1); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Invalid CSS color function: rgba(black, .1) will not parse in plain CSS
This looks like a SCSS convenience that won’t work in a .css file. Replace with a valid rgba triplet.
Apply this fix:
.tooltip.popover .popover-inner {
background: #f9f9f9;
color: black;
padding: 24px;
border-radius: 5px;
- box-shadow: 0 5px 30px rgba(black, .1);
+ box-shadow: 0 5px 30px rgba(0, 0, 0, .1);
}📝 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.
| .tooltip.popover .popover-inner { | |
| background: #f9f9f9; | |
| color: black; | |
| padding: 24px; | |
| border-radius: 5px; | |
| box-shadow: 0 5px 30px rgba(black, .1); | |
| } | |
| .tooltip.popover .popover-inner { | |
| background: #f9f9f9; | |
| color: black; | |
| padding: 24px; | |
| border-radius: 5px; | |
| box-shadow: 0 5px 30px rgba(0, 0, 0, .1); | |
| } |
🤖 Prompt for AI Agents
In static/_app/tools/idle-idle-gamedev/css/tooltip.css around lines 83 to 89,
the rule uses the invalid CSS function rgba(black, .1) which is SCSS-only;
replace that token with a valid rgba triplet such as rgba(0, 0, 0, 0.1) (or an
equivalent 8-digit hex/hsla value) so the box-shadow parses in plain CSS.
| @@ -0,0 +1 @@ | |||
| <!DOCTYPE html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"><link rel=manifest href=manifest.json><link rel=icon href=assets/img/icon/icon32.png><link rel=apple-touch-icon sizes=32x32 href=assets/img/icon/icon32.png><link rel=apple-touch-icon sizes=64x64 href=assets/img/icon/icon64.png><link rel=apple-touch-icon sizes=96x96 href=assets/img/icon/icon96.png><link rel=apple-touch-icon sizes=128x128 href=assets/img/icon/icon128.png><link rel=apple-touch-icon sizes=168x168 href=assets/img/icon/icon168.png><link rel=apple-touch-icon sizes=192x192 href=assets/img/icon/icon192.png><link rel=apple-touch-icon sizes=256x256 href=assets/img/icon/icon256.png><link rel=apple-touch-icon sizes=512x512 href=assets/img/icon/icon512.png><link href=css/bootstrap.min.css rel=stylesheet><link href=css/fontawesome.css rel=stylesheet><link rel=stylesheet href=css/baseStyle.css><link rel=stylesheet href=css/style.css><link rel=stylesheet href=css/tooltip.css><title>Idle IdleGameDev</title><script src=js/app.js></script><script src=https://sdk.crazygames.com/crazygames-sdk-v1.js></script></head><body onload=init();><div style="font-family:regular; position:absolute; left:-10000px">Font Loaded</div><div style="font-family:text; position:absolute; left:-10000px">Font Loaded</div><div id=turn><span id=text>Turn your Device</span></div><div id=loading class=hide><div class=version>Version: {{version}}</div><div class=loadingCenter><img class=loadingLogo src=assets/img/lutsgameslogo.svg><div class=loadingProgress>{{progress}}%</div></div></div><div id=ui class=hide><luts-header></luts-header><div class=luts-body><div class=container><div class=row><div class="col-md-3 col-side"><div class=col><time-container></time-container></div><div class=col><div class=card><lock id=shopTab><currency-container currency=money></currency-container></lock><lock id=research><currency-container currency=researchPoints></currency-container></lock><lock id=gamesTab><div class="row justify-content-between"><div class="col l-col" v-tooltip="t('fansExplain')">Fans:</div><div class="col text-right l-col"><value-container value=fans floored=true></value-container><lock id=telescope><span>/<value-container value=maxPlayers floored=true></value-container></span></lock></div></div></lock><lock id=gamesTab><div class="row justify-content-between"><div class="col l-col" v-tooltip="t('fanExpExplain')">Fan Expectations:</div><div class="col text-right l-col"><value-container value=fanExpectation floored=true></value-container></div></div></lock><lock id=publicityTask><div class="row justify-content-between"><div class="col l-col" v-tooltip="t('donationsExplain')">Donations:</div><div class="col text-right l-col"><value-container value=currentDonation></value-container></div></div></lock></div></div><div class=col><contract-container v-if=contract.id></contract-container><quality-container v-else></quality-container></div><div class=col><skills-container></skills-container></div></div><div class="col-md-9 col-main"><tabs content=tabs-main :tab-index-object=tio><tab title=dev :selected=true><task-tab></task-tab></tab><tab title=games lock-id=gamesTab><game-tab></game-tab></tab><tab title=shop lock-id=shopTab><shop-tab></shop-tab></tab><tab title=employees lock-id=employeesTab><employee-tab></employee-tab></tab><tab title=research lock-id=research><research-tab></research-tab></tab><tab title=contracts lock-id=contracts><contract-tab></contract-tab></tab><tab title=recursion lock-id=recursionTab><recursion-tab></recursion-tab></tab></tabs><div class=modals><modal-achievement-labels></modal-achievement-labels><modal-settings></modal-settings><modal-stats></modal-stats><modal-export></modal-export><modal-import></modal-import><modal-credits></modal-credits><modal-achievements></modal-achievements><modal-changelog></modal-changelog><modal-skills></modal-skills><modal-bonus></modal-bonus><modal-popups></modal-popups></div></div></div></div></div></div><div id=gameDiv></div></body></html> No newline at end of file | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify SW registration exists for this tool
Ensure js/app.js registers the co-located service worker to enable offline precaching.
Run:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Checking js/app.js presence for idle-idle-gamedev..."
fd -a --max-depth 2 app.js static/_app/tools/idle-idle-gamedev | sed -n '1p' | xargs -r -I{} sh -c 'echo "Found: {}"; wc -c "{}"'
echo "Searching for service worker registration..."
rg -n "serviceWorker\.register\\(.*service-worker\\.js" static/_app/tools/idle-idle-gamedev || echo "No SW registration found under idle-idle-gamedev/"Length of output: 711
Add Service Worker registration in js/app.js
No serviceWorker.register() call was found in static/_app/tools/idle-idle-gamedev/js/app.js, so offline precaching won’t be enabled. Please append a registration block (for example, at the end of app.js) such as:
// …existing app initialization code…
+// Register service worker for offline support
+if ('serviceWorker' in navigator) {
+ window.addEventListener('load', () => {
+ navigator.serviceWorker
+ .register('./service-worker.js')
+ .then(reg => console.log('SW registered:', reg))
+ .catch(err => console.error('SW registration failed:', err));
+ });
+}- Ensure
service-worker.jslives atstatic/_app/tools/idle-idle-gamedev/js/service-worker.js(or adjust the path accordingly). - Verify precaching logic inside that service worker handles your assets.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In static/_app/tools/idle-idle-gamedev/index.html around line 1, the HTML
indicates a missing service worker registration in js/app.js which prevents
offline precaching; open js/app.js and append a navigator.serviceWorker
registration block that (1) checks for 'navigator.serviceWorker' support, (2)
registers the service-worker.js at the correct relative path (adjust to
js/service-worker.js if needed) after window load, and (3) handles successful
registration and errors (log or handle failures) so the service worker can
precache your assets.
| { | ||
| "src": "assets/img/icon/icon32.png", | ||
| "sizes": "33x28", | ||
| "type": "image/png" | ||
| }, | ||
| { | ||
| "src": "assets/img/icon/icon64.png", | ||
| "sizes": "65x54", | ||
| "type": "image/png" | ||
| }, | ||
| { | ||
| "src": "assets/img/icon/icon96.png", | ||
| "sizes": "97x80", | ||
| "type": "image/png" | ||
| }, | ||
| { | ||
| "src": "assets/img/icon/icon128.png", | ||
| "sizes": "129x106", | ||
| "type": "image/png" | ||
| }, | ||
| { | ||
| "src": "assets/img/icon/icon168.png", | ||
| "sizes": "169x139", | ||
| "type": "image/png" | ||
| }, | ||
| { | ||
| "src": "assets/img/icon/icon192.png", | ||
| "sizes": "193x159", | ||
| "type": "image/png" | ||
| }, | ||
| { | ||
| "src": "assets/img/icon/icon256.png", | ||
| "sizes": "257x211", | ||
| "type": "image/png" | ||
| }, | ||
| { | ||
| "src": "assets/img/icon/icon512.png", | ||
| "sizes": "512x512", | ||
| "type": "image/png" | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PWA icons list: non-square and mismatched sizes will break installability and look incorrect
The declared sizes (e.g., 33x28 for icon32.png) are non-square and don't match typical platform requirements. PWA icons must be square and the sizes value must match the actual pixel dimensions. This likely impacts add-to-home-screen and icons rendering.
Apply this diff to fix the sizes to the standard square dimensions (adjust if your actual assets differ):
{
"src": "assets/img/icon/icon32.png",
- "sizes": "33x28",
+ "sizes": "32x32",
"type": "image/png"
},
{
"src": "assets/img/icon/icon64.png",
- "sizes": "65x54",
+ "sizes": "64x64",
"type": "image/png"
},
{
"src": "assets/img/icon/icon96.png",
- "sizes": "97x80",
+ "sizes": "96x96",
"type": "image/png"
},
{
"src": "assets/img/icon/icon128.png",
- "sizes": "129x106",
+ "sizes": "128x128",
"type": "image/png"
},
{
"src": "assets/img/icon/icon168.png",
- "sizes": "169x139",
+ "sizes": "168x168",
"type": "image/png"
},
{
"src": "assets/img/icon/icon192.png",
- "sizes": "193x159",
+ "sizes": "192x192",
"type": "image/png"
},
{
"src": "assets/img/icon/icon256.png",
- "sizes": "257x211",
+ "sizes": "256x256",
"type": "image/png"
},
{
"src": "assets/img/icon/icon512.png",
"sizes": "512x512",
"type": "image/png"
}If your files truly are non-square, please regenerate square icons and update both src and sizes accordingly.
📝 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.
| { | |
| "src": "assets/img/icon/icon32.png", | |
| "sizes": "33x28", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon64.png", | |
| "sizes": "65x54", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon96.png", | |
| "sizes": "97x80", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon128.png", | |
| "sizes": "129x106", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon168.png", | |
| "sizes": "169x139", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon192.png", | |
| "sizes": "193x159", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon256.png", | |
| "sizes": "257x211", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon512.png", | |
| "sizes": "512x512", | |
| "type": "image/png" | |
| } | |
| { | |
| "src": "assets/img/icon/icon32.png", | |
| "sizes": "32x32", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon64.png", | |
| "sizes": "64x64", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon96.png", | |
| "sizes": "96x96", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon128.png", | |
| "sizes": "128x128", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon168.png", | |
| "sizes": "168x168", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon192.png", | |
| "sizes": "192x192", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon256.png", | |
| "sizes": "256x256", | |
| "type": "image/png" | |
| }, | |
| { | |
| "src": "assets/img/icon/icon512.png", | |
| "sizes": "512x512", | |
| "type": "image/png" | |
| } |
Summary by CodeRabbit