@cerbur/clutch-dsh-worktree 0.1.3 → 0.1.4

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.
Files changed (73) hide show
  1. package/README.md +247 -107
  2. package/README.zh.md +297 -0
  3. package/lib/client/WorktreeSurface.d.ts +2 -30
  4. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  5. package/lib/client/WorktreeSurface.js +31 -318
  6. package/lib/client/WorktreeSurface.js.map +1 -1
  7. package/lib/client/worktree-surface-dialogs.d.ts +7 -0
  8. package/lib/client/worktree-surface-dialogs.d.ts.map +1 -0
  9. package/lib/client/worktree-surface-dialogs.js +86 -0
  10. package/lib/client/worktree-surface-dialogs.js.map +1 -0
  11. package/lib/client/worktree-surface-rows.d.ts +9 -0
  12. package/lib/client/worktree-surface-rows.d.ts.map +1 -0
  13. package/lib/client/worktree-surface-rows.js +223 -0
  14. package/lib/client/worktree-surface-rows.js.map +1 -0
  15. package/lib/client/worktree-surface-selectors.d.ts +9 -0
  16. package/lib/client/worktree-surface-selectors.d.ts.map +1 -0
  17. package/lib/client/worktree-surface-selectors.js +28 -0
  18. package/lib/client/worktree-surface-selectors.js.map +1 -0
  19. package/lib/client/worktree-surface-types.d.ts +233 -0
  20. package/lib/client/worktree-surface-types.d.ts.map +1 -0
  21. package/lib/client/worktree-surface-types.js +2 -0
  22. package/lib/client/worktree-surface-types.js.map +1 -0
  23. package/lib/client/worktree-view-actions.d.ts +34 -0
  24. package/lib/client/worktree-view-actions.d.ts.map +1 -0
  25. package/lib/client/worktree-view-actions.js +69 -0
  26. package/lib/client/worktree-view-actions.js.map +1 -0
  27. package/lib/client/worktree-view-errors.d.ts +20 -0
  28. package/lib/client/worktree-view-errors.d.ts.map +1 -0
  29. package/lib/client/worktree-view-errors.js +65 -0
  30. package/lib/client/worktree-view-errors.js.map +1 -0
  31. package/lib/client/worktree-view-read.d.ts +48 -0
  32. package/lib/client/worktree-view-read.d.ts.map +1 -0
  33. package/lib/client/worktree-view-read.js +134 -0
  34. package/lib/client/worktree-view-read.js.map +1 -0
  35. package/lib/client/worktree-view.d.ts +4 -97
  36. package/lib/client/worktree-view.d.ts.map +1 -1
  37. package/lib/client/worktree-view.js +4 -263
  38. package/lib/client/worktree-view.js.map +1 -1
  39. package/lib/client.js +404 -324
  40. package/lib/client.js.map +1 -1
  41. package/lib/manage/manager-context.d.ts +11 -0
  42. package/lib/manage/manager-context.d.ts.map +1 -0
  43. package/lib/manage/manager-context.js +2 -0
  44. package/lib/manage/manager-context.js.map +1 -0
  45. package/lib/manage/manager-sessions.d.ts +18 -0
  46. package/lib/manage/manager-sessions.d.ts.map +1 -0
  47. package/lib/manage/manager-sessions.js +91 -0
  48. package/lib/manage/manager-sessions.js.map +1 -0
  49. package/lib/manage/manager-support.d.ts +18 -0
  50. package/lib/manage/manager-support.d.ts.map +1 -0
  51. package/lib/manage/manager-support.js +174 -0
  52. package/lib/manage/manager-support.js.map +1 -0
  53. package/lib/manage/manager-worktrees.d.ts +27 -0
  54. package/lib/manage/manager-worktrees.d.ts.map +1 -0
  55. package/lib/manage/manager-worktrees.js +259 -0
  56. package/lib/manage/manager-worktrees.js.map +1 -0
  57. package/lib/manage/manager.d.ts +23 -65
  58. package/lib/manage/manager.d.ts.map +1 -1
  59. package/lib/manage/manager.js +32 -565
  60. package/lib/manage/manager.js.map +1 -1
  61. package/lib/provider/sidecar-persistence.d.ts +18 -0
  62. package/lib/provider/sidecar-persistence.d.ts.map +1 -0
  63. package/lib/provider/sidecar-persistence.js +162 -0
  64. package/lib/provider/sidecar-persistence.js.map +1 -0
  65. package/lib/provider/sidecar-schema.d.ts +6 -0
  66. package/lib/provider/sidecar-schema.d.ts.map +1 -0
  67. package/lib/provider/sidecar-schema.js +123 -0
  68. package/lib/provider/sidecar-schema.js.map +1 -0
  69. package/lib/provider/sidecar.d.ts +10 -67
  70. package/lib/provider/sidecar.d.ts.map +1 -1
  71. package/lib/provider/sidecar.js +21 -346
  72. package/lib/provider/sidecar.js.map +1 -1
  73. package/package.json +1 -1
