@akiojin/gwt 3.0.0 → 3.1.0
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/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 +7 -3
- 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/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/components/App.tsx +49 -36
- package/src/cli/ui/components/parts/Header.tsx +16 -1
- package/src/cli/ui/components/screens/BranchListScreen.tsx +9 -1
- 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/config/profiles.ts +362 -0
- package/src/config/tools.ts +20 -2
- package/src/types/profiles.ts +64 -0
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.0",
|
|
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",
|
|
@@ -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">
|
|
@@ -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,
|
|
@@ -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) => {
|
|
@@ -514,6 +521,7 @@ export function BranchListScreen({
|
|
|
514
521
|
titleColor="cyan"
|
|
515
522
|
version={version}
|
|
516
523
|
{...(workingDirectory !== undefined && { workingDirectory })}
|
|
524
|
+
activeProfile={activeProfile}
|
|
517
525
|
/>
|
|
518
526
|
|
|
519
527
|
{/* Filter Input - Always visible */}
|