@cerbur/clutch-dsh-worktree 0.1.16 → 0.1.18
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.md +314 -43
- package/README.zh.md +263 -37
- package/assets/screenshots/screenshots-dashboard.png +0 -0
- package/assets/screenshots/screenshots-en.png +0 -0
- package/assets/screenshots/screenshots-git-reviewer.png +0 -0
- package/assets/screenshots/screenshots-import.png +0 -0
- package/assets/screenshots/screenshots-worktree-tool.png +0 -0
- package/assets/screenshots/screenshots-zh.png +0 -0
- package/cordis.patch.yml +6 -19
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +41 -13
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/branch/GitBranchSelector.d.ts +23 -0
- package/lib/client/branch/GitBranchSelector.d.ts.map +1 -0
- package/lib/client/branch/GitBranchSelector.js +142 -0
- package/lib/client/branch/GitBranchSelector.js.map +1 -0
- package/lib/client/command-activity.d.ts +11 -0
- package/lib/client/command-activity.d.ts.map +1 -0
- package/lib/client/command-activity.js +71 -0
- package/lib/client/command-activity.js.map +1 -0
- package/lib/client/context/worktree-context-store.d.ts.map +1 -1
- package/lib/client/context/worktree-context-store.js +1 -0
- package/lib/client/context/worktree-context-store.js.map +1 -1
- package/lib/client/context/worktree-context.d.ts +3 -2
- package/lib/client/context/worktree-context.d.ts.map +1 -1
- package/lib/client/context/worktree-context.js +5 -3
- package/lib/client/context/worktree-context.js.map +1 -1
- package/lib/client/dashboard/DashboardRequest.d.ts +2 -1
- package/lib/client/dashboard/DashboardRequest.d.ts.map +1 -1
- package/lib/client/dashboard/DashboardRequest.js +3 -3
- package/lib/client/dashboard/DashboardRequest.js.map +1 -1
- package/lib/client/dashboard/WorktreeDashboard.d.ts +6 -2
- package/lib/client/dashboard/WorktreeDashboard.d.ts.map +1 -1
- package/lib/client/dashboard/WorktreeDashboard.js +111 -89
- package/lib/client/dashboard/WorktreeDashboard.js.map +1 -1
- package/lib/client/dashboard/WorktreeInstructions.d.ts +2 -1
- package/lib/client/dashboard/WorktreeInstructions.d.ts.map +1 -1
- package/lib/client/dashboard/WorktreeInstructions.js +27 -8
- package/lib/client/dashboard/WorktreeInstructions.js.map +1 -1
- package/lib/client/dashboard/dashboard-overlay.d.ts.map +1 -1
- package/lib/client/dashboard/dashboard-overlay.js +38 -52
- package/lib/client/dashboard/dashboard-overlay.js.map +1 -1
- package/lib/client/dashboard/dashboard-selection.d.ts +4 -2
- package/lib/client/dashboard/dashboard-selection.d.ts.map +1 -1
- package/lib/client/dashboard/dashboard-selection.js +6 -4
- package/lib/client/dashboard/dashboard-selection.js.map +1 -1
- package/lib/client/dashboard/git/GitChangedFiles.d.ts +2 -1
- package/lib/client/dashboard/git/GitChangedFiles.d.ts.map +1 -1
- package/lib/client/dashboard/git/GitChangedFiles.js +8 -6
- package/lib/client/dashboard/git/GitChangedFiles.js.map +1 -1
- package/lib/client/dashboard/git/GitCommitList.d.ts +6 -1
- package/lib/client/dashboard/git/GitCommitList.d.ts.map +1 -1
- package/lib/client/dashboard/git/GitCommitList.js +34 -29
- package/lib/client/dashboard/git/GitCommitList.js.map +1 -1
- package/lib/client/dashboard/git/GitCommitStats.d.ts +8 -0
- package/lib/client/dashboard/git/GitCommitStats.d.ts.map +1 -0
- package/lib/client/dashboard/git/GitCommitStats.js +7 -0
- package/lib/client/dashboard/git/GitCommitStats.js.map +1 -0
- package/lib/client/dashboard/git/WorktreeGitOverview.d.ts.map +1 -1
- package/lib/client/dashboard/git/WorktreeGitOverview.js +2 -1
- package/lib/client/dashboard/git/WorktreeGitOverview.js.map +1 -1
- package/lib/client/dashboard/git/WorktreeGitPanel.d.ts +3 -2
- package/lib/client/dashboard/git/WorktreeGitPanel.d.ts.map +1 -1
- package/lib/client/dashboard/git/WorktreeGitPanel.js +79 -14
- package/lib/client/dashboard/git/WorktreeGitPanel.js.map +1 -1
- package/lib/client/dashboard/git/file-address.d.ts +5 -1
- package/lib/client/dashboard/git/file-address.d.ts.map +1 -1
- package/lib/client/dashboard/git/file-address.js +49 -11
- package/lib/client/dashboard/git/file-address.js.map +1 -1
- package/lib/client/dashboard/git/git-facts.js +1 -1
- package/lib/client/dashboard/git/git-facts.js.map +1 -1
- package/lib/client/dashboard/git/useWorktreeGitState.d.ts +7 -2
- package/lib/client/dashboard/git/useWorktreeGitState.d.ts.map +1 -1
- package/lib/client/dashboard/git/useWorktreeGitState.js +88 -22
- package/lib/client/dashboard/git/useWorktreeGitState.js.map +1 -1
- package/lib/client/dsh-icons.d.ts +4 -0
- package/lib/client/dsh-icons.d.ts.map +1 -1
- package/lib/client/dsh-icons.js +5 -1
- package/lib/client/dsh-icons.js.map +1 -1
- package/lib/client/dsh-slot-contract.d.ts +9 -1
- package/lib/client/dsh-slot-contract.d.ts.map +1 -1
- package/lib/client/entry.d.ts.map +1 -1
- package/lib/client/entry.js +39 -2
- package/lib/client/entry.js.map +1 -1
- package/lib/client/layout/app-frame.d.ts +12 -0
- package/lib/client/layout/app-frame.d.ts.map +1 -0
- package/lib/client/layout/app-frame.js +82 -0
- package/lib/client/layout/app-frame.js.map +1 -0
- package/lib/client/locales.d.ts +184 -2
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +250 -68
- package/lib/client/locales.js.map +1 -1
- package/lib/client/overlay/overlay-bounds.d.ts.map +1 -1
- package/lib/client/overlay/overlay-bounds.js +8 -3
- package/lib/client/overlay/overlay-bounds.js.map +1 -1
- package/lib/client/overlay/sidebar-overlay-geometry.d.ts +3 -1
- package/lib/client/overlay/sidebar-overlay-geometry.d.ts.map +1 -1
- package/lib/client/overlay/sidebar-overlay-geometry.js +94 -34
- package/lib/client/overlay/sidebar-overlay-geometry.js.map +1 -1
- package/lib/client/restart-notice.d.ts +10 -3
- package/lib/client/restart-notice.d.ts.map +1 -1
- package/lib/client/restart-notice.js +44 -11
- package/lib/client/restart-notice.js.map +1 -1
- package/lib/client/select/SearchableSingleSelect.d.ts +44 -0
- package/lib/client/select/SearchableSingleSelect.d.ts.map +1 -0
- package/lib/client/select/SearchableSingleSelect.js +180 -0
- package/lib/client/select/SearchableSingleSelect.js.map +1 -0
- package/lib/client/select/WorktreeSelector.d.ts +14 -0
- package/lib/client/select/WorktreeSelector.d.ts.map +1 -0
- package/lib/client/select/WorktreeSelector.js +11 -0
- package/lib/client/select/WorktreeSelector.js.map +1 -0
- package/lib/client/session/session-view.d.ts +16 -2
- package/lib/client/session/session-view.d.ts.map +1 -1
- package/lib/client/session/session-view.js +24 -10
- package/lib/client/session/session-view.js.map +1 -1
- package/lib/client/session/worktree-session.d.ts +1 -0
- package/lib/client/session/worktree-session.d.ts.map +1 -1
- package/lib/client/session/worktree-session.js +3 -1
- package/lib/client/session/worktree-session.js.map +1 -1
- package/lib/client/settings/ToolSettings.d.ts +9 -0
- package/lib/client/settings/ToolSettings.d.ts.map +1 -0
- package/lib/client/settings/ToolSettings.js +77 -0
- package/lib/client/settings/ToolSettings.js.map +1 -0
- package/lib/client/settings/WorktreeSettings.d.ts +8 -0
- package/lib/client/settings/WorktreeSettings.d.ts.map +1 -0
- package/lib/client/settings/WorktreeSettings.js +46 -0
- package/lib/client/settings/WorktreeSettings.js.map +1 -0
- package/lib/client/settings/WorktreeSettingsNavIcon.d.ts +6 -0
- package/lib/client/settings/WorktreeSettingsNavIcon.d.ts.map +1 -0
- package/lib/client/settings/WorktreeSettingsNavIcon.js +51 -0
- package/lib/client/settings/WorktreeSettingsNavIcon.js.map +1 -0
- package/lib/client/settings/diagnostics.d.ts +24 -0
- package/lib/client/settings/diagnostics.d.ts.map +1 -0
- package/lib/client/settings/diagnostics.js +63 -0
- package/lib/client/settings/diagnostics.js.map +1 -0
- package/lib/client/settings/settings-navigation.d.ts +7 -0
- package/lib/client/settings/settings-navigation.d.ts.map +1 -0
- package/lib/client/settings/settings-navigation.js +12 -0
- package/lib/client/settings/settings-navigation.js.map +1 -0
- package/lib/client/surface/actions/useLifecycleActions.d.ts +2 -1
- package/lib/client/surface/actions/useLifecycleActions.d.ts.map +1 -1
- package/lib/client/surface/actions/useLifecycleActions.js +15 -6
- package/lib/client/surface/actions/useLifecycleActions.js.map +1 -1
- package/lib/client/surface/actions/useSessionActions.d.ts.map +1 -1
- package/lib/client/surface/actions/useSessionActions.js +6 -6
- package/lib/client/surface/actions/useSessionActions.js.map +1 -1
- package/lib/client/surface/actions/useWorktreeRegistration.d.ts +1 -1
- package/lib/client/surface/actions/useWorktreeRegistration.d.ts.map +1 -1
- package/lib/client/surface/actions/useWorktreeRegistration.js +36 -13
- package/lib/client/surface/actions/useWorktreeRegistration.js.map +1 -1
- package/lib/client/surface/components/NotificationToasts.d.ts +19 -3
- package/lib/client/surface/components/NotificationToasts.d.ts.map +1 -1
- package/lib/client/surface/components/NotificationToasts.js +73 -7
- package/lib/client/surface/components/NotificationToasts.js.map +1 -1
- package/lib/client/surface/components/OverlayScrollbar.d.ts +6 -0
- package/lib/client/surface/components/OverlayScrollbar.d.ts.map +1 -0
- package/lib/client/surface/components/OverlayScrollbar.js +84 -0
- package/lib/client/surface/components/OverlayScrollbar.js.map +1 -0
- package/lib/client/surface/components/RegistrationDialog.d.ts +3 -3
- package/lib/client/surface/components/RegistrationDialog.d.ts.map +1 -1
- package/lib/client/surface/components/RegistrationDialog.js +70 -5
- package/lib/client/surface/components/RegistrationDialog.js.map +1 -1
- package/lib/client/surface/components/RestartToast.d.ts.map +1 -1
- package/lib/client/surface/components/RestartToast.js +4 -3
- package/lib/client/surface/components/RestartToast.js.map +1 -1
- package/lib/client/surface/components/SurfaceContent.d.ts.map +1 -1
- package/lib/client/surface/components/SurfaceContent.js +110 -39
- package/lib/client/surface/components/SurfaceContent.js.map +1 -1
- package/lib/client/surface/components/WorkspaceTree.d.ts.map +1 -1
- package/lib/client/surface/components/WorkspaceTree.js +13 -9
- package/lib/client/surface/components/WorkspaceTree.js.map +1 -1
- package/lib/client/surface/components/dialogs.d.ts +1 -1
- package/lib/client/surface/components/dialogs.d.ts.map +1 -1
- package/lib/client/surface/components/dialogs.js +34 -21
- package/lib/client/surface/components/dialogs.js.map +1 -1
- package/lib/client/surface/components/rows.d.ts +1 -1
- package/lib/client/surface/components/rows.d.ts.map +1 -1
- package/lib/client/surface/components/rows.js +15 -97
- package/lib/client/surface/components/rows.js.map +1 -1
- package/lib/client/surface/notification-queue.d.ts +15 -0
- package/lib/client/surface/notification-queue.d.ts.map +1 -1
- package/lib/client/surface/notification-queue.js +13 -2
- package/lib/client/surface/notification-queue.js.map +1 -1
- package/lib/client/surface/state/useRegistrationState.d.ts +6 -1
- package/lib/client/surface/state/useRegistrationState.d.ts.map +1 -1
- package/lib/client/surface/state/useRegistrationState.js +7 -0
- package/lib/client/surface/state/useRegistrationState.js.map +1 -1
- package/lib/client/surface/state/useSurfaceRefresh.d.ts +1 -1
- package/lib/client/surface/state/useSurfaceRefresh.d.ts.map +1 -1
- package/lib/client/surface/state/useSurfaceRefresh.js +13 -1
- package/lib/client/surface/state/useSurfaceRefresh.js.map +1 -1
- package/lib/client/surface/state/useSurfaceSources.d.ts +1 -1
- package/lib/client/surface/state/useSurfaceSources.d.ts.map +1 -1
- package/lib/client/surface/state/useSurfaceSources.js +4 -2
- package/lib/client/surface/state/useSurfaceSources.js.map +1 -1
- package/lib/client/surface/state/useTitleMarquee.d.ts +7 -0
- package/lib/client/surface/state/useTitleMarquee.d.ts.map +1 -0
- package/lib/client/surface/state/useTitleMarquee.js +60 -0
- package/lib/client/surface/state/useTitleMarquee.js.map +1 -0
- package/lib/client/surface/types.d.ts +12 -1
- package/lib/client/surface/types.d.ts.map +1 -1
- package/lib/client/view/worktree-error-copy.d.ts.map +1 -1
- package/lib/client/view/worktree-error-copy.js +73 -14
- package/lib/client/view/worktree-error-copy.js.map +1 -1
- package/lib/client/view/worktree-view-errors.d.ts.map +1 -1
- package/lib/client/view/worktree-view-errors.js +13 -5
- package/lib/client/view/worktree-view-errors.js.map +1 -1
- package/lib/client/view/worktree-view-read.d.ts +4 -2
- package/lib/client/view/worktree-view-read.d.ts.map +1 -1
- package/lib/client/view/worktree-view-read.js +34 -17
- package/lib/client/view/worktree-view-read.js.map +1 -1
- package/lib/client/worktree-connection.d.ts +9 -2
- package/lib/client/worktree-connection.d.ts.map +1 -1
- package/lib/client/worktree-connection.js +24 -1
- package/lib/client/worktree-connection.js.map +1 -1
- package/lib/client/worktree-tool-changes.d.ts +13 -0
- package/lib/client/worktree-tool-changes.d.ts.map +1 -0
- package/lib/client/worktree-tool-changes.js +64 -0
- package/lib/client/worktree-tool-changes.js.map +1 -0
- package/lib/client.js +3503 -1310
- package/lib/client.js.map +1 -1
- package/lib/contract/index.contract.js +15 -0
- package/lib/contract/index.contract.js.map +1 -1
- package/lib/contract/index.d.ts +79 -12
- package/lib/contract/index.d.ts.map +1 -1
- package/lib/contract/index.js +12 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/contract/tool-settings.d.ts +28 -0
- package/lib/contract/tool-settings.d.ts.map +1 -0
- package/lib/contract/tool-settings.js +10 -0
- package/lib/contract/tool-settings.js.map +1 -0
- package/lib/contract/worktree-tool-changes.d.ts +10 -0
- package/lib/contract/worktree-tool-changes.d.ts.map +1 -0
- package/lib/contract/worktree-tool-changes.js +2 -0
- package/lib/contract/worktree-tool-changes.js.map +1 -0
- package/lib/host/permission-preset-append.d.ts +15 -0
- package/lib/host/permission-preset-append.d.ts.map +1 -0
- package/lib/host/permission-preset-append.js +63 -0
- package/lib/host/permission-preset-append.js.map +1 -0
- package/lib/host/remote.d.ts.map +1 -1
- package/lib/host/remote.js +7 -0
- package/lib/host/remote.js.map +1 -1
- package/lib/host/service.d.ts +30 -6
- package/lib/host/service.d.ts.map +1 -1
- package/lib/host/service.js +85 -11
- package/lib/host/service.js.map +1 -1
- package/lib/host/tool-settings.d.ts +14 -0
- package/lib/host/tool-settings.d.ts.map +1 -0
- package/lib/host/tool-settings.js +98 -0
- package/lib/host/tool-settings.js.map +1 -0
- package/lib/host/worktree-permission-manager.d.ts.map +1 -1
- package/lib/host/worktree-permission-manager.js +2 -4
- package/lib/host/worktree-permission-manager.js.map +1 -1
- package/lib/host/worktree-tool-changes.d.ts +12 -0
- package/lib/host/worktree-tool-changes.d.ts.map +1 -0
- package/lib/host/worktree-tool-changes.js +60 -0
- package/lib/host/worktree-tool-changes.js.map +1 -0
- package/lib/manage/manager-git-history.d.ts +5 -7
- package/lib/manage/manager-git-history.d.ts.map +1 -1
- package/lib/manage/manager-git-history.js +185 -91
- package/lib/manage/manager-git-history.js.map +1 -1
- package/lib/manage/manager-git-paths.d.ts +7 -0
- package/lib/manage/manager-git-paths.d.ts.map +1 -0
- package/lib/manage/manager-git-paths.js +62 -0
- package/lib/manage/manager-git-paths.js.map +1 -0
- package/lib/manage/manager-sessions.d.ts +5 -0
- package/lib/manage/manager-sessions.d.ts.map +1 -1
- package/lib/manage/manager-sessions.js +34 -11
- package/lib/manage/manager-sessions.js.map +1 -1
- package/lib/manage/manager-support.d.ts +3 -1
- package/lib/manage/manager-support.d.ts.map +1 -1
- package/lib/manage/manager-support.js +17 -0
- package/lib/manage/manager-support.js.map +1 -1
- package/lib/manage/manager-worktree-lifecycle.d.ts.map +1 -1
- package/lib/manage/manager-worktree-lifecycle.js +5 -4
- package/lib/manage/manager-worktree-lifecycle.js.map +1 -1
- package/lib/manage/manager-worktrees.d.ts +10 -1
- package/lib/manage/manager-worktrees.d.ts.map +1 -1
- package/lib/manage/manager-worktrees.js +141 -34
- package/lib/manage/manager-worktrees.js.map +1 -1
- package/lib/manage/manager.d.ts +22 -5
- package/lib/manage/manager.d.ts.map +1 -1
- package/lib/manage/manager.js +76 -4
- package/lib/manage/manager.js.map +1 -1
- package/lib/manage/types.d.ts +10 -1
- package/lib/manage/types.d.ts.map +1 -1
- package/lib/provider/generated-name.d.ts.map +1 -1
- package/lib/provider/generated-name.js +5 -4
- package/lib/provider/generated-name.js.map +1 -1
- package/lib/provider/git/adapter.d.ts +13 -12
- package/lib/provider/git/adapter.d.ts.map +1 -1
- package/lib/provider/git/adapter.js +157 -31
- package/lib/provider/git/adapter.js.map +1 -1
- package/lib/provider/git/branch-name.d.ts +5 -0
- package/lib/provider/git/branch-name.d.ts.map +1 -0
- package/lib/provider/git/branch-name.js +16 -0
- package/lib/provider/git/branch-name.js.map +1 -0
- package/lib/provider/git/branches.d.ts +11 -0
- package/lib/provider/git/branches.d.ts.map +1 -0
- package/lib/provider/git/branches.js +37 -0
- package/lib/provider/git/branches.js.map +1 -0
- package/lib/provider/mutation-token.d.ts +1 -1
- package/lib/provider/mutation-token.d.ts.map +1 -1
- package/lib/provider/mutation-token.js +1 -0
- package/lib/provider/mutation-token.js.map +1 -1
- package/lib/provider/sidecar/repository.d.ts.map +1 -1
- package/lib/provider/sidecar/repository.js +3 -1
- package/lib/provider/sidecar/repository.js.map +1 -1
- package/lib/provider/sidecar/sidecar-schema.d.ts.map +1 -1
- package/lib/provider/sidecar/sidecar-schema.js +26 -4
- package/lib/provider/sidecar/sidecar-schema.js.map +1 -1
- package/lib/provider/transaction/operations/adopt-branch.d.ts.map +1 -1
- package/lib/provider/transaction/operations/adopt-branch.js +6 -5
- package/lib/provider/transaction/operations/adopt-branch.js.map +1 -1
- package/lib/provider/transaction/operations/clean.d.ts.map +1 -1
- package/lib/provider/transaction/operations/clean.js +20 -19
- package/lib/provider/transaction/operations/clean.js.map +1 -1
- package/lib/provider/transaction/operations/create.d.ts +1 -1
- package/lib/provider/transaction/operations/create.d.ts.map +1 -1
- package/lib/provider/transaction/operations/create.js +39 -17
- package/lib/provider/transaction/operations/create.js.map +1 -1
- package/lib/provider/transaction/operations/import.d.ts.map +1 -1
- package/lib/provider/transaction/operations/import.js +7 -1
- package/lib/provider/transaction/operations/import.js.map +1 -1
- package/lib/provider/transaction/operations/remove.d.ts.map +1 -1
- package/lib/provider/transaction/operations/remove.js +20 -19
- package/lib/provider/transaction/operations/remove.js.map +1 -1
- package/lib/provider/transaction/recovery/failure-recovery.d.ts.map +1 -1
- package/lib/provider/transaction/recovery/failure-recovery.js +22 -20
- package/lib/provider/transaction/recovery/failure-recovery.js.map +1 -1
- package/lib/provider/transaction/recovery/recover.d.ts.map +1 -1
- package/lib/provider/transaction/recovery/recover.js +11 -4
- package/lib/provider/transaction/recovery/recover.js.map +1 -1
- package/lib/provider/transaction/support/inspection.d.ts.map +1 -1
- package/lib/provider/transaction/support/inspection.js +3 -2
- package/lib/provider/transaction/support/inspection.js.map +1 -1
- package/lib/provider/transaction/support/journal.d.ts.map +1 -1
- package/lib/provider/transaction/support/journal.js +9 -5
- package/lib/provider/transaction/support/journal.js.map +1 -1
- package/lib/provider/transaction/support/path-safety.d.ts.map +1 -1
- package/lib/provider/transaction/support/path-safety.js +4 -3
- package/lib/provider/transaction/support/path-safety.js.map +1 -1
- package/lib/provider/transaction/types.d.ts +2 -1
- package/lib/provider/transaction/types.d.ts.map +1 -1
- package/lib/provider/types.d.ts +27 -5
- package/lib/provider/types.d.ts.map +1 -1
- package/lib/provider/types.js +1 -1
- package/lib/provider/types.js.map +1 -1
- package/lib/provider/worktree-path.d.ts +10 -0
- package/lib/provider/worktree-path.d.ts.map +1 -0
- package/lib/provider/worktree-path.js +47 -0
- package/lib/provider/worktree-path.js.map +1 -0
- package/lib/tool/context.d.ts +14 -0
- package/lib/tool/context.d.ts.map +1 -0
- package/lib/tool/context.js +95 -0
- package/lib/tool/context.js.map +1 -0
- package/lib/tool/delegation.d.ts +41 -0
- package/lib/tool/delegation.d.ts.map +1 -0
- package/lib/tool/delegation.js +196 -0
- package/lib/tool/delegation.js.map +1 -0
- package/lib/tool/errors.d.ts +3 -0
- package/lib/tool/errors.d.ts.map +1 -0
- package/lib/tool/errors.js +63 -0
- package/lib/tool/errors.js.map +1 -0
- package/lib/tool/guidance.d.ts +5 -0
- package/lib/tool/guidance.d.ts.map +1 -0
- package/lib/tool/guidance.js +48 -0
- package/lib/tool/guidance.js.map +1 -0
- package/lib/tool/history.d.ts +27 -0
- package/lib/tool/history.d.ts.map +1 -0
- package/lib/tool/history.js +157 -0
- package/lib/tool/history.js.map +1 -0
- package/lib/tool/index.d.ts +8 -0
- package/lib/tool/index.d.ts.map +1 -0
- package/lib/tool/index.js +296 -0
- package/lib/tool/index.js.map +1 -0
- package/lib/tool/inputs.d.ts +12 -0
- package/lib/tool/inputs.d.ts.map +1 -0
- package/lib/tool/inputs.js +24 -0
- package/lib/tool/inputs.js.map +1 -0
- package/lib/tool/list-models.d.ts +3 -0
- package/lib/tool/list-models.d.ts.map +1 -0
- package/lib/tool/list-models.js +38 -0
- package/lib/tool/list-models.js.map +1 -0
- package/lib/tool/list-sessions.d.ts +3 -0
- package/lib/tool/list-sessions.d.ts.map +1 -0
- package/lib/tool/list-sessions.js +70 -0
- package/lib/tool/list-sessions.js.map +1 -0
- package/lib/tool/list-worktrees.d.ts +3 -0
- package/lib/tool/list-worktrees.d.ts.map +1 -0
- package/lib/tool/list-worktrees.js +46 -0
- package/lib/tool/list-worktrees.js.map +1 -0
- package/lib/tool/native-session.d.ts +74 -0
- package/lib/tool/native-session.d.ts.map +1 -0
- package/lib/tool/native-session.js +248 -0
- package/lib/tool/native-session.js.map +1 -0
- package/lib/tool/new-worktree.d.ts +3 -0
- package/lib/tool/new-worktree.d.ts.map +1 -0
- package/lib/tool/new-worktree.js +81 -0
- package/lib/tool/new-worktree.js.map +1 -0
- package/lib/tool/outputs.d.ts +50 -0
- package/lib/tool/outputs.d.ts.map +1 -0
- package/lib/tool/outputs.js +65 -0
- package/lib/tool/outputs.js.map +1 -0
- package/lib/tool/report-result.d.ts +3 -0
- package/lib/tool/report-result.d.ts.map +1 -0
- package/lib/tool/report-result.js +83 -0
- package/lib/tool/report-result.js.map +1 -0
- package/lib/tool/schema.d.ts +7 -0
- package/lib/tool/schema.d.ts.map +1 -0
- package/lib/tool/schema.js +92 -0
- package/lib/tool/schema.js.map +1 -0
- package/lib/tool/send-message.d.ts +3 -0
- package/lib/tool/send-message.d.ts.map +1 -0
- package/lib/tool/send-message.js +64 -0
- package/lib/tool/send-message.js.map +1 -0
- package/lib/tool/span-worktree.d.ts +3 -0
- package/lib/tool/span-worktree.d.ts.map +1 -0
- package/lib/tool/span-worktree.js +114 -0
- package/lib/tool/span-worktree.js.map +1 -0
- package/lib/tool/types.d.ts +54 -0
- package/lib/tool/types.d.ts.map +1 -0
- package/lib/tool/types.js +2 -0
- package/lib/tool/types.js.map +1 -0
- package/lib/typert.host.js +387 -46
- package/lib/typert.remote-client.d.ts +17 -5
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +387 -46
- package/package.json +17 -3
package/README.md
CHANGED
|
@@ -6,21 +6,28 @@
|
|
|
6
6
|
Sessions as Workspace → Worktree → Session while keeping DSH as the source of truth for
|
|
7
7
|
Workspace identity, Session metadata, native lists, messages, and conversation history.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
its
|
|
9
|
+
Tool preferences are stored in separate Host-owned files, outside relationship indexes and native
|
|
10
|
+
Session metadata. The plugin stores Worktree relationships, acquisition facts, shared Worktree instructions, and Workspace-root
|
|
11
|
+
Main instructions in its own sidecar. Managed Worktrees expose a read-only baseline-relative Git & Changes dashboard, while Local/Main exposes
|
|
12
|
+
its Workspace-root HEAD history with an optional comparison branch; the plugin does not copy transcripts or rewrite DSH Sessions.
|
|
12
13
|
|
|
13
14
|
> **Preview:** Worktree Dashboard is an early, plugin-only MVP preview. Worktree navigation, lifecycle actions,
|
|
14
15
|
> Session actions, Worktree/Main instructions, and the managed Worktree or Main Git & Changes view are connected.
|
|
15
|
-
> Derived Worktrees
|
|
16
|
+
> Derived Worktrees and other unfinished actions remain marked
|
|
16
17
|
> **Coming soon**.
|
|
17
18
|
|
|
18
19
|
## Installation
|
|
19
20
|
|
|
20
21
|
After installing into a running DSH instance, restart DSH Desktop, or restart the DSH Web
|
|
21
|
-
server and refresh the page, to load the plugin Host
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
server and refresh the page, to load the plugin Host and permission configuration. Finish
|
|
23
|
+
active tasks before restarting. If the Client loads while the Host is still unavailable, a
|
|
24
|
+
native toast reminds you once per Client load. If a Worktree Session permission check reports
|
|
25
|
+
that **Worktree Full Access** is unavailable and falls back to `workspace-write`, a separate
|
|
26
|
+
once-per-load toast gives the same restart guidance for a recent install or update. The
|
|
27
|
+
permission recovery message retains this guidance after the toast closes. Network failures,
|
|
28
|
+
Workspace errors, unverified permissions, and explicit user restrictions do not trigger the
|
|
29
|
+
missing-preset reminder. The reminder does not reload services or grant Full Access; if the
|
|
30
|
+
preset remains unavailable after restarting, check the DSH plugin and permission configuration.
|
|
24
31
|
|
|
25
32
|
### Install from npm
|
|
26
33
|
|
|
@@ -53,6 +60,17 @@ pnpm dsh web
|
|
|
53
60
|
The DSH Web profile must be able to start before this plugin is added. Re-run the absolute-path
|
|
54
61
|
install command after changing `package.json` or `cordis.patch.yml`.
|
|
55
62
|
|
|
63
|
+
For Desktop, fully quit DeepSeek Harness after active tasks finish, then use the installed DSH CLI:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
dsh plugin --profile desktop add /absolute/path/to/clutch-dsh/packages/clutch-dsh-worktree
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Reopen Desktop after installation. Keep the local checkout and its installed `node_modules`
|
|
70
|
+
available while it is linked; copying only `lib/` or removing the checkout's dependencies can
|
|
71
|
+
cause the Host and permission-preset entries to fail to import. Client implementation dependencies
|
|
72
|
+
are bundled during the build, so Desktop does not need separate Zustand or Immer modules.
|
|
73
|
+
|
|
56
74
|
### Install from GitHub source (optional)
|
|
57
75
|
|
|
58
76
|
The package also supports the source dependency form used by the DSH plugin market:
|
|
@@ -69,13 +87,21 @@ development details, see [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).
|
|
|
69
87
|
| Feature | Preview | What it does |
|
|
70
88
|
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
71
89
|
| **Worktree navigation** | <img src="assets/screenshots/screenshots-en.png" width="420" alt="DSH Worktree navigation with Workspace, Main, Worktree, and Session rows"> | Adds a Worktree mode to the native DSH Sidebar. On macOS desktop, the panel shares DSH's native glass material without a second background layer or duplicate navigation showing through. Other platforms retain the theme fill; reduced transparency uses a stronger fill. Workspace expansion and new Session rows use native-style fades and movement. Browse each Workspace through Local/Main and Git Worktree rows, then open the Sessions bound to each row. |
|
|
72
|
-
| **Create and import Worktrees** | <img src="assets/screenshots/screenshots-import.png" width="420" alt="Worktree create and import dialog"> | Create a Worktree from a local branch, or register an existing branch-attached Worktree in place. Import does not move, copy, or edit the existing directory. |
|
|
73
|
-
| **Worktree Dashboard** | <img src="assets/screenshots/screenshots-dashboard.png" width="420" alt="Worktree Dashboard preview with Sessions and Worktree actions"> | The preview Dashboard shows Worktree identity, path, Sessions, Worktree/Main instructions, connected actions, the host-provided Open In action, and the read-only Git & Changes view for managed Worktrees or Main. Derived Worktrees
|
|
90
|
+
| **Create and import Worktrees** | <img src="assets/screenshots/screenshots-import.png" width="420" alt="Worktree create and import dialog"> | Create a Worktree from a local or fetched remote branch, or register an existing branch-attached Worktree in place. Import does not move, copy, or edit the existing directory. |
|
|
91
|
+
| **Worktree Dashboard** | <img src="assets/screenshots/screenshots-dashboard.png" width="420" alt="Worktree Dashboard preview with Sessions and Worktree actions"> | The preview Dashboard shows Worktree identity, path, Sessions, Worktree/Main instructions, connected actions, the host-provided Open In action, and the read-only Git & Changes view for managed Worktrees or Main. Derived Worktrees and other unfinished cards remain **Coming soon**. |
|
|
92
|
+
| **Agent tool settings (Experimental)** | <img src="assets/screenshots/screenshots-worktree-tool.png" width="420" alt="Worktree tool settings preview"> | Choose capabilities for `/cluworktree` in General, and independently configure automatic injection in Local/Main and managed Worktree Dashboards. Delegated Sessions receive result reporting only by default. |
|
|
74
93
|
|
|
75
94
|
## Usage
|
|
76
95
|
|
|
77
96
|
### Open Worktree mode
|
|
78
97
|
|
|
98
|
+
The Sidebar scrollbar floats over the edge without shifting row spacing. Workspace folders
|
|
99
|
+
and rotating disclosure triangles match native DSH. An expanded Workspace containing the current
|
|
100
|
+
Session uses the native blue folder; other Workspace folders use the native gray. Hover over a long
|
|
101
|
+
Session title or Worktree
|
|
102
|
+
name to reveal its tail at native speed; leaving restores the start. Reduced motion reveals the
|
|
103
|
+
tail immediately.
|
|
104
|
+
|
|
79
105
|
1. Start DSH Web and select **Worktree** from the DSH Sidebar footer.
|
|
80
106
|
2. Search or expand a Workspace in the Worktree tree.
|
|
81
107
|
3. Select Local/Main or a Worktree to browse its Sessions. The view is additive; DSH's native
|
|
@@ -89,30 +115,223 @@ keeps no collapsed rail; use the native titlebar control to reopen it. Row anima
|
|
|
89
115
|
reduced motion and settles immediately during search, drag, and initial loading.
|
|
90
116
|
On Web, Worktree navigation starts below the native DSH brand row, leaving its Sidebar toggle
|
|
91
117
|
visible and clickable even when the New Session action displays keyboard shortcuts.
|
|
118
|
+
If the native Sidebar layout cannot be safely recognized, the plugin leaves native navigation
|
|
119
|
+
visible rather than covering its controls. It retries when the layout changes.
|
|
120
|
+
Worktree navigation and Dashboard support AppFrame layouts with extra titlebar or shell controls
|
|
121
|
+
before, between, or after the native columns, while keeping those controls accessible.
|
|
92
122
|
|
|
93
123
|
### Create a Worktree
|
|
94
124
|
|
|
125
|
+
You can also enable Agent tools with `/cluworktree`; see the next section.
|
|
126
|
+
|
|
127
|
+
New Worktree actions use the same branch icon as Worktree rows. The Workspace row button appears
|
|
128
|
+
on hover, keyboard focus, or while its options menu is open, matching the menu button.
|
|
129
|
+
|
|
95
130
|
1. Open the options menu for Local/Main or an active Worktree and choose **Create Worktree**.
|
|
96
|
-
2. Choose
|
|
131
|
+
2. Choose a local or fetched remote base branch and a new local branch name. The dialog suggests an available name.
|
|
97
132
|
3. Confirm the dialog. The plugin creates the Git Worktree, records its acquisition facts, and
|
|
98
133
|
continues through the normal Session and binding flow when you open a Session from that Worktree.
|
|
99
134
|
|
|
100
|
-
|
|
135
|
+
The Create and Import tabs share aligned, full-width controls and consistent spacing between fields.
|
|
136
|
+
|
|
137
|
+
Creation, saved baselines, and Git comparison use the same searchable selector, grouped into **Local branches**
|
|
138
|
+
and **Remote branches**, with current/checked-out markers and filters for all, local, or remote branches.
|
|
139
|
+
Dropdowns use DSH’s native menu material in light and dark themes.
|
|
140
|
+
Dropdown lists are compact and prefer opening below the field, shrinking to available space with internal scrolling;
|
|
141
|
+
they open above only when there is too little useful space below.
|
|
142
|
+
Search ignores case; use Arrow Up/Down to move, Enter to choose, and Escape to close. Clicking within the dropdown keeps it open, including headings,
|
|
143
|
+
empty space, search, filters, and fetch controls; selecting an option or clicking outside closes it.
|
|
144
|
+
Branch and import selectors open immediately while candidates load, show a loading indicator inside,
|
|
145
|
+
and update in place when data arrives. Search and filters stay intact; refreshes keep existing rows visible.
|
|
146
|
+
Closing and reopening the baseline editor discards pending results from the previous dialog.
|
|
147
|
+
Only the latest branch read or Fetch can update its candidates and loading state.
|
|
148
|
+
Even with cached candidates, the dropdown paints its compact loading shell before preparing the list.
|
|
149
|
+
The initial shell and loading state keep the same height; ready results size to their content within the scrolling limit.
|
|
150
|
+
Large lists render only rows near the viewport; search, filters, and keyboard selection still cover every candidate.
|
|
151
|
+
Switching between **Create** and **Import** replaces the form content in the same dialog without replaying its opening animation.
|
|
152
|
+
Opening any branch selector rereads local Git refs, including changes made in a terminal. Returning to
|
|
153
|
+
the browser does not reload candidates. Fetch reads the updated list once and supplies it directly to the selector.
|
|
154
|
+
Opening the New Worktree dialog does not preload branches; its default comes from the current branch or HEAD.
|
|
155
|
+
The full branch list is loaded only when a picker opens or Fetch completes. Workspace navigation
|
|
156
|
+
reads Git readiness and the current root-checkout branch separately; entering Git & Changes loads history without preloading branches.
|
|
157
|
+
The current local branch is preferred by default. Remote refs are read
|
|
158
|
+
from the local repository. Use the download-arrow button beside **Remote branches** to fetch all configured
|
|
159
|
+
remotes, including when the remote list is empty. Fetch updates remote branch refs and refreshes this Workspace;
|
|
160
|
+
it preserves your current selection, local branches, tags and working files, and does not prune deleted refs.
|
|
161
|
+
The button shows a loading icon during fetch, then displays **Remote branches updated** in place for two
|
|
162
|
+
seconds before restoring the download icon. Failures retain the list and show a retry on the same button;
|
|
163
|
+
the button details retain the error code, message, and diagnostics, also available in **Errors & Repair**.
|
|
164
|
+
no extra status row is added beneath the list.
|
|
165
|
+
Listing branches never contacts a remote automatically.
|
|
166
|
+
Remote baselines require a new local branch when creating a Worktree; its short name may match the remote baseline
|
|
167
|
+
when that local branch does not exist. Symbolic remote HEAD entries are excluded.
|
|
168
|
+
|
|
169
|
+
Git must have a usable repository and initial commit. Choose a local branch, or choose **HEAD** to
|
|
170
|
+
create a new branch from Main's current checkout, including an exact Tag or detached Commit.
|
|
171
|
+
The localized HEAD option includes the current reference name, for example **HEAD (v1.0.0)**.
|
|
172
|
+
Creation uses the commit shown when selected. If HEAD changes before submission, creation is rejected
|
|
173
|
+
with `WORKTREE_STATE_CONFLICT`; refresh the dialog and select the source again.
|
|
174
|
+
Main displays the current branch, exact Tag, or short Commit and retains its creation action when detached.
|
|
175
|
+
If setup is incomplete, DSH
|
|
101
176
|
shows the relevant readiness message and copyable setup guidance.
|
|
102
177
|
|
|
178
|
+
When the Workspace is a repository subdirectory, its Worktrees preserve that relative directory.
|
|
179
|
+
For example, a Workspace at `/repo/packages/app` uses `<worktree-root>/packages/app` for new
|
|
180
|
+
Sessions, the Dashboard path, Copy Path, and Open In. Git operations still use the entire checkout.
|
|
181
|
+
If that directory is missing or resolves outside the checkout, the Worktree needs repair; it does
|
|
182
|
+
not fall back to the Git root or create the missing directory.
|
|
183
|
+
|
|
184
|
+
Already-bound Sessions with a legacy Git-root cwd remain usable after a subdirectory upgrade,
|
|
185
|
+
including automatic tool injection, Session discovery, follow-ups, result reports and default
|
|
186
|
+
Worktree creation from their own checkout's HEAD. Their original cwd and history remain unchanged;
|
|
187
|
+
new Session bindings still require the Workspace directory inside the checkout. Git file previews use
|
|
188
|
+
relative addresses inside the target Session cwd. Files outside that cwd show a prompt to use an IDE
|
|
189
|
+
or a Session at the repository root; already-bound Git-root Sessions keep their original preview scope.
|
|
190
|
+
|
|
191
|
+
### Enable Agent Worktree tools
|
|
192
|
+
|
|
193
|
+
Open **Settings → Worktree → General** and turn on **Worktree tools**, then select the
|
|
194
|
+
capabilities you want. Both tool switches start off. Run `/cluworktree` in a Session belonging to a
|
|
195
|
+
Workspace or an active managed Worktree to enable your selected capabilities. Turning the general
|
|
196
|
+
switch off removes the command; deselecting every capability turns the switch off automatically.
|
|
197
|
+
|
|
198
|
+
For automatic injection, open **Dashboard → Settings** for Local/Main or a managed Worktree and select
|
|
199
|
+
capabilities under **Automatically inject Worktree tools**. Local/Main settings apply only to unbound
|
|
200
|
+
Sessions in that Workspace root; Worktree settings apply only to Sessions bound to that Worktree.
|
|
201
|
+
Each configuration is stored separately. Selected tools are assembled before the first model request,
|
|
202
|
+
including after an Agent restart; ordinary prompt presets also include delegation guidance and,
|
|
203
|
+
in PTC mode, their SDK.
|
|
204
|
+
These selections are independent of General:
|
|
205
|
+
if General selects capabilities 1, 2, 3 and automatic injection selects 2, 3, 4, running
|
|
206
|
+
`/cluworktree` adds only capability 1. Already enabled tools remain until that Agent ends; changing
|
|
207
|
+
preferences affects future injection.
|
|
208
|
+
|
|
209
|
+
The Worktree entry in Settings uses the same branch icon as the sidebar.
|
|
210
|
+
Both settings use a card with the main switch at the top. Turning it on reveals tool selections
|
|
211
|
+
and their descriptions below a divider; turning it off collapses them and retains your selection.
|
|
212
|
+
Injection and reporting notes sit directly under the tool-selection explanation.
|
|
213
|
+
The command and automatic-injection settings carry DSH's native **Experimental** badge.
|
|
214
|
+
The settings explain each capability in plain language. Command results use DSH's native command
|
|
215
|
+
presentation and report how many capabilities were added or already available.
|
|
216
|
+
In a new Session, running `/cluworktree` immediately opens the conversation page and shows
|
|
217
|
+
the command outcome, without first sending a message to the model.
|
|
218
|
+
|
|
219
|
+
With delegation enabled, a request to create a feature Worktree and implement or fix something
|
|
220
|
+
defaults to creating the Worktree and assigning the work to its own Session. That Session handles
|
|
221
|
+
code edits, dependency setup and verification; creating the directory alone does not start the task.
|
|
222
|
+
Guidance prefers the enabled plugin tools over other Worktree/Session tools, while respecting
|
|
223
|
+
explicit requests to only create a Worktree, work in the current Session or use a different tool.
|
|
224
|
+
|
|
225
|
+
The six selectable capabilities correspond to these tools:
|
|
226
|
+
|
|
227
|
+
| Tool | Parameters | Behavior |
|
|
228
|
+
| ----------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
229
|
+
| `clutch_new_worktree` | `name`, optional `baseBranch`, `instructions` | Creates a new branch from the calling Session's healthy Worktree branch; Local/Main uses the root checkout's current branch. An explicit local or fetched remote `baseBranch` overrides this. Returns the acquisition `baseBranch` and `baseCommit`. |
|
|
230
|
+
| `clutch_list_worktrees` | optional `workspaceId` | Lists managed Worktree ids, branches, paths, lifecycle and health, plus available local and fetched remote base branches. Defaults to the calling Workspace. |
|
|
231
|
+
| `clutch_span_worktree` | `worktreeId` or legacy `name`, `prompt`, optional `model`, `title` | Creates a fresh native Session, binds it, configures its initial model and submits the prompt. Returns its `sessionId` and admission status. |
|
|
232
|
+
| `clutch_list_models` | optional `provider` | Lists native provider/model routes, reasoning efforts and provider failures, alongside the current Session model and deployment default. |
|
|
233
|
+
| `clutch_list_sessions` | optional `workspaceId`, `worktreeId` | Finds existing Sessions, binding state, status and title. Unavailable relations return a diagnostic without reading their history. |
|
|
234
|
+
| `clutch_send_message` | `sessionId`, `prompt`, optional `mode`, `requestId` | Continues an existing Session. `queue` is the default; `steer` corrects at a native step boundary. Returns admission, not a reply. |
|
|
235
|
+
|
|
236
|
+
For example, ask the Agent to call `clutch_new_worktree({ name: "feature/demo", instructions: "Run tests before finishing." })`,
|
|
237
|
+
then `clutch_span_worktree({ worktreeId: created.worktreeId, prompt: "Implement the feature and report the result." })` using the returned Worktree id.
|
|
238
|
+
The tool name is intentionally `clutch_span_worktree`. Worktree names are exact Git branch names
|
|
239
|
+
within the calling Workspace; prefer stable `worktreeId` for dispatch. Creating a Worktree alone does not create a Session.
|
|
240
|
+
Only committed state is inherited; staged, unstaged and untracked files are not copied.
|
|
241
|
+
An unhealthy binding never silently falls back to Main. The default captures the calling checkout's
|
|
242
|
+
committed HEAD, including a detached root HEAD. Detached sources return `baseCommit` without inventing
|
|
243
|
+
a `baseBranch`; an explicit local or fetched remote `baseBranch` remains available as an override.
|
|
244
|
+
|
|
245
|
+
Newly delegated Sessions automatically receive only
|
|
246
|
+
`clutch_report_result({ status, summary, evidence?, requestId? })`. The Host fixes the destination
|
|
247
|
+
to the delegating Session. `status` is `completed`, `blocked`, or `failed`; `summary` and `evidence`
|
|
248
|
+
are each limited to 2,000 characters. The other six capabilities require `/cluworktree` or the
|
|
249
|
+
Worktree's explicit automatic-injection selection. Reports arrive as ordinary queued native messages;
|
|
250
|
+
verify their claims and evidence before accepting completion. Reports are model-driven:
|
|
251
|
+
a crash, stopped Agent or unanswered human approval may prevent reporting. `idle` is not success.
|
|
252
|
+
|
|
253
|
+
Reporting is limited to the active delegated task. One successfully admitted `completed`, `blocked`,
|
|
254
|
+
or `failed` report consumes and clears its in-memory token. The reporting tool, SDK and guidance
|
|
255
|
+
stay stable; calls without a token are rejected. Later user input clears any remaining token;
|
|
256
|
+
it does not report to the former parent. An explicit new `clutch_send_message`
|
|
257
|
+
dispatch from that parent opens reporting again after its prompt is consumed. Uncertain report
|
|
258
|
+
admission permits only an identical retry with the returned `requestId`.
|
|
259
|
+
Tokens are never persisted and are lost on Agent/plugin restart. Dispatch retry identities are
|
|
260
|
+
retained in a bounded in-memory cache; expired retries fail explicitly instead of reopening reporting.
|
|
261
|
+
The plugin rejects self/ancestor messages and blocks further message/task dispatch from turns
|
|
262
|
+
triggered solely by reports or ordinary plugin messages. New human input permits dispatch again;
|
|
263
|
+
these guards apply to this plugin's tools in both native and PTC modes.
|
|
264
|
+
|
|
265
|
+
`clutch_read_session` and `clutch_wait_sessions` are removed from the model catalog. Do not
|
|
266
|
+
poll lists or read raw Session logs for progress. After successful dispatch or follow-up admission,
|
|
267
|
+
acknowledge dispatch and end the turn, waiting for the executing Session's pushed report.
|
|
268
|
+
Continue only separate independent work already requested by the user. Do not check the delegated
|
|
269
|
+
task through agent lists, terminal commands, Git, files or tests, and do not edit or commit it yourself.
|
|
270
|
+
An explicit user progress/investigation request or a concrete admission failure permits a targeted action.
|
|
271
|
+
Evaluate a report's supplied evidence rather than automatically rerunning checks; investigate only
|
|
272
|
+
when requested or when the evidence has a concrete gap or inconsistency.
|
|
273
|
+
Complete prompt presets such as **minimal** omit extra prompt sections; critical handoff and
|
|
274
|
+
model-selection rules also appear in native tool descriptions, preserving that preset's complete prompt.
|
|
275
|
+
Activation adds Agent-scoped guidance for choosing delegation from ordinary task descriptions,
|
|
276
|
+
so users need not specify tool names. Schemas describe exact ids, defaults and target alternatives
|
|
277
|
+
without `$schema`; errors explain the cause, correction and a valid invocation. A bad Session
|
|
278
|
+
history returns one `unavailable` diagnostic while keeping healthy list entries available.
|
|
279
|
+
|
|
280
|
+
In PTC mode, the generated SDK exposes concrete argument types, including required report
|
|
281
|
+
`status` and `summary`. Length limits remain in field descriptions and are enforced at execution;
|
|
282
|
+
mutually exclusive dispatch targets use `oneOf` compatible with DSH's schema subset.
|
|
283
|
+
|
|
284
|
+
`model` is `{ provider, model, reasoningEffort? }`. Omission inherits the calling Session's
|
|
285
|
+
effective selection, including reasoning effort; no catalog lookup is required for that default.
|
|
286
|
+
When the user specifies a different model or asks to choose one for the task, discover supported
|
|
287
|
+
routes with `clutch_list_models` if enabled and pass the selected object explicitly.
|
|
288
|
+
Unknown routes require discovery or user clarification, never invented ids or a deployment-default fallback.
|
|
289
|
+
An unavailable model or effort fails before creating a Session. Initial
|
|
290
|
+
model routing does not save the deployment default. It is runtime-only until DSH records the
|
|
291
|
+
first request header; after that, DSH restores the model from its own history. Restarting before
|
|
292
|
+
that first request discards the initial routing override. Native Session model changes take precedence.
|
|
293
|
+
|
|
294
|
+
Tool changes refresh the owning Workspace's Worktree list and bindings while preserving ready
|
|
295
|
+
content. Dispatch keeps the current conversation open and uses DSH's normal new-Session
|
|
296
|
+
preset and permission defaults; it does not automatically grant Worktree Full Access. Run `/cluworktree` again after the Agent or plugin restarts for capabilities not automatically injected.
|
|
297
|
+
No extra command arguments are accepted. All discovery, reports and follow-ups are restricted
|
|
298
|
+
to the calling Workspace; passing another `workspaceId` grants no additional access. Sessions
|
|
299
|
+
are ordinary native Sessions, not native subagent children or a persistent delegation catalog.
|
|
300
|
+
Detached bindings must be repaired before sending or reporting through these tools.
|
|
301
|
+
Healthy archived Worktrees retain their active bindings and allow Session follow-ups;
|
|
302
|
+
a missing Workspace root still blocks message admission.
|
|
303
|
+
|
|
304
|
+
If saving instructions, binding, or prompt admission fails after creation, the tool returns the
|
|
305
|
+
created identity and an error (`instructionsSaved: false`, `binding-failed`, `model-failed`,
|
|
306
|
+
`title-failed`, `reporting-failed`, or `prompt-failed`).
|
|
307
|
+
The Worktree and native Session are retained. Repair or open the returned Session before retrying;
|
|
308
|
+
another dispatch creates another Session. After a successful binding/model setup, retry a failed
|
|
309
|
+
prompt with `clutch_send_message` and the returned `requestId`. Reuse a request id only for the
|
|
310
|
+
same message retry; new follow-ups get fresh ids. `clutch_send_message` also returns `prompt-failed`
|
|
311
|
+
with that id when native admission throws, including when acceptance is uncertain.
|
|
312
|
+
Reporting destinations and activation are runtime-only. Restart discards the destination;
|
|
313
|
+
a resumed Session can enable `/cluworktree` and use `clutch_send_message` with a known delegator id. There are no automatic merge, publish or disk-cleanup tools.
|
|
314
|
+
|
|
103
315
|
### Import an existing Worktree
|
|
104
316
|
|
|
105
|
-
1. Select a Workspace, open its
|
|
106
|
-
2.
|
|
317
|
+
1. Select a Workspace, open its branch-icon **New Worktree** action, and switch to **Import**.
|
|
318
|
+
2. Open the searchable Worktree selector and filter by branch name or path. Each candidate shows its branch and directory; choose the Worktree to import.
|
|
107
319
|
3. Select **Import Worktree**. The plugin registers the existing directory without moving,
|
|
108
320
|
copying, or changing its files, then uses the same Session flow as a created Worktree.
|
|
109
321
|
|
|
110
322
|
The first version lists only ready, branch-attached, non-root Git Worktrees that are not already
|
|
111
323
|
managed by the plugin. Detached, bare, prunable, missing, and invalid entries are omitted. Imported
|
|
112
|
-
Worktrees can still use Git & Changes after you choose a local baseline branch.
|
|
324
|
+
Worktrees can still use Git & Changes after you choose a local or fetched remote baseline branch.
|
|
325
|
+
|
|
326
|
+
Import uses the same Workspace-relative directory rule and offers only candidates where that
|
|
327
|
+
directory is available. Existing records are projected with the corrected path when the original
|
|
328
|
+
Workspace is available. Existing DSH Sessions keep their original metadata; create a new Session
|
|
329
|
+
to run from the corrected directory.
|
|
113
330
|
|
|
114
331
|
### Create and open Sessions
|
|
115
332
|
|
|
333
|
+
The new Session buttons on Local/Main and Worktree rows use DSH's native chat-bubble-plus icon.
|
|
334
|
+
|
|
116
335
|
- Use **+** on Local/Main for a normal DSH Session whose runtime directory is the Workspace root.
|
|
117
336
|
- Use **+** on a Worktree for a Session whose runtime directory is that Worktree.
|
|
118
337
|
- When possible, the plugin reuses an unarchived blank Session with the exact target directory.
|
|
@@ -127,7 +346,7 @@ or open recovery actions; the plugin does not delete or rewrite the DSH Session.
|
|
|
127
346
|
Open **Dashboard** from a Local/Main or Worktree row menu, its hover action, or the Dashboard icon
|
|
128
347
|
beside the native Session-header actions. The header icon opens it in one click even when the Sidebar
|
|
129
348
|
is collapsed, without expanding the Sidebar. If the target is still loading, the request stays open
|
|
130
|
-
and shows loading
|
|
349
|
+
and shows loading in the center area, with failures announced by toast and retries available in Worktree settings. The Dashboard is a peer page to the native Session content: it
|
|
131
350
|
occupies the center area beside the Sidebar while leaving an already-open right sidebar visible for a
|
|
132
351
|
session-bound target. When the target Worktree has Sessions, opening its Dashboard waits for an initial pending
|
|
133
352
|
Session list to become ready, then keeps the current Session if it belongs to that Worktree; otherwise it
|
|
@@ -146,7 +365,7 @@ Use **Back to session**, Escape, a Sidebar Session, or Worktree mode exit to clo
|
|
|
146
365
|
Sessions, the top-right action becomes **New Session** and starts one in that Worktree. The connected MVP surface
|
|
147
366
|
can show Overview and Sessions, create a Session or Worktree, archive a Worktree, edit instructions, copy a
|
|
148
367
|
path, open the recorded directory in VS Code, and inspect Git & Changes.
|
|
149
|
-
Derived Worktrees
|
|
368
|
+
Derived Worktrees and other marked quick actions remain placeholders. VS Code must be
|
|
150
369
|
installed on the browser's machine and able to access the recorded path; the link does not verify
|
|
151
370
|
launch success.
|
|
152
371
|
|
|
@@ -168,18 +387,22 @@ existing VS Code protocol-link fallback.
|
|
|
168
387
|
|
|
169
388
|
Open the **Git & Changes** tab from a managed Worktree or Main Dashboard. Main reads the current Workspace-root
|
|
170
389
|
commit history directly and prepends an **Uncommitted changes** entry when the root has tracked, staged, unstaged, or
|
|
171
|
-
untracked changes.
|
|
390
|
+
untracked changes. Its baseline selector defaults to **None**, showing HEAD history without a total commit count.
|
|
391
|
+
Choose a local or fetched remote comparison branch to show Baseline summary, the full comparison commit count,
|
|
392
|
+
and ahead/behind facts. Selecting **None** returns to direct history. These choices stay in page memory.
|
|
393
|
+
Direct history selects the first visible target and uses the same
|
|
172
394
|
changed-file and diff panes for either a live working-tree target or a committed history entry. For a managed Worktree with a
|
|
173
395
|
persisted `baseBranch` that differs from the current branch, or with a captured acquisition commit that
|
|
174
396
|
supplies the implicit baseline, the Overview performs one compact, on-demand Git status read through the
|
|
175
397
|
existing `/api` Connection. It shows ahead/behind commit counts plus separate
|
|
176
398
|
committed (baseline-to-HEAD) and uncommitted (live working-tree) line totals; this is an ephemeral
|
|
177
|
-
projection, not a watcher or a Worktree-record field. Main
|
|
399
|
+
projection, not a watcher or a Worktree-record field. Local/Main's comparison is a transient Git-tab choice, so Overview remains
|
|
178
400
|
**Not connected** for ahead/behind facts while its Git tab still exposes Main history. Unavailable or baseline-unselected
|
|
179
|
-
managed views honestly remain **Not connected**. Opening Overview does not load the branch list; the
|
|
180
|
-
|
|
401
|
+
managed views honestly remain **Not connected**. Opening Overview does not load the branch list; mounting the Git tab
|
|
402
|
+
reads history against the saved branch or captured acquisition commit. Branch candidates load only when a
|
|
403
|
+
selector opens; Fetch supplies its returned candidates directly. To replace that baseline, click the pencil icon beside the Base fact to open the branch
|
|
181
404
|
picker: its search field sits permanently above a bounded branch list that shows roughly seven rows and
|
|
182
|
-
scrolls internally, so the dialog keeps one size while you filter. Choose any local branch except the
|
|
405
|
+
scrolls internally, so the dialog keeps one size while you filter. Choose any local or fetched remote branch except the
|
|
183
406
|
current Worktree branch and save.
|
|
184
407
|
The save replaces the persisted `baseBranch` in the plugin sidecar; the saved value becomes the default for
|
|
185
408
|
the Git selector. Once the Git tab is open, changing its selector remains a transient view choice and reloads
|
|
@@ -188,19 +411,22 @@ history, changed files, and diffs without another Worktree-record write. If no u
|
|
|
188
411
|
immutable captured acquisition commit and show that resolved commit as the Base fact; only a Worktree with
|
|
189
412
|
neither a usable saved baseline nor a captured commit stays baseline-unselected and prompts you to choose
|
|
190
413
|
one. When the selected branch has diverged, Git resolves the two heads' common ancestor. The
|
|
191
|
-
Git & Changes view reports Worktree commits after that ancestor as
|
|
192
|
-
as
|
|
414
|
+
Git & Changes view reports Worktree commits after that ancestor as `↑ N` ahead and base-branch commits after it
|
|
415
|
+
as `↓ N` behind; history and file reads remain available. If the two heads have no common ancestor, the
|
|
193
416
|
committed summary falls back to the full tree diff between the base branch tip and Worktree `HEAD`, while
|
|
194
417
|
history uses the Worktree commits not reachable from that base tip.
|
|
195
418
|
With a valid managed Worktree baseline loaded, the Git & Changes tab initially selects **Baseline summary** rather than the
|
|
196
419
|
first commit; changing the baseline branch also returns to that summary. Choose a commit or **Uncommitted
|
|
197
|
-
changes** when you need a narrower target. Main skips this comparison-only summary but presents the same committed history and multi-commit selection behavior, plus a live working-tree target when the
|
|
420
|
+
changes** when you need a narrower target. Local/Main with **None** skips this comparison-only summary but presents the same committed history and multi-commit selection behavior, plus a live working-tree target when the
|
|
198
421
|
Workspace root has changes. Selecting **Uncommitted changes** compares the current Workspace root with `HEAD`; it does not
|
|
199
422
|
create a baseline or write any Git state.
|
|
200
423
|
|
|
201
|
-
The selected local branch is resolved again for each read.
|
|
202
|
-
|
|
203
|
-
|
|
424
|
+
The selected local or fetched remote branch is resolved again for each read. Selectors display short names and
|
|
425
|
+
use the enumerated `refs/heads/...` or `refs/remotes/...` as stable identities. New remote baseline saves retain
|
|
426
|
+
the exact remote ref, so adding or removing a same-named local branch cannot change the baseline.
|
|
427
|
+
Legacy short names are accepted only when unambiguous; an ambiguous saved value reports
|
|
428
|
+
`WORKTREE_STATE_CONFLICT` and requires selecting the intended branch again. Raw commit SHAs, tags, and
|
|
429
|
+
arbitrary revision expressions remain rejected. A selected exact branch that no longer exists shows the honest unavailable state instead of a
|
|
204
430
|
generic Git failure. `baseCommit` is immutable acquisition metadata, is never user-selectable directly, and
|
|
205
431
|
is the implicit baseline whenever no saved branch baseline is usable; creation recovery never overwrites
|
|
206
432
|
it. When a managed Worktree or Main Workspace root has staged, unstaged, or untracked files, the list prepends an
|
|
@@ -214,18 +440,32 @@ one net diff from the same comparison boundary to the current working tree, incl
|
|
|
214
440
|
unstaged, untracked, deleted, and renamed changes. This is a
|
|
215
441
|
fresh on-demand projection rather than a concatenation of two diffs. Clicking a commit shows that
|
|
216
442
|
commit's own diff. For managed Worktrees and Main, turn on **Multi-select commits** in the commits header to pick several committed rows
|
|
217
|
-
and view the exact union of their first-parent deltas; Main has no baseline-summary or working-tree-inclusion controls, and the switch is off by default; turning it off
|
|
443
|
+
and view the exact union of their first-parent deltas; Local/Main with **None** has no baseline-summary or working-tree-inclusion controls, and the switch is off by default; turning it off
|
|
218
444
|
collapses the selection back to the focused commit. The changed-file list
|
|
219
445
|
records the contributing commits, and each selected commit is rendered as its own diff segment; this is
|
|
220
446
|
not an implicit range and does not include unselected commits. The changed-files column header shows the
|
|
221
447
|
aggregate green `+N` and red `-N` totals for the current target, including the Baseline summary, selected
|
|
222
448
|
commits, or Uncommitted changes; binary-only totals show Unknown. The working-tree entry remains mutually
|
|
223
|
-
exclusive with committed multi-selection.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
449
|
+
exclusive with committed multi-selection. **Open in Sidebar** is available in the diff toolbar and on
|
|
450
|
+
existing changed-file rows. It uses the current Session when it belongs to the Dashboard group,
|
|
451
|
+
otherwise the group's first visible Session, and explicitly expands the native right sidebar.
|
|
452
|
+
With no target Session it prompts you to create one; the Overview's empty Session card includes **New Session**.
|
|
453
|
+
File-tree paths, Diff titles and file requests are relative to the Workspace directory, for both Main and
|
|
454
|
+
managed Worktrees. At `/repo/packages/app`, `src/index.ts` names `/repo/packages/app/src/index.ts`;
|
|
455
|
+
repository-root `README.md` appears as `../../README.md`. The view retains changes across the checkout.
|
|
456
|
+
Files outside the target Session cwd show a prompt instead of an invalid resource address.
|
|
457
|
+
|
|
458
|
+
Main shows a local checkout status and omits derived Worktree creation-time and baseline facts.
|
|
459
|
+
Ahead/Behind uses neutral commit counts (`↑ N` / `↓ N`), while added/deleted code lines keep their green/red counts.
|
|
460
|
+
The sticky top bar truncates long references on one line, and only the reference text copies to the clipboard.
|
|
461
|
+
|
|
462
|
+
Managed Worktree and Local/Main history load the newest 50 commits first. Scrolling to the bottom appends
|
|
463
|
+
the next 50 without replacing the current selection or diff; the load-more button also supports keyboard use.
|
|
464
|
+
Comparison views show the full committed total from ahead counts, independent of loaded pages.
|
|
465
|
+
If HEAD or the baseline moves between pages, refresh before continuing; existing rows remain visible.
|
|
466
|
+
The load-more button becomes **Refresh** after this conflict. Commit file and Diff reads also require
|
|
467
|
+
a stable HEAD throughout authorization and reading.
|
|
468
|
+
Multi-selection supports up to 200 selected commits. A changed-file list larger
|
|
229
469
|
than the Git adapter's output bound reports an explicit truncated state instead of a generic error.
|
|
230
470
|
Commit details use
|
|
231
471
|
first-parent comparisons; root commits compare against the empty tree; rename and copy rows retain
|
|
@@ -251,7 +491,7 @@ and refresh behavior remains unchanged.
|
|
|
251
491
|
|
|
252
492
|
The view is read-only and does not provide commit or staging controls. For managed Worktrees, the plugin validates committed
|
|
253
493
|
entries against the selected branch-to-`HEAD` projection and re-reads working-tree paths against a fresh status projection;
|
|
254
|
-
Main validates committed entries against
|
|
494
|
+
Local/Main validates committed entries against HEAD reachability, excluding baseline ancestors when comparing. These endpoints are not generic Git object or file readers. Refresh keeps ready
|
|
255
495
|
content visible while replacement data loads, and late responses for an older commit or file selection
|
|
256
496
|
are ignored.
|
|
257
497
|
|
|
@@ -265,6 +505,25 @@ Instructions stay in the plugin's own data. They are not written to the project
|
|
|
265
505
|
`AGENTS.md` file. Clearing, detaching, cleaning, or forgetting a Worktree stops future injection; archiving
|
|
266
506
|
keeps an active binding and therefore keeps its Worktree instruction effective. Unchanged instruction text is not repeatedly added while its message remains visible.
|
|
267
507
|
|
|
508
|
+
### Resolve errors
|
|
509
|
+
|
|
510
|
+
Failures in the Worktree list, dialogs, and Dashboard appear as native toasts in the current DSH
|
|
511
|
+
language (English or Chinese). Each message explains the problem and how to recover. The list
|
|
512
|
+
keeps its existing content and has no error banner or diagnostics drawer at the top.
|
|
513
|
+
|
|
514
|
+
Use **Errors & recovery** in the toast, or open **Settings → Worktree → Errors & recovery**,
|
|
515
|
+
to read each failure and expand its original
|
|
516
|
+
diagnostics (including Git stderr). Retry reads, recover interrupted Worktree operations, retry
|
|
517
|
+
Session bindings, or open retained Sessions from the same tab. Records remain after the toast
|
|
518
|
+
fades; the list and Git panels have no inline error or retry controls. Closed operation views
|
|
519
|
+
disable their recovery actions; reopen the corresponding view to load its current state.
|
|
520
|
+
Records stay in page memory and clear on reload. **Clear history** keeps active recoveries.
|
|
521
|
+
Dialogs keep input; failed instruction and baseline saves retain drafts. Git setup guidance
|
|
522
|
+
stays in the creation dialog. Matching Git failures share one toast while keeping separate records.
|
|
523
|
+
|
|
524
|
+
The Worktree settings section uses DSH's native tabs, status tags and compact controls. Its
|
|
525
|
+
text, actions and diagnostic details follow the font size selected in **Settings → General**.
|
|
526
|
+
|
|
268
527
|
### Archive or remove a Worktree
|
|
269
528
|
|
|
270
529
|
- **Archive Worktree** is non-destructive. It keeps the directory, bindings, instructions, and
|
|
@@ -293,7 +552,7 @@ keeps an active binding and therefore keeps its Worktree instruction effective.
|
|
|
293
552
|
messages, prompts, transcripts, and history. The plugin never copies or rewrites those values.
|
|
294
553
|
- The plugin's external index stores Worktree paths, branches, sources, lifecycle state, bindings,
|
|
295
554
|
ordering, instructions, acquisition facts, and related metadata. For managed Worktrees, the
|
|
296
|
-
Dashboard Base fact is the persisted `baseBranch`; users can replace it with a local branch other
|
|
555
|
+
Dashboard Base fact is the persisted `baseBranch`; users can replace it with a local or fetched remote branch other
|
|
297
556
|
than the current Worktree branch, and the saved value becomes the Git-tab selector default. The
|
|
298
557
|
immutable acquisition `baseCommit` remains separate and is not rewritten by that edit. The index is
|
|
299
558
|
kept in the DSH host plugin data directory, not in a project directory or DSH's raw data store. It
|
|
@@ -320,9 +579,13 @@ keeps an active binding and therefore keeps its Worktree instruction effective.
|
|
|
320
579
|
(optionally including one fresh baseline-to-working-tree projection), one **Uncommitted changes**
|
|
321
580
|
snapshot, changed files, and one unified diff at a time. These projections combine staged, unstaged,
|
|
322
581
|
and untracked files when requested but are never written back to Git. The Dashboard does not provide
|
|
323
|
-
commit, staging, reset, revert, cherry-pick,
|
|
582
|
+
commit, staging, reset, revert, cherry-pick, push, pull, pull requests, graph lanes,
|
|
324
583
|
or syntax highlighting.
|
|
325
|
-
- Session rows use DSH's native status and relative-time presentation.
|
|
584
|
+
- Session rows and Dashboard cards use DSH's native status and relative-time presentation. The green
|
|
585
|
+
completion dot is DSH's unread reminder for a Session that stops outside the current main view;
|
|
586
|
+
opening that Session or running it again clears the reminder. A cold-start idle Session does not
|
|
587
|
+
count as completed. The reminder remains DSH-owned and is not persisted by this plugin.
|
|
588
|
+
Collapsed Workspace, Main,
|
|
326
589
|
and Worktree groups derive one aggregate `StateDot` from their complete eligible membership (after native blank/archive filtering): waiting
|
|
327
590
|
approval (and other pending-interaction warnings) takes priority over running, and running
|
|
328
591
|
takes priority over completed. Idle Sessions do not contribute a group dot; Worktree health
|
|
@@ -330,10 +593,13 @@ keeps an active binding and therefore keeps its Worktree instruction effective.
|
|
|
330
593
|
remains browser-local; Main remains fixed first, Worktree drag updates only this local order projection,
|
|
331
594
|
and Main drag updates native Workspace order only after DSH accepts it.
|
|
332
595
|
- Active Worktree Sessions may request the named `worktree-full-access` preset after an explicit
|
|
333
|
-
confirmation.
|
|
334
|
-
and
|
|
335
|
-
|
|
336
|
-
|
|
596
|
+
confirmation. The plugin appends this preset while preserving DSH's existing presets, default
|
|
597
|
+
selection, and official Auto review integration. It combines DSH `danger-full-access` with `ask`,
|
|
598
|
+
keeps approval prompts enabled, and does not change network or process policy. If unavailable, the plugin falls back to
|
|
599
|
+
`workspace-write + ask` when possible or reports an unverified, retryable state. Permission
|
|
600
|
+
services may mount late or be replaced: retry uses the currently available capabilities without
|
|
601
|
+
restarting the Worktree Host. A temporarily missing service never grants Full Access, and an
|
|
602
|
+
explicit user restriction is preserved. It cannot exceed the sandbox imposed by the host running DSH.
|
|
337
603
|
- Session-to-Worktree bindings and permission checks compare physical filesystem identity on the Host (`stat`/`realpath`) rather than relying on lexical path equality. This ensures robust compatibility across Windows and macOS path variations (including drive-letter casing, forward/backward slashes, UNC paths, and extended-length prefixes like `\\?\\`). On Windows, sidecar atomic persistence uses file-handle synchronization with best-effort directory sync, and Git CLI integration cleanly handles `NUL` null-device paths and CRLF line endings.
|
|
338
604
|
- Git must be installed and available on `PATH`. A missing Git executable shows install guidance
|
|
339
605
|
and no command block; the plugin does not run setup or installation commands.
|
|
@@ -349,7 +615,9 @@ keeps an active binding and therefore keeps its Worktree instruction effective.
|
|
|
349
615
|
|
|
350
616
|
Worktree mode follows DSH's current interface language. The entry point, tree, menus, dialogs,
|
|
351
617
|
statuses, Dashboard labels, and retry messages are localized in English and Chinese. Workspace
|
|
352
|
-
names, Session titles, branch names,
|
|
618
|
+
names, Session titles, branch names, and paths keep their original values. Errors use localized
|
|
619
|
+
problem and recovery guidance; unknown errors include a support code. Original diagnostics are available in Worktree settings. The plugin
|
|
620
|
+
does not write them to DSH logs.
|
|
353
621
|
|
|
354
622
|
## Development
|
|
355
623
|
|
|
@@ -364,11 +632,14 @@ For architecture, local DSH integration, testing, and contribution details, see:
|
|
|
364
632
|
The focused package commands are:
|
|
365
633
|
|
|
366
634
|
```bash
|
|
635
|
+
pnpm --filter @cerbur/clutch-dsh-worktree lint
|
|
367
636
|
pnpm --filter @cerbur/clutch-dsh-worktree typecheck
|
|
368
637
|
pnpm --filter @cerbur/clutch-dsh-worktree build
|
|
369
638
|
pnpm --filter @cerbur/clutch-dsh-worktree test
|
|
370
639
|
```
|
|
371
640
|
|
|
641
|
+
Lint checks both source and test files. Resolve ESLint errors before committing.
|
|
642
|
+
|
|
372
643
|
The bilingual README structure is checked with:
|
|
373
644
|
|
|
374
645
|
```bash
|