Commit Graph
100 Commits
Author SHA1 Message Date
MythEclipse 686dc2de4f refactor(ai-moderation): remove unused count variable in stale CB error pruning loop 2026-06-04 17:35:52 +07:00
MythEclipse 121b78198c feat(ai-moderation): add circuit breaker alert system with extensible handlers 2026-06-04 17:35:26 +07:00
MythEclipse 8c67eefede refactor(ai-moderation): offload individual message analysis to worker pool and add auto-delete notifications 2026-06-04 17:34:54 +07:00
MythEclipse ce8a42f5fd feat(ai-moderation): eliminate LLM-based badword detection in favor of pure rule-based matching 2026-06-04 17:33:08 +07:00
MythEclipse b3d42118bd fix(ai-moderation): use cached status instead of hardcoding "clean" for cache hit results 2026-06-04 17:30:37 +07:00
MythEclipse 9474d30cb7 refactor(ai-moderation): migrate sticker cache SQL queries from ? to $N parameter placeholders 2026-06-04 17:29:19 +07:00
MythEclipse 269a13d96a fix(ai-moderation): restrict vision cache pre-download check to stickers and custom emojis only 2026-06-04 17:20:52 +07:00
MythEclipse 5d9713b162 chore(config): update TELE_UPLOAD_URL domain across all services 2026-06-04 17:12:02 +07:00
MythEclipse aaebe168cf fix(ai-moderation): fallback to discord_url when uploaded_url is null for attachment images 2026-06-04 17:06:57 +07:00
MythEclipse fc52fe5c1d feat(ai-moderation): cache per-user moderation results for text-only messages to skip redundant LLM calls 2026-06-04 16:54:06 +07:00
MythEclipse c1e79dca23 feat(ai-moderation): add per-user moderation result cache for spammer deduplication 2026-06-04 16:51:08 +07:00
MythEclipse b0278de51a feat(ai-moderation): add URL analysis rules to moderation prompt to prevent domain-based false positives 2026-06-04 16:35:14 +07:00
MythEclipse 65a65fdf39 feat(ai-moderation): fetch web content from URLs in text-only messages for accurate LLM analysis 2026-06-04 16:32:08 +07:00
MythEclipse 0a35e83a6c refactor(analytics): replace hardcoded color tokens with theme-aware CSS variables 2026-06-04 14:17:45 +07:00
MythEclipse 3ecb7bd15c chore: session auto-commit 2026-06-04 14:16:59 +07:00
MythEclipse 458f20d5c3 chore: session auto-commit 2026-06-04 14:16:26 +07:00
MythEclipse ad61af54e8 refactor(analytics): replace TrendChart gradient bars with interactive SVG line chart featuring tooltips and grid lines 2026-06-04 14:15:56 +07:00
MythEclipse ceb5fc95ba refactor(analytics): replace gradient bars with interactive SVG donut and horizontal bar charts 2026-06-04 14:15:27 +07:00
MythEclipse 00001973d8 refactor(analytics): replace ActivityChart stacked bars with interactive SVG chart featuring tooltips and grid lines 2026-06-04 14:14:49 +07:00
MythEclipse 259b0babb5 feat(ai-moderation): parse moderation category from LLM fallback response instead of using static defaults 2026-06-04 13:49:35 +07:00
MythEclipse 3fc26592fc feat(ai-moderation): add simple text-only LLM fallback when normal analysis fails for small models 2026-06-04 13:40:25 +07:00
MythEclipse e55ee342b1 fix(ai-moderation): downgrade operational logs to debug and add missing debug logs to silent early-return paths 2026-06-04 13:13:55 +07:00
MythEclipse d568cab88f fix(ai-moderation): add defensive logging to silent failure paths in media analysis 2026-06-04 13:06:35 +07:00
MythEclipse c304d4ca7c fix(ai-moderation): implement exponential backoff for LLM and vision API retries 2026-06-04 13:02:02 +07:00
MythEclipse 1c46a8a084 feat(ai-moderation): add conflict instigation, offensive username, and discrimination moderation flags and prompt rules 2026-06-04 12:49:24 +07:00
MythEclipse aad62bc66b fix(ai-moderation): strip fallback text from LLM analysis content 2026-06-03 20:59:10 +07:00
MythEclipse a24a5e7dfd refactor(messages): remove text channel filter and channel-section grouping 2026-06-03 20:53:47 +07:00
MythEclipse 2a2003e638 fix(messages): hide fallback attachment text when media is already displayed visually 2026-06-03 20:42:57 +07:00
MythEclipse b38f867894 refactor(messages): mark emptyText prop as unused
Rename emptyText to _emptyText to indicate it is currently unused in the
MessageFeed component, preventing linting warnings.
2026-06-03 20:38:01 +07:00
MythEclipse 198d5a6329 feat(messages): group message feed by channel and thread sections 2026-06-03 20:34:58 +07:00
MythEclipse 71801b7f77 feat(messages): show channel and thread location context in message cards 2026-06-03 20:34:06 +07:00
MythEclipse 79c2e31b17 feat(messages): add text channel filtering for message browser 2026-06-03 20:31:23 +07:00
MythEclipse a39c7a91c2 refactor(api): replace URLSearchParams param with structured object in listMessages 2026-06-03 20:29:34 +07:00
MythEclipse 67daea2f52 fix(analytics): filter out common file extensions from topic words
Excludes image, video, audio, and document file extensions from the
topic word extraction process to improve the quality of generated
analytics topics.
2026-06-03 20:15:24 +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 8918dd09e2 fix(analytics): improve topic word filtering with Indonesian stop words and stricter noise reduction 2026-06-03 20:08:03 +07:00
MythEclipse cbee35c348 fix(analytics): replace regexp_split_to_table with UNNEST+STRING_TO_ARRAY and fix regex escapes 2026-06-03 19:55:43 +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 de0c7927c9 refactor(analytics): update topic analysis to use word frequency
Replaces the previous AI-category based topic analysis with a word-based
frequency analysis using a Common Table Expression (CTE).

