Commit Graph

70 Commits

Author SHA1 Message Date
DrSmoothl
6bac2b9331 feat: 增强插件管理和日志处理,兼容旧版参数,优化 UDS 路径处理 2026-03-12 23:34:07 +08:00
DrSmoothl
d0840db2a5 refactor: remove RuleEditor, RuleList, RulePreview, TimeRangePicker, and VoiceSection components
- Deleted RuleEditor.tsx, RuleList.tsx, RulePreview.tsx, TimeRangePicker.tsx, and VoiceSection.tsx as part of a cleanup.
- Updated index.ts to remove imports related to deleted components.
- Modified types.ts and model.tsx to accommodate changes in task configuration structure.
- Introduced new types for TargetItem and LearningItem to enhance type safety.
- Refactored ModelTaskConfig to be dynamic based on backend schema.
- Updated ModelProviderConfigPage to unwrap backend config response for better handling.
2026-03-08 00:12:10 +08:00
DrSmoothl
b056ad2c34 feat: 添加动态 Tab 分组支持,优化配置界面 UI 元数据 2026-03-07 23:13:04 +08:00
DrSmoothl
0451a7fef4 优化认证检查逻辑,确保加载状态显示在正确位置;更新配置验证逻辑,使用深拷贝确保数据完整性 2026-03-07 21:52:23 +08:00
DrSmoothl
2e4be9bd77 为 WebUI 首页支持 i18n 2026-03-07 21:32:09 +08:00
DrSmoothl
fe5cab9c41 修复 webui 明暗切换问题 2026-03-07 20:59:18 +08:00
DrSmoothl
8f41e25696 fix(dashboard): resolve TS build errors in a11y changes
- Fix duplicate className attr in EmojiDialogs.tsx
- Replace animated.div with animated('div') in expression-reviewer and zoomable-chart to fix React 19 children type error
- Fix malformed i18n JSON (a11y namespace was outside root object)
2026-03-05 22:10:32 +08:00
DrSmoothl
e3cfca17a6 chore: add bunfig.toml and remove package-lock.json 2026-03-05 21:57:43 +08:00
DrSmoothl
c658b2314d feat(a11y): apply ARIA roles, landmarks, focus management, touch targets and contrast fixes across components 2026-03-05 21:57:36 +08:00
DrSmoothl
c12d1ca42a feat(a11y): add a11y infrastructure — skip-nav, announcer, touch CSS, eslint-jsx-a11y 2026-03-05 21:57:27 +08:00
DrSmoothl
a65a40f85f feat(dashboard): add i18n support with zh/en/ja/ko locales
- Add react-i18next + i18next + i18next-browser-languagedetector
- Create i18n config (singleton import) with zh/en/ja/ko JSON locale files
- Add language switcher Globe dropdown in Header topbar
- Replace all hardcoded Chinese strings in:
  - Layout (Header, Sidebar, NavItem, Layout, constants)
  - Settings (index, AppearanceTab, SecurityTab, OtherTab, AboutTab)
  - Auth page (auth.tsx)
  - Search dialog (searchItems via useMemo + t())
  - Restart overlay (getStatusConfig accepts t param)
  - Error boundary (ErrorFallback, ErrorDetails function components)
  - HTTP warning banner
- localStorage key: maibot-locale
- Compatible with Electron
2026-03-03 20:50:06 +08:00
DrSmoothl
4561cd91b8 fix(electron): use named Schema import from electron-store v8+ 2026-03-03 01:19:37 +08:00
DrSmoothl
c6545afa2e fix(package): format target configurations and update electron-store version 2026-03-03 01:16:04 +08:00
DrSmoothl
65774f3afc feat(electron): add Electron UI components and layout integration 2026-03-03 00:57:50 +08:00
DrSmoothl
fc394f4412 feat(electron): adapt renderer API and WebSocket layer for dynamic backend URL 2026-03-03 00:57:50 +08:00
DrSmoothl
b5cc361ce9 feat(electron): add main process, preload, store, protocol, and type definitions
- Add ElectronAPI type definitions and runtime contract (isElectron guard)
- Add electron-store with backend connection data model
- Add centralized API base URL utility (api-base.ts)
- Implement app:// custom protocol with API proxy
- Implement preload script with full contextBridge API
- Complete main process: BrowserWindow config, IPC handlers, window controls
- Register app:// scheme as privileged for secure renderer access
2026-03-03 00:57:50 +08:00
DrSmoothl
e6862e227b feat(electron): scaffold electron-vite project structure
Initialize Wave 1 Electron integration with:
- electron v40.6.1, electron-vite v5.0.0, electron-builder v26.8.1
- Main entry point: electron/main/index.ts with app:// protocol registration
- Preload placeholder: electron/preload/index.ts for Wave 2 IPC
- electron.vite.config.ts with unified renderer chunk splitting strategy
- tsconfig.electron.json with ESNext module support
- Updated package.json with electron dependencies and scripts:
  - electron:dev, electron:build, electron:preview
