@akiojin/gwt 3.0.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +1 -1
- package/README.md +1 -1
- package/dist/cli/ui/components/App.d.ts.map +1 -1
- package/dist/cli/ui/components/App.js +19 -4
- package/dist/cli/ui/components/App.js.map +1 -1
- package/dist/cli/ui/components/parts/Header.d.ts +8 -0
- package/dist/cli/ui/components/parts/Header.d.ts.map +1 -1
- package/dist/cli/ui/components/parts/Header.js +7 -2
- package/dist/cli/ui/components/parts/Header.js.map +1 -1
- package/dist/cli/ui/components/screens/BranchListScreen.d.ts +3 -1
- package/dist/cli/ui/components/screens/BranchListScreen.d.ts.map +1 -1
- package/dist/cli/ui/components/screens/BranchListScreen.js +16 -8
- package/dist/cli/ui/components/screens/BranchListScreen.js.map +1 -1
- package/dist/cli/ui/components/screens/EnvironmentProfileScreen.d.ts +16 -0
- package/dist/cli/ui/components/screens/EnvironmentProfileScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/EnvironmentProfileScreen.js +576 -0
- package/dist/cli/ui/components/screens/EnvironmentProfileScreen.js.map +1 -0
- package/dist/cli/ui/hooks/useProfiles.d.ts +41 -0
- package/dist/cli/ui/hooks/useProfiles.d.ts.map +1 -0
- package/dist/cli/ui/hooks/useProfiles.js +136 -0
- package/dist/cli/ui/hooks/useProfiles.js.map +1 -0
- package/dist/cli/ui/types.d.ts +1 -1
- package/dist/cli/ui/types.d.ts.map +1 -1
- package/dist/cli/ui/utils/branchFormatter.d.ts.map +1 -1
- package/dist/cli/ui/utils/branchFormatter.js +2 -2
- package/dist/cli/ui/utils/branchFormatter.js.map +1 -1
- package/dist/config/profiles.d.ts +94 -0
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +287 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/config/tools.d.ts +10 -0
- package/dist/config/tools.d.ts.map +1 -1
- package/dist/config/tools.js +19 -2
- package/dist/config/tools.js.map +1 -1
- package/dist/types/profiles.d.ts +54 -0
- package/dist/types/profiles.d.ts.map +1 -0
- package/dist/types/profiles.js +33 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/web/client/src/components/ui/alert.d.ts +1 -1
- package/dist/web/client/src/components/ui/badge.d.ts +1 -1
- package/package.json +4 -3
- package/src/cli/ui/__tests__/components/screens/BranchListScreen.test.tsx +40 -1
- package/src/cli/ui/__tests__/utils/branchFormatter.test.ts +1 -1
- package/src/cli/ui/components/App.tsx +49 -36
- package/src/cli/ui/components/parts/Header.tsx +16 -1
- package/src/cli/ui/components/screens/BranchListScreen.tsx +17 -7
- package/src/cli/ui/components/screens/EnvironmentProfileScreen.tsx +924 -0
- package/src/cli/ui/hooks/useProfiles.ts +211 -0
- package/src/cli/ui/types.ts +2 -1
- package/src/cli/ui/utils/branchFormatter.ts +2 -3
- package/src/config/profiles.ts +362 -0
- package/src/config/tools.ts +20 -2
- package/src/types/profiles.ts +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/config/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,MAAM,EACN,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GAGnB,MAAM,sBAAsB,CAAC;AAE9B;;;;GAIG;AACH,SAAS,YAAY;IACnB,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC5D,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;QACtB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACpD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAClC,CAAC,CAAC,OAAO,EAAE,CAAC;IAClB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,SAAS,mBAAmB;IAC1B,OAAO,GAAG,qBAAqB,EAAE,OAAO,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAI,EAAoB;IACrD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,SAAS,CACpB,IAAI,CAAC,SAAS,CACZ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EACzD,IAAI,EACJ,CAAC,CACF,EACD,OAAO,CACR,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,MAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;gBACpD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,GAAG,aAAa,CAAC;gBAC9D,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBAChC,2BAA2B;oBAC7B,CAAC,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,eAAe,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,oCAAoC,QAAQ,wCAAwC,CACrF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAC5C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAChC,gCAAgC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAyD;IAEzD,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,EAAE,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAmB,CAAC;QAEpD,SAAS;QACT,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,IACE,MAAM,CAAC,aAAa,KAAK,IAAI;YAC7B,MAAM,CAAC,aAAa,KAAK,SAAS;YAClC,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EACxC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;YAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0BAA0B;QAC1B,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,wCAAwC;YACxC,yBAAyB;YACzB,OAAO;gBACL,OAAO,EAAE,uBAAuB,CAAC,OAAO;gBACxC,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,eAAe;QACf,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAsB;IACvD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,GAAG,UAAU,MAAM,CAAC;IAErC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAChC,6BAA6B;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IAEpC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,aAAa,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAA0B;IAE1B,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,kBAAkB,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,OAA2B;IAE3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,8FAA8F,CAC7H,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,OAAoC;IAEpC,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;YACtB,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxB,GAAG,OAAO;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,4CAA4C,CAClF,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/config/tools.d.ts
CHANGED
|
@@ -23,6 +23,16 @@ export declare const TOOLS_CONFIG_PATH: string;
|
|
|
23
23
|
*/
|
|
24
24
|
export declare function loadToolsConfig(): Promise<ToolsConfig>;
|
|
25
25
|
export declare function saveToolsConfig(config: ToolsConfig): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* 共有環境変数を取得
|
|
28
|
+
*
|
|
29
|
+
* AIツール起動時に適用される環境変数を返します。
|
|
30
|
+
* マージ優先順位(後勝ち):
|
|
31
|
+
* 1. tools.json の env フィールド
|
|
32
|
+
* 2. profiles.yaml のアクティブプロファイル
|
|
33
|
+
*
|
|
34
|
+
* @returns 環境変数のRecord
|
|
35
|
+
*/
|
|
26
36
|
export declare function getSharedEnvironment(): Promise<Record<string, string>>;
|
|
27
37
|
/**
|
|
28
38
|
* IDでツールを検索
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACb,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACb,MAAM,mBAAmB,CAAC;AAI3B;;;GAGG;AACH,eAAO,MAAM,aAAa,QAMT,CAAC;AAGlB,eAAO,MAAM,UAAU,QAAmC,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAsC,CAAC;AA4CrE;;;;;;;;GAQG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAgC5D;AA2DD,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxE;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAU5E;AAsDD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAUnC;AAED;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAsB3D"}
|
package/dist/config/tools.js
CHANGED
|
@@ -8,6 +8,7 @@ import { homedir } from "node:os";
|
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import { readFile, writeFile, mkdir, rename, access, cp, } from "node:fs/promises";
|
|
10
10
|
import { BUILTIN_TOOLS } from "./builtin-tools.js";
|
|
11
|
+
import { resolveProfileEnv } from "./profiles.js";
|
|
11
12
|
/**
|
|
12
13
|
* ツール設定ファイルのパス
|
|
13
14
|
* 環境変数の優先順位: GWT_HOME > CLAUDE_WORKTREE_HOME (後方互換性) > ホームディレクトリ
|
|
@@ -155,9 +156,25 @@ export async function saveToolsConfig(config) {
|
|
|
155
156
|
await writeFile(TEMP_CONFIG_PATH, payload, { mode: 0o600 });
|
|
156
157
|
await rename(TEMP_CONFIG_PATH, TOOLS_CONFIG_PATH);
|
|
157
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* 共有環境変数を取得
|
|
161
|
+
*
|
|
162
|
+
* AIツール起動時に適用される環境変数を返します。
|
|
163
|
+
* マージ優先順位(後勝ち):
|
|
164
|
+
* 1. tools.json の env フィールド
|
|
165
|
+
* 2. profiles.yaml のアクティブプロファイル
|
|
166
|
+
*
|
|
167
|
+
* @returns 環境変数のRecord
|
|
168
|
+
*/
|
|
158
169
|
export async function getSharedEnvironment() {
|
|
159
|
-
const config = await
|
|
160
|
-
|
|
170
|
+
const [config, profileEnv] = await Promise.all([
|
|
171
|
+
loadToolsConfig(),
|
|
172
|
+
resolveProfileEnv(),
|
|
173
|
+
]);
|
|
174
|
+
return {
|
|
175
|
+
...(config.env ?? {}),
|
|
176
|
+
...profileEnv, // プロファイルが後勝ち
|
|
177
|
+
};
|
|
161
178
|
}
|
|
162
179
|
/**
|
|
163
180
|
* CustomAITool単体を検証
|
package/dist/config/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,MAAM,EACN,EAAE,GACH,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 環境変数プロファイル型定義
|
|
3
|
+
*
|
|
4
|
+
* プロファイル機能で使用する型を定義します。
|
|
5
|
+
* @see specs/SPEC-dafff079/spec.md
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 環境変数プロファイル
|
|
9
|
+
*
|
|
10
|
+
* 環境変数のセットを表します。
|
|
11
|
+
*/
|
|
12
|
+
export interface EnvironmentProfile {
|
|
13
|
+
/** プロファイルの表示名 */
|
|
14
|
+
displayName: string;
|
|
15
|
+
/** プロファイルの説明(オプション) */
|
|
16
|
+
description?: string;
|
|
17
|
+
/** 環境変数のキーバリューペア */
|
|
18
|
+
env: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* プロファイル設定
|
|
22
|
+
*
|
|
23
|
+
* 全プロファイルを管理する設定です。
|
|
24
|
+
* ~/.gwt/profiles.yaml に保存されます。
|
|
25
|
+
*/
|
|
26
|
+
export interface ProfilesConfig {
|
|
27
|
+
/** 設定ファイルのバージョン */
|
|
28
|
+
version: string;
|
|
29
|
+
/** 現在アクティブなプロファイル名(nullの場合はプロファイルなし) */
|
|
30
|
+
activeProfile: string | null;
|
|
31
|
+
/** プロファイルの辞書(キー: プロファイル名、値: プロファイル設定) */
|
|
32
|
+
profiles: Record<string, EnvironmentProfile>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* デフォルトのプロファイル設定
|
|
36
|
+
*
|
|
37
|
+
* profiles.yamlが存在しない場合に使用されます。
|
|
38
|
+
* 不変オブジェクトとして扱われるため、変更は禁止されています。
|
|
39
|
+
*/
|
|
40
|
+
export declare const DEFAULT_PROFILES_CONFIG: Readonly<ProfilesConfig>;
|
|
41
|
+
/**
|
|
42
|
+
* プロファイル名のバリデーションパターン
|
|
43
|
+
*
|
|
44
|
+
* 小文字英数字とハイフンのみを許可し、先頭と末尾は英数字でなければなりません。
|
|
45
|
+
*/
|
|
46
|
+
export declare const PROFILE_NAME_PATTERN: RegExp;
|
|
47
|
+
/**
|
|
48
|
+
* プロファイル名をバリデート
|
|
49
|
+
*
|
|
50
|
+
* @param name - 検証するプロファイル名
|
|
51
|
+
* @returns バリデーション結果
|
|
52
|
+
*/
|
|
53
|
+
export declare function isValidProfileName(name: string): boolean;
|
|
54
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/types/profiles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAI3D,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAsC,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 環境変数プロファイル型定義
|
|
3
|
+
*
|
|
4
|
+
* プロファイル機能で使用する型を定義します。
|
|
5
|
+
* @see specs/SPEC-dafff079/spec.md
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* デフォルトのプロファイル設定
|
|
9
|
+
*
|
|
10
|
+
* profiles.yamlが存在しない場合に使用されます。
|
|
11
|
+
* 不変オブジェクトとして扱われるため、変更は禁止されています。
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_PROFILES_CONFIG = Object.freeze({
|
|
14
|
+
version: "1.0",
|
|
15
|
+
activeProfile: null,
|
|
16
|
+
profiles: Object.freeze({}),
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* プロファイル名のバリデーションパターン
|
|
20
|
+
*
|
|
21
|
+
* 小文字英数字とハイフンのみを許可し、先頭と末尾は英数字でなければなりません。
|
|
22
|
+
*/
|
|
23
|
+
export const PROFILE_NAME_PATTERN = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
24
|
+
/**
|
|
25
|
+
* プロファイル名をバリデート
|
|
26
|
+
*
|
|
27
|
+
* @param name - 検証するプロファイル名
|
|
28
|
+
* @returns バリデーション結果
|
|
29
|
+
*/
|
|
30
|
+
export function isValidProfileName(name) {
|
|
31
|
+
return name.length > 0 && PROFILE_NAME_PATTERN.test(name);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/types/profiles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+BH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA6B,MAAM,CAAC,MAAM,CAAC;IAC7E,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;CAC5B,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mCAAmC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const Alert: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
4
|
-
variant?: "default" | "
|
|
4
|
+
variant?: "default" | "warning" | "success" | "info" | "destructive" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
|
|
6
6
|
declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
7
7
|
declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const badgeVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "
|
|
4
|
+
variant?: "default" | "warning" | "local" | "remote" | "success" | "secondary" | "destructive" | "outline" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
6
|
export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akiojin/gwt",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"description": "Interactive Git worktree manager for Claude Code with graphical branch selection",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"ink": "^6.3.1",
|
|
71
71
|
"ink-select-input": "^6.2.0",
|
|
72
72
|
"ink-text-input": "^6.0.0",
|
|
73
|
-
"node-pty": "1.1.0-
|
|
73
|
+
"node-pty": "1.1.0-beta42",
|
|
74
74
|
"pino": "^10.1.0",
|
|
75
75
|
"react": "^19.2.0",
|
|
76
76
|
"react-dom": "^19.2.0",
|
|
@@ -82,6 +82,7 @@
|
|
|
82
82
|
"ws": "^8.18.0",
|
|
83
83
|
"xterm": "^5.4.0-beta.37",
|
|
84
84
|
"xterm-addon-fit": "^0.9.0-beta.37",
|
|
85
|
+
"yaml": "^2.8.2",
|
|
85
86
|
"zustand": "^5.0.2"
|
|
86
87
|
},
|
|
87
88
|
"devDependencies": {
|
|
@@ -90,7 +91,7 @@
|
|
|
90
91
|
"@playwright/test": "^1.51.0",
|
|
91
92
|
"@testing-library/jest-dom": "^6.9.1",
|
|
92
93
|
"@testing-library/react": "^16.3.0",
|
|
93
|
-
"@types/node": "^
|
|
94
|
+
"@types/node": "^25.0.2",
|
|
94
95
|
"@types/react": "^19.2.2",
|
|
95
96
|
"@types/react-dom": "^19.0.3",
|
|
96
97
|
"@types/ws": "^8.5.13",
|
|
@@ -211,7 +211,46 @@ describe("BranchListScreen", () => {
|
|
|
211
211
|
);
|
|
212
212
|
|
|
213
213
|
const text = container.textContent ?? "";
|
|
214
|
-
expect(text).toMatch(/\[ \]\s(
|
|
214
|
+
expect(text).toMatch(/\[ \]\s(🟢|🔴|⚪)\s(🛡|⚠)/); // state cluster with spacing
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
it("should display 🔴 for inaccessible worktree", async () => {
|
|
218
|
+
const onSelect = vi.fn();
|
|
219
|
+
const branches: BranchItem[] = [
|
|
220
|
+
{
|
|
221
|
+
...formatBranchItem({
|
|
222
|
+
name: "feature/missing-worktree",
|
|
223
|
+
type: "local",
|
|
224
|
+
branchType: "feature",
|
|
225
|
+
isCurrent: false,
|
|
226
|
+
hasUnpushedCommits: false,
|
|
227
|
+
worktree: {
|
|
228
|
+
path: "/tmp/wt-missing",
|
|
229
|
+
locked: false,
|
|
230
|
+
prunable: false,
|
|
231
|
+
isAccessible: false,
|
|
232
|
+
},
|
|
233
|
+
}),
|
|
234
|
+
safeToCleanup: false,
|
|
235
|
+
},
|
|
236
|
+
];
|
|
237
|
+
|
|
238
|
+
let renderResult: ReturnType<typeof inkRender>;
|
|
239
|
+
await act(async () => {
|
|
240
|
+
renderResult = inkRender(
|
|
241
|
+
<BranchListScreen
|
|
242
|
+
branches={branches}
|
|
243
|
+
stats={mockStats}
|
|
244
|
+
onSelect={onSelect}
|
|
245
|
+
/>,
|
|
246
|
+
{ stripAnsi: false },
|
|
247
|
+
);
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
const frame = stripControlSequences(
|
|
251
|
+
stripAnsi(renderResult.lastFrame() ?? ""),
|
|
252
|
+
);
|
|
253
|
+
expect(frame).toContain("[ ] 🔴 ⚠");
|
|
215
254
|
});
|
|
216
255
|
|
|
217
256
|
it("should render last tool usage when available and Unknown when not", () => {
|
|
@@ -284,7 +284,7 @@ describe("branchFormatter", () => {
|
|
|
284
284
|
|
|
285
285
|
const result = formatBranchItem(branchInfo);
|
|
286
286
|
|
|
287
|
-
expect(result.icons).toContain("
|
|
287
|
+
expect(result.icons).toContain("🔴"); // inaccessible worktree icon
|
|
288
288
|
expect(result.icons).toContain("⚠️"); // warning icon
|
|
289
289
|
expect(result.worktreeStatus).toBe("inaccessible");
|
|
290
290
|
});
|
|
@@ -7,7 +7,10 @@ import React, {
|
|
|
7
7
|
} from "react";
|
|
8
8
|
import { useApp } from "ink";
|
|
9
9
|
import { ErrorBoundary } from "./common/ErrorBoundary.js";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
BranchListScreen,
|
|
12
|
+
type BranchListScreenProps,
|
|
13
|
+
} from "./screens/BranchListScreen.js";
|
|
11
14
|
import { BranchCreatorScreen } from "./screens/BranchCreatorScreen.js";
|
|
12
15
|
import { BranchActionSelectorScreen } from "../screens/BranchActionSelectorScreen.js";
|
|
13
16
|
import { AIToolSelectorScreen } from "./screens/AIToolSelectorScreen.js";
|
|
@@ -19,7 +22,9 @@ import {
|
|
|
19
22
|
ModelSelectorScreen,
|
|
20
23
|
type ModelSelectionResult,
|
|
21
24
|
} from "./screens/ModelSelectorScreen.js";
|
|
25
|
+
import { EnvironmentProfileScreen } from "./screens/EnvironmentProfileScreen.js";
|
|
22
26
|
import { useGitData } from "../hooks/useGitData.js";
|
|
27
|
+
import { useProfiles } from "../hooks/useProfiles.js";
|
|
23
28
|
import { useScreenState } from "../hooks/useScreenState.js";
|
|
24
29
|
import { formatBranchItems } from "../utils/branchFormatter.js";
|
|
25
30
|
import { calculateStatistics } from "../utils/statisticsCalculator.js";
|
|
@@ -108,6 +113,9 @@ export function App({ onExit, loadingIndicatorDelay = 300 }: AppProps) {
|
|
|
108
113
|
});
|
|
109
114
|
const { currentScreen, navigateTo, goBack } = useScreenState();
|
|
110
115
|
|
|
116
|
+
// Profile state
|
|
117
|
+
const { activeProfileName, refresh: refreshProfiles } = useProfiles();
|
|
118
|
+
|
|
111
119
|
// Version state
|
|
112
120
|
const [version, setVersion] = useState<string | null>(null);
|
|
113
121
|
const [repoRoot, setRepoRoot] = useState<string | null>(null);
|
|
@@ -1153,31 +1161,39 @@ export function App({ onExit, loadingIndicatorDelay = 300 }: AppProps) {
|
|
|
1153
1161
|
|
|
1154
1162
|
// Render screen based on currentScreen
|
|
1155
1163
|
const renderScreen = () => {
|
|
1164
|
+
const renderBranchListScreen = (
|
|
1165
|
+
additionalProps?: Partial<BranchListScreenProps>,
|
|
1166
|
+
) => (
|
|
1167
|
+
<BranchListScreen
|
|
1168
|
+
branches={branchItems}
|
|
1169
|
+
stats={stats}
|
|
1170
|
+
onSelect={handleSelect}
|
|
1171
|
+
onQuit={handleQuit}
|
|
1172
|
+
onRefresh={refresh}
|
|
1173
|
+
loading={loading}
|
|
1174
|
+
error={error}
|
|
1175
|
+
lastUpdated={lastUpdated}
|
|
1176
|
+
loadingIndicatorDelay={loadingIndicatorDelay}
|
|
1177
|
+
version={version}
|
|
1178
|
+
workingDirectory={workingDirectory}
|
|
1179
|
+
activeProfile={activeProfileName}
|
|
1180
|
+
onOpenProfiles={() => navigateTo("environment-profile")}
|
|
1181
|
+
{...additionalProps}
|
|
1182
|
+
/>
|
|
1183
|
+
);
|
|
1184
|
+
|
|
1156
1185
|
switch (currentScreen) {
|
|
1157
1186
|
case "branch-list":
|
|
1158
|
-
return (
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
lastUpdated={lastUpdated}
|
|
1169
|
-
loadingIndicatorDelay={loadingIndicatorDelay}
|
|
1170
|
-
cleanupUI={{
|
|
1171
|
-
indicators: cleanupIndicators,
|
|
1172
|
-
footerMessage: cleanupFooterMessage,
|
|
1173
|
-
inputLocked: cleanupInputLocked,
|
|
1174
|
-
}}
|
|
1175
|
-
version={version}
|
|
1176
|
-
workingDirectory={workingDirectory}
|
|
1177
|
-
selectedBranches={selectedBranches}
|
|
1178
|
-
onToggleSelect={toggleBranchSelection}
|
|
1179
|
-
/>
|
|
1180
|
-
);
|
|
1187
|
+
return renderBranchListScreen({
|
|
1188
|
+
onCleanupCommand: handleCleanupCommand,
|
|
1189
|
+
cleanupUI: {
|
|
1190
|
+
indicators: cleanupIndicators,
|
|
1191
|
+
footerMessage: cleanupFooterMessage,
|
|
1192
|
+
inputLocked: cleanupInputLocked,
|
|
1193
|
+
},
|
|
1194
|
+
selectedBranches,
|
|
1195
|
+
onToggleSelect: toggleBranchSelection,
|
|
1196
|
+
});
|
|
1181
1197
|
|
|
1182
1198
|
case "branch-creator":
|
|
1183
1199
|
return (
|
|
@@ -1268,22 +1284,19 @@ export function App({ onExit, loadingIndicatorDelay = 300 }: AppProps) {
|
|
|
1268
1284
|
/>
|
|
1269
1285
|
);
|
|
1270
1286
|
|
|
1271
|
-
|
|
1287
|
+
case "environment-profile":
|
|
1272
1288
|
return (
|
|
1273
|
-
<
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
onRefresh={refresh}
|
|
1279
|
-
loading={loading}
|
|
1280
|
-
error={error}
|
|
1281
|
-
lastUpdated={lastUpdated}
|
|
1282
|
-
loadingIndicatorDelay={loadingIndicatorDelay}
|
|
1289
|
+
<EnvironmentProfileScreen
|
|
1290
|
+
onBack={() => {
|
|
1291
|
+
void refreshProfiles();
|
|
1292
|
+
goBack();
|
|
1293
|
+
}}
|
|
1283
1294
|
version={version}
|
|
1284
|
-
workingDirectory={workingDirectory}
|
|
1285
1295
|
/>
|
|
1286
1296
|
);
|
|
1297
|
+
|
|
1298
|
+
default:
|
|
1299
|
+
return renderBranchListScreen();
|
|
1287
1300
|
}
|
|
1288
1301
|
};
|
|
1289
1302
|
|
|
@@ -22,6 +22,14 @@ export interface HeaderProps {
|
|
|
22
22
|
* @default undefined
|
|
23
23
|
*/
|
|
24
24
|
workingDirectory?: string;
|
|
25
|
+
/**
|
|
26
|
+
* 現在アクティブなプロファイル名
|
|
27
|
+
* - string: プロファイル名が利用可能(例: "development")
|
|
28
|
+
* - null: プロファイルが選択されていない
|
|
29
|
+
* - undefined: プロファイル情報未提供
|
|
30
|
+
* @default undefined
|
|
31
|
+
*/
|
|
32
|
+
activeProfile?: string | null | undefined;
|
|
25
33
|
}
|
|
26
34
|
|
|
27
35
|
/**
|
|
@@ -36,9 +44,16 @@ export const Header = React.memo(function Header({
|
|
|
36
44
|
width = 80,
|
|
37
45
|
version,
|
|
38
46
|
workingDirectory,
|
|
47
|
+
activeProfile,
|
|
39
48
|
}: HeaderProps) {
|
|
40
49
|
const divider = dividerChar.repeat(width);
|
|
41
|
-
|
|
50
|
+
|
|
51
|
+
// タイトル構築: "gwt v2.14 | Profile: development" または "gwt v2.14 | Profile: (none)"
|
|
52
|
+
let displayTitle = version ? `${title} v${version}` : title;
|
|
53
|
+
if (activeProfile !== undefined) {
|
|
54
|
+
const profileLabel = activeProfile ?? "(none)";
|
|
55
|
+
displayTitle = `${displayTitle} | Profile: ${profileLabel}`;
|
|
56
|
+
}
|
|
42
57
|
|
|
43
58
|
return (
|
|
44
59
|
<Box flexDirection="column">
|
|
@@ -27,7 +27,7 @@ const WIDTH_OVERRIDES: Record<string, number> = {
|
|
|
27
27
|
// Worktree status icons
|
|
28
28
|
"🟢": 2,
|
|
29
29
|
"⚪": 2,
|
|
30
|
-
"
|
|
30
|
+
"🔴": 2,
|
|
31
31
|
// Change status icons
|
|
32
32
|
"👉": 1,
|
|
33
33
|
"💾": 1,
|
|
@@ -84,6 +84,7 @@ export interface BranchListScreenProps {
|
|
|
84
84
|
onQuit?: () => void;
|
|
85
85
|
onCleanupCommand?: () => void;
|
|
86
86
|
onRefresh?: () => void;
|
|
87
|
+
onOpenProfiles?: () => void;
|
|
87
88
|
loading?: boolean;
|
|
88
89
|
error?: Error | null;
|
|
89
90
|
lastUpdated?: Date | null;
|
|
@@ -91,6 +92,7 @@ export interface BranchListScreenProps {
|
|
|
91
92
|
cleanupUI?: CleanupUIState;
|
|
92
93
|
version?: string | null;
|
|
93
94
|
workingDirectory?: string;
|
|
95
|
+
activeProfile?: string | null;
|
|
94
96
|
// Test support: allow external control of filter mode and query
|
|
95
97
|
testFilterMode?: boolean;
|
|
96
98
|
testOnFilterModeChange?: (mode: boolean) => void;
|
|
@@ -110,6 +112,7 @@ export function BranchListScreen({
|
|
|
110
112
|
onSelect,
|
|
111
113
|
onCleanupCommand,
|
|
112
114
|
onRefresh,
|
|
115
|
+
onOpenProfiles,
|
|
113
116
|
loading = false,
|
|
114
117
|
error = null,
|
|
115
118
|
lastUpdated = null,
|
|
@@ -117,6 +120,7 @@ export function BranchListScreen({
|
|
|
117
120
|
cleanupUI,
|
|
118
121
|
version,
|
|
119
122
|
workingDirectory,
|
|
123
|
+
activeProfile,
|
|
120
124
|
testFilterMode,
|
|
121
125
|
testOnFilterModeChange,
|
|
122
126
|
testFilterQuery,
|
|
@@ -125,7 +129,7 @@ export function BranchListScreen({
|
|
|
125
129
|
onToggleSelect,
|
|
126
130
|
}: BranchListScreenProps) {
|
|
127
131
|
const { rows } = useTerminalSize();
|
|
128
|
-
const headerText = " Legend: [ ]/[ * ] select
|
|
132
|
+
const headerText = " Legend: [ ]/[ * ] select 🟢/🔴/⚪ worktree 🛡/⚠ safe";
|
|
129
133
|
const selectedSet = useMemo(
|
|
130
134
|
() => new Set(selectedBranches),
|
|
131
135
|
[selectedBranches],
|
|
@@ -206,6 +210,8 @@ export function BranchListScreen({
|
|
|
206
210
|
onCleanupCommand?.();
|
|
207
211
|
} else if (input === "r" && onRefresh) {
|
|
208
212
|
onRefresh();
|
|
213
|
+
} else if (input === "p" && onOpenProfiles) {
|
|
214
|
+
onOpenProfiles();
|
|
209
215
|
}
|
|
210
216
|
});
|
|
211
217
|
|
|
@@ -262,7 +268,8 @@ export function BranchListScreen({
|
|
|
262
268
|
{ key: "enter", description: "Select" },
|
|
263
269
|
{ key: "f", description: "Filter" },
|
|
264
270
|
{ key: "r", description: "Refresh" },
|
|
265
|
-
{ key: "c", description: "Cleanup
|
|
271
|
+
{ key: "c", description: "Cleanup" },
|
|
272
|
+
{ key: "p", description: "Profiles" },
|
|
266
273
|
];
|
|
267
274
|
|
|
268
275
|
const formatLatestCommit = useCallback((timestamp?: number) => {
|
|
@@ -399,10 +406,12 @@ export function BranchListScreen({
|
|
|
399
406
|
|
|
400
407
|
const isChecked = selectedSet.has(item.name);
|
|
401
408
|
const selectionIcon = isChecked ? "[*]" : "[ ]";
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
409
|
+
let worktreeIcon = chalk.gray("⚪");
|
|
410
|
+
if (item.worktreeStatus === "active") {
|
|
411
|
+
worktreeIcon = chalk.green("🟢");
|
|
412
|
+
} else if (item.worktreeStatus === "inaccessible") {
|
|
413
|
+
worktreeIcon = chalk.red("🔴");
|
|
414
|
+
}
|
|
406
415
|
const safeIcon =
|
|
407
416
|
item.safeToCleanup === true ? chalk.green("🛡") : chalk.yellow("⚠");
|
|
408
417
|
const stateCluster = `${selectionIcon} ${worktreeIcon} ${safeIcon}`;
|
|
@@ -514,6 +523,7 @@ export function BranchListScreen({
|
|
|
514
523
|
titleColor="cyan"
|
|
515
524
|
version={version}
|
|
516
525
|
{...(workingDirectory !== undefined && { workingDirectory })}
|
|
526
|
+
activeProfile={activeProfile}
|
|
517
527
|
/>
|
|
518
528
|
|
|
519
529
|
{/* Filter Input - Always visible */}
|