diff --git a/eslint.config.js b/eslint.config.js
index 564c216..d713f62 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -32,7 +32,9 @@ export default [
clearInterval: true,
setTimeout: true,
clearTimeout: true,
- NodeJS: true
+ NodeJS: true,
+ AbortController: true,
+ AbortSignal: true
}
},
plugins: {
diff --git a/src/cli.tsx b/src/cli.tsx
index ece6626..c766f40 100644
--- a/src/cli.tsx
+++ b/src/cli.tsx
@@ -3,6 +3,7 @@ import React from 'react';
import {render} from 'ink';
import meow from 'meow';
import App from './components/App.js';
+import {worktreeConfigManager} from './services/worktreeConfigManager.js';
meow(
`
@@ -29,4 +30,7 @@ if (!process.stdin.isTTY || !process.stdout.isTTY) {
process.exit(1);
}
+// Initialize worktree config manager
+worktreeConfigManager.initialize();
+
render();
diff --git a/src/components/Menu.tsx b/src/components/Menu.tsx
index 3f330b1..eeaa6df 100644
--- a/src/components/Menu.tsx
+++ b/src/components/Menu.tsx
@@ -8,8 +8,13 @@ import {
STATUS_ICONS,
STATUS_LABELS,
MENU_ICONS,
- getStatusDisplay,
} from '../constants/statusIcons.js';
+import {useGitStatus} from '../hooks/useGitStatus.js';
+import {
+ prepareWorktreeItems,
+ calculateColumnPositions,
+ assembleWorktreeLabel,
+} from '../utils/worktreeUtils.js';
interface MenuProps {
sessionManager: SessionManager;
@@ -23,7 +28,9 @@ interface MenuItem {
}
const Menu: React.FC = ({sessionManager, onSelectWorktree}) => {
- const [worktrees, setWorktrees] = useState([]);
+ const [baseWorktrees, setBaseWorktrees] = useState([]);
+ const [defaultBranch, setDefaultBranch] = useState(null);
+ const worktrees = useGitStatus(baseWorktrees, defaultBranch);
const [sessions, setSessions] = useState([]);
const [items, setItems] = useState