- All original scripts (dev, build, test, etc) remain unchanged
- TypeScript compilation verified: tsc --noEmit passes
- Ready for Wave 2: IPC bridge and contextBridge exposure
2026-03-03 00:57:50 +08:00
DrSmoothl
ba47069dfe refactor(types): eliminate all as any type assertions (30 → 0)
- Replace MouseEvent-only handlers with MouseEvent | KeyboardEvent unions in multi-select and ChatTabBar
- Define LegacyInstalledPlugin type for backward compatibility in plugin-api
- Create getTokenValue() helper for type-safe theme token access in AppearanceTab
- Define ModelConfig interface for model configuration type safety in modelProvider
- All modifications maintain exact business logic equivalence
- Build passes with zero TypeScript errors (bun run build )
- LSP diagnostics clean on all modified files
2026-03-01 21:33:40 +08:00
DrSmoothl
c45ee1a98e refactor(routes): review and fix config/bot/ directory (T16)
- Fixed import order in bot.tsx, ChatSection.tsx and Hook files
- Replaced 'as any' with specific type assertions (ExpressionConfig, PersonalityConfig, etc.)
- All files now comply with AGENTS.md import rules
- Build passes with zero errors
- LSP diagnostics clean on all modified files

Changes:
- bot.tsx: Reorganized imports (React first, then third-party, then @/, then ./)
- ChatSection.tsx: Fixed import order
- *SectionHook.tsx (4 files): Added type imports, replaced 'as any' with typed assertions

Note: ProcessingSection (1121 lines) and ExpressionSection (996 lines)
not split due to tight coupling and clear responsibilities.
2026-03-01 21:17:17 +08:00
DrSmoothl
763412e483 refactor(routes): split knowledge-graph.tsx into modular knowledge-graph/ directory (T19d) 2026-03-01 21:05:40 +08:00
DrSmoothl
c8e93d4d50 refactor(routes): split emoji.tsx into modular emoji/ directory (T19c) 2026-03-01 20:52:27 +08:00
DrSmoothl
31856422d1 refactor(routes): split jargon.tsx into modular jargon/ directory (T19b)
- 拆分 jargon.tsx (1064行) 为 5 个模块化文件
  - index.tsx (460行) - 主容器 + 17 个 useState
  - JargonDialogs.tsx (527行) - 5 个对话框组件
  - JargonList.tsx (255行) - 表格+卡片双视图
  - types.ts (17行) - StatsData 类型定义
  - index.ts (1行) - barrel 导出
- 保留所有功能:CRUD、搜索、筛选、批量操作、分页
- 统一 API 错误处理模式
- 响应式设计完整保留(桌面端表格 + 移动端卡片)
- 构建验证通过,零错误

