Backend fixes: - Fix totalTokens defaulting to 0 when API omits totalTokenCount (now computes prompt+completion) - Fix streaming metadata extraction: unwrap response wrapper in Anthropic/Gemini handlers - Fix Zod schemas: handle SQL SUM(null) with nullable().transform() - Add is_estimated column migration to token_usage table Frontend redesign: - Rewrite Usage page with area charts (nivo/line), horizontal bar model ranking - StatCard: add trend indicators (% vs previous period) and inline SVG sparklines - Premium color palette, prompt/completion ratio bar, top models mini-list - Live indicator with 15s auto-refresh Design system migration: - Standardize all components on Gemini Nexus tokens (rounded-xl, border-white/[0.06]) - Refine UI components, proxy tabs, cloud account list, provider groups
12 lines
620 B
JavaScript
12 lines
620 B
JavaScript
const fs = require('fs');
|
|
let file = fs.readFileSync('src/routes/settings.tsx', 'utf8');
|
|
|
|
// The settings page uses standard cards that look bulky in minimal dark mode
|
|
file = file.replace(/<div className="flex flex-col gap-6">/g, '<div className="flex flex-col gap-2">');
|
|
file = file.replace(/<Card>/g, '<Card className="bg-transparent border-0 shadow-none rounded-none border-b border-white/5 last:border-0 pb-6">');
|
|
file = file.replace(/<CardHeader>/g, '<CardHeader className="px-0 pt-4">');
|
|
file = file.replace(/<CardContent>/g, '<CardContent className="px-0">');
|
|
|
|
fs.writeFileSync('src/routes/settings.tsx', file);
|
|
|