ローカルの LM Studio 推論を活用してブラウザ内で英日・日英翻訳を提供する Chrome 拡張のモノレポです。requirements.txt に記載された要件を実装するための初期スキャフォールドを用意しています。
packages/domain: 翻訳リクエストとセグメント処理などコアドメイン。packages/infra-lmstudio: LM Studio OpenAI互換 API クライアント。packages/infra-cache: IndexedDB/ローカルキャッシュの抽象と in-memory 実装。packages/background: MV3 サービスワーカー。メッセージハンドラと翻訳ジョブのオーケストレーション。packages/ui-content: 選択検知とオーバーレイ UI を提供するコンテンツスクリプト。packages/ui-popup: Vite + React で構築したポップアップ UI。packages/e2e: Puppeteer テスト資産(初期コミットではプレースホルダー)。
pnpm installpnpm build
個別パッケージの開発は pnpm dev --filter ui-popup や pnpm dev --filter ui-content など、requirements のガイドラインに従って進めてください。E2E は pnpm build の後、CHROME_PATH を指定して pnpm test:e2e を実行します(CI では xvfb と Google Chrome を自動セットアップ)。
pnpm build: 全パッケージのビルド。pnpm dev: 各パッケージのdevスクリプトを並列実行(存在する場合)。pnpm lint/pnpm lint:fix: ESLint。pnpm format/pnpm format:check: Prettier。pnpm test: vitest によるユニットテスト(E2Eは除外)。pnpm test:e2e: E2E テスト(現状はプレースホルダー)。pnpm coverage: ドメイン層・キャッシュ層のカバレッジ実行用フック。
- requirements の仕様に合わせて LM Studio オプション UI、IndexedDB 実装、ジョブ進捗ハンドリングを拡張してください。
packages/e2eに Puppeteer シナリオを実装し、CI でpnpm test:e2eを実行できるようにします。
- GitHub Actions の CI が
lint/test/buildを実行し、packages/background/distの内容をextension-distアーティファクトとして保存します。 - 成果物のZIPは
extension.zipで取得できます。