Files
CherryHQ-cherry-studio/tsconfig.node.json
fullex dc5ba8539b refactor(shared): stop main/preload importing renderer @types
The node build aliased @types to src/renderer/types, letting main and preload import renderer code — a layering violation. Remove that alias from tsconfig.node.json and the electron.vite main config, and relocate every type main needs by its real cross-process usage.

Cross-process (both main and renderer) → @shared: utils/{systemProviderId,reasoning,mcp,ocr}, types/{ocr,notification,backup,apiGateway,note,image,plugin,skill}, types/mcp (McpTool/McpPrompt/McpResource), data/types/file/legacyFileMetadata (ImageFileMetadata). Main-only → src/main: services/remotefile/types, markdownParser PluginError, ai/mcp/types (McpCallToolResponse/McpToolResultContent/GetResourceResponse). v1 legacy shapes (Provider/Model/Shortcut, read by migrators + legacy services) → data/migration/v2/legacyTypes.ts, kept out of @shared as throwaway.

Renderer keeps its own @types alias; renderer/types re-exports the moved symbols so its barrel is unchanged for renderer consumers. Add an ESLint no-restricted-imports boundary rule banning @types/@renderer from src/main and src/preload. The relative renderer i18n import in main/utils/language.ts is left with a TODO and deferred to a dedicated i18n PR.
2026-06-20 00:57:24 -07:00

1.9 KiB