@@ -0,0 +1,86 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Input, Modal, } from '@deepseek-ai/dsh-client-ui-primitives';
3
+ import { formatWorktreeViewError } from './worktree-error-copy.js';
4
+ import { worktreeSetupCommands } from './worktree-view.js';
5
+ import styles from './worktree.css';
6
+ function worktreeSetupMessage(status, t) {
7
+ switch (status) {
8
+ case 'noRepository':
9
+ return t('worktree.setup.noRepository');
10
+ case 'noInitialCommit':
11
+ return t('worktree.setup.noInitialCommit');
12
+ case 'noLocalBranch':
13
+ return t('worktree.setup.noLocalBranch');
14
+ }
15
+ }
16
+ export function WorktreeSessionRenameDialog({ t, target, draft, pending, error, onClose, onDraftChange, onSubmit, }) {
17
+ return (_jsxs(Modal, { open: target !== undefined, onClose: onClose, closeLabel: t('dialog.close'), title: t('session.rename'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: pending || draft.trim().length === 0, onClick: () => {
18
+ void onSubmit();
19
+ }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, "aria-label": t('session.name'), autoFocus: true, disabled: pending, onFocus: (event) => {
20
+ event.currentTarget.select();
21
+ }, onChange: (event) => {
22
+ onDraftChange(event.currentTarget.value);
23
+ }, onKeyDown: (event) => {
24
+ if (event.key === 'Enter' && !event.nativeEvent.isComposing) {
25
+ event.preventDefault();
26
+ void onSubmit();
27
+ }
28
+ } }), error !== undefined && (_jsx("p", { className: styles.renameError, role: "alert", children: formatWorktreeViewError(error, t) }))] }));
29
+ }
30
+ export function WorktreeWorkspaceRenameDialog({ t, target, draft, pending, duplicate, error, onClose, onDraftChange, onSubmit, }) {
31
+ if (target === undefined)
32
+ return null;
33
+ return (_jsxs(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceRename'), title: t('workspace.renameTitle'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: pending ||
34
+ draft.trim().length === 0 ||
35
+ draft.trim() === target.currentTitle ||
36
+ duplicate, onClick: () => {
37
+ void onSubmit();
38
+ }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, "aria-label": t('workspace.name'), autoFocus: true, disabled: pending, onFocus: (event) => {
39
+ event.currentTarget.select();
40
+ }, onChange: (event) => {
41
+ onDraftChange(event.currentTarget.value);
42
+ }, onKeyDown: (event) => {
43
+ if (event.key === 'Enter' && !event.nativeEvent.isComposing) {
44
+ event.preventDefault();
45
+ void onSubmit();
46
+ }
47
+ } }), duplicate && (_jsx("p", { className: styles.renameError, role: "alert", children: t('workspace.duplicate') })), error !== undefined && (_jsx("p", { className: styles.renameError, role: "alert", children: formatWorktreeViewError(error, t) }))] }));
48
+ }
49
+ export function WorktreeWorkspaceDeleteDialog({ t, target, pending, error, onClose, onSubmit, }) {
50
+ if (target === undefined)
51
+ return null;
52
+ return (_jsx(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceDelete'), title: t('workspace.deleteTitle'), description: t('workspace.deleteDescription', { name: target.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "outline", disabled: pending, onClick: () => {
53
+ void onSubmit();
54
+ }, children: t('dialog.delete') })] })), children: error !== undefined && (_jsx("p", { className: styles.renameError, role: "alert", children: formatWorktreeViewError(error, t) })) }));
55
+ }
56
+ export function WorktreeCreateDialog({ t, workspace, view, setupStatus, canCreate, selectedBranch, newBranch, actionPending, onClose, onSelectedBranchChange, onNewBranchChange, onSubmit, }) {
57
+ if (workspace === undefined)
58
+ return null;
59
+ return (_jsx(Modal, { open: true, onClose: () => {
60
+ if (actionPending)
61
+ return;
62
+ onClose();
63
+ }, closeLabel: t('dialog.closeWorktreeCreate'), title: t('worktree.createTitle'), description: t('worktree.createDescription', { name: workspace.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: actionPending ||
64
+ selectedBranch.length === 0 ||
65
+ newBranch.trim().length === 0, onClick: () => {
66
+ void onSubmit();
67
+ }, children: t('worktree.create') })] })), children: canCreate ? (_jsxs(_Fragment, { children: [_jsxs("label", { className: styles.modalField, children: [t('worktree.baseBranch'), _jsx("select", { className: styles.actionSelect, "aria-label": t('worktree.baseBranch'), value: selectedBranch, disabled: actionPending, onChange: (event) => {
68
+ onSelectedBranchChange(event.currentTarget.value);
69
+ }, children: view?.branches.map((branch) => (_jsxs("option", { value: branch.name, children: [branch.name, branch.isCurrent ? t('branch.current') : '', branch.checkedOut ? t('branch.checkedOut') : ''] }, branch.name))) })] }), _jsxs("label", { className: styles.modalField, children: [t('worktree.name'), _jsx(Input, { className: styles.renameInput, "aria-label": t('worktree.name'), value: newBranch, placeholder: "dsh/12345678", disabled: actionPending, onChange: (event) => {
70
+ onNewBranchChange(event.currentTarget.value);
71
+ } })] })] })) : (_jsxs("div", { className: styles.gitReadiness, "data-worktree-readiness": setupStatus ?? 'loading', role: "alert", children: [_jsx("p", { className: styles.message, children: setupStatus === undefined
72
+ ? t('status.loading')
73
+ : worktreeSetupMessage(setupStatus, t) }), setupStatus !== undefined && (_jsx("pre", { className: styles.commandBlock, "aria-label": t('worktree.setup.commands'), children: worktreeSetupCommands(setupStatus).join('\n') }))] })) }));
74
+ }
75
+ export function WorktreeRemovalDialog({ t, worktree, actionPending, onClose, onSubmit, }) {
76
+ if (worktree === undefined)
77
+ return null;
78
+ return (_jsx(Modal, { open: true, onClose: () => {
79
+ if (actionPending)
80
+ return;
81
+ onClose();
82
+ }, closeLabel: t('dialog.closeWorktreeRemove'), title: t('worktree.remove'), description: t('worktree.removeDescription', { name: worktree.branch }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: actionPending, onClick: () => {
83
+ void onSubmit();
84
+ }, children: t('worktree.remove') })] })) }));
85
+ }
86
+ //# sourceMappingURL=worktree-surface-dialogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-dialogs.js","sourceRoot":"","sources":["../../src/client/worktree-surface-dialogs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { WorktreeGroupRowProps, WorktreeSessionGroupProps, WorktreeSessionRowProps, WorktreeWorkspaceRowProps } from './worktree-surface-types.js';
2
+ /** Workspace row using the native DSH menu, fixed action column, and drag contract. */
3
+ export declare function WorktreeWorkspaceRow({ t, workspace, expanded, actionPending, menuOpen, drag, onToggle, onCreateWorktree, onRename, onDelete, onMenuOpenChange, }: WorktreeWorkspaceRowProps): import("react").JSX.Element;
4
+ /** Shared Main/Worktree group row with parameterized icon, state, and actions. */
5
+ export declare function WorktreeGroupRow({ t, kind, label, worktreeId, expanded, icon, workspaceTitle, state, stateLabel, onToggle, onCreateSession, menu, drag, }: WorktreeGroupRowProps): import("react").JSX.Element;
6
+ /** Worktree-mode Session row with the same trailing options menu as native DSH rows. */
7
+ export declare function WorktreeSessionRow({ t, sessionId, blank, label, drag, actionPending, onOpen, onRename, onFork, onArchive, }: WorktreeSessionRowProps): import("react").JSX.Element;
8
+ export declare function WorktreeSessionGroup({ t, groupKey, sessionIds, workspaceId, expanded, actionPending, sessions, dragState, onToggleExpanded, onStartDrag, onHoverDrag, onClearDrag, onFinishDrag, onCommitDrag, onOpen, onRename, onFork, onArchive, }: WorktreeSessionGroupProps): import("react").JSX.Element;
9
+ //# sourceMappingURL=worktree-surface-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-rows.d.ts","sourceRoot":"","sources":["../../src/client/worktree-surface-rows.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAQrC,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,EACnC,CAAC,EACD,SAAS,EACT,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,GACjB,EAAE,yBAAyB,+BAsH3B;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,EAC/B,CAAC,EACD,IAAI,EACJ,KAAK,EACL,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,KAAK,EACL,UAAU,EACV,QAAQ,EACR,eAAe,EACf,IAAI,EACJ,IAAI,GACL,EAAE,qBAAqB,+BA0IvB;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,EACjC,CAAC,EACD,SAAS,EACT,KAAK,EACL,KAAK,EACL,IAAI,EACJ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,uBAAuB,+BAgGzB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,CAAC,EACD,QAAQ,EACR,UAAU,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,yBAAyB,+BAkE3B"}
@@ -0,0 +1,223 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { HoverCard, IconArchiveOutline20, IconBranchOutline16, IconChevronDownOutline14, IconChevronRightOutline14, IconEditOutline16, IconEllipsisOutline16, IconFolderClose16, IconFolderOpen16, IconPlusOutline16, IconTrashOutline16, Menu, StateDot, } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { isBlankSession } from './session-view.js';
5
+ import { sessionLabel } from './worktree-surface-selectors.js';
6
+ import styles from './worktree.css';
7
+ function rowHalf(event) {
8
+ const rect = event.currentTarget.getBoundingClientRect();
9
+ return event.clientY < rect.top + rect.height / 2 ? 'before' : 'after';
10
+ }
11
+ /** Workspace row using the native DSH menu, fixed action column, and drag contract. */
12
+ export function WorktreeWorkspaceRow({ t, workspace, expanded, actionPending, menuOpen, drag, onToggle, onCreateWorktree, onRename, onDelete, onMenuOpenChange, }) {
13
+ const workspaceMenuItems = [
14
+ {
15
+ id: 'rename',
16
+ label: t('workspace.rename'),
17
+ icon: _jsx(IconEditOutline16, {}),
18
+ disabled: actionPending,
19
+ },
20
+ {
21
+ id: 'delete',
22
+ label: t('workspace.delete'),
23
+ icon: _jsx(IconTrashOutline16, {}),
24
+ danger: true,
25
+ disabled: actionPending,
26
+ },
27
+ ];
28
+ const markerClass = drag.marker === 'before'
29
+ ? styles.dropBefore
30
+ : drag.marker === 'after'
31
+ ? styles.dropAfter
32
+ : '';
33
+ return (_jsxs("div", { className: `${styles.workspaceRow} ${markerClass}`, "data-workspace-drag": drag.active ? 'active' : undefined, "data-menu-open": menuOpen || undefined, draggable: true, onClick: () => {
34
+ onToggle();
35
+ }, onDragStart: (event) => {
36
+ event.dataTransfer.effectAllowed = 'move';
37
+ event.dataTransfer.setData('text/plain', workspace.workspaceId);
38
+ drag.start();
39
+ }, onDragEnd: drag.end, onDragOver: (event) => {
40
+ if (!drag.active)
41
+ return;
42
+ event.preventDefault();
43
+ event.dataTransfer.dropEffect = 'move';
44
+ drag.hover(rowHalf(event));
45
+ }, onDrop: (event) => {
46
+ if (!drag.active)
47
+ return;
48
+ event.preventDefault();
49
+ drag.drop(rowHalf(event));
50
+ }, children: [_jsx("button", { type: "button", className: `${styles.disclosureButton} ${styles.workspaceDisclosure}`, "aria-label": t(expanded ? 'workspace.collapse' : 'workspace.expand', {
51
+ name: workspace.title,
52
+ }), "aria-expanded": expanded, onClick: (event) => {
53
+ event.stopPropagation();
54
+ onToggle();
55
+ }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx("span", { className: styles.workspaceIcon, "aria-hidden": "true", children: expanded ? _jsx(IconFolderOpen16, {}) : _jsx(IconFolderClose16, {}) }), _jsx("span", { className: styles.workspaceTitle, children: workspace.title }), _jsxs("span", { className: `${styles.treeActionSlot} ${styles.workspaceActions}`, children: [_jsx("span", { className: styles.menuAction, children: _jsx(Menu, { open: menuOpen, onClose: () => {
56
+ onMenuOpenChange(false);
57
+ }, items: workspaceMenuItems, onSelect: (id) => {
58
+ onMenuOpenChange(false);
59
+ if (id === 'rename')
60
+ onRename();
61
+ if (id === 'delete')
62
+ onDelete();
63
+ }, portal: true, closeOnPointerLeave: true, anchor: (_jsx("button", { type: "button", className: styles.iconButton, "data-workspace-menu": true, "aria-label": t('workspace.options', { name: workspace.title }), onClick: (event) => {
64
+ event.stopPropagation();
65
+ onMenuOpenChange(!menuOpen);
66
+ }, children: _jsx(IconEllipsisOutline16, {}) })) }) }), _jsx("button", { type: "button", className: styles.iconButton, "data-add-worktree": true, "aria-label": t('workspace.addWorktree', { name: workspace.title }), onClick: (event) => {
67
+ event.stopPropagation();
68
+ onCreateWorktree();
69
+ }, children: _jsx(IconPlusOutline16, {}) })] })] }));
70
+ }
71
+ /** Shared Main/Worktree group row with parameterized icon, state, and actions. */
72
+ export function WorktreeGroupRow({ t, kind, label, worktreeId, expanded, icon, workspaceTitle, state, stateLabel, onToggle, onCreateSession, menu, drag, }) {
73
+ const main = kind === 'main';
74
+ const markerClass = drag?.marker === 'before'
75
+ ? styles.dropBefore
76
+ : drag?.marker === 'after'
77
+ ? styles.dropAfter
78
+ : '';
79
+ const dragProps = drag === undefined
80
+ ? {}
81
+ : {
82
+ draggable: true,
83
+ onDragStart: (event) => {
84
+ event.dataTransfer.effectAllowed = 'move';
85
+ event.dataTransfer.setData('text/plain', worktreeId ?? label);
86
+ drag.start();
87
+ },
88
+ onDragEnd: drag.end,
89
+ onDragOver: (event) => {
90
+ if (!drag.active)
91
+ return;
92
+ event.preventDefault();
93
+ event.dataTransfer.dropEffect = 'move';
94
+ drag.hover(rowHalf(event));
95
+ },
96
+ onDrop: (event) => {
97
+ if (!drag.active)
98
+ return;
99
+ event.preventDefault();
100
+ drag.drop(rowHalf(event));
101
+ },
102
+ };
103
+ const row = (_jsxs("div", { className: `${styles.worktreeRow} ${markerClass}`, "data-main-group": main ? 'true' : undefined, "data-main-expanded": main ? String(expanded) : undefined, "data-menu-open": menu?.open ? 'true' : undefined, "data-worktree-drag": drag?.active ? 'active' : undefined, ...dragProps, onClick: onToggle, children: [_jsx("button", { type: "button", className: `${styles.disclosureButton} ${styles.worktreeDisclosure}`, "aria-label": t(expanded ? 'worktree.collapse' : 'worktree.expand', { name: label }), "aria-expanded": expanded, onClick: (event) => {
104
+ event.stopPropagation();
105
+ onToggle();
106
+ }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx("span", { className: styles.worktreeIcon, "aria-hidden": "true", children: icon }), state !== undefined && stateLabel !== undefined && (_jsx("span", { className: styles.worktreeState, role: "img", "aria-label": stateLabel, title: stateLabel, children: _jsx(StateDot, { state: state }) })), _jsx("span", { className: styles.worktreeLabel, children: label }), _jsxs("span", { className: styles.treeActionSlot, children: [menu !== undefined && (_jsx("span", { className: styles.menuAction, children: _jsx(Menu, { open: menu.open, onClose: () => {
107
+ menu.onOpenChange(false);
108
+ }, items: [
109
+ {
110
+ id: 'remove',
111
+ label: t('worktree.remove'),
112
+ icon: _jsx(IconTrashOutline16, {}),
113
+ danger: true,
114
+ disabled: menu.disabled,
115
+ },
116
+ ], onSelect: (id) => {
117
+ menu.onOpenChange(false);
118
+ if (id === 'remove')
119
+ menu.onRemove();
120
+ }, portal: true, closeOnPointerLeave: true, anchor: _jsx("button", { type: "button", className: styles.iconButton, "data-worktree-menu": true, "aria-label": t('worktree.options', { name: menu.label }), onClick: (event) => {
121
+ event.stopPropagation();
122
+ menu.onOpenChange(!menu.open);
123
+ }, children: _jsx(IconEllipsisOutline16, {}) }) }) })), onCreateSession !== undefined && (_jsx("button", { type: "button", className: styles.iconButton, "data-add-main-session": main ? 'true' : undefined, "data-add-session": main ? undefined : 'true', "aria-label": t('worktree.addSession', { name: workspaceTitle }), onClick: (event) => {
124
+ event.stopPropagation();
125
+ onCreateSession();
126
+ }, children: _jsx(IconPlusOutline16, {}) }))] })] }));
127
+ if (main)
128
+ return row;
129
+ return (_jsx(HoverCard, { anchor: row, content: _jsx("div", { className: styles.worktreeHoverTitle, children: label }), openDelayMs: 500, disabled: menu?.open === true }));
130
+ }
131
+ /** Worktree-mode Session row with the same trailing options menu as native DSH rows. */
132
+ export function WorktreeSessionRow({ t, sessionId, blank, label, drag, actionPending, onOpen, onRename, onFork, onArchive, }) {
133
+ const [menuOpen, setMenuOpen] = useState(false);
134
+ const markerClass = drag.marker === 'before'
135
+ ? styles.dropBefore
136
+ : drag.marker === 'after'
137
+ ? styles.dropAfter
138
+ : '';
139
+ const sessionMenuItems = [
140
+ {
141
+ id: 'rename',
142
+ label: t('session.rename'),
143
+ icon: _jsx(IconEditOutline16, {}),
144
+ disabled: onRename === undefined || actionPending,
145
+ },
146
+ {
147
+ id: 'fork',
148
+ label: t('session.fork'),
149
+ icon: _jsx(IconBranchOutline16, {}),
150
+ disabled: onFork === undefined || actionPending,
151
+ },
152
+ {
153
+ id: 'archive',
154
+ label: t('session.archive'),
155
+ icon: _jsx(IconArchiveOutline20, { size: 16 }),
156
+ disabled: onArchive === undefined || actionPending,
157
+ },
158
+ ];
159
+ return (_jsxs("div", { className: `${styles.treeSessionRow} ${markerClass}`, "data-session-id": sessionId, "data-session-blank": blank ? 'true' : undefined, "data-session-drag": drag.active ? 'active' : undefined, "data-menu-open": menuOpen || undefined, role: "treeitem", draggable: true, onDragStart: (event) => {
160
+ event.dataTransfer.effectAllowed = 'move';
161
+ event.dataTransfer.setData('text/plain', sessionId);
162
+ drag.start();
163
+ }, onDragEnd: drag.end, onDragOver: (event) => {
164
+ if (!drag.active)
165
+ return;
166
+ event.preventDefault();
167
+ event.dataTransfer.dropEffect = 'move';
168
+ drag.hover(rowHalf(event));
169
+ }, onDrop: (event) => {
170
+ if (!drag.active)
171
+ return;
172
+ event.preventDefault();
173
+ drag.drop(rowHalf(event));
174
+ }, children: [_jsxs("button", { type: "button", className: styles.treeSessionContent, onClick: onOpen, children: [_jsx("span", { className: styles.treeGuide, "aria-hidden": "true", children: "\u2514" }), _jsx("span", { className: styles.sessionLabel, children: label })] }), !blank && (_jsx("span", { className: styles.rowActions, children: _jsx(Menu, { open: menuOpen, onClose: () => {
175
+ setMenuOpen(false);
176
+ }, items: sessionMenuItems, onSelect: (id) => {
177
+ setMenuOpen(false);
178
+ if (id === 'rename')
179
+ onRename?.(sessionId, label);
180
+ if (id === 'fork')
181
+ onFork?.(sessionId);
182
+ if (id === 'archive')
183
+ onArchive?.(sessionId);
184
+ }, portal: true, closeOnPointerLeave: true, anchor: (_jsx("button", { type: "button", className: styles.iconButton, "data-session-menu": true, "aria-label": t('session.options', { name: label }), onClick: (event) => {
185
+ event.stopPropagation();
186
+ setMenuOpen((current) => !current);
187
+ }, children: _jsx(IconEllipsisOutline16, {}) })) }) }))] }));
188
+ }
189
+ export function WorktreeSessionGroup({ t, groupKey, sessionIds, workspaceId, expanded, actionPending, sessions, dragState, onToggleExpanded, onStartDrag, onHoverDrag, onClearDrag, onFinishDrag, onCommitDrag, onOpen, onRename, onFork, onArchive, }) {
190
+ const visibleSessionIds = expanded ? sessionIds : sessionIds.slice(0, 5);
191
+ const sameGroupDrag = dragState?.groupKey === groupKey;
192
+ return (_jsxs(_Fragment, { children: [visibleSessionIds.map((sessionId) => (_jsx(WorktreeSessionRow, { t: t, sessionId: sessionId, blank: isBlankSession(sessionId, sessions), label: sessionLabel(sessionId, sessions, t), drag: {
193
+ active: sameGroupDrag,
194
+ marker: sameGroupDrag && dragState.over?.sessionId === sessionId
195
+ ? dragState.over.half
196
+ : null,
197
+ start: () => {
198
+ onStartDrag(groupKey, sessionId);
199
+ },
200
+ hover: (half) => {
201
+ onHoverDrag(sessionId, half);
202
+ },
203
+ drop: (half) => {
204
+ if (dragState === undefined)
205
+ return;
206
+ onCommitDrag(dragState, { sessionId, half }, sessionIds, workspaceId);
207
+ },
208
+ end: () => {
209
+ if (dragState?.over !== null && dragState?.over !== undefined) {
210
+ onCommitDrag(dragState, dragState.over, sessionIds, workspaceId);
211
+ }
212
+ else {
213
+ onClearDrag();
214
+ }
215
+ onFinishDrag();
216
+ },
217
+ }, actionPending: actionPending, onOpen: () => {
218
+ onOpen(sessionId);
219
+ }, onRename: onRename, onFork: onFork, onArchive: onArchive }, `${groupKey}:${sessionId}`))), sessionIds.length > 5 && (_jsx("button", { type: "button", className: styles.sessionOverflowButton, "aria-expanded": expanded, onClick: onToggleExpanded, children: expanded
220
+ ? t('session.collapse')
221
+ : t('session.expandMore', { count: sessionIds.length - 5 }) }))] }));
222
+ }
223
+ //# sourceMappingURL=worktree-surface-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-rows.js","sourceRoot":"","sources":["../../src/client/worktree-surface-rows.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { SessionBinding } from '../contract/index.js';
2
+ import { type SessionListLike } from './session-view.js';
3
+ import type { WorktreeWorkspaceView } from './worktree-view.js';
4
+ import type { WorktreeTranslate, WorkspaceLike } from './worktree-surface-types.js';
5
+ export declare function sessionLabel(sessionId: string, sessions: SessionListLike, t: WorktreeTranslate): string;
6
+ export declare function bindingIdsFor(bindings: readonly SessionBinding[], worktreeId: string): readonly string[];
7
+ export declare function includesText(value: string, query: string): boolean;
8
+ export declare function workspaceMatches(workspace: WorkspaceLike, view: WorktreeWorkspaceView | undefined, sessions: SessionListLike, query: string): boolean;
9
+ //# sourceMappingURL=worktree-surface-selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-selectors.d.ts","sourceRoot":"","sources":["../../src/client/worktree-surface-selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,EACzB,CAAC,EAAE,iBAAiB,GACnB,MAAM,CAER;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,UAAU,EAAE,MAAM,GACjB,SAAS,MAAM,EAAE,CAInB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAElE;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAoBT"}
@@ -0,0 +1,28 @@
1
+ import { sessionDisplayLabel, sessionMatchesQuery, } from './session-view.js';
2
+ export function sessionLabel(sessionId, sessions, t) {
3
+ return sessionDisplayLabel(sessionId, sessions, t('session.new'));
4
+ }
5
+ export function bindingIdsFor(bindings, worktreeId) {
6
+ return bindings
7
+ .filter((binding) => binding.worktreeId === worktreeId)
8
+ .map((binding) => binding.sessionId);
9
+ }
10
+ export function includesText(value, query) {
11
+ return value.toLocaleLowerCase().includes(query);
12
+ }
13
+ export function workspaceMatches(workspace, view, sessions, query) {
14
+ if (query.length === 0)
15
+ return true;
16
+ if (includesText(workspace.title, query))
17
+ return true;
18
+ if (workspace.sessionIds.some((sessionId) => sessionMatchesQuery(sessionId, sessions, query))) {
19
+ return true;
20
+ }
21
+ if (view === undefined)
22
+ return false;
23
+ if (view.worktrees.some((record) => includesText(record.branch, query) || includesText(record.absolutePath, query))) {
24
+ return true;
25
+ }
26
+ return view.bindings.some((binding) => sessionMatchesQuery(binding.sessionId, sessions, query));
27
+ }
28
+ //# sourceMappingURL=worktree-surface-selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-selectors.js","sourceRoot":"","sources":["../../src/client/worktree-surface-selectors.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GAEpB,MAAM,mBAAmB,CAAC;AAO3B,MAAM,UAAU,YAAY,CAC1B,SAAiB,EACjB,QAAyB,EACzB,CAAoB;IAEpB,OAAO,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAmC,EACnC,UAAkB;IAElB,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC;SACtD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa;IACvD,OAAO,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAAwB,EACxB,IAAuC,EACvC,QAAyB,EACzB,KAAa;IAEb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IACE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EACzF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,IACE,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,CAAC,MAAM,EAAE,EAAE,CACT,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CACjF,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACpC,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CACxD,CAAC;AACJ,CAAC"}