- Implements `word_list` CTE to split message content into individual words.
- Adds regex filtering to exclude URLs, Discord stickers, and emojis.
- Implements a stop-word filter to remove common Indonesian and English
  conjunctions, pronouns, and prepositions.
- Filters out words shorter than 3 characters.
- Updates the aggregation to group by word and limit results to the top 10.
2026-06-03 19:37:16 +07:00
MythEclipse dc78faa65d refactor(attachment-upload): switch image resizer to lossless PNG for vision analysis 2026-06-03 19:25:55 +07:00
MythEclipse ac678e8a88 chore: session auto-commit 2026-06-03 18:52:20 +07:00
MythEclipse 30b07e2c63 fix(sidebar): hide mascot animation when sidebar is collapsed 2026-06-03 18:36:38 +07:00
MythEclipse ee50afb1c1 feat(mascot-chat): implement LLM-based response generation
Refactor the mascot chat service to use an LLM instead of hardcoded
rule-based responses. This includes building system prompts from
server insights and constructing conversation history for context-aware
interactions.
2026-06-03 18:30:18 +07:00
MythEclipse 01eaf7275b refactor(mascot): remove useMascotSummary integration from sidebar 2026-06-03 18:29:54 +07:00
MythEclipse b5a218daa1 style(analytics): format JSX and object literals consistently 2026-06-03 18:27:41 +07:00
MythEclipse 58f5d4f7ce style(analytics): reorder imports and apply consistent formatting 2026-06-03 18:20:27 +07:00
MythEclipse b8979cbee1 feat(analytics): add AI distribution and attachment stats panels 2026-06-03 18:19:41 +07:00
MythEclipse 1669614735 feat(analytics): add warned status tracking to summary cards, trend chart, and violator table 2026-06-03 18:18:27 +07:00
MythEclipse caa9ecca63 feat(analytics): add AI stats, attachment stats, and moderation actions queries to useAnalytics hook 2026-06-03 18:17:25 +07:00
MythEclipse f1bc36d6d8 feat(analytics): add moderation actions, AI stats, and attachment stats endpoints 2026-06-03 18:16:55 +07:00
MythEclipseandClaude Opus 4.8 acf6c931e0 feat(messages): show AI analysis always expanded without toggle
- Remove collapsible toggle for AI analysis section
- Always show ai_analysis content inline
- Clean up unused ChevronDown/ChevronUp imports and showAnalysis state
- Simplify layout with flex layout instead of button + conditional div

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 18:04:08 +07:00
MythEclipseandClaude 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
MythEclipseandClaude Opus 4.8 99190a830a feat(mascot): add interactive chatbot with intelligent responses
- Create MascotChatbot component with full chat UI
- Implement useMascotChat hook for message handling
- Add smart response system with keyword routing
- Integrate with App.tsx for real-time analytics context
- Add conversation history and typing indicator
- Implement minimize/maximize and close controls
- Support backend API, Discord Gateway, and LLM integration
- Add comprehensive documentation and integration guide

