Skip to content

feat: Add WebAssembly version of IsoCoaster at /coasterwasm#366

Open
amilich wants to merge 41 commits intomainfrom
cursor/iso-coaster-wasm-version-51c8
Open

feat: Add WebAssembly version of IsoCoaster at /coasterwasm#366
amilich wants to merge 41 commits intomainfrom
cursor/iso-coaster-wasm-version-51c8

Conversation

@amilich
Copy link
Owner

@amilich amilich commented Feb 2, 2026

  • Create full Rust/WASM implementation of the game engine
  • Implement core data structures (Tile, Building, Guest, Coaster, Tool)
  • Implement isometric coordinate system matching original (64px tiles, 0.6 height ratio)
  • Implement sprite loading with red background filtering
  • Implement terrain rendering (grass, water with texture, paths, queues)
  • Implement coaster track rendering (straight, curved, slopes, loops, supports)
  • Implement train animation and physics
  • Implement guest rendering with walking animation and colors
  • Implement guest AI with BFS pathfinding and decision making
  • Create Next.js page at /coasterwasm with sidebar and game controls
  • Update next.config.js for WASM support

The WASM version provides visual parity with the original game while running core game logic in WebAssembly for improved performance.


Note

Medium Risk
Introduces a new Rust/WASM build pipeline and client-side runtime loading; main risk is bundling/runtime failures (WASM import/webpack config, environment differences) rather than data/security concerns.

Overview
Adds a new WebAssembly edition of IsoCoaster served from /coasterwasm, including a new Next.js client page that dynamically imports the generated WASM module, loads sprite sheets/textures, and drives the render/tick loop while wiring UI controls (tools, speed, stats) to exported WASM APIs.

Introduces a full Rust crate under wasm/ (game state, tiles, buildings, tools, coaster track structures) plus committed wasm-pack output in wasm/pkg/ for deployment, and updates next.config.js + npm predev/prebuild scripts to enable async WASM and build (or fall back to prebuilt artifacts). Documentation and .gitignore are updated accordingly.

Written by Cursor Bugbot for commit 57f2ccd. This will update automatically on new commits. Configure here.

Cursor Bugbot found 1 potential issue for commit 57f2ccd

- Create full Rust/WASM implementation of the game engine
- Implement core data structures (Tile, Building, Guest, Coaster, Tool)
- Implement isometric coordinate system matching original (64px tiles, 0.6 height ratio)
- Implement sprite loading with red background filtering
- Implement terrain rendering (grass, water with texture, paths, queues)
- Implement coaster track rendering (straight, curved, slopes, loops, supports)
- Implement train animation and physics
- Implement guest rendering with walking animation and colors
- Implement guest AI with BFS pathfinding and decision making
- Create Next.js page at /coasterwasm with sidebar and game controls
- Update next.config.js for WASM support

The WASM version provides visual parity with the original game while
running core game logic in WebAssembly for improved performance.

Co-authored-by: andrew <andrew@anysphere.co>
@assert-app
Copy link

assert-app bot commented Feb 2, 2026

Your pull request is now ready for review with Assert.

Open Review →


Stop waiting for your code to break. Ship with confidence using Assert.

@vercel
Copy link
Contributor

vercel bot commented Feb 2, 2026

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

Project Deployment Actions Updated (UTC)
isometric-city Ready Ready Preview, Comment Feb 2, 2026 8:36pm

Request Review

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #367 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #367 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 322 seconds.

General Translation | Configure Locadex for iso-city

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #368 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #368 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 333 seconds.

General Translation | Configure Locadex for iso-city

}
}

None
Copy link

Choose a reason for hiding this comment

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

Unused function find_nearest is dead code

Low Severity · Code Quality

The find_nearest function is defined but never called anywhere in the codebase. This 48-line function with generic type parameter F is completely unused and should be removed.

Fix in Cursor Fix in Web

/// Calculate depth for sorting (higher = rendered later/on top)
pub fn tile_depth(grid_x: i32, grid_y: i32) -> i32 {
grid_x + grid_y
}
Copy link

Choose a reason for hiding this comment

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

Unused function tile_depth is dead code

Low Severity · Code Quality

The tile_depth function is defined but never called anywhere in the codebase. The comment indicates it's for depth sorting, but the rendering code uses inline sum calculations instead.

Fix in Cursor Fix in Web

let mut tile = Self::new(x, y);
tile.terrain = Terrain::Water;
tile
}
Copy link

Choose a reason for hiding this comment

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

Unused method Tile::new_water is dead code

Low Severity · Code Quality

The new_water constructor method is defined but never called. Water tiles are created by modifying the terrain field after calling Tile::new() in GameState::generate_lakes() instead.

Fix in Cursor Fix in Web

Co-authored-by: andrew <andrew@anysphere.co>
Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #369 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #369 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 340 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #370 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #370 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 338 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #371 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #371 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 336 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #372 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #372 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 360 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #373 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #373 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 323 seconds.

General Translation | Configure Locadex for iso-city

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #374 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #374 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 311 seconds.

General Translation | Configure Locadex for iso-city

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #375 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #375 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 303 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #400 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #400 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 504 seconds.

