- Remove Tabs component, merge JS/CSS sections into single scrollable list
- Add sub-page navigation for code viewing with back button
- Put app name and buttons on same row to save vertical space
- Reduce DomainForm spacing (marginMD -> marginSM)
- Use FileCode/FileText icons to indicate JS/CSS file types
- Add save dialog for single file download with loading state
- Add IPC handlers: showSaveDialog, saveFileContent
- Fix duplicate file extension issue in download filenames
- Add i18n keys: backToList, downloadSuccess, downloadFailed, downloadAllSuccess
- Replace Button, Avatar, Tooltip, Empty, Select, Modal, Form with LobeHub UI
- Migrate icons from @ant-design/icons to lucide-react
- Keep Settings icon using SettingOutlined from @ant-design/icons
- Update all components to use LobeHub UI styling patterns
Replace manual IPC method mapping with Proxy-based approach.
Method names now automatically route to IPC channels,
eliminating the need to update this file when adding new APIs.
- Uses Proxy to intercept property access
- Static properties (platform) handled separately
- Supports variable argument counts via rest parameters
- Move type definitions from src/renderer/src/types/ to src/shared/types/
- Add @shared/* path alias to tsconfig.node.json and tsconfig.web.json
- Update all imports from @renderer/types/* to @shared/types/*
- Update AGENTS.md with new directory structure and path alias
This fixes architecture violation where main/preload processes imported
from renderer directory. Types are now properly shared across all processes.
- Make name field optional (defaults to domain if empty)
- Simplify domain placeholder and error messages
- Add test connection button for credential validation before save
- Check if getSelectedStorageBackend exists before calling (Electron 30+)
- Fallback to isEncryptionAvailable() for older Electron versions
- Add try-catch to prevent unhandled promise rejection
- Remove electron-store dependency usage (ESM-only)
- Implement JSON file storage using native fs module
- Read/write config.json and secure.json directly
- Maintain same API for domain and version storage