はじめに
本日、claude-glm-actions-lab のバージョン v1.1.0 をリリースしました!🎉
このアップデートは、リポジトリ同期ツールの大幅な機能強化とモダナイゼーションを実施したメジャーアップデートです。最大の変更点は、blessedベースの旧TUIから ReactとInkを使用したモダンなアーキテクチャへの移行です。
📊 変更統計
| 項目 | 数値 |
|---|---|
| 追加ファイル | 45個 |
| 追加コード | +5,224行 |
| 削除コード | -256行 |
| マージ済みPR | 5件 (#19, #21, #23, #25, #27) |
主な変更点
今回のリリースにおける主な変更点は以下の通りです。
- sync-repo-tuiパッケージ: ReactとInkを使用したモダンなTUIツールとして完全に書き直し
- PR自動コメントワークフロー: PRオープン時に自動的にコメントを投稿するGitHub Actionsを追加
- エージェント同期スクリプト: Claude Codeエージェント設定の自動同期機能を追加
- TUIのInk+React移行: ステートベースのモダンな設計に移行
技術的な詳細
新機能
1. sync-repo-tuiパッケージ
TypeScript製のTUIリポジトリ同期ツールが、ReactとInkを使用したモダンなアーキテクチャとして完全に書き直されました。
パッケージ情報:
{
"name": "@sunwood-ai-labs/sync-repo-tui",
"version": "1.0.0",
"type": "module",
"bin": {
"sync-repo-tui": "./bin/sync-repo-tui"
}
}
アーキテクチャ:
ステートベースのTUI設計により、Reactのステート管理を使用したモダンな設計になっています:
type AppState =
| { type: 'loading' }
| { type: 'envCheck'; hasEnv: boolean }
| { type: 'githubCheck' }
| { type: 'modeSelect' }
| { type: 'repoConfirm'; mode: 'single' | 'org'; config: Config }
| { type: 'repoInput'; mode: 'single' | 'org'; config: Config }
| { type: 'orgRepoList'; config: Config; repos: string[] }
| { type: 'syncOptions'; config: Config; repos: string[] }
| { type: 'finalConfirm'; config: Config; repos: string[] }
| { type: 'syncing'; config: Config; repos: string[] }
| { type: 'done'; summary: any }
| { type: 'error'; message: string };
モジュール構成:
| モジュール | ファイル | 説明 |
|---|---|---|
| CLI | cli.ts |
コマンドラインエントリーポイント |
| Config | config/ |
設定管理 |
| GitHub | github/ |
GitHub API ラッパー |
| Sync | sync/ |
同期ロジック |
| TUI | tui/ |
Ink+React製TUI画面 |
| Utils | utils/ |
ユーティリティ |
2. PR自動コメントワークフロー
PRが作成されると自動的にコメントを投稿するGitHub Actionsワークフローを追加しました。
on:
pull_request:
types: [opened]
permissions:
contents: read
pull-requests: write
env:
ENABLE_PR_AUTO_COMMENT: ${{ vars.ENABLE_PR_AUTO_COMMENT || 'true' }}
TEMPLATE_SOURCE: ${{ vars.TEMPLATE_SOURCE || 'remote' }}
TEMPLATE_URL: ${{ vars.TEMPLATE_URL || '...' }}
機能:
- 自動トリガー: PRオープン時に自動実行
-
スイッチ機能:
ENABLE_PR_AUTO_COMMENT変数でオン/オフ制御 - テンプレート選択: リモートURLまたはローカルファイルからテンプレートを読み込み
- 権限設定: 必要最小限の権限のみ付与
3. エージェント同期スクリプト
Claude Codeエージェント設定の自動同期機能を追加しました。
| スクリプト | 説明 |
|---|---|
scripts/sync-agents.sh |
エージェント設定(.claude/agents/)を複数リポジトリに同期 |
scripts/sync-repo-tui.sh |
sync-repo-tuiバイナリのラッパー |
scripts/install-sync-repo-tui.sh |
sync-repo-tuiのインストーラー |
リファクタリング
TUIをInk+Reactに移行
移行前(blessed)→ 移行後(Ink+React)
変更点:
- すべてのモジュールをES Modulesに移行
-
TypeScript設定の更新
{ "compilerOptions": { "module": "ES2022", "moduleResolution": "bundler", "jsx": "react", "jsxFactory": "React.createElement" } } -
実行方法の変更
- 移行前: Node.jsでコンパイル済みJSを実行
-
移行後:
tsxでTSXを直接実行
メリット:
| 項目 | 改善内容 | メリット |
|---|---|---|
| コンポーネントベース | ReactコンポーネントとしてUIを構築 | 再利用可能なUI部品 |
| 型安全性 | TypeScript + Reactで型安全なUI開発 | 実行時エラーの削減 |
| テスト容易性 | React Testing Library等のテストツールが活用可能 | 品質の向上 |
| エコシステム | npmのReactエコシステムを活用 | 豊富なライブラリ |
バグ修正
-
sync-repo.sh: 重複コードの削除、case文の論理エラーを修正 -
sync-repo-tui: 変数名の重複を修正、論理エラーを修正
クリーンアップ
削除されたファイル:
| ファイル | 理由 |
|---|---|
.github/scripts/create-pr.py |
使用されていないPR作成スクリプト |
.github/workflows/disabled/MINIMAL.yml |
無効化されたワークフロー |
まとめ
claude-glm-actions-lab v1.1.0 は、TUIモダン化とリポジトリ同期機能強化のための重要な一歩です。
| 項目 | 改善内容 | メリット |
|---|---|---|
| React + Ink | モダンなTUIアーキテクチャ | コンポーネントベースのUI開発 |
| ステート管理 | Reactのステート管理を採用 | シンプルで分かりやすい設計 |
| PR自動コメント | PRオープン時に自動応答 | チームコラボレーションの強化 |
| エージェント同期 | Claude Codeエージェントの自動同期 | 複数リポジトリの管理が容易に |
📚 参考リンク
- GitHubリポジトリ: Sunwood-AI-OSS-Hub/claude-glm-actions-lab
- リリースページ: v1.1.0 Release
- 変更点の比較: v1.0.0...v1.1.0 の差分
