* feat(#3028): responsive Markdown separators instead of fixed-width rules Stage banners, checkpoints, completion and error panels used fixed-width runs of box-drawing characters -- a 53-column heavy rule and a 62-column double-line box. Those runs are ordinary text to a Markdown-rendering host, so in a narrower pane they wrap and the border comes apart from the heading it framed. Shipped content now emits an ATX heading for a titled section and a blank-line-delimited --- for a break between sections, both of which adapt to the available width. The same convention is applied to the three code sites that built these strings at runtime: the UAT checkpoint renderer, the milestone-close audit report, and the TDD review checkpoint table. Removing the box also removes its only reason to exist -- the east-asian-width padding helpers that kept its right border aligned (checkpointBoxLine, displayWidth, isWideCodePoint, ZERO_WIDTH_MARK_RE, CHECKPOINT_BOX_WIDTH). RTL directional isolation is unchanged. The convention is specified in gsd-core/references/ui-brand.md and enforced across all shipped content by tests/responsive-separators.test.cjs. Refs #3028 * test(#3028): pin the heading form in checkpoint and audit-report assertions These suites asserted the exact box borders and the 62-column padded banner interior. With the box gone they assert the ### heading form, the --- break and the bolded instruction line, and each now carries a positive assertion that no box character remains -- which is what pins the fix rather than merely tolerating it. Language coverage is converted, not dropped: Japanese, Chinese, Korean, Hindi and Arabic all still assert their rendered banner, and the Arabic case still asserts the RTL directional isolates the box removal must not disturb. Adds a case for a banner longer than the old inner width, which previously produced a ragged border and now has none. Refs #3028 * chore(#3028): acknowledge execute-plan.md growth from the checkpoint display spec The checkpoint_protocol display spec described the drawn box; it now describes the heading, the --- break and the bolded action prompt, which costs 22 bytes (40111 -> 40133, 827 under the cap). Appended to the existing #3370 fragment rather than filed as a new one: a growth ack keys on the bare filename and #3370 already declares execute-plan.md, so a second source naming it would be a hard duplicate-key error. Same supersede-by-append route #3370 took for the spent #2652 fragment. Refs #3028 * docs(#3028): state the load-bearing half of the separator rule, and amend the zh-CN reference Review found three things. The rule as first written demanded a blank line above AND below every ---. Only the one above is load-bearing: it is what stops CommonMark reading the rule as a setext underline for the line above. The one below is cosmetic, because a thematic break is a leaf block. The rule now says that, with the reason, instead of asserting a stricter form the content does not keep. The zh-CN reference had received the mechanical box-to-heading swap but none of the prose behind it: it still claimed a 62-character checkpoint width and still listed --- among forbidden mixed banner styles, so it contradicted the convention it was translating. It now carries the separator section, the setext reasoning, the unconditional-vs-per-runtime rationale and a corrected anti-pattern list, in Chinese. The user guide asserted that a heading is not a degradation anywhere. That is an assertion, not a demonstration. It now says what was actually traded away in a plain terminal, points at the recorded rationale, and invites the report that would justify the capability flag instead. Refs #3028 * chore(#3028): backfill changeset PR number Refs #3028 --------- Co-authored-by: sim <sim@local>
124 lines
6.3 KiB
Markdown
124 lines
6.3 KiB
Markdown
# GSD Core をアップデートする方法
|
||
|
||
既存の GSD Core インストールを最新リリースに更新し、コミット前に変更履歴をプレビューし、アップデートによって上書きされるローカルカスタマイズを回復します。
|
||
|
||
**必要なもの:** GSD がインストールされているのと同じランタイム。アップデートコマンドは内部でインストーラを再実行するため、Node.js と npx が利用可能である必要があります(元のインストールと同じ要件)。
|
||
|
||
---
|
||
|
||
## 標準的なアップデート手順
|
||
|
||
AI ランタイム内から以下を実行します。
|
||
|
||
```bash
|
||
/gsd-update
|
||
```
|
||
|
||
GSD は以下を実行します。
|
||
|
||
1. インストール済みバージョンとインストールスコープ(グローバルまたはローカル)を検出する。
|
||
2. `@opengsd/gsd-core` の最新リリースを npm で確認する。
|
||
3. 変更履歴を取得し、インストール済みバージョンと最新バージョンの差分を表示する。
|
||
4. 何も触れる前に確認を求める。
|
||
5. GSD 管理ディレクトリ内に見つかったユーザーが追加したファイルを `gsd-user-files-backup/` にバックアップする。
|
||
6. インストーラを実行する(`npx @opengsd/gsd-core@latest --<runtime> --<scope>`)。
|
||
7. アップデートチェックキャッシュをクリアしてステータスラインのインジケーターをリセットする。
|
||
8. ローカルで変更された GSD ファイルが `gsd-local-patches/` にバックアップされたかどうかを報告する。
|
||
|
||
アップデート後にランタイムを再起動して、新しいコマンドとエージェントを読み込んでください。
|
||
|
||
---
|
||
|
||
## フラグ
|
||
|
||
| フラグ | 動作 |
|
||
|------|--------------|
|
||
| `--sync` | アップデート後に GSD レジストリからスキルを同期する |
|
||
| `--reapply` | アップデート後に `gsd-local-patches/` からローカルで変更された GSD ファイルをマージして戻す |
|
||
|
||
```bash
|
||
/gsd-update --sync # アップデートしてスキルを同期する
|
||
/gsd-update --reapply # アップデートしてローカルパッチを再適用する
|
||
```
|
||
|
||
---
|
||
|
||
## アップデート前に変更履歴を確認する
|
||
|
||
`/gsd-update` は確認を求める前に、インストール済みバージョンと最新バージョン間の変更履歴差分を常に表示します。GitHub を別途確認する必要はありません。出力は以下のようになります。
|
||
|
||
```text
|
||
## GSD Update Available
|
||
|
||
Installed: 1.39.0
|
||
Latest: 1.41.0
|
||
|
||
### What's New
|
||
|
||
---
|
||
|
||
[changelog entries for 1.40.0 and 1.41.0]
|
||
|
||
---
|
||
|
||
Proceed with update? [Yes, update now / No, cancel]
|
||
```
|
||
|
||
変更履歴を取得できない場合(ネットワークアクセスなし、npm の障害)、アップデートは確認後も続行されます。変更履歴の利用可能性でブロックされることはありません。
|
||
|
||
---
|
||
|
||
## ローカルカスタマイズの回復
|
||
|
||
### GSD 管理ディレクトリ内に追加したファイル
|
||
|
||
GSD が所有するディレクトリ内にカスタムファイルを配置した場合(例:`gsd-` プレフィックスのカスタムエージェント、`commands/gsd/` への追加ファイル)、インストーラはそれらを検出し、ディレクトリを削除する前に `gsd-user-files-backup/` にコピーします。アップデート後、そのバックアップ場所から手動で復元してください。
|
||
|
||
GSD 管理ディレクトリの外に配置したファイル(`gsd-` プレフィックスのないカスタムエージェント、`commands/gsd/` 外のカスタムコマンド、`CLAUDE.md` ファイル、カスタムフック)はインストーラによって一切変更されません。
|
||
|
||
### GSD がインストールしたファイルへの直接変更
|
||
|
||
GSD がインストールしたファイルを編集した場合(例:エージェントのシステムプロンプトの調整)、インストーラはマニフェストのハッシュ比較で変更を検出し、ファイルを `gsd-local-patches/` にバックアップしてから新しいバージョンで置き換えます。アップデート後:
|
||
|
||
```bash
|
||
/gsd-update --reapply
|
||
```
|
||
|
||
これにより、新しくインストールされたファイルに `gsd-local-patches/` からの変更がマージして戻されます。
|
||
|
||
以前のアップデート後に `--reapply` をスキップしてパッチを今すぐ適用したい場合:
|
||
|
||
```bash
|
||
/gsd-update --reapply
|
||
```
|
||
|
||
`--reapply` は新しいダウンロードをトリガーせずに単独で実行しても安全です。すでに最新バージョンであれば、GSD はインストールステップをスキップして直接パッチの再適用に進みます。
|
||
|
||
---
|
||
|
||
## npm が利用できない場合
|
||
|
||
ネットワーク制限、npm の障害、またはソースリポジトリから作業しているため `npx @opengsd/gsd-core@latest` が失敗する場合は、[docs/manual-update.md](../../manual-update.md) の手動アップデート手順を使用してください。そのドキュメントには、最新コミットの取得、フックの dist のビルド、`node bin/install.js` の直接実行が記載されています。
|
||
|
||
---
|
||
|
||
## すでに最新バージョンの場合
|
||
|
||
`/gsd-update` は確認メッセージとともに早期終了します。ダウンロード、インストール、再起動は不要です。
|
||
|
||
---
|
||
|
||
## インストーラの移行
|
||
|
||
各 GSD リリースには、管理ファイルの名前変更、移動、廃止を行うインストーラ移行が含まれる場合があります。移行レイヤーは新しいパッケージペイロードが書き込まれる前に自動的に実行されます。変更したファイルに影響する移行はサイレントに実行されず、確認が求められます。設計の詳細とランタイム設定コントラクトレジストリについては、[docs/installer-migrations.md](../../installer-migrations.md) を参照してください。
|
||
|
||
---
|
||
|
||
## Related
|
||
|
||
- [ランタイムにインストールする](install-on-your-runtime.md)
|
||
- [コマンドリファレンス](../COMMANDS.md)
|
||
- [手動アップデート](../../manual-update.md)
|
||
- [インストーラ移行](../../installer-migrations.md)
|
||
- [ドキュメント一覧](../README.md)
|