Save local refactor snapshot and transport settings
This commit is contained in:
68
refactor.md
Normal file
68
refactor.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# Refactor Summary
|
||||
|
||||
## Scope
|
||||
This branch captures local refactors focused on frontend UX polish, IPC call consolidation, transport abstraction, and channel page responsiveness.
|
||||
|
||||
## Key Changes
|
||||
|
||||
### 1. Frontend IPC consolidation
|
||||
- Replaced scattered direct `window.electron.ipcRenderer.invoke(...)` calls with unified `invokeIpc(...)` usage.
|
||||
- Added lint guard to prevent new direct renderer IPC invokes outside the API layer.
|
||||
- Introduced a centralized API client with:
|
||||
- error normalization (`AppError`)
|
||||
- unified `app:request` support + compatibility fallback
|
||||
- retry helper for timeout/network errors
|
||||
|
||||
### 2. Transport abstraction (extensible protocol layer)
|
||||
- Added transport routing abstraction inside `src/lib/api-client.ts`:
|
||||
- `ipc`, `ws`, `http`
|
||||
- rule-based channel routing
|
||||
- transport registration/unregistration
|
||||
- failure backoff and fallback behavior
|
||||
- Added default transport initialization in app entry.
|
||||
- Added gateway-specific transport adapters for WS/HTTP.
|
||||
|
||||
### 3. HTTP path moved to Electron main-process proxy
|
||||
- Added `gateway:httpProxy` IPC handler in main process to avoid renderer-side CORS issues.
|
||||
- Preload allowlist updated for `gateway:httpProxy`.
|
||||
- Gateway HTTP transport now uses IPC proxy instead of browser `fetch` direct-to-gateway.
|
||||
|
||||
### 4. Settings improvements (Developer-focused transport control)
|
||||
- Added persisted setting `gatewayTransportPreference`.
|
||||
- Added runtime application of transport preference in app bootstrap.
|
||||
- Added UI option (Developer section) to choose routing strategy:
|
||||
- WS First / HTTP First / WS Only / HTTP Only / IPC Only
|
||||
- Added i18n strings for EN/ZH/JA.
|
||||
|
||||
### 5. Channel page performance optimization
|
||||
- `fetchChannels` now supports options:
|
||||
- `probe` (manual refresh can force probe)
|
||||
- `silent` (background refresh without full-page loading lock)
|
||||
- Channel status event refresh now debounced (300ms) to reduce refresh storms.
|
||||
- Initial loading spinner only shown when no existing data.
|
||||
- Manual refresh uses local spinner state and non-blocking update.
|
||||
|
||||
### 6. UX and component enhancements
|
||||
- Added shared feedback state component for consistent empty/loading/error states.
|
||||
- Added telemetry helpers and quick-action/dashboard refinements.
|
||||
- Setup/settings/providers/chat/skills/cron pages received targeted UX and reliability fixes.
|
||||
|
||||
### 7. IPC main handler compatibility improvements
|
||||
- Expanded `app:request` coverage for provider/update/settings/cron/usage actions.
|
||||
- Unsupported app requests now return structured error response instead of throwing, reducing noisy handler exceptions.
|
||||
|
||||
### 8. Tests
|
||||
- Added unit tests for API client behavior and feedback state rendering.
|
||||
- Added transport fallback/backoff coverage in API client tests.
|
||||
|
||||
## Files Added
|
||||
- `src/lib/api-client.ts`
|
||||
- `src/lib/telemetry.ts`
|
||||
- `src/components/common/FeedbackState.tsx`
|
||||
- `tests/unit/api-client.test.ts`
|
||||
- `tests/unit/feedback-state.test.tsx`
|
||||
- `refactor.md`
|
||||
|
||||
## Notes
|
||||
- Navigation order in sidebar is kept aligned with `main` ordering.
|
||||
- This commit snapshots current local refactor state for follow-up cleanup/cherry-pick work.
|
||||
Reference in New Issue
Block a user