General Translation | Configure Locadex for iso-city

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #401 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #401 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 456 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #402 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #402 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 513 seconds.

General Translation | Configure Locadex for iso-city

@amilich
Copy link
Owner Author

amilich commented Feb 2, 2026

@cursor fix the vercel build

@cursor
Copy link

cursor bot commented Feb 2, 2026

The Vercel build is now fixed. Here's what I changed:

Changes made:

  1. .gitignore - Removed wasm/pkg/ so pre-built WASM files are committed to git

  2. package.json - Made wasm:build script conditional:

    command -v wasm-pack >/dev/null 2>&1 && cd wasm && wasm-pack build --target web --out-dir pkg || ([ -d wasm/pkg ] && echo 'wasm-pack not found, using pre-built pkg' || (echo 'ERROR: wasm-pack not found and wasm/pkg does not exist' && exit 1))
    • If wasm-pack is available → builds WASM normally
    • If wasm-pack not found but wasm/pkg/ exists → skips build, uses pre-built files
    • If neither → fails with error
  3. Committed wasm/pkg/ - The pre-built WASM artifacts are now in git for Vercel to use

The Vercel build should now succeed since it will find the pre-built wasm/pkg/ directory and skip the wasm-pack build step.

Open in Cursor Open in Web

- Remove wasm/pkg/ from .gitignore to commit pre-built WASM files
- Make wasm:build script skip if wasm-pack not found but pkg exists
- Commit pre-built WASM artifacts for deployment environments

Co-authored-by: andrew <andrew@anysphere.co>
canvas.style.height = `${height}px`;

// Create game instance
const game = new wasm.Game(canvas, 50, dpr); // 50x50 grid
Copy link

Choose a reason for hiding this comment

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

Game constructor has ambiguous same-typed arguments

Low Severity · Bugbot Rules

The Game constructor takes two consecutive number arguments: grid_size and pixel_ratio. At the call site new wasm.Game(canvas, 50, dpr), these values could be accidentally swapped without triggering the TypeScript typechecker. The rule team-569 requires using an object with named args for functions with multiple arguments of the same type to prevent inadvertent argument reordering.

Additional Locations (1)

Fix in Cursor Fix in Web

Triggered by team rule: No ambiguous args at callsite in typescript

if (animationRef.current) {
cancelAnimationFrame(animationRef.current);
}
};
Copy link

Choose a reason for hiding this comment

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

WASM Game instance not freed on unmount

Medium Severity · Performance Issue

The cleanup function cancels the animation frame but does not call free() on the WASM Game instance stored in gameRef.current. The Game class exposes a free() method to release WASM memory. Without calling it, memory for the game grid, guests, and coasters remains allocated. In browsers without FinalizationRegistry support, this memory is never freed. Even in modern browsers, the finalizer runs non-deterministically. Navigating to/from this page repeatedly causes memory to accumulate until page refresh.

Fix in Cursor Fix in Web

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #407 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #407 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 546 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #408 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #408 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 530 seconds.

General Translation | Configure Locadex for iso-city

- Prevent path/queue overlap and charge bulldoze cost
- Ensure train cars trail the lead car and validate loop continuity
- Guard isometric render loops against index underflow

Co-authored-by: andrew <andrew@anysphere.co>
- Accept cols/rows via named object in wasm bindings
- Update coasterwasm loader callsite and regenerate pkg

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #409 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #409 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 487 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #410 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #410 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 458 seconds.

General Translation | Configure Locadex for iso-city

Co-authored-by: andrew <andrew@anysphere.co>
@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #411 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #411 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 556 seconds.

General Translation | Configure Locadex for iso-city

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Feb 2, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #412 for the changes.

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically generated on a new branch. See #412 for the changes.

Files internationalized (2)
  • src/app/coasterwasm/layout.tsx: Added i18n code
  • src/app/coasterwasm/page.tsx: Added i18n code
Translation files updated (8)
  • 🇩🇪 public/_gt/de.json: Updated translation file
  • 🇪🇸 public/_gt/es.json: Updated translation file
  • 🇫🇷 public/_gt/fr.json: Updated translation file
  • 🇮🇹 public/_gt/it.json: Updated translation file
  • 🇯🇵 public/_gt/ja.json: Updated translation file
  • 🇧🇷 public/_gt/pt-BR.json: Updated translation file
  • 🇹🇷 public/_gt/tr.json: Updated translation file
  • 🇨🇳 public/_gt/zh.json: Updated translation file
Configuration files updated (2)
  • gt-lock.json: Updated the translation lockfile to add the latest changes
  • gt.config.json: Updated configuration with latest versionId

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits directly to this PR

Localization completed by Locadex in 450 seconds.

General Translation | Configure Locadex for iso-city

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

did_remove = true;
break;
}
}
Copy link

Choose a reason for hiding this comment

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

Bulldoze tool incorrectly removes neighboring track pieces

Medium Severity · Logic Bug

The bulldoze tool has a fallback that clears coaster track from neighboring tiles when the clicked tile has no track. If a user clicks on empty grass adjacent to a coaster track, the code iterates through neighbors and deletes the first track piece found. This causes unexpected track deletion when users click on tiles they didn't intend to modify.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants