Comprehensive UX polish: fix 19 friction points across all pages
CI / build-and-push (push) Successful in 33s

Addresses broken interactions (notification bell, browser dialogs),
missing feedback states (disabled buttons, pricing changes, paused
indicator), unclear affordances (research queue, model tuning, funding
requirements), and navigation gaps (hash routing, keyboard shortcuts,
clickable dashboard cards, sidebar grouping, tutorial hints).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-24 21:44:18 -04:00
parent d25dfe0435
commit f9f6233b69
19 changed files with 540 additions and 121 deletions
+8
View File
@@ -1,4 +1,5 @@
import { FlaskConical, Lock, Check, Play } from 'lucide-react';
import { TutorialHint } from '@/components/game/TutorialHint';
import { useGameStore } from '@/store';
import { formatDuration, formatPercent, formatNumber } from '@ai-tycoon/shared';
import { TECH_TREE, getAvailableResearch } from '@ai-tycoon/game-engine';
@@ -58,6 +59,10 @@ export function ResearchPage() {
</div>
</div>
<TutorialHint id="research-intro">
Only one research project can run at a time. Complete prerequisites to unlock advanced technologies that improve your models and infrastructure.
</TutorialHint>
{activeResearch && (
<div className="bg-surface-900 border border-accent/30 rounded-xl p-4">
<div className="flex items-center justify-between mb-2">
@@ -127,6 +132,9 @@ export function ResearchPage() {
Start
</button>
)}
{isAvailable && activeResearch && (
<span className="text-xs text-surface-500 italic">Queue after current</span>
)}
</div>
{node.prerequisites.length > 0 && isLocked && (
<div className="text-xs text-surface-600 mt-2">