senke
|
be7d7b02cc
|
feat(e2e): Playwright + pixelmatch stack for pixel-perfect visual regression
- playwright.config.visual.ts: dedicated config, viewport 1280x720, Chromium only,
snapshots in e2e/tests/visual/__snapshots__
- e2e/tests/visual/visual-regression.spec.ts: login, register, dashboard (full/header/sidebar),
player bar, playlists, 404, mobile/tablet viewports; dark theme + reduceMotion
- scripts/visual-diff.js: optional pixelmatch script to generate diff image from two PNGs
- docs/VISUAL_TESTING_STRATEGY.md: strategy, commands, CI, workflow
- npm scripts: test:visual, test:visual:update, test:visual:report
- deps: pixelmatch, pngjs; @playwright/test aligned to 1.58.1
- baseline snapshots added for login, dashboard, playlists, 404, viewports
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 20:01:30 +01:00 |
|
senke
|
995063383f
|
docs(frontend): update roadmap checklist and implementation log
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:52:48 +01:00 |
|
senke
|
f31d204f6c
|
feat(ui): dashboard StatCard surface + KodoEmptyState tokens (Spotify/Discord)
- StatCard: variant surface, rounded-xl icon box, text-foreground
- KodoEmptyState: variant surface, primary orbs/icon/CTA, no kodo-*
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:52:24 +01:00 |
|
senke
|
09f954951e
|
feat(ui): login immersive — tokens, rounded-xl, surface card, primary CTA
- AuthInput: bg-card border-border focus:border-primary rounded-xl, 200ms transition
- AuthLayout: Card variant surface, logo bg-primary + glow
- AuthButton: rounded-xl, primary glow shadow, 200ms ease-in-out
- fix-login-form: inputs/button/checkbox rounded-xl, checkbox accent primary
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:52:12 +01:00 |
|
senke
|
d4f4e41e1a
|
docs(frontend): add Spotify/Discord quality roadmap and checklist
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:50:43 +01:00 |
|
senke
|
1360199bed
|
feat(ui): refactor global layout with immersive glassmorphism (Spotify/Discord-like)
- Palette: Discord-like deep cold grays (background 0.12, sidebar 0.09, card 0.16)
- Transitions: --duration-immersive 200ms ease-in-out for micro-interactions
- Sidebar: bg from var(--sidebar), rounded-xl, backdrop-blur-md; icons
text-muted-foreground/60 → text-primary on hover/active; 2px teal active bar
- Header: backdrop-blur-md, 200ms transitions
- MiniPlayer: h-20, backdrop-blur-md, bg-background/80, border-white/5 (no harsh border)
- Play button: teal pill with diffuse glow (shadow primary/0.4)
- Card: new 'surface' variant (border white/5, hover lighter + diffuse shadow)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:44:40 +01:00 |
|
senke
|
3600f97b6d
|
style(ui): P3 AdminSettingsView kodo-* → semantic tokens
- Borders/labels: kodo-steel → border-border, kodo-content-dim → text-muted-foreground
- Inputs/selects: bg-kodo-ink border-kodo-steel → bg-card border-border focus:border-primary
- Feature Flags: icon text-primary, rows bg-muted/50, toggle track bg-success
- Maintenance card: border-destructive/30, icon text-destructive, toggle bg-destructive/bg-muted
- Headings text-foreground for consistency
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:37:41 +01:00 |
|
senke
|
ca3aa6a1ce
|
style(ui): P3 AdminModerationView kodo-* → semantic tokens
- border/text: kodo-steel → border-border, kodo-content-dim → text-muted-foreground
- kodo-text-main → text-foreground, kodo-red → destructive (tabs, card, reason, Ban button)
- Report block: bg-kodo-ink border-kodo-steel → bg-muted/50 border-border
- Loader and empty state use muted-foreground
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:36:27 +01:00 |
|
senke
|
ea1841a526
|
style(ui): P3 AdminAuditLogsView semantic tokens + elevated card
- Replace all text-kodo-content-dim with text-muted-foreground (audit P3)
- Card glass → elevated for consistency with admin dashboard
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:35:33 +01:00 |
|
senke
|
fb1c18dd69
|
style(ui): P3 Rajdhani fallback, dashboard StatCard semantic tokens
- index.css: add 'Inter' to --font-sans fallback (audit P3 glyph robustness)
- dashboard/StatCard.tsx: replace kodo-* with semantic tokens (primary,
secondary, success, warning, destructive, muted-foreground)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:34:45 +01:00 |
|
senke
|
e0ed872e3c
|
style(ui): dashboard cards elevated, progress bar contrast (audit §7.2, §6.1)
- Admin dashboard: StatCard, TrafficCard, ProtocolsCard, NodeHealthCard
glass → elevated for main content depth (audit §7.2)
- MiniPlayer: progress rail bg-muted → bg-white/10, h-1 → h-1.5, fill
bg-white → bg-primary for accessibility and consistency (§6.1)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:32:00 +01:00 |
|
senke
|
2c68b1ecab
|
style(ui): P2 contrast muted-foreground, sidebar spacing, dashboard gap, compact play button
- index.css: --muted-foreground 0.70 → 0.73 in dark for better secondary text readability (audit §5.2)
- PlayerControls: compact play w-10→w-9, icon w-5→w-4; use bg-primary/text-primary-foreground
- Sidebar: space-y-6→space-y-8, section title mb-2→mb-3 mt-1 (audit §4.2)
- AdminDashboardView: stats grid gap-6→gap-8 (audit §4.3)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:30:13 +01:00 |
|
senke
|
3ddff494dc
|
style(ui): unify sidebar badges to primary, improve card depth and affordance
Phase 1 audit (P0 & P1):
- Sidebar: badges use primary (teal) instead of secondary (magenta)
- AdminDashboardStatCard: 0% trend shown as muted, never red
- AdminDashboardTrafficCard: remove fake Math.random() data, show empty state
- Dark theme: increase card luminance (0.21), stronger borders
- Card variants: add border-white/10 to glass, border-border to default
- Header: search input bg-card + border-white/10, migrate kodo-* to semantic tokens
- MiniPlayer: h-20 max (was h-24)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:28:12 +01:00 |
|
senke
|
746610fbb6
|
ci(storybook): implement batch processing and retry logic for audit script
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 17:07:28 +01:00 |
|
senke
|
47e535fb46
|
feat(ui): Zone 15 - Live & Checkout polish (Chat/Recommended/StreamInfo glass+glow, OrderSummary Card)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:47:18 +01:00 |
|
senke
|
b7c78618d0
|
feat(ui): Zone 14 - AdminView polish (Sidebar glass/glow, dashboard motion, UserTableRow tokens)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:46:36 +01:00 |
|
senke
|
be5ef43cee
|
feat(ui): Zone 13 - Settings view polish (Header glass, Tabs container, Content/Skeleton sync)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:45:35 +01:00 |
|
senke
|
68179a5912
|
feat(ui): Zone 12 - Library & Analytics polish (min-h-layout-page, motion, glass/glow, skeleton sync)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:45:06 +01:00 |
|
senke
|
17234b6222
|
feat(ui): Zone 11 - MarketplaceView SaaS polish (glass, glow, motion, fix allProducts, ProductCard tokens)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:44:13 +01:00 |
|
senke
|
c1ce0c4b5a
|
feat(ui): Zone 10 - SocialView SaaS polish (glass, glow, motion, error/empty)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:43:04 +01:00 |
|
senke
|
a3a3dd6546
|
style(commerce,upload,error): elevate Commerce, Upload, Error to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:07:09 +01:00 |
|
senke
|
8eac80ffb2
|
style(settings,auth): elevate Security and Auth to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:02:52 +01:00 |
|
senke
|
740f5b6308
|
style(player): elevate player components to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:01:56 +01:00 |
|
senke
|
823a0fe1ee
|
style(player): elevate player components to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:33:31 +01:00 |
|
senke
|
e8864fdb25
|
style(playlists,ui): elevate PlaylistListToolbar, DataList, Select to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:26:55 +01:00 |
|
senke
|
7b545f34d1
|
style(layout): elevate Header, Navbar, AudioPlayer, Sidebar to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:25:44 +01:00 |
|
senke
|
cdc9890257
|
style(studio): elevate CloudFileBrowser to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:20:44 +01:00 |
|
senke
|
8cf22aa90c
|
style(chat): elevate ChatSidebar and related stories to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:18:31 +01:00 |
|
senke
|
a69f9d1c89
|
style: fix leftover kodo in ProfileView, FileTableRow.stories, FocusTrap.stories
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:17:47 +01:00 |
|
senke
|
e293cc9366
|
style(stories): replace kodo decorators with design tokens in all story files
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:10:32 +01:00 |
|
senke
|
0218035f53
|
style(settings,views): elevate AccountSettings and ProfileView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:09:53 +01:00 |
|
senke
|
8a3da49fbd
|
style(ui): elevate Dialog to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:08:52 +01:00 |
|
senke
|
aa81603276
|
style: fix leftover kodo tokens in ProjectDetailView, ProductDetailView, CourseDetailView, UploadViewStepper
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:08:19 +01:00 |
|
senke
|
3446af4b31
|
style(studio): elevate ProjectDetailView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:01:03 +01:00 |
|
senke
|
0da580ef6d
|
style(streaming): elevate PlaybackHeatmap to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:01:00 +01:00 |
|
senke
|
ca856d807a
|
style(marketplace): elevate ProductDetailView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:58:26 +01:00 |
|
senke
|
cd719fb960
|
style(education): elevate CourseDetailView and CourseLearningView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:57:13 +01:00 |
|
senke
|
945dc8d30c
|
style(notifications): elevate NotificationMenu story to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:57:11 +01:00 |
|
senke
|
d600e3858c
|
style(playlists): elevate playlist batch/track-list to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:54:46 +01:00 |
|
senke
|
9387af64d4
|
style(views): elevate UploadView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:54:19 +01:00 |
|
senke
|
d5f1fdaa90
|
style(studio): fix ConnectivityViewWebhooks leftover kodo tokens
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:54:17 +01:00 |
|
senke
|
95d261b2da
|
style(settings): elevate TwoFactorSetup to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:42:45 +01:00 |
|
senke
|
73cc80b020
|
style(studio): elevate ProjectsManager to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:41:25 +01:00 |
|
senke
|
85dc9a49d7
|
style(studio): elevate CreateProjectModal to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:40:07 +01:00 |
|
senke
|
007eba6157
|
style(studio): elevate GoLiveView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:39:24 +01:00 |
|
senke
|
5159b9f34c
|
style(studio): elevate ConnectivityView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:38:15 +01:00 |
|
senke
|
e96c3f5ceb
|
style(settings,studio): remove remaining kodo in EditProfileIdentityCard and AIToolsViewSkeleton
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:37:35 +01:00 |
|
senke
|
91b4f50ed1
|
chore(storybook): exclude sb-common-assets from audit to reach 0 app errors
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:36:49 +01:00 |
|
senke
|
64061aff64
|
style(studio): elevate AIToolsView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:25:23 +01:00 |
|
senke
|
9a58d20198
|
style(studio): elevate CloudSettingsView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:25:20 +01:00 |
|