Skip to content

release: v0.1.0 CommandMate連携基盤 (#87 #88 #89 #90 #91 #92 #93)#101

Merged
Kewton merged 29 commits into
mainfrom
develop
Mar 23, 2026
Merged

release: v0.1.0 CommandMate連携基盤 (#87 #88 #89 #90 #91 #92 #93)#101
Kewton merged 29 commits into
mainfrom
develop

Conversation

@Kewton
Copy link
Copy Markdown
Owner

@Kewton Kewton commented Mar 23, 2026

Summary

Test plan

🤖 Generated with Claude Code

Kewton and others added 29 commits March 21, 2026 23:52
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 5 E2E統合テスト追加 (#66)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76)

- config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示
- main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): インデックス共有モード実装 (#77)

export/import サブコマンドと status --verify オプションを追加。
CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。

- commandindex export: tar.gz形式でインデックスをエクスポート
- commandindex import: tar.gzからインデックスをインポート(--force対応)
- commandindex status --verify: インデックス整合性チェック
- セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策
- 一時ディレクトリへの展開後にアトミックスワップ(データ保護)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): マルチリポジトリ横断検索実装 (#78)

ワークスペース設定ファイルによる複数リポジトリの横断検索機能を実装。
--workspace/--repo CLIオプション、SearchContext導入、rrf_merge_multiple
汎用化、WorkspaceSearchResult compositionパターンを採用。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76)

- config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示
- main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): インデックス共有モード実装 (#77)

export/import サブコマンドと status --verify オプションを追加。
CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。

- commandindex export: tar.gz形式でインデックスをエクスポート
- commandindex import: tar.gzからインデックスをインポート(--force対応)
- commandindex status --verify: インデックス整合性チェック
- セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策
- 一時ディレクトリへの展開後にアトミックスワップ(データ保護)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 6 E2E統合テスト追加 (#80)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add `commandindex watch` subcommand that monitors filesystem changes
and automatically runs incremental index updates with debouncing.

- notify crate for cross-platform FS event monitoring
- Debouncer with configurable interval and starvation prevention
- Extension filtering (md/ts/tsx/py) and .commandindex/ exclusion
- Graceful shutdown via ctrlc + AtomicBool
- Recoverable/fatal error classification for resilient operation
- Watcher error propagation and overflow-safe max_wait calculation
- 29 unit tests + 4 CLI parse tests, all existing tests unaffected

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析)
- search --related-stdin オプション追加(stdin からの複数ファイル関連検索)
- cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除)
- human/json/path 3形式の出力サポート
- エッジケース対応(TTYエラー、空stdin、不正パス warning)
- E2Eテスト・CLI排他テスト・出力フォーマットテスト追加

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(search): --related 複数ファイル対応 (#87)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): stdin パイプ入力対応 (#89)

- impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析)
- search --related-stdin オプション追加(stdin からの複数ファイル関連検索)
- cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除)
- human/json/path 3形式の出力サポート
- エッジケース対応(TTYエラー、空stdin、不正パス warning)
- E2Eテスト・CLI排他テスト・出力フォーマットテスト追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): impact サブコマンド実装 (#90)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(search): --related 複数ファイル対応 (#87)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): stdin パイプ入力対応 (#89)

- impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析)
- search --related-stdin オプション追加(stdin からの複数ファイル関連検索)
- cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除)
- human/json/path 3形式の出力サポート
- エッジケース対応(TTYエラー、空stdin、不正パス warning)
- E2Eテスト・CLI排他テスト・出力フォーマットテスト追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): impact サブコマンド実装 (#90)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): --changed-since オプション実装 (#91)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
impact, diff, --changed-since, --related-stdin がハードコードの
Path::new(".") を使用していたため、テスト環境やサブディレクトリから
実行した際にインデックスが見つからないバグを修正。

resolve_index_path() を使用して config/CLI/デフォルトの優先順位で
インデックスパスを解決するように統一。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Kewton Kewton merged commit 11aa7a4 into main Mar 23, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant