Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/types/src/global-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,11 @@ export const globalSettingsSchema = z.object({
* Used by the worktree feature to open the Roo Code sidebar in a new window.
*/
worktreeAutoOpenPath: z.string().optional(),
/**
* Whether to show the worktree selector in the home screen.
* @default true
*/
showWorktreesInHomeScreen: z.boolean().optional(),
})

export type GlobalSettings = z.infer<typeof globalSettingsSchema>
Expand Down
6 changes: 5 additions & 1 deletion packages/types/src/vscode-extension-host.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ export interface ExtensionMessage {
| "worktreeDefaults"
| "worktreeIncludeStatus"
| "branchWorktreeIncludeResult"
| "folderSelected"
text?: string
payload?: any // eslint-disable-line @typescript-eslint/no-explicit-any
checkpointWarning?: {
Expand All @@ -119,7 +120,6 @@ export interface ExtensionMessage {
| "historyButtonClicked"
| "marketplaceButtonClicked"
| "cloudButtonClicked"
| "worktreesButtonClicked"
| "didBecomeVisible"
| "focusInput"
| "switchTab"
Expand Down Expand Up @@ -257,6 +257,8 @@ export interface ExtensionMessage {
copyProgressBytesCopied?: number
copyProgressTotalBytes?: number
copyProgressItemName?: string
// folderSelected
path?: string
}

export interface OpenAiCodexRateLimitsMessage {
Expand Down Expand Up @@ -332,6 +334,7 @@ export type ExtensionState = Pick<
| "includeCurrentCost"
| "maxGitStatusFiles"
| "requestDelaySeconds"
| "showWorktreesInHomeScreen"
> & {
version: string
clineMessages: ClineMessage[]
Expand Down Expand Up @@ -600,6 +603,7 @@ export interface WebviewMessage {
| "checkBranchWorktreeInclude"
| "createWorktreeInclude"
| "checkoutBranch"
| "browseForWorktreePath"
text?: string
editedMessageContent?: string
tab?: "settings" | "history" | "mcp" | "modes" | "chat" | "marketplace" | "cloud"
Expand Down
1 change: 0 additions & 1 deletion packages/types/src/vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ export const commandIds = [
"popoutButtonClicked",
"cloudButtonClicked",
"settingsButtonClicked",
"worktreesButtonClicked",

"openInNewTab",

Expand Down
6 changes: 0 additions & 6 deletions src/activate/registerCommands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,6 @@ const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOpt
if (!visibleProvider) return
visibleProvider.postMessageToWebview({ type: "action", action: "marketplaceButtonClicked" })
},
worktreesButtonClicked: () => {
const visibleProvider = getVisibleProviderOrLog(outputChannel)
if (!visibleProvider) return
TelemetryService.instance.captureTitleButtonClicked("worktrees")
visibleProvider.postMessageToWebview({ type: "action", action: "worktreesButtonClicked" })
},
newTask: handleNewTask,
setCustomStoragePath: async () => {
const { promptForCustomStoragePath } = await import("../utils/storage")
Expand Down
28 changes: 28 additions & 0 deletions src/core/webview/webviewMessageHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3556,6 +3556,34 @@ export const webviewMessageHandler = async (
break
}

case "browseForWorktreePath": {
try {
const options: vscode.OpenDialogOptions = {
canSelectFiles: false,
canSelectFolders: true,
canSelectMany: false,
openLabel: t("worktrees:selectWorktreeLocation"),
title: t("worktrees:selectFolderForWorktree"),
defaultUri: vscode.workspace.workspaceFolders?.[0]?.uri
? vscode.Uri.joinPath(vscode.workspace.workspaceFolders[0].uri, "..")
: undefined,
}

const result = await vscode.window.showOpenDialog(options)
if (result && result[0]) {
await provider.postMessageToWebview({
type: "folderSelected",
path: result[0].fsPath,
})
}
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error)
provider.log(`Error opening folder picker: ${errorMessage}`)
}

break
}

default: {
// console.log(`Unhandled message type: ${message.type}`)
//
Expand Down
4 changes: 4 additions & 0 deletions src/i18n/locales/ca/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/de/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/en/worktrees.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"selectWorktreeLocation": "Select Worktree Location",
"selectFolderForWorktree": "Select folder for new worktree"
}
4 changes: 4 additions & 0 deletions src/i18n/locales/es/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/fr/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/hi/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/id/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/it/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/ja/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/ko/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/nl/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/pl/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/pt-BR/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/ru/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/tr/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/vi/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/zh-CN/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/i18n/locales/zh-TW/worktrees.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,6 @@
"title": "%command.settings.title%",
"icon": "$(settings-gear)"
},
{
"command": "roo-cline.worktreesButtonClicked",
"title": "%command.worktrees.title%",
"icon": "$(git-branch)"
},
{
"command": "roo-cline.openInNewTab",
"title": "%command.openInNewTab.title%",
Expand Down
1 change: 0 additions & 1 deletion src/package.nls.ca.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.de.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.es.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.fr.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.hi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.id.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.it.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.ja.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"command.openInEditor.title": "Open in Editor",
"command.cloud.title": "Cloud",
"command.settings.title": "Settings",
"command.worktrees.title": "Worktrees",
"command.documentation.title": "Documentation",
"command.openInNewTab.title": "Open In New Tab",
"command.explainCode.title": "Explain Code",
Expand Down
1 change: 0 additions & 1 deletion src/package.nls.ko.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.nl.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.pl.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.pt-BR.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.ru.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.tr.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.vi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.zh-CN.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/package.nls.zh-TW.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions webview-ui/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,11 @@ import { CheckpointRestoreDialog } from "./components/chat/CheckpointRestoreDial
import { DeleteMessageDialog, EditMessageDialog } from "./components/chat/MessageModificationConfirmationDialog"
import ErrorBoundary from "./components/ErrorBoundary"
import { CloudView } from "./components/cloud/CloudView"
import { WorktreesView } from "./components/worktrees"
import { useAddNonInteractiveClickListener } from "./components/ui/hooks/useNonInteractiveClick"
import { TooltipProvider } from "./components/ui/tooltip"
import { STANDARD_TOOLTIP_DELAY } from "./components/ui/standard-tooltip"

type Tab = "settings" | "history" | "chat" | "marketplace" | "cloud" | "worktrees"
type Tab = "settings" | "history" | "chat" | "marketplace" | "cloud"

interface DeleteMessageDialogState {
isOpen: boolean
Expand All @@ -51,7 +50,6 @@ const tabsByMessageAction: Partial<Record<NonNullable<ExtensionMessage["action"]
historyButtonClicked: "history",
marketplaceButtonClicked: "marketplace",
cloudButtonClicked: "cloud",
worktreesButtonClicked: "worktrees",
}

const App = () => {
Expand Down Expand Up @@ -247,7 +245,6 @@ const App = () => {
organizations={cloudOrganizations}
/>
)}
{tab === "worktrees" && <WorktreesView onDone={() => switchTab("chat")} />}
<ChatView
ref={chatViewRef}
isHidden={tab !== "chat"}
Expand Down
Loading
Loading