- replace ~/.config/factory/config.json diagnostics with legacy ~/.factory/config.json
- keep ~/.factory/settings.json as the primary BYOK source in UI + API payload
- update droid dashboard tests and frontend typings for legacyConfig
- add /droid route under a new Compatible CLIs sidebar section
- expose /api/droid/diagnostics and /api/droid/settings/raw for install and BYOK visibility
- include read-only settings.json viewer plus model/provider breakdown
- add unit coverage for droid dashboard service parsing and path logic
- remove Updates Center from sidebar general nav
- remove updates spotlight banners from home, api, and cliproxy pages
- adjust updates catalog copy to reflect on-demand inbox usage
- replace release-note-heavy layout with task-first action inbox
- add persistent local notice progress states (new/seen/done/dismissed)
- introduce actionable notice metadata and related integration mapping
- keep full-page shell fixed with internal scrolling only
- refactor updates route to full-height split layout like API/CLIProxy pages
- move scrolling into internal panels via ScrollArea
- keep announcements and matrix in consistent master-detail structure
- add /updates route and sidebar navigation entry
- show updates spotlight on Home, API Profiles, and CLIProxy pages
- export Updates page for lazy route loading consistency
- add data-driven catalog for support notices and CLI compatibility
- introduce Updates Center page with announcements, filtering, and search
- render reusable support cards and status badges for future expansions
- extend API client types with claude|droid target fields
- add default target selector in API profile create dialog
- show target badges in API profile list
- replace unsafe provider asset/color index lookups with typed helpers
- explicitly type UI preset override map to satisfy ProviderPresetId indexing
- resolves TS7053 failures seen in validate CI after dev merges
- resolve presets through canonical alias-aware lookup
- reset all tier model fields when switching presets/custom
- derive quick templates from non-recommended categories
- add shared preset catalog used by CLI and Dashboard
- enforce alias/id integrity and canonical normalization
- replace duplicated preset definitions in service and UI layers
- allow Vite dev fs access to repo root for shared catalog imports
- Add kimi entry to UI model-catalogs.ts with K2.5, K2 Thinking, K2
models and preset mappings so dashboard shows available models
- Add kimi to CHANNEL_TO_PROVIDER and SYNCABLE_PROVIDERS in
catalog-cache.ts so models sync from upstream CLIProxyAPI
- Add kimi/moonshot to provider-editor ownerMap for model filtering
- Update Kimi model pricing to match official Kimi Platform rates:
kimi-k2.5 ($0.60/$3.00), kimi-k2-thinking ($0.60/$2.50),
kimi-k2-turbo-preview ($1.15/$8.00)
- Add missing kimi-k2.5 pricing entry
Closes#581
- make iframe auto-login/reload flow race-safe and lint-compliant
- normalize API base joins and replace conflict sentinels with typed errors
- tighten proxy port validation and defer cursor preset apply until models load
- add ui api-client unit coverage for path and conflict helpers
- export buildProviderMap from provider capabilities and reuse in auth-types
- add provider descriptions to backend capabilities and sync display names
- remove ui CLIPROXY_PORT alias and use CLIPROXY_DEFAULT_PORT directly
- return stable string from getProviderDescription
- extend backend/ui parity tests for display name and description values
- make refresh ownership handling exhaustive in provider refresher
- extend backend/ui sync test to provider IDs and device-code providers
- remove DEFAULT_CURSOR_PORT re-export from use-cursor hook
- import cursor default port directly from shared defaults module