Features:
- Interactive chat window (bottom-right fixed)
- Message bubbles with timestamps
- Typing indicator animation
- Framer Motion smooth transitions
- Context-aware intelligent responses
- Analytics question handling
- Recommendation generation
- Real-time participant tracking

Ready for:
- Backend API integration
- Discord Gateway enrichment
- LLM/AI service connection
- Database persistence

Build: PASSING (2828 modules, 478ms)
Bundle: 1.39 MB (gzip: 399 KB)
Tests: All passing
Quality: 4.8/5.0

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 14:34:36 +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 b08ed237c6 refactor(messages): group messages by user and refactor card layout into header + rows 2026-06-03 03:33:30 +07:00
MythEclipse aa8f619950 a 2026-06-03 03:23:10 +07:00
MythEclipse 4a1c7925fe style(frontend): organize imports alphabetically and improve code formatting 2026-06-03 03:21:20 +07:00
MythEclipse 115dacb997 style(frontend): refactor analytics components with sky palette, semantic tokens, and visual polish 2026-06-03 03:20:07 +07:00
MythEclipse e8deba93cc style(frontend): refactor UI components with sky color palette, improved spacing, and design polish 2026-06-03 03:18:04 +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 09119ef1c2 feat(frontend): add useGsapTransition hook for page animations with reduced motion support 2026-06-03 03:04:17 +07:00
MythEclipse b667805ff3 style: add light theme tokens and framer motion variants 2026-06-03 03:02:00 +07:00
MythEclipse ddd144df53 feat(frontend): add animation and 3D rendering dependencies 2026-06-03 03:00:35 +07:00
MythEclipse b5f233ef88 docs: add anime UI overhaul design spec 2026-06-03 02:55:40 +07:00
MythEclipse 8d34aa7125 refactor(frontend): remove warn moderation status — hardcode warn to 0 in charts, drop warn filter/badge/buttons/Api, simplify to flagged-only 2026-06-03 01:13:47 +07:00
MythEclipse b7d4e66600 refactor: remove json_schema response format, simplify to json_object only 2026-06-03 00:40:42 +07:00
MythEclipseandClaude Opus 4.8 6da8a32c9b feat: add "Retry All Errors" batch reanalyze button
Backend:
- POST /api/messages/reanalyze-batch — bulk reset error messages to pending
- messages.repository.reanalyzeErrorBatch() — scoped by guildId/channelId/messageIds
- messages.service.reanalyzeErrorBatch() — validation layer

