Draggy の開発

ビルドと設計

ソースからの実行、コードの構成、そして二つの境界。

ソースから動かす

npm install
npm run electron:dev

Vite と Electron をホットリロード付きで同時に、ポートは 5173。残った Vite プロセスがそのポートを握っていると次の起動が失敗します。先に終了させてください。

npm run check

型検査と lint と約 1,900 のテストが数秒で終わります。CI も同じコマンドです。 npm run electron:build はインストーラーを dist-electron/ に書き出します。

構成

フォルダーあるもの
electron/メインプロセス。ウィンドウ、IPC、SQLite、ファイルの番、git、ブラウザー、MCP サーバー、アップデート
src/agent/ストリーミングのツール呼び出しループ、権限、圧縮
src/chat/メッセージ一覧、差分、承認、コンテキストの輪
src/tools/ツールの定義と、それらが収まるレジストリ
src/voice/録音、検出、話者交代、音声合成

2 つの境界

electron/preload.cjs がセキュリティの境界です。レンダラーに Node はなく、ファイルシステム、ネットワーク、データベースにはそこで公開されたものを通じてしか届きません。そこに関数を足すのは意図した行為です。

セッションの分離がもうひとつです。Draggy 自身のウィンドウは厳しい CSP の下で動き、外部のページは私たちの方針の及ばない別パーティションで動きます。ひとつにすれば、他人のサイトに私たちの方針を当てはめ、瓦礫だけが描かれます。

決まりごと

  • コメントは「なぜ」を説明し、「なに」は説明しない。最大 2 行
  • 12 の言語は揃ったまま。テストが見張っています
  • 子プロセスはすべて、ウィンドウを出さない起動ヘルパー経由
  • コミットメッセージは 1 行

残りは CONTRIBUTING.md に、脆弱性の報告については SECURITY.md にあります。