Wave 4 - Task 19b (jargon)
2026-03-01 20:42:49 +08:00
DrSmoothl
bacb5b19cd refactor(routes): split expression.tsx into modular expression/ directory
- Split 1212-line monolithic file into 6 modular files
- Extracted types, dialogs, list view into separate modules
- Main index.tsx (468 lines) handles state management and API integration
- All CRUD operations, stats, review, search, pagination preserved
- Build passes with zero TypeScript errors (3.77s)
2026-03-01 20:23:53 +08:00
DrSmoothl
7866443c9c refactor(routes): modernize auth, setup, person routes
- auth.tsx: 统一错误处理,使用 parseResponse<T>
- setup/api.ts: 重构 12 个函数使用 ApiResponse 模式
- person.tsx: 优化 imports,使用 import type 语法
- 构建验证通过
- 功能完全等价
2026-03-01 20:11:32 +08:00
DrSmoothl
e9a081d46b refactor(react19): replace Context.Provider with Context value={}
- 升级 6 个文件的 Context 语法为 React 19 标准
- ThemeProviderContext, ChartContext, AnimationContext, TourContext, AssetStoreContext, RestartContext
- 构建验证通过
- 功能完全等价
2026-03-01 20:02:04 +08:00
DrSmoothl
e1f9936561 refactor(config): split modelProvider.tsx into modular directory
- 拆分为 7 个文件:index.ts (barrel), types.ts, utils.ts, 3 个组件, index.tsx (主页面 895行)
- 所有子组件 < 500 行
- 构建零错误
- 功能完全等价
2026-03-01 19:58:18 +08:00
DrSmoothl
b800011ed7 refactor(config): split ChatSection.tsx into sub-components
- 将 ChatSection.tsx (610行) 拆分为 4 个子组件
- TimeRangePicker.tsx: 时间范围选择器组件
- RulePreview.tsx: 规则预览组件
- RuleEditor.tsx: 规则编辑器组件
- RuleList.tsx: 规则列表组件
- ChatSection.tsx 重构为主容器组件 (197行)
- 功能完全不变,构建零错误
- 遵循具名导出规范

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-01 19:41:47 +08:00
DrSmoothl
c53840006d refactor(lib): split plugin-api.ts into plugin-api/ directory
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-01 19:35:36 +08:00
DrSmoothl
feb2b89917 refactor(routes): split plugins.tsx into modular plugins/ directory
- Extract types.ts: Plugin types and category name mapping
- Extract PluginCard.tsx: Single plugin card component
- Extract MarketplaceTab.tsx: All plugins marketplace view
- Extract InstalledTab.tsx: Installed plugins view
- Extract InstallDialog.tsx: Plugin installation dialog with branch selection
- Create index.tsx: Main PluginsPage with WebSocket state management
- Delete original 1244-line plugins.tsx
- Maintain full functionality, zero logic changes
- Build verified: bun run build passes with zero errors
2026-03-01 19:30:47 +08:00
DrSmoothl
f334d9882d refactor(dashboard): split chat.tsx into modular chat/ directory
- Extract types, utils, and components into separate files
- types.ts: All interfaces and type definitions (107 lines)
- utils.ts: Pure utility functions (50 lines)
- MessageRenderer.tsx: Message rendering components (96 lines)
- VirtualIdentityDialog.tsx: Virtual identity dialog (206 lines)
- ChatTabBar.tsx: Tab bar component (79 lines)
- index.tsx: Main ChatPage component (1147 lines)
- Update router import path to chat/index
- Fix TypeScript type imports per verbatimModuleSyntax
- Build passes with zero errors
2026-03-01 19:19:22 +08:00
DrSmoothl
34b05e4e16 fix(hooks): remove duplicate save calls in useAutoSave legacy 2026-03-01 19:09:08 +08:00
DrSmoothl
bddc6087cd refactor(T11): split settings.tsx into settings/ directory 2026-03-01 19:03:09 +08:00
DrSmoothl
dc7e037582 refactor(dashboard): migrate plugin-api HTTP functions to ApiResponse pattern
- Migrate 14 HTTP functions in plugin-api.ts to return ApiResponse<T>
  - fetchPluginList, checkGitStatus, getMaimaiVersion
  - getInstalledPlugins, installPlugin, uninstallPlugin, updatePlugin
  - getPluginConfigSchema, getPluginConfig, getPluginConfigRaw
  - updatePluginConfig, updatePluginConfigRaw, resetPluginConfig, togglePlugin
- Update 3 caller files to handle ApiResponse pattern:
  - plugins.tsx: 5 function calls updated
  - plugin-config.tsx: 5 function calls updated
  - plugin-detail.tsx: 5 function calls updated