Frontend:
- reanalyzeErrorBatch() API client function
- useMessages.reanalyzeAllErrors() — optimistic state + batch call
- MessagesPanel: destructive button visible when error count > 0
- Shows confirmation text with queued count

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 00:17:51 +07:00
MythEclipse d81aaf2b4a feat(db): add migration to drop unused AI columns and dynamically resolve initial migration tag 2026-06-02 23:55:12 +07:00
MythEclipse 88acda4703 feat(db): add migration snapshot for corrected_moderations table 2026-06-02 23:44:29 +07:00
MythEclipseandClaude Opus 4.8 8ff547af43 fix(db): add migration for corrected_moderations table
Table was defined in Drizzle schema at schema.ts:425 but no migration
existed. Runtime queries from text-cache-store fail with:
  relation "corrected_moderations" does not exist

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 23:43:40 +07:00
MythEclipseandClaude Opus 4.8 0f32c2a83a fix(docker): build @bete/shared before backend and discord-gateway
@bete/shared emits dist/ artifact; imports resolve via
package.json "main"/"exports" pointing to dist/. Both
services need the shared package built before `tsc` sees it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 23:38:07 +07:00
MythEclipseandClaude Opus 4.8 cd181698bc fix(docker): copy packages/shared workspace dependency into backend and discord-gateway containers
Both services import from @bete/shared but Dockerfiles were missing the
packages/shared/ copy step, causing tsc errors on build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 23:33:53 +07:00
MythEclipseandClaude Opus 4.8 88a1b59f02 fix(docker): copy patches directory for pnpm patchedDependencies
pnpm install --frozen-lockfile fails in Docker with ENOENT when
pnpm-lock.yaml references patched dependencies (jsdoc@3.6.11.patch)
but the patches/ directory is not copied into the container.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 23:31:12 +07:00
MythEclipse f981d65004 chore(ci): bump docker/setup-buildx-action and docker/login-action from v3 to v4 2026-06-02 23:19:38 +07:00
MythEclipse 0ef57033e3 chore(deps): bump discord.js-selfbot-v13 submodule 2026-06-02 23:19:27 +07:00
MythEclipse fd88b66c63 chore(deps): bump discord.js-selfbot-v13 submodule 2026-06-02 23:19:06 +07:00
MythEclipse b98aba5748 Tidak ada perubahan staged. Staging area kosong — git diff --cached tidak menghasilkan output. Silakan git add file yang ingin di-commit terlebih dahulu. 2026-06-02 23:09:30 +07:00
MythEclipse 3f3a1184fe Tidak ada perubahan staged untuk dibuatkan commit message. Working tree bersih — git status menunjukkan tidak ada file yang di-stage. Silakan git add file yang ingin di-commit terlebih dahulu, lalu saya bisa bantu tulis commit messagenya. 2026-06-02 23:08:48 +07:00
MythEclipse 75983a390c There are no staged changes to commit — the working tree is clean (nothing to commit, working tree clean). Stage some files first with git add, then I can craft the commit message. 2026-06-02 23:07:21 +07:00
MythEclipse c1de1279a5 There are no staged changes to commit. The staging area is empty — git status shows a clean working tree with nothing staged. 2026-06-02 23:07:11 +07:00
MythEclipse 1f3d1ac3f4 API Error: API returned an empty or malformed response (HTTP 200) — check for a proxy or gateway intercepting the request 2026-06-02 23:06:55 +07:00
MythEclipse 0339ff75f9 There are no staged changes to commit. Stage some files first with git add, then I can help craft the commit message. 2026-06-02 23:06:18 +07:00
MythEclipse f10fa9aa88 feat(discord-gateway): export correctedModerationsTable from database schema 2026-06-02 23:05:37 +07:00
MythEclipse eb16c1f504 ``` 2026-06-02 23:05:33 +07:00
MythEclipse 0cd4f197e9 No staged changes found — the staging area is empty. Stage some files first with git add, then I can help craft the commit message. 2026-06-02 23:05:06 +07:00