Repository navigation
🚀 v0.3.0 — Code Quality Overhaul + UI Redesign
Massive quality upgrade: 41 files changed, +6,787 / -2,324 lines. Zero functional regressions.
✨ UI Redesign
Tab Architecture: 6 → 3
- 🔨 锻造 — Forge list / Darwin optimization / Co-evolution
- 🔗 融合 — Taotie fusion / Skill orchestration
- 🌙 闲时 — Dreaming console / history / health report
Design System Upgrade:
- Pill-style main tabs with brand-color active state + subtle shadow
- Section tabs for inner navigation
- Card system: 10px radius, 1px border, hover lift + soft shadow
- Unified buttons: 30px height, 8px radius, primary with shadow
- Pill-shaped status tags (20px radius)
- Gradient quality bars with smooth transitions
- Animated timelines with cleaner dot layout
- Custom scrollbar styling
- Fade-in animations on panel load
- All colors use CSS variables — fully DSH theme-aware
🔧 Code Quality
Type Safety:
- 54.7% reduction in
anytypes (~316 → 143) - 10+ new interface types for service dependencies
- ForgeOrchestrator: 0
any(down from 18) with 7 typed dep interfaces - BaseAgent: typed LLM response + 4 safe accessor methods
- Client: ~40+
any→ 6 (all legitimate: API responses, CSS custom props, catch errors) UnknownRecordpattern for backend data access
New Utilities Layer:
src/utils/constants.ts— 30+ magic numbers centralizedsrc/utils/helpers.ts— safe JSON parsing, unified HTTP responses, ID generation, etc.src/types/api.ts— API handler and response types
ForgePanel Refactor (2,831 → 3,229 lines, better structure):
- 12 extracted inline sub-components
- All event handlers wrapped with
useCallback - Clear section boundaries with comment headers
- 3 main view branches: list / run detail / skill detail
Performance:
- Active state checks: O(n) → O(1) with
Set - Safe JSON parsing with multi-strategy fallback
- Polling cleanup verified for all intervals
- Memoized handlers to prevent unnecessary re-renders
Error Handling:
- Unified HTTP response format:
{ ok: false, error: string, code?: string } safeParseJSONwith try/catch + silent fallback- Boundary checks for null/undefined/empty arrays
📚 Documentation & Infra
- CHANGELOG.md: v0.2.0 + v0.3.0 in Keep a Changelog format
- README: Updated features, architecture, roadmap (Phase 5+6 done)
- Configuration docs: 14 → 50+ config items with grouping
- FAQ: New sections on evolution modes + dreaming
- .editorconfig: New file for consistent formatting
- package.json: v0.3.0, added
devscript, updated keywords - tsconfig.json: Added
forceConsistentCasingInFileNames - .gitignore: Expanded with more patterns
📊 Stats
- 47 TypeScript/TSX files
- 30,005 total lines of code
- 12 core service modules
- 6 LLM agents
- ~80 HTTP API endpoints
- 50+ configuration items
- 0 TypeScript strict errors
Built with ❤️ for the DSH community