@jhorst11/wt 2.0.2 → 2.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export interface Config {
2
+ projectsDir?: string;
3
+ worktreesDir?: string;
4
+ branchPrefix?: string;
5
+ hooks?: Record<string, string[]>;
6
+ worktreeColors?: Record<string, string>;
7
+ colorPalette?: string[];
8
+ }
9
+ export interface Branch {
10
+ name: string;
11
+ isCurrent?: boolean;
12
+ isRemote?: boolean;
13
+ type?: 'local' | 'remote';
14
+ fullName?: string;
15
+ }
16
+ export interface Worktree {
17
+ name: string;
18
+ path: string;
19
+ branch: string;
20
+ isMain?: boolean;
21
+ bare?: boolean;
22
+ detached?: boolean;
23
+ }
24
+ export interface BranchResult {
25
+ created: boolean;
26
+ source: 'local' | 'remote' | 'new' | 'updated-from-remote';
27
+ }
28
+ export interface WorktreeResult {
29
+ success: boolean;
30
+ path?: string;
31
+ branch?: string;
32
+ branchCreated?: boolean;
33
+ branchSource?: string;
34
+ error?: string;
35
+ }
36
+ export interface HookResult {
37
+ command: string;
38
+ success: boolean;
39
+ error?: string;
40
+ }
41
+ export interface CommandOptions {
42
+ verbose?: boolean;
43
+ hooks?: boolean;
44
+ name?: string;
45
+ from?: string;
46
+ force?: boolean;
47
+ into?: string;
48
+ cleanup?: boolean;
49
+ delete?: boolean;
50
+ }
51
+ export interface WorktreeInfo {
52
+ name: string;
53
+ branch: string;
54
+ color?: string | null;
55
+ }
56
+ export interface ShellConfig {
57
+ name: string;
58
+ rcFile: string;
59
+ wrapper: string;
60
+ }
61
+ export interface WrapperStatus {
62
+ installed: boolean;
63
+ reason?: 'unknown-shell' | 'no-rc-file' | 'not-configured' | 'read-error';
64
+ rcFile?: string;
65
+ }
66
+ export interface HookOptions {
67
+ verbose?: boolean;
68
+ onCommandStart?: (command: string, index: number, total: number) => void;
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,MAAM;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAGD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,qBAAqB,CAAC;CAC5D;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAAG,YAAY,CAAC;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,93 @@
1
+ import chalk from 'chalk';
2
+ import type { WorktreeInfo } from './types.js';
3
+ export declare const icons: {
4
+ readonly tree: "🌳";
5
+ readonly branch: "🌿";
6
+ readonly rocket: "🚀";
7
+ readonly sparkles: "✨";
8
+ readonly folder: "📁";
9
+ readonly trash: "🗑️";
10
+ readonly home: "🏠";
11
+ readonly check: string;
12
+ readonly cross: string;
13
+ readonly pointer: string;
14
+ readonly arrowRight: string;
15
+ readonly bullet: string;
16
+ readonly star: "⭐";
17
+ readonly git: "󰊢";
18
+ readonly plus: "➕";
19
+ readonly warning: "⚠️";
20
+ readonly info: "ℹ️";
21
+ readonly remote: "☁️";
22
+ readonly local: "💻";
23
+ };
24
+ export declare const colors: {
25
+ readonly primary: import("chalk").ChalkInstance;
26
+ readonly secondary: import("chalk").ChalkInstance;
27
+ readonly success: import("chalk").ChalkInstance;
28
+ readonly warning: import("chalk").ChalkInstance;
29
+ readonly error: import("chalk").ChalkInstance;
30
+ readonly muted: import("chalk").ChalkInstance;
31
+ readonly highlight: import("chalk").ChalkInstance;
32
+ readonly branch: import("chalk").ChalkInstance;
33
+ readonly path: import("chalk").ChalkInstance;
34
+ };
35
+ export declare function showLogo(): void;
36
+ export declare function showMiniLogo(worktreeInfo?: WorktreeInfo | null): void;
37
+ export declare function success(message: string): void;
38
+ export declare function error(message: string): void;
39
+ export declare function warning(message: string): void;
40
+ export declare function info(message: string): void;
41
+ export declare function heading(text: string): void;
42
+ export declare function subheading(text: string): void;
43
+ export declare function listItem(text: string, indent?: number): void;
44
+ export declare function branchItem(name: string, isCurrent?: boolean, isRemote?: boolean): void;
45
+ export declare function worktreeItem(name: string, path: string, isCurrent?: boolean, color?: string | null): void;
46
+ export declare function divider(): void;
47
+ export declare function spacer(): void;
48
+ /**
49
+ * Convert hex color to chalk color function.
50
+ * Falls back to gray for invalid hex.
51
+ */
52
+ export declare function hexToChalk(hex: string | null | undefined): typeof chalk.gray;
53
+ /**
54
+ * Create a colored circle indicator (●) for visual color display.
55
+ * Returns empty string if hex is null/invalid.
56
+ */
57
+ export declare function colorIndicator(hex: string | null | undefined): string;
58
+ /**
59
+ * Convert hex to RGB components for terminal sequences.
60
+ */
61
+ export declare function hexToRgb(hex: string): {
62
+ r: number;
63
+ g: number;
64
+ b: number;
65
+ };
66
+ /**
67
+ * Create a colored divider using the specified hex color.
68
+ * Falls back to muted color if hex is invalid.
69
+ */
70
+ export declare function coloredDivider(hex: string | null | undefined): void;
71
+ /**
72
+ * Detect terminal type for appropriate color sequences.
73
+ * Checks TERM_PROGRAM, TERM, WT_SESSION, and COLORTERM env vars.
74
+ */
75
+ export declare function detectTerminal(): 'iterm2' | 'wezterm' | 'alacritty' | 'kitty' | 'ghostty' | 'windows-terminal' | 'vscode' | 'osc-generic' | 'unsupported';
76
+ /**
77
+ * Set terminal tab color (supports multiple terminal types).
78
+ * Works with iTerm2, WezTerm, Kitty, Alacritty, Windows Terminal.
79
+ * No-op if stdout is not a TTY or terminal is unsupported.
80
+ */
81
+ export declare function setTabColor(hex: string | null | undefined): void;
82
+ /**
83
+ * Reset terminal tab color to default.
84
+ * Gracefully handles multiple terminal types.
85
+ */
86
+ export declare function resetTabColor(): void;
87
+ export declare function formatBranchChoice(branch: string, type?: 'local' | 'remote'): string;
88
+ export declare function formatWorktreeChoice(wt: {
89
+ name: string;
90
+ branch: string;
91
+ }, color?: string | null): string;
92
+ export declare function showHelp(): void;
93
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;CAoBR,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;;;;;;CAUT,CAAC;AAEX,wBAAgB,QAAQ,IAAI,IAAI,CAQ/B;AAED,wBAAgB,YAAY,CAAC,YAAY,GAAE,YAAY,GAAG,IAAW,GAAG,IAAI,CAO3E;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,IAAI,CAG/D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI,CAMpG;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI,CAOtH;AAED,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,wBAAgB,MAAM,IAAI,IAAI,CAE7B;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,KAAK,CAAC,IAAI,CAK5E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAIrE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAOzE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAGnE;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAC1B,QAAQ,GACR,SAAS,GACT,WAAW,GACX,OAAO,GACP,SAAS,GACT,kBAAkB,GAClB,QAAQ,GACR,aAAa,GACb,aAAa,CAiBhB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAiChE;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAwBpC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,GAAG,QAAkB,GAAG,MAAM,CAI7F;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAI9G;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAuB/B"}
package/dist/src/ui.js ADDED
@@ -0,0 +1,273 @@
1
+ import chalk from 'chalk';
2
+ import gradient from 'gradient-string';
3
+ import figures from 'figures';
4
+ import { createRequire } from 'module';
5
+ import { fileURLToPath } from 'url';
6
+ import { dirname, join } from 'path';
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ const require = createRequire(import.meta.url);
10
+ // Resolve package.json relative to project root (two levels up from src/)
11
+ const packagePath = join(__dirname, '..', '..', 'package.json');
12
+ const { version } = require(packagePath);
13
+ // Custom gradient for the logo
14
+ const wtGradient = gradient(['#00d4ff', '#7c3aed', '#f472b6']);
15
+ const successGradient = gradient(['#10b981', '#34d399']);
16
+ const warningGradient = gradient(['#f59e0b', '#fbbf24']);
17
+ export const icons = {
18
+ tree: '🌳',
19
+ branch: '🌿',
20
+ rocket: '🚀',
21
+ sparkles: '✨',
22
+ folder: '📁',
23
+ trash: '🗑️',
24
+ home: '🏠',
25
+ check: figures.tick,
26
+ cross: figures.cross,
27
+ pointer: figures.pointer,
28
+ arrowRight: figures.arrowRight,
29
+ bullet: figures.bullet,
30
+ star: '⭐',
31
+ git: '󰊢',
32
+ plus: '➕',
33
+ warning: '⚠️',
34
+ info: 'ℹ️',
35
+ remote: '☁️',
36
+ local: '💻',
37
+ };
38
+ export const colors = {
39
+ primary: chalk.hex('#7c3aed'),
40
+ secondary: chalk.hex('#00d4ff'),
41
+ success: chalk.hex('#10b981'),
42
+ warning: chalk.hex('#f59e0b'),
43
+ error: chalk.hex('#ef4444'),
44
+ muted: chalk.gray,
45
+ highlight: chalk.hex('#f472b6'),
46
+ branch: chalk.hex('#34d399'),
47
+ path: chalk.hex('#60a5fa'),
48
+ };
49
+ export function showLogo() {
50
+ const logo = `
51
+ ${wtGradient('╦ ╦╔═╗╦═╗╦╔═╔╦╗╦═╗╔═╗╔═╗')}
52
+ ${wtGradient('║║║║ ║╠╦╝╠╩╗ ║ ╠╦╝║╣ ║╣ ')}
53
+ ${wtGradient('╚╩╝╚═╝╩╚═╩ ╩ ╩ ╩╚═╚═╝╚═╝')}
54
+ ${chalk.gray(' Git Worktree Manager')}
55
+ `;
56
+ console.log(logo);
57
+ }
58
+ export function showMiniLogo(worktreeInfo = null) {
59
+ console.log(`\n ${icons.tree} ${wtGradient('worktree')} ${colors.muted(`v${version}`)}`);
60
+ if (worktreeInfo) {
61
+ const colorDot = colorIndicator(worktreeInfo.color ?? null);
62
+ console.log(` ${colorDot} ${colors.highlight(worktreeInfo.name)} ${colors.muted(`→ ${worktreeInfo.branch}`)}`);
63
+ }
64
+ console.log('');
65
+ }
66
+ export function success(message) {
67
+ console.log(` ${colors.success(icons.check)} ${message}`);
68
+ }
69
+ export function error(message) {
70
+ console.log(` ${colors.error(icons.cross)} ${message}`);
71
+ }
72
+ export function warning(message) {
73
+ console.log(` ${colors.warning(icons.warning)} ${message}`);
74
+ }
75
+ export function info(message) {
76
+ console.log(` ${colors.secondary(icons.info)} ${message}`);
77
+ }
78
+ export function heading(text) {
79
+ console.log(`\n ${colors.primary.bold(text)}\n`);
80
+ }
81
+ export function subheading(text) {
82
+ console.log(` ${colors.muted(text)}`);
83
+ }
84
+ export function listItem(text, indent = 2) {
85
+ const spaces = ' '.repeat(indent);
86
+ console.log(`${spaces}${colors.secondary(icons.bullet)} ${text}`);
87
+ }
88
+ export function branchItem(name, isCurrent = false, isRemote = false) {
89
+ const icon = isRemote ? icons.remote : icons.local;
90
+ const prefix = isCurrent ? colors.success(icons.pointer) : ' ';
91
+ const branchName = isCurrent ? colors.success.bold(name) : colors.branch(name);
92
+ const typeLabel = isRemote ? colors.muted(' (remote)') : '';
93
+ console.log(` ${prefix} ${icon} ${branchName}${typeLabel}`);
94
+ }
95
+ export function worktreeItem(name, path, isCurrent = false, color = null) {
96
+ const prefix = isCurrent ? colors.success(icons.pointer) : ' ';
97
+ const nameDisplay = isCurrent ? colors.success.bold(name) : colors.highlight(name);
98
+ const colorDot = colorIndicator(color);
99
+ const displayName = colorDot ? `${colorDot} ${nameDisplay}` : nameDisplay;
100
+ console.log(` ${prefix} ${icons.folder} ${displayName}`);
101
+ console.log(` ${colors.muted(path)}`);
102
+ }
103
+ export function divider() {
104
+ console.log(colors.muted(' ─'.repeat(20)));
105
+ }
106
+ export function spacer() {
107
+ console.log('');
108
+ }
109
+ /**
110
+ * Convert hex color to chalk color function.
111
+ * Falls back to gray for invalid hex.
112
+ */
113
+ export function hexToChalk(hex) {
114
+ if (!hex)
115
+ return chalk.gray;
116
+ const clean = hex.replace(/^#/, '');
117
+ if (!/^[0-9A-Fa-f]{6}$/.test(clean))
118
+ return chalk.gray;
119
+ return chalk.hex(clean);
120
+ }
121
+ /**
122
+ * Create a colored circle indicator (●) for visual color display.
123
+ * Returns empty string if hex is null/invalid.
124
+ */
125
+ export function colorIndicator(hex) {
126
+ if (!hex)
127
+ return '';
128
+ const color = hexToChalk(hex);
129
+ return color('●'); // U+25CF filled circle
130
+ }
131
+ /**
132
+ * Convert hex to RGB components for terminal sequences.
133
+ */
134
+ export function hexToRgb(hex) {
135
+ const clean = hex.replace(/^#/, '');
136
+ return {
137
+ r: parseInt(clean.slice(0, 2), 16),
138
+ g: parseInt(clean.slice(2, 4), 16),
139
+ b: parseInt(clean.slice(4, 6), 16),
140
+ };
141
+ }
142
+ /**
143
+ * Create a colored divider using the specified hex color.
144
+ * Falls back to muted color if hex is invalid.
145
+ */
146
+ export function coloredDivider(hex) {
147
+ const color = hex ? hexToChalk(hex) : colors.muted;
148
+ console.log(color(' ─'.repeat(20)));
149
+ }
150
+ /**
151
+ * Detect terminal type for appropriate color sequences.
152
+ * Checks TERM_PROGRAM, TERM, WT_SESSION, and COLORTERM env vars.
153
+ */
154
+ export function detectTerminal() {
155
+ const termProgram = process.env.TERM_PROGRAM || '';
156
+ const term = process.env.TERM || '';
157
+ const colorTerm = process.env.COLORTERM || '';
158
+ if (termProgram === 'iTerm.app')
159
+ return 'iterm2';
160
+ if (termProgram === 'WezTerm')
161
+ return 'wezterm';
162
+ if (termProgram === 'ghostty')
163
+ return 'ghostty';
164
+ if (termProgram === 'vscode')
165
+ return 'vscode';
166
+ if (process.env.WT_SESSION)
167
+ return 'windows-terminal';
168
+ if (term.includes('kitty'))
169
+ return 'kitty';
170
+ if (termProgram.includes('Alacritty') || term.includes('alacritty'))
171
+ return 'alacritty';
172
+ // Generic OSC support for truecolor terminals
173
+ if (colorTerm === 'truecolor' || colorTerm === '24bit')
174
+ return 'osc-generic';
175
+ return 'unsupported';
176
+ }
177
+ /**
178
+ * Set terminal tab color (supports multiple terminal types).
179
+ * Works with iTerm2, WezTerm, Kitty, Alacritty, Windows Terminal.
180
+ * No-op if stdout is not a TTY or terminal is unsupported.
181
+ */
182
+ export function setTabColor(hex) {
183
+ if (!process.stdout.isTTY || !hex)
184
+ return;
185
+ const terminal = detectTerminal();
186
+ const rgb = hex.replace(/^#/, '');
187
+ if (!/^[0-9A-Fa-f]{6}$/.test(rgb))
188
+ return;
189
+ switch (terminal) {
190
+ case 'iterm2':
191
+ case 'osc-generic':
192
+ process.stdout.write(`\x1b]1337;SetColors=tab=${rgb}\x07`);
193
+ break;
194
+ case 'wezterm':
195
+ // WezTerm uses base64-encoded user vars
196
+ const b64 = Buffer.from(rgb).toString('base64');
197
+ process.stdout.write(`\x1b]1337;SetUserVar=tab_color=${b64}\x07`);
198
+ break;
199
+ case 'kitty':
200
+ process.stdout.write(`\x1b]30001;rgb:${rgb}\x07`);
201
+ break;
202
+ case 'alacritty':
203
+ // Background color as fallback
204
+ const r = rgb.slice(0, 2);
205
+ const g = rgb.slice(2, 4);
206
+ const b = rgb.slice(4, 6);
207
+ process.stdout.write(`\x1b]10;rgb:${r}/${g}/${b}\x07`);
208
+ break;
209
+ case 'windows-terminal':
210
+ process.stdout.write(`\x1b]9;4;1;${rgb}\x07`);
211
+ break;
212
+ // 'ghostty', 'vscode' and 'unsupported' - no-op
213
+ }
214
+ }
215
+ /**
216
+ * Reset terminal tab color to default.
217
+ * Gracefully handles multiple terminal types.
218
+ */
219
+ export function resetTabColor() {
220
+ if (!process.stdout.isTTY)
221
+ return;
222
+ const terminal = detectTerminal();
223
+ switch (terminal) {
224
+ case 'iterm2':
225
+ case 'osc-generic':
226
+ process.stdout.write('\x1b]1337;SetColors=tab=default\x07');
227
+ break;
228
+ case 'wezterm':
229
+ const b64 = Buffer.from('').toString('base64');
230
+ process.stdout.write(`\x1b]1337;SetUserVar=tab_color=${b64}\x07`);
231
+ break;
232
+ case 'kitty':
233
+ process.stdout.write('\x1b]30001;rgb:000000\x07');
234
+ break;
235
+ case 'alacritty':
236
+ process.stdout.write('\x1b]10;rgb:00/00/00\x07');
237
+ break;
238
+ case 'windows-terminal':
239
+ process.stdout.write('\x1b]9;4;0\x07');
240
+ break;
241
+ }
242
+ }
243
+ export function formatBranchChoice(branch, type = 'local') {
244
+ const icon = type === 'remote' ? icons.remote : icons.local;
245
+ const typeLabel = type === 'remote' ? chalk.dim(' (remote)') : '';
246
+ return `${icon} ${branch}${typeLabel}`;
247
+ }
248
+ export function formatWorktreeChoice(wt, color = null) {
249
+ const colorDot = colorIndicator(color);
250
+ const prefix = colorDot ? `${colorDot} ` : '';
251
+ return `${prefix}${icons.folder} ${colors.highlight(wt.name)} ${colors.muted(`→ ${wt.branch}`)}`;
252
+ }
253
+ export function showHelp() {
254
+ showLogo();
255
+ console.log(colors.primary.bold(' Commands:\n'));
256
+ const commands = [
257
+ ['wt', 'Interactive menu to manage worktrees'],
258
+ ['wt new', 'Create a new worktree interactively'],
259
+ ['wt list|ls', 'List all worktrees for current repo'],
260
+ ['wt go [name]', 'Jump to a worktree (interactive if no name)'],
261
+ ['wt merge', 'Merge a worktree branch into another branch'],
262
+ ['wt remove|rm', 'Remove a worktree interactively'],
263
+ ['wt home', 'Jump back to the main repository'],
264
+ ['wt setup', 'Configure shell integration for auto-navigation'],
265
+ ];
266
+ commands.forEach(([cmd, desc]) => {
267
+ console.log(` ${colors.secondary(cmd.padEnd(18))} ${colors.muted(desc)}`);
268
+ });
269
+ spacer();
270
+ console.log(colors.muted(' Run any command without arguments for interactive mode'));
271
+ spacer();
272
+ }
273
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,19 +1,23 @@
1
1
  {
2
2
  "name": "@jhorst11/wt",
3
- "version": "2.0.2",
3
+ "version": "2.2.0",
4
4
  "description": "🌳 Beautiful interactive git worktree manager",
5
5
  "type": "module",
6
6
  "bin": {
7
- "wt": "./bin/wt.js"
7
+ "wt": "./dist/bin/wt.js"
8
8
  },
9
9
  "files": [
10
- "bin",
11
- "src",
10
+ "dist",
12
11
  "shell"
13
12
  ],
14
13
  "scripts": {
15
- "start": "node bin/wt.js",
16
- "test": "node --test test/*.test.js"
14
+ "build": "tsc",
15
+ "start": "node dist/bin/wt.js",
16
+ "test": "npm run build && node --test test/*.test.js",
17
+ "commitlint": "commitlint --edit",
18
+ "prepare": "husky",
19
+ "pack": "npm run build && npm pack --dry-run",
20
+ "release:dry-run": "npm run build && npx semantic-release --dry-run"
17
21
  },
18
22
  "keywords": [
19
23
  "git",
@@ -42,5 +46,15 @@
42
46
  "gradient-string": "^3.0.0",
43
47
  "ora": "^8.1.1",
44
48
  "simple-git": "^3.27.0"
49
+ },
50
+ "devDependencies": {
51
+ "@commitlint/cli": "^19.5.0",
52
+ "@commitlint/config-conventional": "^19.5.0",
53
+ "@semantic-release/changelog": "^6.0.3",
54
+ "@semantic-release/git": "^10.0.1",
55
+ "@types/node": "^25.2.2",
56
+ "husky": "^9.1.5",
57
+ "semantic-release": "^23.0.2",
58
+ "typescript": "^5.9.3"
45
59
  }
46
60
  }
package/bin/wt.js DELETED
@@ -1,88 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { createRequire } from 'module';
4
- import { program } from 'commander';
5
- import {
6
- mainMenu,
7
- createWorktreeFlow,
8
- listWorktrees,
9
- removeWorktreeFlow,
10
- mergeWorktreeFlow,
11
- goHome,
12
- goToWorktree,
13
- } from '../src/commands.js';
14
- import { showHelp, showLogo, spacer, colors } from '../src/ui.js';
15
- import { setupCommand } from '../src/setup.js';
16
-
17
- const require = createRequire(import.meta.url);
18
- const { version } = require('../package.json');
19
-
20
- program
21
- .name('wt')
22
- .description('🌳 Beautiful interactive git worktree manager')
23
- .version(version)
24
- .option('--verbose', 'Show full hook command output (default: show command name with spinner only)');
25
-
26
- program
27
- .command('new', { isDefault: false })
28
- .description('Create a new worktree interactively')
29
- .action((_args, cmd) => createWorktreeFlow({ verbose: !!cmd.parent?.opts?.()?.verbose }));
30
-
31
- program
32
- .command('list')
33
- .alias('ls')
34
- .description('List all worktrees for the current repo')
35
- .action(listWorktrees);
36
-
37
- program
38
- .command('remove')
39
- .alias('rm')
40
- .description('Remove a worktree interactively')
41
- .action((_args, cmd) => removeWorktreeFlow({ verbose: !!cmd.parent?.opts?.()?.verbose }));
42
-
43
- program
44
- .command('merge')
45
- .description('Merge a worktree branch back to main')
46
- .action((_args, cmd) => mergeWorktreeFlow({ verbose: !!cmd.parent?.opts?.()?.verbose }));
47
-
48
- program
49
- .command('home')
50
- .description('Return to the main repository')
51
- .action(goHome);
52
-
53
- program
54
- .command('go [name]')
55
- .description('Jump to a worktree (interactive if no name)')
56
- .action(goToWorktree);
57
-
58
- program
59
- .command('setup')
60
- .description('Configure shell integration for directory jumping')
61
- .action(setupCommand);
62
-
63
- // Default action (no command = interactive menu)
64
- program.action(async () => {
65
- await mainMenu();
66
- });
67
-
68
- // Custom help
69
- program.on('--help', () => {
70
- spacer();
71
- console.log('Examples:');
72
- console.log(` ${colors.muted('$')} wt ${colors.muted('# Interactive menu')}`);
73
- console.log(` ${colors.muted('$')} wt new ${colors.muted('# Create new worktree')}`);
74
- console.log(` ${colors.muted('$')} wt list ${colors.muted('# List all worktrees')}`);
75
- console.log(` ${colors.muted('$')} wt go feature-x ${colors.muted('# Jump to worktree')}`);
76
- console.log(` ${colors.muted('$')} wt merge ${colors.muted('# Merge worktree to main')}`);
77
- console.log(` ${colors.muted('$')} wt home ${colors.muted('# Return to main repo')}`);
78
- console.log(` ${colors.muted('$')} wt setup ${colors.muted('# Configure shell integration')}`);
79
- spacer();
80
- });
81
-
82
- // Handle graceful exit
83
- process.on('SIGINT', () => {
84
- console.log('\n');
85
- process.exit(0);
86
- });
87
-
88
- program.parse();