Replace plain list with a styled SVG Italy outline (mainland, Sicily,
Sardinia). Cities rendered as markers: color by risk level, pulse
animation for current city, ⚡ icon for active events. Clicking a
marker or a list row opens a travel modal with city details and
confirm button. List remains as compact fallback below the map.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add AvailableMission (extends Mission with estimatedSuccessChance,
canStart), AbandonMissionResponse type. Extend Mission with description,
minLevel, rewardItemName/Quantity; ClaimMissionResponse with moneyChange,
fine, lootItem fields; City with mapX/mapY; MarketEntry with basePrice.
Add abandonMission() API call.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add all game screens: Login, Dashboard, Market (buy/sell), Inventory,
Missions, Travel (city selection), Leaderboard; wired via react-router
in App.tsx with protected routes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add JWT-based AuthContext (login/logout, token persistence), typed
HTTP client with auth header injection, REST API functions for all
game endpoints, and shared TypeScript types.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add Vite + React + TypeScript setup, package.json (react-router-dom,
socket.io-client), global CSS, app entry point and environment
config.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>