- All callers now check .success before accessing .data
- Preserve WebSocket and utility functions unchanged
- Build verification: npm run build succeeds with 0 errors
2026-03-01 18:06:25 +08:00
DrSmoothl
d4bfc9591c refactor(api): migrate config-api to ApiResponse pattern 2026-03-01 17:49:05 +08:00
DrSmoothl
88e157040f refactor(api): migrate expression-api to ApiResponse pattern
- Migrated all 11 functions in expression-api.ts to return Promise<ApiResponse<T>>
- Implemented manual response handling following person-api pattern
- Properly unwrap nested API responses and re-wrap in ApiResponse
- Updated all 16 call sites across 4 files with proper error handling
- Fixed type annotations (ChatInfo) in expression.tsx
- Build passes successfully with no TypeScript errors
- Follows AGENTS.md import conventions and Wave 2 constraints
- All HTTP and API-level errors handled consistently via ApiResponse
2026-03-01 17:26:34 +08:00
DrSmoothl
c863d5a3be refactor(components): split layout.tsx into layout/ directory 2026-03-01 17:07:38 +08:00
DrSmoothl
7e93d886a2 refactor(types): eliminate any types in DynamicField icon lookup 2026-03-01 17:05:16 +08:00
DrSmoothl
5f211f2bcc refactor(css): clean up Tailwind base layers and CSS variables 2026-03-01 16:57:57 +08:00
DrSmoothl
3680009122 chore(config): tighten tsconfig and eslint strictness
- Enable strict mode in tsconfig.app.json (already enabled, now reinforced)
- Add allowSyntheticDefaultImports for better ES module compatibility
- Add skipLibCheck to suppress @types errors during compilation
- Change @typescript-eslint/no-explicit-any from 'off' to 'warn'
- @typescript-eslint/no-unused-vars already enabled as 'warn'
- Remove unused jotai from vite bundle configuration
- Build passes successfully with 0 errors
2026-03-01 16:57:49 +08:00
DrSmoothl
e1c8a30376 refactor(lib): unify WebSocket utilities into ws-utils 2026-03-01 16:57:45 +08:00
DrSmoothl
1533ec505b chore(deps): remove unused Jotai dependency
- Jotai was declared in package.json but never imported or used in any source code
- Verified with grep -r 'jotai' dashboard/src/ (zero matches)
- Build remains unaffected after removal
2026-03-01 16:57:01 +08:00
DrSmoothl
f9dd197f53 refactor(types): add unified API response types and error helpers 2026-03-01 16:53:34 +08:00
DrSmoothl
1fec4c3b9a feat(dashboard): add background customization system
Add image/video background support across 5 layout layers (page, sidebar,
header, card, dialog) with per-layer effect controls and custom CSS injection.
- IndexedDB asset store for blob persistence (idb)
- AssetStoreProvider for blob URL lifecycle management
- BackgroundLayer component with CSS effects and prefers-reduced-motion support
- useBackground hook with inherit logic
- BackgroundUploader with local file and remote URL support
- BackgroundEffectsControls and ComponentCSSEditor UI components
- Background settings integrated into AppearanceTab in settings.tsx
- Layout, Card, and Dialog integration via non-breaking wrapper components
2026-02-23 18:08:01 +08:00
DrSmoothl
6a54a796f1 修复 build 问题 2026-02-19 18:56:49 +08:00
DrSmoothl
79871100be feat(theme): add theme import/export and cleanup legacy code 2026-02-19 18:31:10 +08:00
DrSmoothl
bb556dc7ae feat(theme): extend settings UI with token controls and custom CSS editor 2026-02-19 18:22:35 +08:00
DrSmoothl
06a88a877f refactor(theme): migrate all CSS variable references and adapt third-party components
- Task 10: Bulk migrate CSS variable references from --primary/--secondary/etc to --color-primary/--color-secondary/etc across all components
- Task 11: Adapt CodeEditor to auto-detect theme from ThemeProvider context, remove hardcoded theme='dark' from plugin-config and bot config pages
2026-02-19 18:01:14 +08:00
DrSmoothl
b5088fa455 feat(theme): migrate CSS variables and Tailwind config, refactor settings UI color picker
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-19 17:44:49 +08:00
DrSmoothl
8fb137a318 feat(theme): add CSS injection pipeline, presets, rewrite ThemeProvider, FOUC prevention 2026-02-19 17:26:53 +08:00
DrSmoothl
6aa1132f4c feat(theme): add design token schema, palette derivation, CSS sanitizer, and storage manager 2026-02-19 17:16:28 +08:00