diff --git a/docs/cli/configuration/plugins.mdx b/docs/cli/configuration/plugins.mdx index 7c352ab0a..b881c9013 100644 --- a/docs/cli/configuration/plugins.mdx +++ b/docs/cli/configuration/plugins.mdx @@ -170,9 +170,7 @@ A plugin can only exist at one scope. To change scope, uninstall first and reins Plugins are versioned by Git commit hash, not semantic version. When you update a plugin, Droid fetches the latest commit from the marketplace repository. - -Version pinning is not supported. Updates always fetch the latest version from the marketplace. - +To pin a marketplace to a specific version, set `ref` (a branch or tag) or `sha` (a full 40-character commit SHA) on the marketplace source. See [Pinning a marketplace to a ref or commit](#pinning-a-marketplace-to-a-ref-or-commit) below. ## Marketplaces @@ -240,6 +238,45 @@ The installation scope depends on where the setting is defined: - User settings → `user` scope - Project settings → `project` scope +### Pinning a marketplace to a ref or commit + +By default Droid tracks the marketplace's default branch and pulls the latest commit on update. You can pin a marketplace to a specific Git ref or commit by adding `ref` or `sha` to the source object. + +| Field | Type | Description | +|-------|------|-------------| +| `ref` | string | Branch or tag to track (e.g. `"main"`, `"v1.2.0"`, `"staging"`). | +| `sha` | string | Full 40-character commit SHA. When set, the marketplace stays on this exact commit and `droid plugin marketplace update` is a no-op. | + +`ref` and `sha` are supported on the `github`, `url`, and `git-subdir` source types. Use `sha` for hard pins; use `ref` to follow a branch or tag. + +```json +{ + "extraKnownMarketplaces": { + "your-org-internal-plugins": { + "source": { + "source": "github", + "repo": "your-org/internal-plugins", + "ref": "v1.2.0" + } + }, + "your-org-frozen-plugins": { + "source": { + "source": "github", + "repo": "your-org/internal-plugins", + "sha": "1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b" + } + } + } +} +``` + +From the CLI, pass `--ref` or `--sha` when adding a marketplace: + +```bash +droid plugin marketplace add https://github.com/your-org/internal-plugins --ref v1.2.0 +droid plugin marketplace add https://github.com/your-org/internal-plugins --sha 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b +``` + ## Discovering plugins ### Official Factory plugins diff --git a/docs/enterprise/enterprise-plugin-registry.mdx b/docs/enterprise/enterprise-plugin-registry.mdx index e4ec07931..f61b94e26 100644 --- a/docs/enterprise/enterprise-plugin-registry.mdx +++ b/docs/enterprise/enterprise-plugin-registry.mdx @@ -207,13 +207,39 @@ Pre-installed plugins: Plugins are versioned by Git commit hash. When a plugin is updated, Droid fetches the latest commit from the marketplace. -To control versions, use Git branches: -- `main` - Production-ready for all users -- `staging` - For early adopters -- `dev` - For internal testing +To control versions, pin the marketplace source itself with `ref` (branch or tag) or `sha` (full commit SHA): + +```json +{ + "extraKnownMarketplaces": { + "acme-corp-plugins": { + "source": { + "source": "github", + "repo": "your-org/droid-plugins", + "ref": "v2.4.0" + } + }, + "acme-corp-plugins-frozen": { + "source": { + "source": "github", + "repo": "your-org/droid-plugins", + "sha": "1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b" + } + } + } +} +``` + +Common patterns: +- `ref: "main"` — production-ready for all users (default behavior) +- `ref: "staging"` — early-adopter channel +- `ref: "v1.2.0"` — pin to a release tag +- `sha: "<40-char SHA>"` — hard pin to a specific commit; `droid plugin marketplace update` is a no-op + +See [Plugins · Pinning a marketplace to a ref or commit](/cli/configuration/plugins#pinning-a-marketplace-to-a-ref-or-commit) for the full source schema. -Version pinning via the `version` field is not currently supported. The field is for documentation only. +Version pinning via the per-plugin `version` field is not currently supported. To pin a plugin's version, pin the marketplace it lives in via `ref` or `sha`. ## Private repository access diff --git a/docs/enterprise/hierarchical-settings-and-org-control.mdx b/docs/enterprise/hierarchical-settings-and-org-control.mdx index edb0bd097..fc9b267cd 100644 --- a/docs/enterprise/hierarchical-settings-and-org-control.mdx +++ b/docs/enterprise/hierarchical-settings-and-org-control.mdx @@ -206,13 +206,25 @@ Below is the full schema for org-managed settings. These are configured by org a GitHub repository in `owner/repo` format. + + Optional Git branch or tag to track (e.g. `"main"`, `"v1.2.0"`). + + + Optional full 40-character commit SHA. When set, the marketplace is pinned to this exact commit. + Must be `"url"`. - URL of the marketplace manifest. + Git repository URL of the marketplace (e.g. `https://gitlab.com/company/plugins.git`). + + + Optional Git branch or tag to track. + + + Optional full 40-character commit SHA to pin to. diff --git a/docs/guides/building/building-plugins.mdx b/docs/guides/building/building-plugins.mdx index f8e6ab5e8..ec2dd998c 100644 --- a/docs/guides/building/building-plugins.mdx +++ b/docs/guides/building/building-plugins.mdx @@ -340,7 +340,7 @@ Use semantic versioning in your plugin manifest for documentation purposes: - **Patch** (1.0.0 → 1.0.1): Bug fixes -Droid tracks plugin versions by Git commit hash, not semantic version. When users update a plugin, they always get the latest commit from the marketplace. Version pinning is not currently supported. +Droid tracks plugin versions by Git commit hash, not semantic version. By default, updating a plugin fetches the latest commit from the marketplace. To pin a plugin to a specific version, pin the marketplace it lives in by setting `ref` (branch or tag) or `sha` (full commit SHA) on the marketplace source — see [Pinning a marketplace to a ref or commit](/cli/configuration/plugins#pinning-a-marketplace-to-a-ref-or-commit). ## Claude Code compatibility diff --git a/docs/jp/cli/configuration/plugins.mdx b/docs/jp/cli/configuration/plugins.mdx index 76ea95e83..60fe31cd8 100644 --- a/docs/jp/cli/configuration/plugins.mdx +++ b/docs/jp/cli/configuration/plugins.mdx @@ -158,9 +158,7 @@ my-plugin/ プラグインはセマンティックバージョンではなく、Gitコミットハッシュによってバージョニングされます。プラグインを更新すると、Droidはマーケットプレイスリポジトリから最新のコミットを取得します。 - -バージョン固定はサポートされていません。更新では常にマーケットプレイスから最新バージョンを取得します。 - +マーケットプレイスを特定のバージョンに固定するには、マーケットプレイスソースに `ref`(ブランチまたはタグ)または `sha`(40文字のフルコミットSHA)を設定します。下記の[マーケットプレイスをrefまたはコミットに固定する](#%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%83%E3%83%88%E3%83%97%E3%83%AC%E3%82%A4%E3%82%B9%E3%82%92ref%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%AB%E5%9B%BA%E5%AE%9A%E3%81%99%E3%82%8B)を参照してください。 ## マーケットプレイス @@ -222,6 +220,45 @@ Droidが起動すると、自動的に以下を実行します: - ユーザー設定 → `user`スコープ - プロジェクト設定 → `project`スコープ +### マーケットプレイスをrefまたはコミットに固定する + +デフォルトでは、Droidはマーケットプレイスのデフォルトブランチを追跡し、更新時に最新のコミットを取得します。ソースオブジェクトに `ref` または `sha` を追加することで、マーケットプレイスを特定のGit refまたはコミットに固定できます。 + +| フィールド | 型 | 説明 | +|-------|------|-------------| +| `ref` | string | 追跡するブランチまたはタグ(例: `"main"`、`"v1.2.0"`、`"staging"`)。 | +| `sha` | string | 40文字のフルコミットSHA。設定すると、マーケットプレイスはこのコミットに固定され、`droid plugin marketplace update` は何も行いません。 | + +`ref` と `sha` は `github`、`url`、`git-subdir` ソースタイプでサポートされています。ハードピンには `sha`、ブランチやタグを追跡するには `ref` を使用します。 + +```json +{ + "extraKnownMarketplaces": { + "your-org-internal-plugins": { + "source": { + "source": "github", + "repo": "your-org/internal-plugins", + "ref": "v1.2.0" + } + }, + "your-org-frozen-plugins": { + "source": { + "source": "github", + "repo": "your-org/internal-plugins", + "sha": "1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b" + } + } + } +} +``` + +CLIからマーケットプレイスを追加する際は、`--ref` または `--sha` を渡します: + +```bash +droid plugin marketplace add https://github.com/your-org/internal-plugins --ref v1.2.0 +droid plugin marketplace add https://github.com/your-org/internal-plugins --sha 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b +``` + ## プラグインの発見 ### 公式Factoryプラグイン diff --git a/docs/jp/enterprise/enterprise-plugin-registry.mdx b/docs/jp/enterprise/enterprise-plugin-registry.mdx index bb3ea8fba..c70361add 100644 --- a/docs/jp/enterprise/enterprise-plugin-registry.mdx +++ b/docs/jp/enterprise/enterprise-plugin-registry.mdx @@ -207,13 +207,39 @@ plugins/ プラグインはGitコミットハッシュでバージョン管理されます。プラグインが更新されると、Droidはマーケットプレイスから最新のコミットを取得します。 -バージョンを制御するには、Gitブランチを使用します: -- `main` - すべてのユーザー向けのプロダクション準備完了 -- `staging` - 早期採用者向け -- `dev` - 内部テスト向け +バージョンを制御するには、マーケットプレイスソース自体に `ref`(ブランチまたはタグ)または `sha`(フルコミットSHA)を設定して固定します: + +```json +{ + "extraKnownMarketplaces": { + "acme-corp-plugins": { + "source": { + "source": "github", + "repo": "your-org/droid-plugins", + "ref": "v2.4.0" + } + }, + "acme-corp-plugins-frozen": { + "source": { + "source": "github", + "repo": "your-org/droid-plugins", + "sha": "1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b" + } + } + } +} +``` + +一般的なパターン: +- `ref: "main"` — すべてのユーザー向けのプロダクション準備完了(デフォルトの動作) +- `ref: "staging"` — 早期採用者チャンネル +- `ref: "v1.2.0"` — リリースタグに固定 +- `sha: "<40文字のSHA>"` — 特定のコミットへのハードピン;`droid plugin marketplace update` は何も行いません + +完全なソーススキーマについては、[プラグイン · マーケットプレイスをrefまたはコミットに固定する](/jp/cli/configuration/plugins#%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%83%E3%83%88%E3%83%97%E3%83%AC%E3%82%A4%E3%82%B9%E3%82%92ref%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%AB%E5%9B%BA%E5%AE%9A%E3%81%99%E3%82%8B)を参照してください。 -`version`フィールドによるバージョン固定は現在サポートされていません。このフィールドはドキュメント用です。 +プラグインごとの `version` フィールドによるバージョン固定は現在サポートされていません。プラグインのバージョンを固定するには、`ref` または `sha` を使用してプラグインが含まれるマーケットプレイスを固定してください。 ## プライベートリポジトリアクセス diff --git a/docs/jp/enterprise/hierarchical-settings-and-org-control.mdx b/docs/jp/enterprise/hierarchical-settings-and-org-control.mdx index de1a68911..2e67e2dc4 100644 --- a/docs/jp/enterprise/hierarchical-settings-and-org-control.mdx +++ b/docs/jp/enterprise/hierarchical-settings-and-org-control.mdx @@ -187,6 +187,12 @@ User → ~/.factory/ `owner/repo` 形式のGitHubリポジトリ。 + + 追跡するGitブランチまたはタグ(例: `"main"`、`"v1.2.0"`)。オプション。 + + + 40文字のフルコミットSHA。設定すると、マーケットプレイスはこのコミットに固定されます。オプション。 + @@ -195,6 +201,12 @@ User → ~/.factory/ マーケットプレイスマニフェストのURL。 + + 追跡するGitブランチまたはタグ。オプション。 + + + 固定する40文字のフルコミットSHA。オプション。 + diff --git a/docs/jp/guides/building/building-plugins.mdx b/docs/jp/guides/building/building-plugins.mdx index 2714ea33e..f5c0d2c06 100644 --- a/docs/jp/guides/building/building-plugins.mdx +++ b/docs/jp/guides/building/building-plugins.mdx @@ -340,7 +340,7 @@ my-marketplace/ - **パッチ**(1.0.0 → 1.0.1):バグ修正 -DroidはプラグインバージョンをセマンティックバージョンではなくGitコミットハッシュで追跡します。ユーザーがプラグインを更新すると、常にマーケットプレイスの最新コミットを取得します。バージョン固定は現在サポートされていません。 +DroidはプラグインバージョンをセマンティックバージョンではなくGitコミットハッシュで追跡します。デフォルトでは、プラグインを更新するとマーケットプレイスから最新のコミットを取得します。プラグインを特定のバージョンに固定するには、マーケットプレイスソースに `ref`(ブランチまたはタグ)または `sha`(フルコミットSHA)を設定して、プラグインが含まれるマーケットプレイスを固定してください。詳細は[マーケットプレイスをrefまたはコミットに固定する](/jp/cli/configuration/plugins#%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%83%E3%83%88%E3%83%97%E3%83%AC%E3%82%A4%E3%82%B9%E3%82%92ref%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%AB%E5%9B%BA%E5%AE%9A%E3%81%99%E3%82%8B)を参照してください。 ## Claude Code互換性 diff --git a/docs/jp/reference/hooks-reference.mdx b/docs/jp/reference/hooks-reference.mdx index 76e4013ba..0fb9fd7ec 100644 --- a/docs/jp/reference/hooks-reference.mdx +++ b/docs/jp/reference/hooks-reference.mdx @@ -411,7 +411,7 @@ Droidセッションが終了するときに実行されます。クリーンア "continue": true, // Whether Droid should continue after hook execution (default: true) "stopReason": "string", // Message shown when continue is false - "suppressOutput": true, // Hide stdout from transcript mode (default: false) + "suppressOutput": true, // フックが終了コード0で終了した場合、フックブロックをチャットビューから非表示にします(デフォルト: false)。詳細トランスクリプト(Ctrl+O)には引き続き表示され、失敗したフック(非ゼロ終了コード)は常に表示されます。 "systemMessage": "string" // Optional warning message shown to the user } ``` @@ -666,7 +666,7 @@ if tool_name == "Read": output = { "decision": "approve", "reason": "Documentation file auto-approved", - "suppressOutput": True # Don't show in transcript mode + "suppressOutput": True # チャットビューからフックブロックを非表示にします(トランスクリプトには表示) } print(json.dumps(output)) sys.exit(0) diff --git a/docs/reference/hooks-reference.mdx b/docs/reference/hooks-reference.mdx index 060a0a2a0..46eb42ad9 100644 --- a/docs/reference/hooks-reference.mdx +++ b/docs/reference/hooks-reference.mdx @@ -436,7 +436,7 @@ All hook types can include these optional fields: "continue": true, // Whether Droid should continue after hook execution (default: true) "stopReason": "string", // Message shown when continue is false - "suppressOutput": true, // Hide stdout from transcript mode (default: false) + "suppressOutput": true, // Hide the hook block from the chat view when the hook exits 0 (default: false). The block is still shown in the detailed transcript (Ctrl+O), and failing hooks (non-zero exit) are always rendered. "systemMessage": "string" // Optional warning message shown to the user } ``` @@ -703,7 +703,7 @@ if tool_name == "Read": output = { "decision": "approve", "reason": "Documentation file auto-approved", - "suppressOutput": True # Don't show in transcript mode + "suppressOutput": True # Hide the hook block from chat view (still in transcript) } print(json.dumps(output)) sys.exit(0)