asepharyana
81a004d250
feat(frontend): IMPHNEN design deep integration — full 5-layer redesign
...
Layer 0 — Foundation:
- Dark mode palette (30+ CSS var pairs in [data-theme='dark'])
- CSS-first theme engine in styles.css (@theme + CSS vars)
- UseTheme hook with light/dark/system support + localStorage persistence
- Fixed animation keyframes (shimmer 1.5s canonical, glowPulse moved to CSS)
- Smooth theme switch transitions via .theme-transitioning class
Layer 1 — Shared UI Components:
- Badge: success/warning variants now use CSS vars (bg-success-soft text-success)
- Toast: rewritten with CSS vars, z-index fixed (40), repositioned top-right
- Skeleton: added variant prop (rounded/circular/rectangular)
- EmptyState: new component with icon + title + description + action
- Button: added tertiary variant + icon-sm size
- Card: added elevated/bordered variants
- Input: added soft variant
Layer 2 — Layout & Navigation:
- TabStrip: new horizontal tab navigation with spring underline indicator (z-30)
- Sidebar: expanded by default (w-64), brand assets always visible
- Header: simplified brand bar, removed redundant page titles, added ThemeToggle
- MobileTabBar: enhanced with spring dot indicator + glass bg + safe area
- DashboardLayout: integrated TabStrip between Header and content
- ParticleBackground: lazy render, skips on mobile/reduced-motion
Layer 3 — Feature Components:
- MessageCard: 30+ hardcoded hex replacements → semantic CSS vars
- MessagesPanel: stat badges use Badge component variants
- DashboardStats: StatCard with variant system (primary/success/warning/destructive)
- UserSummaryList/UserProfileDetail/ChannelProfileDetail: all hardcoded colors → CSS vars
- AudioVisualizer: reads --primary CSS var at paint time
- ActiveSpeakers/RecordingsSubPanel: hardcoded colors → CSS vars
Layer 4 — Polish:
- EmptyState integrated across messages/dashboard/live panels
- Theme toggle wired in Header + App root
- Hover state audit for consistency
- Entry animations verified (cardStagger/cardItem pattern in all panels)
Resolves DESIGN_TOKENS.md §13.x issues: hardcoded colors, shimmer mismatch,
glow-pulse fragmentation, z-index collisions, toast positioning.
2026-07-02 05:58:36 +07:00
asepharyana
7efaf00c93
Revert "feat: migrate frontend to Astro + expand AI moderation + backend admin/runtime config"
...
This reverts commit d59b59a7a7 .
2026-07-02 03:54:44 +07:00
asepharyana
bf86fcda8e
Revert "feat: migrate frontend to Astro SSG with design system"
...
This reverts commit 8ad888da28 .
2026-07-02 03:54:44 +07:00
asepharyana
8ad888da28
feat: migrate frontend to Astro SSG with design system
...
- Replace monolithic React SPA (App.tsx) with 7 Astro pages (+ routing)
- Implement full design system from design/ (OKLCH tokens, Tailwind 4 @theme)
- Add 12 Astro components (Button, Badge, Card, Sidebar, Header, states)
- Add 11 React islands (AuthGuard, MessageFeed, VoiceControls, AudioVisualizer, etc.)
- Add 3 Zustand stores (UI, voice, message state)
- Add CSS architecture: dark/light themes, glassmorphism, fluid typography, animations
- Add 404, login, settings, recordings pages
- Remove 40+ legacy React SPA files
- Add Particles background and MascotChat deferred islands
- Wire WebSocket bridge for real-time messages and voice events
Build: 7 pages in ~900ms
Typecheck: clean (0 errors)
Lint: clean (0 errors)
2026-07-02 01:18:45 +07:00
asepharyana
d59b59a7a7
feat: migrate frontend to Astro + expand AI moderation + backend admin/runtime config
...
Frontend:
- migrate from Vite to Astro (astro.config.mjs, pages/, layouts/)
- add admin panel, settings page, command palette, error boundary
- refactor App.tsx, MascotChatbot, Sidebar, Header, DashboardLayout
- update API client, WebSocket, auth, dashboard features
Backend:
- add admin module and config routes
- refactor middlewares, Redis connection, WebSocket server/bridge
- add runtime config loader
Discord Gateway:
- refactor AI moderation: circuit breaker, concurrency limiter, fallback processor
- add media analysis client, Seaxng search, user profile learner
- add new drizzle migration
Shared:
- extend database schema, add new config fields
2026-07-02 00:02:41 +07:00
MythEclipse and Claude
752d144dc0
refactor(fe): overhaul — split types, type-safe WS, remove dead deps/code
...
- Remove unused deps: gsap, @tanstack/react-query, three, r3f, drei, autoprefixer
- Split types from shared/api/client.ts into entities/{guild,voice,media,ui,recording,dashboard}
- Type-safe WebSocket handlers using WsEventMap — 0 'as' casts in App.tsx
- Replace gsap with framer-motion in AuthOverlay
- Remove dead code: useMascotSummary, gsapCardHover, live/components/index barrel
- Fix bare console calls → use createLogger from @bete/shared/logger
- Clean up unused imports and variables (aiVariant, etc.)
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-16 22:44:28 +07:00
MythEclipse and Claude
9af2d7d4dd
refactor(fe): DRY components, hooks, a11y fixes, and WS/client improvements
...
- Extract StatusBadge, SummaryList, ProfileDetail shared components (~300 lines deduplicated)
- Extract usePaginatedList<T>, useItemDetail<T> generic hooks (~170 lines deduplicated)
- Fix a11y: Badge (role=status, dark variants), Button (aria-disabled, motion-safe), Input (aria-invalid, errorId), Select (error variant), Skeleton (aria-hidden), MobileTabBar (full tab ARIA), Toast (timer leak fix, role=alert, keyboard dismiss), Card (role=region)
- Fix API client: buildSearchParams helper, request timeout, password caching, named types
- Fix WS: typed 24 event payloads (was all unknown), exponential backoff reconnect, max 20 attempts, msg.data guard
- Fix bug: listDashboardChannels cursor pagination was silently dropped
- Remove duplicate shimmer keyframes from tailwind.config.js
- Fix WaveformPlayer non-null assertion
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-14 15:22:29 +07:00
MythEclipse
9a896c7993
chore(services): update components based on recent changes
...
Changes:
services/frontend/src/widgets/Sidebar.tsx | 51 +++++++++++++++++++++++++-------------------------
1 file changed, 25 insertions(+), 26 deletions(-)
2026-06-13 19:47:06 +07:00
MythEclipse and Claude
4fcab6b003
refactor(frontend): reorder sidebar — messages first, voice below
...
Default tab is now 'messages'; Voice & Media moved below
Messages in both desktop sidebar and mobile tab bar.
Updated Header titles/subtitles to match new order.
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-13 12:50:13 +07:00
MythEclipse
1406ce3585
chore(auto): task completed - unknown
2026-06-13 11:46:15 +07:00
MythEclipse and Claude
30f8d7cce3
feat: replace corrections/tuner with dashboard module
...
Replace the corrections/adaptive-prompt-tuner feature with a new
dashboard module providing server stats and user profile overview.
Backend:
- Add dashboard module (routes, service, repository) with stats + user list + user detail endpoints
- Remove corrections module entirely
- Wire dashboard router in app.ts
Frontend:
- Add dashboard feature (DashboardStats, UserSummaryList, UserProfileDetail components + useDashboard hook)
- Remove tuner feature (CorrectionStats, CorrectionHistory, SubmitCorrection, useCorrections)
- Update API client from corrections → dashboard types/fns
- Rename tab 'tuner' → 'dashboard'
- Update MobileTabBar, Header, Sidebar links
Tests:
- Expand backend placeholder test with dashboard assertions
- Expand discord-gateway placeholder test with config/channel assertions
AI moderation:
- llmModerationClient: improve status/reply detection, expand safety categories, fix timer reset
- userProfileLearner: fix isReply refinement
- userProfileStore: add pending cache check
- messageMetadata: add crosspost type mapping
- migrate.ts: improve partial-index safety in schema push
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-13 11:24:42 +07:00
MythEclipse and Claude
5c00c9f60b
feat(ui): overhaul frontend with IMPHNEN visual identity
...
- Update CSS foundation: HSL→oklch color tokens, Poppins font, new utilities
- Replace Three.js sakura particles with CSS glow orbs
- Rebrand Header with IMPHNEN logo and gradient text
- Update all UI components (Button, Card, Badge, Input, Select, Tabs, Toast)
- Apply IMPHNEN design patterns (glass, gradient, grid) to layout
- Remove all hardcoded #7EC8E3/#FFB7C5/#FCA5A5 references
- Standardize rounded-xl across all components
- Replace emoji toasts with Lucide icons
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-12 23:00:52 +07:00
MythEclipse and Claude
7f3eb7b9ac
feat(ui): add Adaptive Prompt Tuner tab with correction submission UI
...
- Add pgCorrectedModerationsTable to shared schema
- Create backend corrections module (stats, list, create endpoints)
- Add TunerPanel with Stats, History, and Submit sub-tabs
- Add AuthOverlay gate for Tuner (admin-only, same as Live)
- Set messages as default tab
- Wire Tuner into sidebar, header, and mobile tab bar
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-12 21:28:05 +07:00
MythEclipse and Claude Opus 4.8
4becf0d6f1
refactor: comprehensive codebase cleanup and architecture hardening
...
- Sprint 1 (Quick Wins): Remove dead analytics modules, fix 4 unresolved
imports, replace 3 console.warn with logger, remove mock-crc import
- Sprint 2 (Architecture): Create MascotChatRepository, AnalysisRepository,
3 Zod schemas (mascot-chat, analysis, voice), deduplicate error classes,
move 3 SQL queries from routes to repository
- Sprint 3 (Complexity): Replace 7 any types with proper interfaces,
extract 6 helpers from prepareMediaMessage (CC 85 -> ~15)
- Sprint 4 (Config): Remove 22 dead env vars from .env, add 30 missing
vars to .env.example, standardize naming
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 10:16:04 +07:00
MythEclipse
2bf48f6cd0
refactor(ui): remove mascot tooltip from sidebar component
...
Removes the hardcoded mascot tooltip implementation from the Sidebar
component to clean up the component structure. The tooltip logic is
now handled elsewhere.
2026-06-03 20:09:45 +07:00
MythEclipse
4e12394168
fix: add error handling to analytics getTopics query and fix mascot tooltip positioning
2026-06-03 19:50:26 +07:00
MythEclipse
3c130bf813
fix(ui): adjust mascot tooltip positioning and bubble pointer
...
Changes the mascot tooltip from a fixed bottom-left position to an absolute
centered position above the sidebar. Updates the decorative pointer
elements to use a downward-pointing triangle clip-path instead of a
side-aligned shape.
2026-06-03 19:41:39 +07:00
MythEclipse
6a8a84fd84
fix(mascot-chat): reposition tooltip to fixed bottom-left and show when sidebar collapsed
2026-06-03 19:39:58 +07:00
MythEclipse
30b07e2c63
fix(sidebar): hide mascot animation when sidebar is collapsed
2026-06-03 18:36:38 +07:00
MythEclipse
01eaf7275b
refactor(mascot): remove useMascotSummary integration from sidebar
2026-06-03 18:29:54 +07:00
MythEclipse and Claude Opus 4.8
3a5e9212d9
fix(sidebar): move mascot chatbot outside framer-motion nav to fix click interaction
...
- Move MascotChatbot outside motion.nav to avoid framer-motion stacking context break
- Use fixed positioning with z-[9999] for reliable interaction
- Wrap sidebar return with Fragment for multiple root elements
- Add border tail to chat bubble with two-layer clip-path (outer border, inner fill)
- Fix tail direction to point bottom-left toward mascot
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-03 17:50:11 +07:00
MythEclipse
a0029183d3
style(sidebar): improve mascot tooltip arrow appearance
...
Replace the clip-path based triangle with a CSS border-based implementation to create a more refined arrow with a border effect.
2026-06-03 16:07:26 +07:00
MythEclipse
7f1fd93afb
refactor(sidebar): update mascot tooltip arrow styling and positioning
2026-06-03 15:23:35 +07:00
MythEclipse
d4f67bf013
refactor(sidebar): adjust mascot tooltip arrow position and border direction
2026-06-03 15:17:54 +07:00
MythEclipse
cdc4a2ea37
refactor(sidebar): move mascot chat tooltip outside button and add persistent visibility state
2026-06-03 15:14:38 +07:00
MythEclipse
f303b04684
refactor(mascot): simplify chat visibility logic and add persistent chat mode
2026-06-03 15:08:31 +07:00
MythEclipse
7904d7f38d
```
2026-06-03 15:01:34 +07:00
MythEclipse
84d1b55113
feat(mascot): integrate mascot chatbot with AI-powered responses in sidebar
2026-06-03 14:34:28 +07:00
MythEclipse
9f454b57bb
feat(mascot): add AI-powered chat insights to sidebar mascot with useMascotSummary hook
2026-06-03 14:17:21 +07:00
MythEclipse
bb65178210
refactor(mascot): replace ChibiMascot SVG with MascotImage PNG and simplify empty states
2026-06-03 13:56:11 +07:00
MythEclipse
2ea0ea5810
chore(frontend): update logo source and add mascot to sidebar
...
Update the favicon and sidebar logo to use remote URLs from the GitHub repository. Add a mascot image to the sidebar that is only visible when the sidebar is expanded.
2026-06-03 13:50:08 +07:00
MythEclipse
4a1c7925fe
style(frontend): organize imports alphabetically and improve code formatting
2026-06-03 03:21:20 +07:00
MythEclipse
20681ef308
Which direction fits your commit philosophy better?
2026-06-03 03:16:06 +07:00
MythEclipse
e2003cd9f6
style(frontend): refactor UI components with rounded corners, light theme, and design polish
2026-06-03 03:12:14 +07:00
MythEclipse
caee0c692a
feat(frontend): add ChibiMascot component with animation variants
2026-06-03 03:08:36 +07:00
MythEclipse
3802ca357f
feat(frontend): refactor ParticleBackground for performance and type safety
2026-06-03 03:07:51 +07:00
MythEclipse
0d83ada0ef
feat(frontend): add ParticleBackground component with sakura petals and mouse-tracked sparkles
2026-06-03 03:06:41 +07:00
MythEclipse and Claude Opus 4.8
c48a0c5e3b
refactor: split monolith into 3 microservices (frontend, backend, discord-gateway)
...
- Extract services into services/{frontend,backend,discord-gateway}
- Create packages/shared/ for shared logger, errors, utils, types
- Setup Modular MVC pattern in backend (controller→service→repository)
- Setup event-driven architecture in discord-gateway with Redis pub/sub
- Move Docker files to infra/docker/ with per-service Dockerfiles
- Update docker-compose.yml to use Traefik-only routing (no port exposes)
- Update GitHub Actions deploy workflow for multi-service matrix build
- Fix all import paths and resolve type errors across all services
- All 3 services pass tsc --noEmit clean
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 21:44:29 +07:00