asepharyana
611ba39973
refactor: replace GSAP animations with CSS animations across components
...
- Updated RootLayout to include a noise overlay class.
- Refactored LiveModerationFeed to use CSS animations for item entry.
- Simplified AmbientCanvas by removing WebGL and using pure CSS for ambient effects.
- Converted Chatbot to use CSS for floating window animations.
- Updated Card component to include a gradient border.
- Refactored PageTransition to use CSS for fade-scale animations.
- Enhanced SectionHeader with reveal-up animation class.
- Replaced GSAP animations in NavRail with CSS animations for item entry.
- Refactored VoiceStage to use CSS for speaker node animations and pulse rings.
- Removed GSAP dependencies from use-gsap-animation hook, implementing CSS-based stagger reveal.
2026-08-26 19:43:57 +07:00
asepharyana
192685e1ce
feat(layout): add theme script to prevent light mode flash during hydration
2026-08-26 18:33:30 +07:00
asepharyana
cacebfd94e
feat(messages): enhance message and edit history with channel names and content diffs
2026-08-26 18:26:15 +07:00
asepharyana
e81391484b
feat(messages): enhance message rendering with metadata parsing and inline image support
2026-08-26 17:43:01 +07:00
asepharyana
3b8fe1b1c3
refactor(select): enhance dropdown positioning and implement portal for improved rendering
2026-08-26 17:37:20 +07:00
asepharyana
0c3a82ad77
refactor: update recordings handling with pagination support and improve infinite scroll functionality
2026-08-26 17:05:41 +07:00
asepharyana
b640079cb6
refactor: enhance message streaming and UI components; add SWR provider
2026-08-26 16:51:46 +07:00
asepharyana
37d15456dc
refactor: remove unnecessary PageTransition wrappers from dashboard pages
2026-08-26 15:49:58 +07:00
asepharyana
153e628aba
refactor: update component styles to use theme-aware colors and improve UI consistency
2026-08-26 15:43:43 +07:00
asepharyana
a5f908dc06
refactor: update UI components for consistency and improved styling
...
- Refactored ChannelCultureGlossary, LiveModerationFeed, TermGlossary, and Chatbot components to use new design tokens and styles.
- Updated button, badge, and section components to align with the new design system.
- Enhanced the visual hierarchy and accessibility of various UI elements.
- Improved responsiveness and hover states across components.
- Replaced hardcoded colors with design tokens for better maintainability.
2026-08-26 14:57:08 +07:00
asepharyana
ccfe769b2f
Refactor moderation and recordings views; enhance UI components and improve performance
...
- Cleaned up imports and removed unused hooks in ModerationView and RecordingsView.
- Updated UI elements for better visual consistency and accessibility.
- Improved performance by optimizing rendering logic and reducing unnecessary state updates.
- Added filtering functionality in ChannelCultureGlossary and TermGlossary components.
- Enhanced LiveModerationFeed with GSAP animations for smoother transitions.
- Updated chatbot component for better user experience and responsiveness.
- Refined NavRail component for cleaner code and improved navigation item rendering.
2026-08-26 10:39:00 +07:00
asepharyana
29f59fd91f
feat(frontend): revamp UI to Linear Precision Clean Dark with GSAP micro-interactions
2026-08-26 10:12:42 +07:00
asepharyana
24336186dc
feat(frontend): add HUD header and GSAP accordion reveal to glossary route
2026-08-25 23:46:36 +07:00
asepharyana
6b66863897
feat(frontend): add HUD header, count-up gauge, and stagger reveal to analysis route
2026-08-25 23:41:39 +07:00
asepharyana
fc40609a3a
feat(frontend): add tactical HUD header and GSAP stagger deck to recordings route
2026-08-25 23:36:45 +07:00
asepharyana
e157ae3ce4
feat(frontend): add alert-priority HUD header with GSAP pulse to moderation route
2026-08-25 23:32:21 +07:00
asepharyana
3f4c05f5bb
feat(frontend): add tactical HUD header and scan-line reveal to messages feed
2026-08-25 23:28:11 +07:00
asepharyana
9c25e0887c
feat(frontend): add tactical HUD header and GSAP speaking-pulse loop to voice route
2026-08-25 23:23:19 +07:00
asepharyana
2aa12b9ec5
feat(frontend): revamp channels into signal-map roster with GSAP stagger
2026-08-25 23:17:39 +07:00
asepharyana
cab451f0e5
feat(frontend): revamp media frequency deck with GSAP animations and tactical visualizer
2026-08-25 23:05:05 +07:00
asepharyana
183a51003a
feat(frontend): revamp dashboard into tactical HUD and integrate GSAP reactive stages
2026-08-25 22:59:29 +07:00
asepharyana
2c30140ddd
feat(frontend): migrate animations to GSAP and update client socket types for Next 16.3
2026-08-25 22:47:25 +07:00
asepharyana
7e92de63d6
feat(frontend): migrate animations to GSAP and add useGSAP lifecycle hooks
2026-08-25 22:41:41 +07:00
asepharyana
31e303c187
feat(fe): optimize error handling, state consistency, and WS feedback
...
- Add global SWR config with exponential backoff retry (swr-config.ts)
- Add ErrorBoundary component for React crash recovery (error-boundary.tsx)
- Standardize ErrorState onRetry on all 6 dashboard views (dashboard, media,
messages, moderation, recordings, voice)
- Fix useAction: expose resetError + onError callback
- Refactor useSpeakers to SWR-backed state (was local useState) for
consistent cache/revalidate semantics with other hooks
- Remove polling in useReview (15s refreshInterval); replace with
useReviewWsSync subscribing to WS moderation_action events
- Extract hashUserId to lib/hash.ts (de-dup with ambient-canvas)
- WS context: add reconnect/error toast feedback via onStatusChange
- WS connection: expose reconnectAttemptCount getter
All typecheck + lint clean, Next 16 build passes.
2026-08-25 13:46:15 +07:00
asepharyana
440ec41da8
polish(frontend): perkuat bracket & marker segitiga game-menu (nudge anim)
2026-08-24 17:52:50 +07:00
asepharyana
1c8c0ca081
fix(frontend): normalisasi trailing slash pada isActivePath agar nav aktif terdeteksi
2026-08-24 17:44:42 +07:00
asepharyana
5f42c17caa
feat(frontend): tema monokrom + sidebar animasi game-menu + gate ringan mobile
2026-08-24 17:35:51 +07:00
asepharyana
eda5c752b7
revert(frontend): kembalikan shell usable — hapus total eksperimen constellation (three/d3-force dihapus)
2026-08-24 16:32:16 +07:00
asepharyana
25d5097edb
fix(frontend): definite-height overlay chain so absolute panels anchor to viewport
2026-08-24 16:15:55 +07:00
asepharyana
d3e3b4764a
fix(frontend): let empty overlay areas click through to the constellation sky
2026-08-24 16:02:57 +07:00
asepharyana
33a557c761
fix(frontend): soften constellation glow for light theme
2026-08-24 15:48:15 +07:00
asepharyana
32de2819df
feat(frontend): a11y constellation mirror — sr/keyboard-accessible node list
2026-08-24 15:47:19 +07:00
asepharyana
a21d252e9b
feat(frontend): eased camera fly-to on scene transitions (reduced-motion aware)
2026-08-24 15:46:08 +07:00
asepharyana
84a766db0c
feat(frontend): voice stage-orbit, media queue-spiral & recordings timeline-ring scenes
2026-08-24 15:44:10 +07:00
asepharyana
0581dc3485
feat(frontend): messages orbital-belt & moderation verdict-hub scenes
2026-08-24 15:35:51 +07:00
asepharyana
3d6c07bd91
feat(frontend): glossary satellite ring + analysis search console scenes
2026-08-24 15:29:21 +07:00
asepharyana
60ae1fb5c3
feat(frontend): dashboard & channels constellation scenes — publish bridge + floating overlays
2026-08-24 15:22:27 +07:00
asepharyana
1fafebb16d
refactor(frontend): remove classic dashboard chrome (topbar/navrail/mobilenav)
2026-08-24 15:07:40 +07:00
asepharyana
a9e09c38e9
feat(frontend): constellation stage + floating chrome replace classic shell
2026-08-24 15:04:31 +07:00
asepharyana
3d4236e8df
feat(frontend): constellation lib scaffold — graph/layout/camera pure modules (tested)
2026-08-24 14:46:38 +07:00
asepharyana
81ce5188ea
fix(frontend): pindah aria-label mic meter ke wrapper role=status
2026-08-22 12:55:52 +07:00
asepharyana
4e0c21d86c
feat(frontend): perbagus voice & audio playback UX
...
- Recordings: custom RecordingAudioPlayer (play/pause, buffering spinner,
click-to-seek, time label, eq bars, single-playback antar kartu) +
highlight kartu now-playing
- Media: thumbnail di disc hero + queue row, equalizer saat playing,
badge 'up next', label Paused vs Now playing
- MiniPlayer global di AppFrame (fixed bottom-right, hidden on /media)
menggantikan use-media-player.tsx dead provider (dihapus)
- Voice: mic level meter live (AnalyserNode RMS) + slider mic/listen volume
2026-08-22 12:53:18 +07:00
asepharyana
eee332412f
chore: hapus fitur materi (learning materials + RAG chat)
...
Hapus fitur materi seluruhnya dari GMW monorepo:
Backend:
- Hapus module materi/ (index.ts, materi.repository.ts, materi.schema.ts,
materi.service.ts, ragClient.ts)
- Hapus materiRouter dari orpc/router.ts (imports, const, appRouter entry)
- Hapus pgMateriDocumentsTable + types dari shared/database/schema.ts
Frontend:
- Hapus route pages app/(dashboard)/materi/ (page, [id], chat, new)
- Hapus lib/api/materi.ts (oRPC client wrappers)
- Hapus lib/types/materi.ts + export dari index.ts
- Hapus nav item "Materi" dari lib/navigation.ts + unused BookOpen import
Scripts:
- Hapus scripts/add-materi-documents.sql
- Tambah scripts/drop-materi-documents.sql (ops DB cleanup)
Verification:
- Backend: npx tsc --noEmit — clean (exit 0)
- Frontend: npx tsc --noEmit — clean (exit 0)
- Grep: zero materi code references remaining (hanya di drop-materi-documents.sql)
RAG dependencies (messages/embed.ts, messages/qdrant.ts) tetap karena juga
dipakai oleh messages.service.ts.
2026-08-20 22:50:11 +07:00
mytheclipsebotreview
7f4196124d
fix(ci): lint and a11y fixes unblocks GHA deploy
...
- materi/new/page.tsx: add htmlFor+id pairs for all 5 form labels (a11y)
- biome --write --unsafe: fix useTemplate, useLiteralKeys, import sort
across materi module files (backend + frontend)
- These pre-existing lint errors from 0aa893a blocked the deploy pipeline
2026-08-20 18:45:09 +07:00
mytheclipsebotreview
5658726ea5
fix(frontend): sort messages by created_at to fix WS race condition
...
Two independent WS handlers (useMessagesWsSync for message_created/
updated/analyzed, and useMessagesStream for message_snapshot) both
prepend live messages to the SWR list without enforcing order.
When frames arrive out-of-order (common with batched WS delivery),
the message feed gets scrambled.
Fix: add sortMessages() helper that sorts newest-first by created_at
(the list's stored order before .reverse() for display) and apply it
in every patchLists/mutate updater: message_created, message_updated,
message_analyzed, message_snapshot, and useLoadMore page appends.
Function declaration is hoisted so useLoadMore (defined above the
helper) can use it.
2026-08-20 18:16:43 +07:00
asepharyana
0aa893ab7d
feat: add Materi section + AI agent RAG to GMW business flow
...
Backend:
- New materi module: schema (materi_documents table), repository, service
- ragClient: semantic + keyword search over materi docs, plus Discord
archive via Qdrant, then LLM answer generation (RAG)
- Wire materiRouter into appRouter (list/detail/create/update/delete/chat)
Frontend:
- New types (MateriDocument, CreateMateriInput, RAG chat shapes)
- API client (SSR HTTP RPCLink + browser WS RPCLink)
- Routes: /materi list, /materi/[id] detail, /materi/new form,
/materi/chat RAG chat UI
- Sidebar nav item 'Materi'
Migration: scripts/add-materi-documents.sql (CREATE TABLE IF NOT EXISTS)
2026-08-20 15:57:04 +07:00
asepharyana
00e8d68ce5
feat(gmw): public features #7-14 — scam domains, top channels, hourly heatmap, category drill-down, coverage stats, channel culture glossary, term KB, edit history
...
ALSO fixes: dashboard.repository still JOINed dropped user_reputations table (listUsers/getUserDetail crash).
2026-08-18 20:45:12 +07:00
asepharyana
9b3134d767
feat(gmw): public features #2-#6 — live moderation feed, toxic topic trends, channel timeline, CSV export, activity heatmap
...
- Live Moderation Feed: gateway publishes discord:moderation:action (Redis) → backend WS emits moderation_action → public web shows realtime stream.
- Toxic Topic Trends: backend moderation.trends aggregates categories/severity/action_type (read-only) → SVG bar + donut.
- Channel Timeline: messages view gets Feed/Timeline toggle with date-grouped separators.
- CSV Export: client-side downloadCsv for moderation actions (no backend write scope).
- Activity Heatmap: backend messages.activity (per-hour volume by channel) → pure-SVG grid.
User reputation deliberately excluded — no such feature exists in the codebase.
All read-only / public-facing / fully automatic per project rules.
2026-08-18 17:43:02 +07:00
asepharyana
1ae19074ee
feat(gmw): moderation explainability + semantic message search
...
- Persist structured verdict (flags/severity/confidence/evidence) on
moderation_actions so the public web can show WHY a message was moderated.
- Add a persistent Qdrant archive collection (gmw_message_archive); embed
every captured message at capture time (fire-and-forget, best-effort).
- Public semantic search over the archive (backend oRPC + FE toggle on the
messages view). Both features are read-only/public and fully automatic.
Migration: 0015_add_moderation_explainability.sql
2026-08-18 15:11:01 +07:00
asepharyana
217ecc1aa1
feat(frontend): content micro-animations — stagger, button press, toast polish
...
- animate-stagger utility + staggerDelay() helper; lists now rise in sequence
(recordings grid, moderation rows, message list, media queue, dashboard tiles).
- Button gets a subtle active:scale-[0.97] press feedback.
- Toaster: toast-in slide-up, tone-accent border, rounded hover-close target.
- All motion is reduced-motion aware (killed under prefers-reduced-motion).
2026-08-18 11:01:00 +07:00