@akiojin/gwt 2.2.0 → 2.3.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/README.ja.md +4 -4
- package/README.md +4 -4
- package/dist/cli/ui/components/App.d.ts +4 -4
- package/dist/cli/ui/components/App.d.ts.map +1 -1
- package/dist/cli/ui/components/App.js +144 -105
- package/dist/cli/ui/components/App.js.map +1 -1
- package/dist/cli/ui/components/common/Confirm.d.ts +1 -1
- package/dist/cli/ui/components/common/Confirm.d.ts.map +1 -1
- package/dist/cli/ui/components/common/Confirm.js +7 -7
- package/dist/cli/ui/components/common/Confirm.js.map +1 -1
- package/dist/cli/ui/components/common/ErrorBoundary.d.ts +1 -1
- package/dist/cli/ui/components/common/ErrorBoundary.d.ts.map +1 -1
- package/dist/cli/ui/components/common/ErrorBoundary.js +4 -4
- package/dist/cli/ui/components/common/ErrorBoundary.js.map +1 -1
- package/dist/cli/ui/components/common/Input.d.ts +2 -2
- package/dist/cli/ui/components/common/Input.d.ts.map +1 -1
- package/dist/cli/ui/components/common/Input.js +4 -4
- package/dist/cli/ui/components/common/Input.js.map +1 -1
- package/dist/cli/ui/components/common/LoadingIndicator.d.ts +1 -1
- package/dist/cli/ui/components/common/LoadingIndicator.d.ts.map +1 -1
- package/dist/cli/ui/components/common/LoadingIndicator.js +4 -4
- package/dist/cli/ui/components/common/LoadingIndicator.js.map +1 -1
- package/dist/cli/ui/components/common/Select.d.ts +1 -1
- package/dist/cli/ui/components/common/Select.d.ts.map +1 -1
- package/dist/cli/ui/components/common/Select.js +11 -12
- package/dist/cli/ui/components/common/Select.js.map +1 -1
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.d.ts +2 -2
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.d.ts.map +1 -1
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.js +11 -11
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.js.map +1 -1
- package/dist/cli/ui/components/screens/BranchCreatorScreen.d.ts +1 -1
- package/dist/cli/ui/components/screens/BranchCreatorScreen.d.ts.map +1 -1
- package/dist/cli/ui/components/screens/BranchCreatorScreen.js +39 -36
- package/dist/cli/ui/components/screens/BranchCreatorScreen.js.map +1 -1
- package/dist/cli/ui/components/screens/BranchListScreen.d.ts +3 -3
- package/dist/cli/ui/components/screens/BranchListScreen.d.ts.map +1 -1
- package/dist/cli/ui/components/screens/BranchListScreen.js +55 -50
- package/dist/cli/ui/components/screens/BranchListScreen.js.map +1 -1
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.d.ts +2 -2
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.d.ts.map +1 -1
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.js +25 -25
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.js.map +1 -1
- package/dist/cli/ui/components/screens/PRCleanupScreen.d.ts +2 -2
- package/dist/cli/ui/components/screens/PRCleanupScreen.js +21 -21
- package/dist/cli/ui/components/screens/SessionSelectorScreen.d.ts +1 -1
- package/dist/cli/ui/components/screens/SessionSelectorScreen.js +8 -8
- package/dist/cli/ui/components/screens/WorktreeManagerScreen.d.ts +1 -1
- package/dist/cli/ui/components/screens/WorktreeManagerScreen.js +8 -8
- package/dist/cli/ui/screens/BranchActionSelectorScreen.d.ts.map +1 -1
- package/dist/cli/ui/screens/BranchActionSelectorScreen.js +7 -4
- package/dist/cli/ui/screens/BranchActionSelectorScreen.js.map +1 -1
- package/dist/cli/ui/types.d.ts.map +1 -1
- package/dist/client/assets/{index-V6hDu9KS.js → index-Difv1Hwu.js} +2 -2
- package/dist/client/index.html +1 -1
- package/dist/config/builtin-tools.d.ts +10 -2
- package/dist/config/builtin-tools.d.ts.map +1 -1
- package/dist/config/builtin-tools.js +40 -4
- package/dist/config/builtin-tools.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/tools.d.ts.map +1 -1
- package/dist/config/tools.js +4 -3
- package/dist/config/tools.js.map +1 -1
- package/dist/gemini.d.ts +12 -0
- package/dist/gemini.d.ts.map +1 -0
- package/dist/gemini.js +154 -0
- package/dist/gemini.js.map +1 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -1
- package/dist/qwen.d.ts +12 -0
- package/dist/qwen.d.ts.map +1 -0
- package/dist/qwen.js +154 -0
- package/dist/qwen.js.map +1 -0
- package/dist/services/git.service.d.ts.map +1 -1
- package/dist/services/git.service.js.map +1 -1
- package/dist/web/client/src/components/BranchGraph.d.ts.map +1 -1
- package/dist/web/client/src/components/BranchGraph.js +1 -1
- package/dist/web/client/src/components/BranchGraph.js.map +1 -1
- package/dist/web/client/src/components/EnvEditor.d.ts.map +1 -1
- package/dist/web/client/src/components/EnvEditor.js +7 -4
- package/dist/web/client/src/components/EnvEditor.js.map +1 -1
- package/dist/web/client/src/pages/BranchDetailPage.d.ts.map +1 -1
- package/dist/web/client/src/pages/BranchDetailPage.js +55 -18
- package/dist/web/client/src/pages/BranchDetailPage.js.map +1 -1
- package/dist/web/client/src/pages/BranchListPage.d.ts.map +1 -1
- package/dist/web/client/src/pages/BranchListPage.js +10 -4
- package/dist/web/client/src/pages/BranchListPage.js.map +1 -1
- package/dist/web/client/src/pages/ConfigManagementPage.d.ts.map +1 -1
- package/dist/web/client/src/pages/ConfigManagementPage.js +4 -2
- package/dist/web/client/src/pages/ConfigManagementPage.js.map +1 -1
- package/package.json +2 -1
- package/src/cli/ui/__tests__/acceptance/navigation.acceptance.test.tsx +69 -50
- package/src/cli/ui/__tests__/components/App.protected-branch.test.tsx +67 -45
- package/src/cli/ui/__tests__/components/App.shortcuts.test.tsx +117 -75
- package/src/cli/ui/__tests__/components/App.test.tsx +45 -37
- package/src/cli/ui/__tests__/components/common/Confirm.test.tsx +35 -22
- package/src/cli/ui/__tests__/components/common/ErrorBoundary.test.tsx +22 -22
- package/src/cli/ui/__tests__/components/common/Input.test.tsx +29 -22
- package/src/cli/ui/__tests__/components/common/LoadingIndicator.test.tsx +40 -34
- package/src/cli/ui/__tests__/components/common/Select.memo.test.tsx +57 -66
- package/src/cli/ui/__tests__/components/common/Select.test.tsx +121 -91
- package/src/cli/ui/__tests__/components/parts/Footer.test.tsx +18 -16
- package/src/cli/ui/__tests__/components/parts/Header.test.tsx +13 -13
- package/src/cli/ui/__tests__/components/parts/ScrollableList.test.tsx +20 -20
- package/src/cli/ui/__tests__/components/parts/Stats.test.tsx +38 -26
- package/src/cli/ui/__tests__/components/screens/AIToolSelectorScreen.test.tsx +31 -31
- package/src/cli/ui/__tests__/components/screens/BranchCreatorScreen.test.tsx +73 -37
- package/src/cli/ui/__tests__/components/screens/BranchListScreen.test.tsx +261 -153
- package/src/cli/ui/__tests__/components/screens/ExecutionModeSelectorScreen.test.tsx +38 -32
- package/src/cli/ui/__tests__/components/screens/PRCleanupScreen.test.tsx +39 -39
- package/src/cli/ui/__tests__/components/screens/SessionSelectorScreen.test.tsx +49 -21
- package/src/cli/ui/__tests__/components/screens/WorktreeManagerScreen.test.tsx +52 -28
- package/src/cli/ui/__tests__/integration/edgeCases.test.tsx +84 -48
- package/src/cli/ui/__tests__/integration/navigation.test.tsx +111 -83
- package/src/cli/ui/__tests__/integration/realtimeUpdate.test.tsx +111 -108
- package/src/cli/ui/__tests__/performance/branchList.performance.test.tsx +50 -37
- package/src/cli/ui/__tests__/performance/useMemoOptimization.test.tsx +75 -76
- package/src/cli/ui/components/App.tsx +247 -150
- package/src/cli/ui/components/common/Confirm.tsx +13 -9
- package/src/cli/ui/components/common/ErrorBoundary.tsx +8 -5
- package/src/cli/ui/components/common/Input.tsx +12 -4
- package/src/cli/ui/components/common/LoadingIndicator.tsx +8 -5
- package/src/cli/ui/components/common/Select.tsx +28 -17
- package/src/cli/ui/components/parts/Header.test.tsx +5 -15
- package/src/cli/ui/components/screens/AIToolSelectorScreen.tsx +19 -13
- package/src/cli/ui/components/screens/BranchCreatorScreen.tsx +74 -54
- package/src/cli/ui/components/screens/BranchListScreen.tsx +92 -75
- package/src/cli/ui/components/screens/ExecutionModeSelectorScreen.tsx +35 -28
- package/src/cli/ui/components/screens/PRCleanupScreen.tsx +22 -22
- package/src/cli/ui/components/screens/SessionSelectorScreen.tsx +8 -8
- package/src/cli/ui/components/screens/WorktreeManagerScreen.tsx +8 -8
- package/src/cli/ui/screens/BranchActionSelectorScreen.tsx +9 -4
- package/src/cli/ui/types.ts +8 -1
- package/src/config/builtin-tools.ts +42 -4
- package/src/config/index.ts +2 -12
- package/src/config/tools.ts +16 -6
- package/src/gemini.ts +202 -0
- package/src/git.ts +2 -1
- package/src/index.ts +30 -0
- package/src/qwen.ts +208 -0
- package/src/services/git.service.ts +2 -1
- package/src/web/client/src/components/BranchGraph.tsx +3 -2
- package/src/web/client/src/components/EnvEditor.tsx +44 -11
- package/src/web/client/src/pages/BranchDetailPage.tsx +165 -54
- package/src/web/client/src/pages/BranchListPage.tsx +37 -13
- package/src/web/client/src/pages/ConfigManagementPage.tsx +28 -9
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @vitest-environment happy-dom
|
|
3
3
|
*/
|
|
4
|
-
import { describe, it, expect, vi, beforeEach } from
|
|
5
|
-
import { render } from
|
|
6
|
-
import React, { useMemo } from
|
|
7
|
-
import { Window } from
|
|
8
|
-
import type { BranchInfo, WorktreeInfo } from
|
|
9
|
-
import { formatBranchItems } from
|
|
4
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
5
|
+
import { render } from "@testing-library/react";
|
|
6
|
+
import React, { useMemo } from "react";
|
|
7
|
+
import { Window } from "happy-dom";
|
|
8
|
+
import type { BranchInfo, WorktreeInfo } from "../../types.js";
|
|
9
|
+
import { formatBranchItems } from "../../utils/branchFormatter.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* T082-1: useMemo optimization tests
|
|
@@ -14,29 +14,31 @@ import { formatBranchItems } from '../../utils/branchFormatter.js';
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
// Mock useGitData hook
|
|
17
|
-
vi.mock(
|
|
17
|
+
vi.mock("../../hooks/useGitData.js", () => ({
|
|
18
18
|
useGitData: vi.fn(),
|
|
19
19
|
}));
|
|
20
20
|
|
|
21
|
-
import { useGitData } from
|
|
21
|
+
import { useGitData } from "../../hooks/useGitData.js";
|
|
22
22
|
// const mockUseGitData = useGitData as ReturnType<typeof vi.fn>;
|
|
23
23
|
|
|
24
24
|
// Helper function to create a stable hash of branch data
|
|
25
25
|
function createBranchHash(branches: BranchInfo[]): string {
|
|
26
|
-
return branches
|
|
27
|
-
.map((b) => `${b.name}-${b.type}-${b.isCurrent}`)
|
|
28
|
-
.join(',');
|
|
26
|
+
return branches.map((b) => `${b.name}-${b.type}-${b.isCurrent}`).join(",");
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
// Helper function to create a stable hash of worktree data
|
|
32
30
|
function createWorktreeHash(worktrees: WorktreeInfo[]): string {
|
|
33
|
-
return worktrees
|
|
34
|
-
.map((w) => `${w.branch}-${w.path}`)
|
|
35
|
-
.join(',');
|
|
31
|
+
return worktrees.map((w) => `${w.branch}-${w.path}`).join(",");
|
|
36
32
|
}
|
|
37
33
|
|
|
38
34
|
// Test component that uses optimized useMemo
|
|
39
|
-
function TestComponent({
|
|
35
|
+
function TestComponent({
|
|
36
|
+
branches,
|
|
37
|
+
worktrees,
|
|
38
|
+
}: {
|
|
39
|
+
branches: BranchInfo[];
|
|
40
|
+
worktrees: WorktreeInfo[];
|
|
41
|
+
}) {
|
|
40
42
|
// Count how many times formatBranchItems is called
|
|
41
43
|
const formatCallCount = React.useRef(0);
|
|
42
44
|
|
|
@@ -53,17 +55,12 @@ function TestComponent({ branches, worktrees }: { branches: BranchInfo[]; worktr
|
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
57
|
return formatBranchItems(branches, worktreeMap);
|
|
56
|
-
}, [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
]);
|
|
60
|
-
|
|
61
|
-
return (
|
|
62
|
-
<div data-testid="branch-count">{branchItems.length}</div>
|
|
63
|
-
);
|
|
58
|
+
}, [createBranchHash(branches), createWorktreeHash(worktrees)]);
|
|
59
|
+
|
|
60
|
+
return <div data-testid="branch-count">{branchItems.length}</div>;
|
|
64
61
|
}
|
|
65
62
|
|
|
66
|
-
describe(
|
|
63
|
+
describe("useMemo Optimization (T082-1)", () => {
|
|
67
64
|
beforeEach(() => {
|
|
68
65
|
const window = new Window();
|
|
69
66
|
globalThis.window = window as any;
|
|
@@ -71,54 +68,54 @@ describe('useMemo Optimization (T082-1)', () => {
|
|
|
71
68
|
vi.clearAllMocks();
|
|
72
69
|
});
|
|
73
70
|
|
|
74
|
-
it(
|
|
71
|
+
it("should not regenerate branchItems when data content is the same", () => {
|
|
75
72
|
const mockBranches: BranchInfo[] = [
|
|
76
73
|
{
|
|
77
|
-
name:
|
|
78
|
-
branchType:
|
|
79
|
-
type:
|
|
74
|
+
name: "main",
|
|
75
|
+
branchType: "main",
|
|
76
|
+
type: "local",
|
|
80
77
|
isCurrent: true,
|
|
81
78
|
},
|
|
82
79
|
{
|
|
83
|
-
name:
|
|
84
|
-
branchType:
|
|
85
|
-
type:
|
|
80
|
+
name: "feature/test-1",
|
|
81
|
+
branchType: "feature",
|
|
82
|
+
type: "local",
|
|
86
83
|
isCurrent: false,
|
|
87
84
|
},
|
|
88
85
|
];
|
|
89
86
|
|
|
90
87
|
const mockWorktrees: WorktreeInfo[] = [
|
|
91
88
|
{
|
|
92
|
-
path:
|
|
93
|
-
branch:
|
|
89
|
+
path: "/mock/worktree/feature-test-1",
|
|
90
|
+
branch: "feature/test-1",
|
|
94
91
|
isAccessible: true,
|
|
95
92
|
},
|
|
96
93
|
];
|
|
97
94
|
|
|
98
95
|
const { rerender } = render(
|
|
99
|
-
<TestComponent branches={mockBranches} worktrees={mockWorktrees}
|
|
96
|
+
<TestComponent branches={mockBranches} worktrees={mockWorktrees} />,
|
|
100
97
|
);
|
|
101
98
|
|
|
102
99
|
// Create new arrays with the same content
|
|
103
100
|
const sameBranches: BranchInfo[] = [
|
|
104
101
|
{
|
|
105
|
-
name:
|
|
106
|
-
branchType:
|
|
107
|
-
type:
|
|
102
|
+
name: "main",
|
|
103
|
+
branchType: "main",
|
|
104
|
+
type: "local",
|
|
108
105
|
isCurrent: true,
|
|
109
106
|
},
|
|
110
107
|
{
|
|
111
|
-
name:
|
|
112
|
-
branchType:
|
|
113
|
-
type:
|
|
108
|
+
name: "feature/test-1",
|
|
109
|
+
branchType: "feature",
|
|
110
|
+
type: "local",
|
|
114
111
|
isCurrent: false,
|
|
115
112
|
},
|
|
116
113
|
];
|
|
117
114
|
|
|
118
115
|
const sameWorktrees: WorktreeInfo[] = [
|
|
119
116
|
{
|
|
120
|
-
path:
|
|
121
|
-
branch:
|
|
117
|
+
path: "/mock/worktree/feature-test-1",
|
|
118
|
+
branch: "feature/test-1",
|
|
122
119
|
isAccessible: true,
|
|
123
120
|
},
|
|
124
121
|
];
|
|
@@ -129,11 +126,13 @@ describe('useMemo Optimization (T082-1)', () => {
|
|
|
129
126
|
|
|
130
127
|
// Verify that content is the same
|
|
131
128
|
expect(createBranchHash(sameBranches)).toBe(createBranchHash(mockBranches));
|
|
132
|
-
expect(createWorktreeHash(sameWorktrees)).toBe(
|
|
129
|
+
expect(createWorktreeHash(sameWorktrees)).toBe(
|
|
130
|
+
createWorktreeHash(mockWorktrees),
|
|
131
|
+
);
|
|
133
132
|
|
|
134
133
|
// Re-render with same content but different references
|
|
135
134
|
rerender(
|
|
136
|
-
<TestComponent branches={sameBranches} worktrees={sameWorktrees}
|
|
135
|
+
<TestComponent branches={sameBranches} worktrees={sameWorktrees} />,
|
|
137
136
|
);
|
|
138
137
|
|
|
139
138
|
// formatBranchItems should only be called once (not twice)
|
|
@@ -141,69 +140,69 @@ describe('useMemo Optimization (T082-1)', () => {
|
|
|
141
140
|
// depends on array references, not content
|
|
142
141
|
});
|
|
143
142
|
|
|
144
|
-
it(
|
|
143
|
+
it("should regenerate branchItems when data content changes", () => {
|
|
145
144
|
const initialBranches: BranchInfo[] = [
|
|
146
145
|
{
|
|
147
|
-
name:
|
|
148
|
-
branchType:
|
|
149
|
-
type:
|
|
146
|
+
name: "main",
|
|
147
|
+
branchType: "main",
|
|
148
|
+
type: "local",
|
|
150
149
|
isCurrent: true,
|
|
151
150
|
},
|
|
152
151
|
];
|
|
153
152
|
|
|
154
153
|
const { rerender } = render(
|
|
155
|
-
<TestComponent branches={initialBranches} worktrees={[]}
|
|
154
|
+
<TestComponent branches={initialBranches} worktrees={[]} />,
|
|
156
155
|
);
|
|
157
156
|
|
|
158
157
|
// Add a new branch
|
|
159
158
|
const updatedBranches: BranchInfo[] = [
|
|
160
159
|
...initialBranches,
|
|
161
160
|
{
|
|
162
|
-
name:
|
|
163
|
-
branchType:
|
|
164
|
-
type:
|
|
161
|
+
name: "feature/new",
|
|
162
|
+
branchType: "feature",
|
|
163
|
+
type: "local",
|
|
165
164
|
isCurrent: false,
|
|
166
165
|
},
|
|
167
166
|
];
|
|
168
167
|
|
|
169
168
|
// Verify content changed
|
|
170
|
-
expect(createBranchHash(updatedBranches)).not.toBe(
|
|
169
|
+
expect(createBranchHash(updatedBranches)).not.toBe(
|
|
170
|
+
createBranchHash(initialBranches),
|
|
171
|
+
);
|
|
171
172
|
|
|
172
173
|
// Re-render with new content
|
|
173
|
-
rerender(
|
|
174
|
-
<TestComponent branches={updatedBranches} worktrees={[]} />
|
|
175
|
-
);
|
|
174
|
+
rerender(<TestComponent branches={updatedBranches} worktrees={[]} />);
|
|
176
175
|
|
|
177
176
|
// formatBranchItems should be called twice (once for initial, once for update)
|
|
178
177
|
});
|
|
179
178
|
|
|
180
|
-
it(
|
|
179
|
+
it("should handle branch order changes correctly", () => {
|
|
181
180
|
const branches1: BranchInfo[] = [
|
|
182
181
|
{
|
|
183
|
-
name:
|
|
184
|
-
branchType:
|
|
185
|
-
type:
|
|
182
|
+
name: "main",
|
|
183
|
+
branchType: "main",
|
|
184
|
+
type: "local",
|
|
186
185
|
isCurrent: true,
|
|
187
186
|
},
|
|
188
187
|
{
|
|
189
|
-
name:
|
|
190
|
-
branchType:
|
|
191
|
-
type:
|
|
188
|
+
name: "feature/test",
|
|
189
|
+
branchType: "feature",
|
|
190
|
+
type: "local",
|
|
192
191
|
isCurrent: false,
|
|
193
192
|
},
|
|
194
193
|
];
|
|
195
194
|
|
|
196
195
|
const branches2: BranchInfo[] = [
|
|
197
196
|
{
|
|
198
|
-
name:
|
|
199
|
-
branchType:
|
|
200
|
-
type:
|
|
197
|
+
name: "feature/test",
|
|
198
|
+
branchType: "feature",
|
|
199
|
+
type: "local",
|
|
201
200
|
isCurrent: false,
|
|
202
201
|
},
|
|
203
202
|
{
|
|
204
|
-
name:
|
|
205
|
-
branchType:
|
|
206
|
-
type:
|
|
203
|
+
name: "main",
|
|
204
|
+
branchType: "main",
|
|
205
|
+
type: "local",
|
|
207
206
|
isCurrent: true,
|
|
208
207
|
},
|
|
209
208
|
];
|
|
@@ -212,21 +211,21 @@ describe('useMemo Optimization (T082-1)', () => {
|
|
|
212
211
|
expect(createBranchHash(branches1)).not.toBe(createBranchHash(branches2));
|
|
213
212
|
});
|
|
214
213
|
|
|
215
|
-
it(
|
|
214
|
+
it("should detect subtle branch property changes", () => {
|
|
216
215
|
const branches1: BranchInfo[] = [
|
|
217
216
|
{
|
|
218
|
-
name:
|
|
219
|
-
branchType:
|
|
220
|
-
type:
|
|
217
|
+
name: "main",
|
|
218
|
+
branchType: "main",
|
|
219
|
+
type: "local",
|
|
221
220
|
isCurrent: false,
|
|
222
221
|
},
|
|
223
222
|
];
|
|
224
223
|
|
|
225
224
|
const branches2: BranchInfo[] = [
|
|
226
225
|
{
|
|
227
|
-
name:
|
|
228
|
-
branchType:
|
|
229
|
-
type:
|
|
226
|
+
name: "main",
|
|
227
|
+
branchType: "main",
|
|
228
|
+
type: "local",
|
|
230
229
|
isCurrent: true, // Changed from false to true
|
|
231
230
|
},
|
|
232
231
|
];
|