Skip to content

Desktop app#345

Open
amilich wants to merge 12 commits intomainfrom
cursor/desktop-game-workspace-6b2a
Open

Desktop app#345
amilich wants to merge 12 commits intomainfrom
cursor/desktop-game-workspace-6b2a

Conversation

@amilich
Copy link
Owner

@amilich amilich commented Jan 24, 2026

Note

Bootstraps the desktop-app frontend scaffold for a Tauri desktop app, including index.html for mounting the React UI and baseline styling.

Adds Node/Vite/TypeScript project config (package.json + package-lock.json) with React + lucide-react, and a scripts/generate-icons.mjs utility (using sharp) to generate Tauri icon assets and placeholder icon.icns/icon.ico. Also introduces a .gitignore for typical Node/Vite and Tauri build artifacts.

Low Risk. Primarily adds new project scaffolding and build tooling; no changes to runtime business logic, auth, or data handling.

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

cursoragent and others added 8 commits January 24, 2026 02:18
…e split panes

- Created desktop-app directory with Vite + React + TypeScript frontend
- Implemented Slack-style sidebar with icons for IsoCity (house) and IsoCoaster (roller coaster)
- Added VS Code-style split pane functionality (horizontal and vertical)
- Each pane renders the production game URL (iso-city.com or iso-coaster.com)
- Splitting a pane creates a new pane with the same game type
- Set up Tauri 2.x with proper configuration and window settings
- Generated app icons from the IsoCity favicon

Co-authored-by: andrew <andrew@anysphere.co>
Co-authored-by: andrew <andrew@anysphere.co>
- Fix split pane reload issue: iframes now render in a stable container
  so existing panes don't reload when splitting
- Add game picker screen when creating new split panes to choose
  between IsoCity and IsoCoaster
- Update app icon to high-res isometric house from game assets
- Generate proper macOS .icns and Windows .ico icon files

Co-authored-by: Cursor <cursoragent@cursor.com>
- Move src/app/proxy.ts to src/proxy.ts (Next.js 16 requires proxy at root/src level)
- Add null guard in StableIframe to fix TypeScript error

Co-authored-by: Cursor <cursoragent@cursor.com>
- Use titleBarStyle: Overlay to hide titlebar but keep traffic lights
- Widen sidebar to 68px to accommodate traffic lights
- Add drag region at top for window movement
- Simplify loading state to just show spinner

Co-authored-by: Cursor <cursoragent@cursor.com>
Add allow-popups-to-escape-sandbox and allow-top-navigation-by-user-activation
to iframe sandbox to enable external links like "Made with Cursor" and GitHub
to open in the default browser.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Add draggable resize handles between split panes
- Update color palette to match webapp (DM Sans font, HSL colors)
- Simplify game picker to show only icons without title text
- Make pane headers draggable for window movement (remove top gutter)
- Fix iframe resize observer to properly track new panes
- Reduce game picker button roundness
- Add proper z-index stacking for pane headers above iframes

Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel
Copy link
Contributor

vercel bot commented Jan 24, 2026

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

Project Deployment Review Updated (UTC)
isometric-city Ready Ready Preview, Comment Jan 24, 2026 10:21pm

Request Review

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Jan 24, 2026

Localization Complete! ✅

This PR has been successfully localized!
See #346 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 #346 for the changes.

Files internationalized (1)
  • desktop-app/src/App.tsx: Added i18n code

🔗 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 301 seconds.

General Translation | Configure Locadex for iso-city

amilich and others added 2 commits January 23, 2026 21:23
- Use Tauri's startDragging() API for reliable window dragging
- Add thin drag strip at top edge that expands on hover
- Fix resize handle to use refs for stable event listeners
- Add split icons to "Select a Game" panes
- Simplify resize handle implementation for smoother behavior

Co-authored-by: Cursor <cursoragent@cursor.com>
- Check if source icon exists before processing with sharp
- Add existence checks before copying to .icns and .ico placeholders
- Exit with error if source icon is missing

Co-authored-by: Cursor <cursoragent@cursor.com>

// For .ico, we'll use the 256 version as a placeholder
fs.copyFileSync(path.join(iconsDir, '128x128@2x.png'), path.join(iconsDir, 'icon.ico'));
console.log('Created placeholder: icon.ico');
Copy link

Choose a reason for hiding this comment

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

Invalid icon format files created by copying PNG files

Medium Severity · Logic Bug

The script creates .icns and .ico files by copying PNG files, which produces invalid icon files. These formats have specific binary structures and cannot be created by simply renaming PNG files. Tauri may fail to use these icons or the app may not display correctly.

Fix in Cursor Fix in Web

@locadex-agent
Copy link
Contributor

locadex-agent bot commented Jan 24, 2026

Localization Complete! ✅

This PR has been successfully localized!

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically added as commits to this PR.

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits on a new branch

Localization completed by Locadex in 216 seconds.

General Translation | Configure Locadex for iso-city

Batch resize updates to animation frames, clamp split sizes safely, and block iframe pointer events during drag to reduce jitter.

Co-authored-by: Cursor <cursoragent@cursor.com>
@amilich
Copy link
Owner Author

amilich commented Jan 24, 2026

@cursor review this error and fix stuff

..
Failed to compile.
./desktop-app/src/App.tsx:3:34
Type error: Cannot find module '@tauri-apps/api/window' or its corresponding type declarations.
1 | import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';
2 | import { Home, RollerCoaster, SplitSquareHorizontal, SplitSquareVertical, X, Loader2 } from 'lucide-react';

3 | import { getCurrentWindow } from '@tauri-apps/api/window';
| ^
4 |
5 | // Start window drag
6 | const startDrag = async () => {
Next.js build worker exited with code: 1 and signal: null
Error: Command "npm run build" exited with 1

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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

@amilich
Copy link
Owner Author

amilich commented Jan 24, 2026

@cursor fix the issues causing builds to fail
this error and fix stuff

..
Failed to compile.
./desktop-app/src/App.tsx:3:34
Type error: Cannot find module '@tauri-apps/api/window' or its corresponding type declarations.
1 | import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';
2 | import { Home, RollerCoaster, SplitSquareHorizontal, SplitSquareVertical, X, Loader2 } from 'lucide-react';

3 | import { getCurrentWindow } from '@tauri-apps/api/window';
| ^
4 |
5 | // Start window drag
6 | const startDrag = async () => {
Next.js build worker exited with code: 1 and signal: null
Error: Command "npm run build" exited with 1

@cursor
Copy link

cursor bot commented Jan 24, 2026

Summary

  • Added desktop-app to tsconfig.json exclude list to prevent Next.js from compiling Tauri-specific imports
  • Fixed generate-icons.mjs to exit with non-zero code on errors for proper CI/CD failure detection

Testing

  • npm run build - Next.js build now succeeds without trying to compile desktop-app files

Open in Cursor Open in Web

- Add desktop-app to tsconfig.json exclude list to prevent Next.js from trying to compile Tauri-specific code
- Fix generate-icons.mjs to exit with non-zero code on errors

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

locadex-agent bot commented Jan 24, 2026

Localization Complete! ✅

This PR has been successfully localized!

📋 Summary

Locadex has analyzed your changes and automatically localized your translatable content.
The localization changes have been automatically added as commits to this PR.

🔗 What happened?

  • 🔍 Analyzed your code changes for translatable content
  • 🔨 Internationalized your code changes
  • 🌐 Generated translations for supported languages
  • 🎉 Added localization commits on a new branch

Localization completed by Locadex in 217 seconds.

General Translation | Configure Locadex for iso-city

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