Commit Graph

21 Commits

Author SHA1 Message Date
DrSmoothl
0451a7fef4 优化认证检查逻辑,确保加载状态显示在正确位置;更新配置验证逻辑,使用深拷贝确保数据完整性 2026-03-07 21:52:23 +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
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
65774f3afc feat(electron): add Electron UI components and layout integration 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
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
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
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
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
8fb137a318 feat(theme): add CSS injection pipeline, presets, rewrite ThemeProvider, FOUC prevention 2026-02-19 17:26:53 +08:00
DrSmoothl
2de618464a docs(dashboard): add comprehensive dynamic form system documentation
- Overview of schema-driven UI system
- Quick start guide with examples
- Backend UI metadata guide (json_schema_extra)
- Hook component creation tutorial
- API reference for all components
- Troubleshooting section
2026-02-17 18:18:51 +08:00
DrSmoothl
69dfd0cac6 test(dashboard): add unit tests for dynamic form components
- Create comprehensive test suite for DynamicField (21 tests)
- Create comprehensive test suite for DynamicConfigForm (10 tests)
- Create comprehensive test suite for FieldHookRegistry (21 tests)
- Configure Vitest 4.0.18 with jsdom environment
- Add test setup with ResizeObserver and matchMedia polyfills
- 52 tests total covering all core functionality
2026-02-17 18:18:32 +08:00
DrSmoothl
449e2f470c feat(dashboard): create DynamicConfigForm component with Hook integration
- Accept schema, values, onChange, hooks props
- Check for field hooks, use if present (replace/wrapper modes)
- Fall back to DynamicField for non-hooked fields
- Support nested schema rendering with recursive calls
- Export DynamicConfigForm and DynamicField from index

Groups with Task 5. Completes Task 6 of webui-config-visualization-refactor plan.
2026-02-17 17:20:50 +08:00
DrSmoothl
2962a95341 feat(dashboard): create DynamicField renderer component
- Render fields based on x-widget or type
- Support slider, switch, textarea, select, custom widgets
- Include label, icon, description rendering
- Placeholder for unsupported types (array, object)

Completes Task 5 of webui-config-visualization-refactor plan.
2026-02-17 17:14:41 +08:00
墨梓柒
812296590e 上传完整的WebUI前端仓库 2026-01-13 06:24:35 +08:00