ワンクリックで
phlix-windows-client
phlix-windows-client には detain から収集した 5 個の skills があり、リポジトリ単位の職業カバレッジとサイト内 skill 詳細ページを表示します。
このリポジトリの skills
Adds a new method to the `ApiClient` class in `src/renderer/utils/api.ts`. Defines exported TypeScript request/response interfaces (matching `MediaItem`/`Library`/`AuthResult` style), calls `this.request<T>(method, path, data)` so axios interceptors attach `Authorization: Bearer` and `X-Phlix-Session-ID` headers automatically against `${VITE_PHLIX_SERVER_URL}/api/v1`. Use `URLSearchParams` for GET query strings (see `getLibraryItems`). Use when user says 'add API call', 'new endpoint method', 'call /api/v1/...', or hits a Phlix Media Server route not yet wired. Do NOT use for raw `axios.create` outside `ApiClient` or for bypassing the `request()` helper.
Adds a new Electron IPC channel coordinated across main, preload, and renderer type definitions. Wires ipcMain.handle/ipcMain.on in src/main/index.ts, exposes via contextBridge.exposeInMainWorld in src/preload/index.ts, and types window.electronAPI in src/renderer/types/electron.d.ts. Listener helpers must return cleanup functions per existing pattern. Use when user says 'add IPC handler', 'expose to renderer', 'new electronAPI method', 'tray menu action', or modifies src/main/index.ts / src/preload/index.ts / src/renderer/types/electron.d.ts. Do NOT use for renderer-only logic, for changing existing IPC signatures without coordinated updates across all three files, or for adding non-IPC Electron APIs (BrowserWindow config, app lifecycle).
Adds a new React Router page in src/renderer/pages/, registers the route in App.tsx, and wires up navigation. Use when user says 'add page', 'new route', 'new screen', 'create page', or wants a top-level navigable view. Follows the project's useEffect + useState<T> + api.* + try/catch/finally setLoading(false) data-fetch pattern, with `<div className="loading-spinner" />` loading state. Do NOT use for modal/dialog flows, sub-views rendered inside an existing page, settings panels, or any non-routable UI.
Generates Vitest unit tests for the Electron renderer (stores, utilities, components) mirroring `tests/unit/api.test.ts`. Use when the user says 'write test', 'add unit test', 'cover this with vitest', 'add vitest spec', or adds files under `tests/unit/`. Produces tests that use jsdom env, the `localStorage` mock from `src/renderer/test-setup.ts`, and reset `auth_token`/`session_id`/`device_id` in `beforeEach`. Do NOT use for Playwright/E2E tests, for `src/main/**` Electron main-process code (needs a node env + electron mocks), or for `src/preload/**` bridge code.
Creates a new Zustand store in src/renderer/stores/ following the create<State>((set) => ({ ...initialState, action: () => set({...}) })) pattern from authStore.ts/playbackStore.ts/uiStore.ts. Defines the state interface with both data fields and action methods, prefixes unused setter args with _, calls api.* methods inside async actions with try/catch and electron-log/console.error logging, exposes a useNameStore hook. Use when user says 'add store', 'new zustand store', 'manage X state globally', or adds files to src/renderer/stores/. Do NOT use for component-local state (use useState), for trivial UI toggles already covered by uiStore, or for main-process state (Electron main uses electron-store, not Zustand).