mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
ux: Updates to CloudView (#9776)
* refactor: remove TabHeader and onDone callback from CloudView - Removed TabHeader component from CloudView as it is no longer needed - Removed onDone prop from CloudView component definition and usage - Updated all test files to reflect the removal of onDone prop - Kept Button import that was accidentally removed initially * Updates upsell copy to reflect today's product * Update webview-ui/src/components/cloud/CloudView.tsx Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/ko/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/zh-CN/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Test fixes --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
This commit is contained in:
parent
873a763ea7
commit
18117f0723
25 changed files with 211 additions and 239 deletions
|
|
@ -263,7 +263,6 @@ const App = () => {
|
|||
isAuthenticated={cloudIsAuthenticated}
|
||||
cloudApiUrl={cloudApiUrl}
|
||||
organizations={cloudOrganizations}
|
||||
onDone={() => switchTab("chat")}
|
||||
/>
|
||||
)}
|
||||
<ChatView
|
||||
|
|
|
|||
|
|
@ -83,12 +83,8 @@ vi.mock("@src/components/marketplace/MarketplaceView", () => ({
|
|||
}))
|
||||
|
||||
vi.mock("@src/components/cloud/CloudView", () => ({
|
||||
CloudView: function CloudView({ onDone }: { onDone: () => void }) {
|
||||
return (
|
||||
<div data-testid="cloud-view" onClick={onDone}>
|
||||
Cloud View
|
||||
</div>
|
||||
)
|
||||
CloudView: function CloudView() {
|
||||
return <div data-testid="cloud-view">Cloud View</div>
|
||||
},
|
||||
}))
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { useTranslation } from "react-i18next"
|
||||
import { Dialog, DialogContent, DialogHeader, Button } from "@/components/ui"
|
||||
import RooHero from "../welcome/RooHero"
|
||||
import { CircleDollarSign, FileStack, Router, Share } from "lucide-react"
|
||||
import { ArrowRight, Brain, Cable, CircleDollarSign, FileStack, Router, Users2 } from "lucide-react"
|
||||
import { DialogTitle } from "@radix-ui/react-dialog"
|
||||
|
||||
interface CloudUpsellDialogProps {
|
||||
|
|
@ -19,21 +19,29 @@ export const renderCloudBenefitsContent = (t: any) => {
|
|||
</div>
|
||||
<h1 className="text-xl font-bold text-vscode-foreground">{t("cloud:cloudBenefitsTitle")}</h1>
|
||||
<div className="text-lg">
|
||||
<ul className="text-vscode-descriptionForeground space-y-4 my-8">
|
||||
<ul className="text-vscode-descriptionForeground space-y-2 my-8">
|
||||
<li className="flex items-start gap-2">
|
||||
<Router className="size-4 mt-0.5 shrink-0" />
|
||||
<Brain className="size-4 mt-1 shrink-0" />
|
||||
{t("cloud:cloudBenefitProvider")}
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<Users2 className="size-4 mt-1 shrink-0" />
|
||||
{t("cloud:cloudBenefitCloudAgents")}
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<Cable className="size-4 mt-1 shrink-0" />
|
||||
{t("cloud:cloudBenefitTriggers")}
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<Router className="size-4 mt-1 shrink-0" />
|
||||
{t("cloud:cloudBenefitWalkaway")}
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<Share className="size-4 mt-0.5 shrink-0" />
|
||||
{t("cloud:cloudBenefitSharing")}
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<CircleDollarSign className="size-4 mt-0.5 shrink-0" />
|
||||
<CircleDollarSign className="size-4 mt-1 shrink-0" />
|
||||
{t("cloud:cloudBenefitMetrics")}
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<FileStack className="size-4 mt-0.5 shrink-0" />
|
||||
<FileStack className="size-4 mt-1 shrink-0" />
|
||||
{t("cloud:cloudBenefitHistory")}
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -56,8 +64,9 @@ export const CloudUpsellDialog = ({ open, onOpenChange, onConnect }: CloudUpsell
|
|||
{renderCloudBenefitsContent(t)}
|
||||
|
||||
<div className="flex flex-col gap-4">
|
||||
<Button onClick={onConnect} className="w-full">
|
||||
<Button variant="primary" onClick={onConnect} className="w-full">
|
||||
{t("cloud:connect")}
|
||||
<ArrowRight />
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ import { vscode } from "@src/utils/vscode"
|
|||
import { telemetryClient } from "@src/utils/TelemetryClient"
|
||||
import { ToggleSwitch } from "@/components/ui/toggle-switch"
|
||||
import { renderCloudBenefitsContent } from "./CloudUpsellDialog"
|
||||
import { CircleAlert, Info, Lock, TriangleAlert } from "lucide-react"
|
||||
import { ArrowRight, CircleAlert, Info, Lock, TriangleAlert } from "lucide-react"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { Tab, TabContent, TabHeader } from "../common/Tab"
|
||||
import { Tab, TabContent } from "../common/Tab"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { OrganizationSwitcher } from "./OrganizationSwitcher"
|
||||
import { StandardTooltip } from "../ui"
|
||||
|
|
@ -23,11 +23,10 @@ type CloudViewProps = {
|
|||
userInfo: CloudUserInfo | null
|
||||
isAuthenticated: boolean
|
||||
cloudApiUrl?: string
|
||||
onDone: () => void
|
||||
organizations?: CloudOrganizationMembership[]
|
||||
}
|
||||
|
||||
export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, organizations = [] }: CloudViewProps) => {
|
||||
export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, organizations = [] }: CloudViewProps) => {
|
||||
const { t } = useAppTranslation()
|
||||
const {
|
||||
remoteControlEnabled,
|
||||
|
|
@ -159,11 +158,6 @@ export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, orga
|
|||
|
||||
return (
|
||||
<Tab>
|
||||
<TabHeader className="flex justify-between items-center">
|
||||
<h3 className="text-vscode-foreground m-0">{isAuthenticated && t("cloud:title")}</h3>
|
||||
<Button onClick={onDone}>{t("settings:common.done")}</Button>
|
||||
</TabHeader>
|
||||
|
||||
<TabContent className="pt-10">
|
||||
{isAuthenticated ? (
|
||||
<>
|
||||
|
|
@ -271,12 +265,13 @@ export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, orga
|
|||
</>
|
||||
) : (
|
||||
<>
|
||||
<div className="flex flex-col items-start gap-4 px-8 max-w-100">
|
||||
<div className="flex flex-col items-start gap-4 px-4 max-w-lg">
|
||||
<div className={cn(authInProgress && "opacity-50")}>{renderCloudBenefitsContent(t)}</div>
|
||||
|
||||
{!authInProgress && (
|
||||
<Button variant="primary" onClick={handleConnectClick} className="w-full">
|
||||
<Button variant="primary" onClick={handleConnectClick}>
|
||||
{t("cloud:connect")}
|
||||
<ArrowRight />
|
||||
</Button>
|
||||
)}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,12 +7,14 @@ vi.mock("react-i18next", () => ({
|
|||
useTranslation: () => ({
|
||||
t: (key: string) => {
|
||||
const translations: Record<string, string> = {
|
||||
"cloud:cloudBenefitsTitle": "Connect to Roo Cloud",
|
||||
"cloud:cloudBenefitSharing": "Share tasks with your team",
|
||||
"cloud:cloudBenefitHistory": "Access conversation history",
|
||||
"cloud:cloudBenefitMetrics": "View usage metrics",
|
||||
"cloud:cloudBenefitWalkaway": "Walk away with your code",
|
||||
"cloud:connect": "Connect to Cloud",
|
||||
"cloud:cloudBenefitsTitle": "Try Roo Code Cloud",
|
||||
"cloud:cloudBenefitProvider": "Access free and paid models that work great with Roo",
|
||||
"cloud:cloudBenefitCloudAgents": "Give tasks to autonomous Cloud agents",
|
||||
"cloud:cloudBenefitTriggers": "Get code reviews on Github, start tasks from Slack and more",
|
||||
"cloud:cloudBenefitWalkaway": "Follow and control tasks from anywhere (including your phone)",
|
||||
"cloud:cloudBenefitHistory": "Access your task history from anywhere and share them with others",
|
||||
"cloud:cloudBenefitMetrics": "Get a holistic view of your token consumption",
|
||||
"cloud:connect": "Get started",
|
||||
}
|
||||
return translations[key] || key
|
||||
},
|
||||
|
|
@ -30,32 +32,37 @@ describe("CloudUpsellDialog", () => {
|
|||
it("renders dialog when open", () => {
|
||||
render(<CloudUpsellDialog open={true} onOpenChange={mockOnOpenChange} onConnect={mockOnConnect} />)
|
||||
|
||||
expect(screen.getByText("Connect to Roo Cloud")).toBeInTheDocument()
|
||||
expect(screen.getByText("Share tasks with your team")).toBeInTheDocument()
|
||||
expect(screen.getByText("Access conversation history")).toBeInTheDocument()
|
||||
expect(screen.getByText("View usage metrics")).toBeInTheDocument()
|
||||
expect(screen.getByRole("button", { name: "Connect to Cloud" })).toBeInTheDocument()
|
||||
expect(screen.getByText("Try Roo Code Cloud")).toBeInTheDocument()
|
||||
expect(screen.getByText("Access free and paid models that work great with Roo")).toBeInTheDocument()
|
||||
expect(screen.getByText("Give tasks to autonomous Cloud agents")).toBeInTheDocument()
|
||||
expect(screen.getByText("Get code reviews on Github, start tasks from Slack and more")).toBeInTheDocument()
|
||||
expect(screen.getByText("Follow and control tasks from anywhere (including your phone)")).toBeInTheDocument()
|
||||
expect(
|
||||
screen.getByText("Access your task history from anywhere and share them with others"),
|
||||
).toBeInTheDocument()
|
||||
expect(screen.getByText("Get a holistic view of your token consumption")).toBeInTheDocument()
|
||||
expect(screen.getByRole("button", { name: "Get started" })).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it("does not render dialog when closed", () => {
|
||||
render(<CloudUpsellDialog open={false} onOpenChange={mockOnOpenChange} onConnect={mockOnConnect} />)
|
||||
|
||||
expect(screen.queryByText("Connect to Roo Cloud")).not.toBeInTheDocument()
|
||||
expect(screen.queryByText("Try Roo Code Cloud")).not.toBeInTheDocument()
|
||||
})
|
||||
|
||||
it("calls onConnect when connect button is clicked", () => {
|
||||
render(<CloudUpsellDialog open={true} onOpenChange={mockOnOpenChange} onConnect={mockOnConnect} />)
|
||||
|
||||
const connectButton = screen.getByRole("button", { name: "Connect to Cloud" })
|
||||
const connectButton = screen.getByRole("button", { name: "Get started" })
|
||||
fireEvent.click(connectButton)
|
||||
|
||||
expect(mockOnConnect).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
it("renders all three benefits as list items", () => {
|
||||
it("renders all benefits as list items", () => {
|
||||
render(<CloudUpsellDialog open={true} onOpenChange={mockOnOpenChange} onConnect={mockOnConnect} />)
|
||||
|
||||
const listItems = screen.getAllByRole("listitem")
|
||||
expect(listItems).toHaveLength(4)
|
||||
expect(listItems).toHaveLength(6)
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -10,12 +10,15 @@ vi.mock("@src/i18n/TranslationContext", () => ({
|
|||
"cloud:title": "Cloud",
|
||||
"settings:common.done": "Done",
|
||||
"cloud:signIn": "Connect to Roo Code Cloud",
|
||||
"cloud:cloudBenefitsTitle": "Connect to Roo Code Cloud",
|
||||
"cloud:cloudBenefitSharing": "Share tasks with others",
|
||||
"cloud:cloudBenefitHistory": "Access your task history",
|
||||
"cloud:cloudBenefitsTitle": "Try Roo Code Cloud",
|
||||
"cloud:cloudBenefitProvider": "Access free and paid models that work great with Roo",
|
||||
"cloud:cloudBenefitCloudAgents": "Give tasks to autonomous Cloud agents",
|
||||
"cloud:cloudBenefitTriggers": "Get code reviews on Github, start tasks from Slack and more",
|
||||
"cloud:cloudBenefitWalkaway": "Follow and control tasks from anywhere (including your phone)",
|
||||
"cloud:cloudBenefitHistory": "Access your task history from anywhere and share them with others",
|
||||
"cloud:cloudBenefitMetrics": "Get a holistic view of your token consumption",
|
||||
"cloud:logOut": "Log out",
|
||||
"cloud:connect": "Connect Now",
|
||||
"cloud:connect": "Get started",
|
||||
"cloud:visitCloudWebsite": "Visit Roo Code Cloud",
|
||||
"cloud:taskSync": "Task sync",
|
||||
"cloud:taskSyncDescription": "Sync your tasks for viewing and sharing on Roo Code Cloud",
|
||||
|
|
@ -69,23 +72,21 @@ Object.defineProperty(window, "IMAGES_BASE_URI", {
|
|||
|
||||
describe("CloudView", () => {
|
||||
it("should display benefits when user is not authenticated", () => {
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={null}
|
||||
isAuthenticated={false}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={null} isAuthenticated={false} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the benefits section is displayed
|
||||
expect(screen.getByRole("heading", { name: "Connect to Roo Code Cloud" })).toBeInTheDocument()
|
||||
expect(screen.getByText("Share tasks with others")).toBeInTheDocument()
|
||||
expect(screen.getByText("Access your task history")).toBeInTheDocument()
|
||||
expect(screen.getByRole("heading", { name: "Try Roo Code Cloud" })).toBeInTheDocument()
|
||||
expect(screen.getByText("Access free and paid models that work great with Roo")).toBeInTheDocument()
|
||||
expect(screen.getByText("Give tasks to autonomous Cloud agents")).toBeInTheDocument()
|
||||
expect(screen.getByText("Get code reviews on Github, start tasks from Slack and more")).toBeInTheDocument()
|
||||
expect(screen.getByText("Follow and control tasks from anywhere (including your phone)")).toBeInTheDocument()
|
||||
expect(
|
||||
screen.getByText("Access your task history from anywhere and share them with others"),
|
||||
).toBeInTheDocument()
|
||||
expect(screen.getByText("Get a holistic view of your token consumption")).toBeInTheDocument()
|
||||
|
||||
// Check that the connect button is also present
|
||||
expect(screen.getByText("Connect Now")).toBeInTheDocument()
|
||||
expect(screen.getByRole("button", { name: "Get started" })).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it("should not display benefits when user is authenticated", () => {
|
||||
|
|
@ -94,21 +95,20 @@ describe("CloudView", () => {
|
|||
email: "test@example.com",
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the benefits section is NOT displayed
|
||||
expect(screen.queryByText("Access free and paid models that work great with Roo")).not.toBeInTheDocument()
|
||||
expect(screen.queryByText("Give tasks to autonomous Cloud agents")).not.toBeInTheDocument()
|
||||
expect(
|
||||
screen.queryByText("Follow and control tasks from anywhere with Roomote Control"),
|
||||
screen.queryByText("Get code reviews on Github, start tasks from Slack and more"),
|
||||
).not.toBeInTheDocument()
|
||||
expect(
|
||||
screen.queryByText("Follow and control tasks from anywhere (including your phone)"),
|
||||
).not.toBeInTheDocument()
|
||||
expect(
|
||||
screen.queryByText("Access your task history from anywhere and share them with others"),
|
||||
).not.toBeInTheDocument()
|
||||
expect(screen.queryByText("Share tasks with others")).not.toBeInTheDocument()
|
||||
expect(screen.queryByText("Access your task history")).not.toBeInTheDocument()
|
||||
expect(screen.queryByText("Get a holistic view of your token consumption")).not.toBeInTheDocument()
|
||||
|
||||
// Check that user info is displayed instead
|
||||
|
|
@ -123,14 +123,7 @@ describe("CloudView", () => {
|
|||
extensionBridgeEnabled: true,
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the remote control toggle is displayed
|
||||
expect(screen.getByTestId("remote-control-toggle")).toBeInTheDocument()
|
||||
|
|
@ -147,14 +140,7 @@ describe("CloudView", () => {
|
|||
extensionBridgeEnabled: false,
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the remote control toggle is NOT displayed
|
||||
expect(screen.queryByTestId("remote-control-toggle")).not.toBeInTheDocument()
|
||||
|
|
@ -172,14 +158,7 @@ describe("CloudView", () => {
|
|||
extensionBridgeEnabled: true, // Bridge enabled but roomote control disabled
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the remote control toggle is NOT displayed
|
||||
expect(screen.queryByTestId("remote-control-toggle")).not.toBeInTheDocument()
|
||||
|
|
@ -202,14 +181,7 @@ describe("CloudView", () => {
|
|||
extensionBridgeEnabled: true,
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the remote control toggle IS displayed for organization users
|
||||
// (The ClineProvider would set featureRoomoteControlEnabled to true for org users)
|
||||
|
|
@ -226,14 +198,7 @@ describe("CloudView", () => {
|
|||
email: "test@example.com",
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the cloud URL pill is NOT displayed for production URL
|
||||
expect(screen.queryByText(/Roo Code Cloud URL:/)).not.toBeInTheDocument()
|
||||
|
|
@ -245,14 +210,7 @@ describe("CloudView", () => {
|
|||
email: "test@example.com",
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://staging.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://staging.roocode.com" />)
|
||||
|
||||
// Check that the cloud URL pill is displayed with the staging URL
|
||||
expect(screen.getByText(/Roo Code Cloud URL:/)).toBeInTheDocument()
|
||||
|
|
@ -260,14 +218,7 @@ describe("CloudView", () => {
|
|||
})
|
||||
|
||||
it("should display cloud URL pill for non-authenticated users when not pointing to production", () => {
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={null}
|
||||
isAuthenticated={false}
|
||||
cloudApiUrl="https://dev.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={null} isAuthenticated={false} cloudApiUrl="https://dev.roocode.com" />)
|
||||
|
||||
// Check that the cloud URL pill is displayed even when not authenticated
|
||||
expect(screen.getByText(/Roo Code Cloud URL:/)).toBeInTheDocument()
|
||||
|
|
@ -280,7 +231,7 @@ describe("CloudView", () => {
|
|||
email: "test@example.com",
|
||||
}
|
||||
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} onDone={() => {}} />)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} />)
|
||||
|
||||
// Check that the cloud URL pill is NOT displayed when cloudApiUrl is undefined
|
||||
expect(screen.queryByText(/Roo Code Cloud URL:/)).not.toBeInTheDocument()
|
||||
|
|
@ -294,14 +245,7 @@ describe("CloudView", () => {
|
|||
organizationName: "Test Organization",
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the task sync toggle is disabled for organization users
|
||||
const taskSyncToggle = screen.getByTestId("task-sync-toggle")
|
||||
|
|
@ -326,14 +270,7 @@ describe("CloudView", () => {
|
|||
// No organizationId - regular user
|
||||
}
|
||||
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the task sync toggle is enabled for non-organization users
|
||||
const taskSyncToggle = screen.getByTestId("task-sync-toggle")
|
||||
|
|
@ -353,14 +290,7 @@ describe("CloudView", () => {
|
|||
}
|
||||
|
||||
// Test with task sync enabled
|
||||
render(
|
||||
<CloudView
|
||||
userInfo={mockUserInfo}
|
||||
isAuthenticated={true}
|
||||
cloudApiUrl="https://app.roocode.com"
|
||||
onDone={() => {}}
|
||||
/>,
|
||||
)
|
||||
render(<CloudView userInfo={mockUserInfo} isAuthenticated={true} cloudApiUrl="https://app.roocode.com" />)
|
||||
|
||||
// Check that the toggle shows the current state (enabled in this case)
|
||||
const taskSyncToggle = screen.getByTestId("task-sync-toggle")
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { cva, type VariantProps } from "class-variance-authority"
|
|||
import { cn } from "@/lib/utils"
|
||||
|
||||
const buttonVariants = cva(
|
||||
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer active:opacity-80",
|
||||
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer active:opacity-80",
|
||||
{
|
||||
variants: {
|
||||
variant: {
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/ca/cloud.json
generated
12
webview-ui/src/i18n/locales/ca/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Tancar sessió",
|
||||
"testApiAuthentication": "Provar autenticació d'API",
|
||||
"signIn": "Connecta't a Roo Code Cloud",
|
||||
"connect": "Connecta",
|
||||
"cloudBenefitsTitle": "Connecta't a Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Segueix i controla tasques des de qualsevol lloc amb Roomote Control",
|
||||
"cloudBenefitSharing": "Comparteix tasques amb altres",
|
||||
"cloudBenefitHistory": "Accedeix al teu historial de tasques",
|
||||
"connect": "Comença",
|
||||
"cloudBenefitsTitle": "Prova Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Accedeix a models gratuïts i de pagament que funcionen molt bé amb Roo",
|
||||
"cloudBenefitCloudAgents": "Dona tasques a agents autònoms al núvol",
|
||||
"cloudBenefitTriggers": "Obtén revisions de codi a Github, inicia tasques des de Slack i més",
|
||||
"cloudBenefitWalkaway": "Segueix i controla tasques des de qualsevol lloc (inclòs el telèfon)",
|
||||
"cloudBenefitHistory": "Accedeix al teu historial de tasques des de qualsevol lloc i comparteix-les amb altres",
|
||||
"cloudBenefitMetrics": "Obtén una visió holística del teu consum de tokens",
|
||||
"visitCloudWebsite": "Visita Roo Code Cloud",
|
||||
"taskSync": "Sincronització de tasques",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/de/cloud.json
generated
12
webview-ui/src/i18n/locales/de/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Abmelden",
|
||||
"testApiAuthentication": "API-Authentifizierung testen",
|
||||
"signIn": "Mit Roo Code Cloud verbinden",
|
||||
"connect": "Jetzt verbinden",
|
||||
"cloudBenefitsTitle": "Mit Roo Code Cloud verbinden",
|
||||
"cloudBenefitWalkaway": "Verfolge und steuere Aufgaben von überall mit Roomote Control",
|
||||
"cloudBenefitSharing": "Aufgaben mit anderen teilen",
|
||||
"cloudBenefitHistory": "Auf deinen Aufgabenverlauf zugreifen",
|
||||
"connect": "Loslegen",
|
||||
"cloudBenefitsTitle": "Roo Code Cloud ausprobieren",
|
||||
"cloudBenefitProvider": "Zugriff auf kostenlose und kostenpflichtige Modelle, die hervorragend mit Roo funktionieren",
|
||||
"cloudBenefitCloudAgents": "Aufgaben an autonome Cloud-Agenten übergeben",
|
||||
"cloudBenefitTriggers": "Code-Reviews auf Github erhalten, Aufgaben aus Slack starten und mehr",
|
||||
"cloudBenefitWalkaway": "Aufgaben von überall verfolgen und steuern (auch vom Handy)",
|
||||
"cloudBenefitHistory": "Von überall auf deinen Aufgabenverlauf zugreifen und ihn mit anderen teilen",
|
||||
"cloudBenefitMetrics": "Erhalte einen ganzheitlichen Überblick über deinen Token-Verbrauch",
|
||||
"visitCloudWebsite": "Roo Code Cloud besuchen",
|
||||
"taskSync": "Aufgabensynchronisierung",
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@
|
|||
"signIn": "Connect to Roo Code Cloud",
|
||||
"connect": "Get started",
|
||||
"cloudBenefitsTitle": "Try Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Access free and paid models that work great with Roo",
|
||||
"cloudBenefitCloudAgents": "Give tasks to autonomous Cloud agents",
|
||||
"cloudBenefitTriggers": "Get code reviews on Github, start tasks from Slack and more",
|
||||
"cloudBenefitWalkaway": "Follow and control tasks from anywhere (including your phone)",
|
||||
"cloudBenefitSharing": "Share tasks with others",
|
||||
"cloudBenefitHistory": "Access your task history from anywhere",
|
||||
"cloudBenefitHistory": "Access your task history from anywhere and share them with others",
|
||||
"cloudBenefitMetrics": "Get a holistic view of your token consumption",
|
||||
"visitCloudWebsite": "Visit Roo Code Cloud",
|
||||
"taskSync": "Task sync",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/es/cloud.json
generated
12
webview-ui/src/i18n/locales/es/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Cerrar sesión",
|
||||
"testApiAuthentication": "Probar autenticación de API",
|
||||
"signIn": "Conectar a Roo Code Cloud",
|
||||
"connect": "Conectar ahora",
|
||||
"cloudBenefitsTitle": "Conectar a Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Sigue y controla tareas desde cualquier lugar con Roomote Control",
|
||||
"cloudBenefitSharing": "Comparte tareas con otros",
|
||||
"cloudBenefitHistory": "Accede a tu historial de tareas",
|
||||
"connect": "Empezar",
|
||||
"cloudBenefitsTitle": "Prueba Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Accede a modelos gratuitos y de pago que funcionan genial con Roo",
|
||||
"cloudBenefitCloudAgents": "Da tareas a agentes autónomos en la nube",
|
||||
"cloudBenefitTriggers": "Obtén revisiones de código en Github, inicia tareas desde Slack y más",
|
||||
"cloudBenefitWalkaway": "Sigue y controla tareas desde cualquier lugar (incluido tu teléfono)",
|
||||
"cloudBenefitHistory": "Accede a tu historial de tareas desde cualquier lugar y compártelas con otros",
|
||||
"cloudBenefitMetrics": "Obtén una visión holística de tu consumo de tokens",
|
||||
"visitCloudWebsite": "Visitar Roo Code Cloud",
|
||||
"taskSync": "Sincronización de tareas",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/fr/cloud.json
generated
12
webview-ui/src/i18n/locales/fr/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Déconnexion",
|
||||
"testApiAuthentication": "Tester l'authentification API",
|
||||
"signIn": "Se connecter à Roo Code Cloud",
|
||||
"connect": "Se connecter maintenant",
|
||||
"cloudBenefitsTitle": "Se connecter à Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Suivez et contrôlez les tâches depuis n'importe où avec Roomote Control",
|
||||
"cloudBenefitSharing": "Partagez des tâches avec d'autres",
|
||||
"cloudBenefitHistory": "Accédez à votre historique de tâches",
|
||||
"connect": "Commencer",
|
||||
"cloudBenefitsTitle": "Essayez Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Accédez à des modèles gratuits et payants qui fonctionnent parfaitement avec Roo",
|
||||
"cloudBenefitCloudAgents": "Donnez des tâches à des agents Cloud autonomes",
|
||||
"cloudBenefitTriggers": "Obtenez des revues de code sur Github, lancez des tâches depuis Slack et plus encore",
|
||||
"cloudBenefitWalkaway": "Suivez et contrôlez les tâches de n'importe où (y compris votre téléphone)",
|
||||
"cloudBenefitHistory": "Accédez à votre historique de tâches de n'importe où et partagez-les avec d'autres",
|
||||
"cloudBenefitMetrics": "Obtenez une vue holistique de votre consommation de tokens",
|
||||
"visitCloudWebsite": "Visiter Roo Code Cloud",
|
||||
"taskSync": "Synchronisation des tâches",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/hi/cloud.json
generated
12
webview-ui/src/i18n/locales/hi/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "लॉग आउट",
|
||||
"testApiAuthentication": "API प्रमाणीकरण का परीक्षण करें",
|
||||
"signIn": "Roo Code Cloud से कनेक्ट करें",
|
||||
"connect": "अभी कनेक्ट करें",
|
||||
"cloudBenefitsTitle": "Roo Code Cloud से कनेक्ट करें",
|
||||
"cloudBenefitWalkaway": "Roomote Control के साथ कहीं से भी कार्यों को फॉलो और नियंत्रित करें",
|
||||
"cloudBenefitSharing": "दूसरों के साथ कार्य साझा करें",
|
||||
"cloudBenefitHistory": "अपने कार्य इतिहास तक पहुंचें",
|
||||
"connect": "शुरू करें",
|
||||
"cloudBenefitsTitle": "Roo Code Cloud आज़माएं",
|
||||
"cloudBenefitProvider": "मुफ़्त और सशुल्क मॉडल एक्सेस करें जो Roo के साथ बढ़िया काम करते हैं",
|
||||
"cloudBenefitCloudAgents": "स्वायत्त क्लाउड एजेंटों को कार्य दें",
|
||||
"cloudBenefitTriggers": "Github पर कोड समीक्षाएं प्राप्त करें, Slack से कार्य शुरू करें और बहुत कुछ",
|
||||
"cloudBenefitWalkaway": "कहीं से भी कार्यों का पालन और नियंत्रण करें (अपने फोन सहित)",
|
||||
"cloudBenefitHistory": "कहीं से भी अपने कार्य इतिहास तक पहुंचें और उन्हें दूसरों के साथ साझा करें",
|
||||
"cloudBenefitMetrics": "अपने टोकन उपभोग का समग्र दृश्य प्राप्त करें",
|
||||
"visitCloudWebsite": "Roo Code Cloud पर जाएं",
|
||||
"taskSync": "कार्य सिंक",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/id/cloud.json
generated
12
webview-ui/src/i18n/locales/id/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Keluar",
|
||||
"testApiAuthentication": "Uji Autentikasi API",
|
||||
"signIn": "Hubungkan ke Roo Code Cloud",
|
||||
"connect": "Hubungkan Sekarang",
|
||||
"cloudBenefitsTitle": "Hubungkan ke Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Ikuti dan kontrol tugas dari mana saja dengan Roomote Control",
|
||||
"cloudBenefitSharing": "Bagikan tugas dengan orang lain",
|
||||
"cloudBenefitHistory": "Akses riwayat tugas Anda",
|
||||
"connect": "Mulai",
|
||||
"cloudBenefitsTitle": "Coba Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Akses model gratis dan berbayar yang bekerja sangat baik dengan Roo",
|
||||
"cloudBenefitCloudAgents": "Berikan tugas kepada agen Cloud otonom",
|
||||
"cloudBenefitTriggers": "Dapatkan ulasan kode di Github, mulai tugas dari Slack, dan lainnya",
|
||||
"cloudBenefitWalkaway": "Ikuti dan kontrol tugas dari mana saja (termasuk ponsel Anda)",
|
||||
"cloudBenefitHistory": "Akses riwayat tugas Anda dari mana saja dan bagikan dengan orang lain",
|
||||
"cloudBenefitMetrics": "Dapatkan tampilan holistik konsumsi token Anda",
|
||||
"visitCloudWebsite": "Kunjungi Roo Code Cloud",
|
||||
"taskSync": "Sinkronisasi tugas",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/it/cloud.json
generated
12
webview-ui/src/i18n/locales/it/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Disconnetti",
|
||||
"testApiAuthentication": "Verifica autenticazione API",
|
||||
"signIn": "Connetti a Roo Code Cloud",
|
||||
"connect": "Connetti ora",
|
||||
"cloudBenefitsTitle": "Connetti a Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Segui e controlla le attività da qualsiasi luogo con Roomote Control",
|
||||
"cloudBenefitSharing": "Condividi attività con altri",
|
||||
"cloudBenefitHistory": "Accedi alla cronologia delle tue attività",
|
||||
"connect": "Inizia",
|
||||
"cloudBenefitsTitle": "Prova Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Accedi a modelli gratuiti e a pagamento che funzionano perfettamente con Roo",
|
||||
"cloudBenefitCloudAgents": "Assegna attività ad agenti Cloud autonomi",
|
||||
"cloudBenefitTriggers": "Ottieni revisioni del codice su Github, avvia attività da Slack e altro",
|
||||
"cloudBenefitWalkaway": "Segui e controlla le attività da qualsiasi luogo (incluso il tuo telefono)",
|
||||
"cloudBenefitHistory": "Accedi alla cronologia delle tue attività da qualsiasi luogo e condividile con altri",
|
||||
"cloudBenefitMetrics": "Ottieni una visione olistica del tuo consumo di token",
|
||||
"visitCloudWebsite": "Visita Roo Code Cloud",
|
||||
"taskSync": "Sincronizzazione attività",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/ja/cloud.json
generated
12
webview-ui/src/i18n/locales/ja/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "ログアウト",
|
||||
"testApiAuthentication": "API認証をテスト",
|
||||
"signIn": "Roo Code Cloud に接続",
|
||||
"connect": "今すぐ接続",
|
||||
"cloudBenefitsTitle": "Roo Code Cloudに接続",
|
||||
"cloudBenefitWalkaway": "Roomote Controlでどこからでもタスクをフォローし制御",
|
||||
"cloudBenefitSharing": "他の人とタスクを共有",
|
||||
"cloudBenefitHistory": "タスク履歴にアクセス",
|
||||
"connect": "始める",
|
||||
"cloudBenefitsTitle": "Roo Code Cloudを試す",
|
||||
"cloudBenefitProvider": "Rooと相性の良い無料および有料モデルにアクセス",
|
||||
"cloudBenefitCloudAgents": "自律型クラウドエージェントにタスクを依頼",
|
||||
"cloudBenefitTriggers": "Githubでコードレビューを取得、Slackからタスクを開始など",
|
||||
"cloudBenefitWalkaway": "どこからでも(スマートフォンを含む)タスクを追跡および制御",
|
||||
"cloudBenefitHistory": "どこからでもタスク履歴にアクセスし、他の人と共有",
|
||||
"cloudBenefitMetrics": "トークン消費の全体像を把握",
|
||||
"visitCloudWebsite": "Roo Code Cloudを訪問",
|
||||
"taskSync": "タスク同期",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/ko/cloud.json
generated
12
webview-ui/src/i18n/locales/ko/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "로그아웃",
|
||||
"testApiAuthentication": "API 인증 테스트",
|
||||
"signIn": "Roo Code Cloud에 연결",
|
||||
"connect": "지금 연결",
|
||||
"cloudBenefitsTitle": "Roo Code Cloud에 연결",
|
||||
"cloudBenefitWalkaway": "Roomote Control로 어디서나 작업을 팔로우하고 제어하세요",
|
||||
"cloudBenefitSharing": "다른 사람과 작업 공유",
|
||||
"cloudBenefitHistory": "작업 기록에 액세스",
|
||||
"connect": "시작하기",
|
||||
"cloudBenefitsTitle": "Roo Code Cloud 체험하기",
|
||||
"cloudBenefitProvider": "Roo와 잘 작동하는 무료 및 유료 모델에 액세스하세요",
|
||||
"cloudBenefitCloudAgents": "자율 클라우드 에이전트에게 작업 부여",
|
||||
"cloudBenefitTriggers": "GitHub에서 코드 리뷰 받기, Slack에서 작업 시작 등",
|
||||
"cloudBenefitWalkaway": "어디서나(휴대전화 포함) 작업을 팔로우하고 제어하세요",
|
||||
"cloudBenefitHistory": "어디서나 작업 기록에 액세스하고 다른 사람과 공유하세요",
|
||||
"cloudBenefitMetrics": "토큰 소비에 대한 전체적인 보기 얻기",
|
||||
"visitCloudWebsite": "Roo Code Cloud 방문",
|
||||
"taskSync": "작업 동기화",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/nl/cloud.json
generated
12
webview-ui/src/i18n/locales/nl/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Uitloggen",
|
||||
"testApiAuthentication": "API-authenticatie testen",
|
||||
"signIn": "Verbind met Roo Code Cloud",
|
||||
"connect": "Nu verbinden",
|
||||
"cloudBenefitsTitle": "Verbind met Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Volg en beheer taken van overal met Roomote Control",
|
||||
"cloudBenefitSharing": "Deel taken met anderen",
|
||||
"cloudBenefitHistory": "Toegang tot je taakgeschiedenis",
|
||||
"connect": "Aan de slag",
|
||||
"cloudBenefitsTitle": "Probeer Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Toegang tot gratis en betaalde modellen die geweldig werken met Roo",
|
||||
"cloudBenefitCloudAgents": "Geef taken aan autonome Cloud-agents",
|
||||
"cloudBenefitTriggers": "Krijg code reviews op Github, start taken vanuit Slack en meer",
|
||||
"cloudBenefitWalkaway": "Volg en beheer taken van overal (inclusief je telefoon)",
|
||||
"cloudBenefitHistory": "Toegang tot je taakgeschiedenis van overal en deel ze met anderen",
|
||||
"cloudBenefitMetrics": "Krijg een holistisch overzicht van je tokenverbruik",
|
||||
"visitCloudWebsite": "Bezoek Roo Code Cloud",
|
||||
"taskSync": "Taaksynchronisatie",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/pl/cloud.json
generated
12
webview-ui/src/i18n/locales/pl/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Wyloguj",
|
||||
"testApiAuthentication": "Testuj uwierzytelnianie API",
|
||||
"signIn": "Połącz z Roo Code Cloud",
|
||||
"connect": "Połącz teraz",
|
||||
"cloudBenefitsTitle": "Połącz z Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Śledź i kontroluj zadania z dowolnego miejsca za pomocą Roomote Control",
|
||||
"cloudBenefitSharing": "Udostępniaj zadania innym",
|
||||
"cloudBenefitHistory": "Uzyskaj dostęp do historii zadań",
|
||||
"connect": "Zacznij",
|
||||
"cloudBenefitsTitle": "Wypróbuj Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Uzyskaj dostęp do darmowych i płatnych modeli, które świetnie współpracują z Roo",
|
||||
"cloudBenefitCloudAgents": "Zlecaj zadania autonomicznym agentom w chmurze",
|
||||
"cloudBenefitTriggers": "Otrzymuj recenzje kodu na Githubie, uruchamiaj zadania ze Slacka i nie tylko",
|
||||
"cloudBenefitWalkaway": "Śledź i kontroluj zadania z dowolnego miejsca (również z telefonu)",
|
||||
"cloudBenefitHistory": "Uzyskaj dostęp do historii zadań z dowolnego miejsca i udostępniaj je innym",
|
||||
"cloudBenefitMetrics": "Uzyskaj całościowy widok zużycia tokenów",
|
||||
"visitCloudWebsite": "Odwiedź Roo Code Cloud",
|
||||
"taskSync": "Synchronizacja zadań",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/pt-BR/cloud.json
generated
12
webview-ui/src/i18n/locales/pt-BR/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Sair",
|
||||
"testApiAuthentication": "Testar Autenticação de API",
|
||||
"signIn": "Conectar ao Roo Code Cloud",
|
||||
"connect": "Conectar Agora",
|
||||
"cloudBenefitsTitle": "Conectar ao Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Acompanhe e controle tarefas de qualquer lugar com Roomote Control",
|
||||
"cloudBenefitSharing": "Compartilhe tarefas com outros",
|
||||
"cloudBenefitHistory": "Acesse seu histórico de tarefas",
|
||||
"connect": "Começar",
|
||||
"cloudBenefitsTitle": "Experimente o Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Acesse modelos gratuitos e pagos que funcionam muito bem com o Roo",
|
||||
"cloudBenefitCloudAgents": "Dê tarefas a agentes autônomos na nuvem",
|
||||
"cloudBenefitTriggers": "Obtenha revisões de código no Github, inicie tarefas do Slack e muito mais",
|
||||
"cloudBenefitWalkaway": "Acompanhe e controle tarefas de qualquer lugar (incluindo seu telefone)",
|
||||
"cloudBenefitHistory": "Acesse seu histórico de tarefas de qualquer lugar e compartilhe com outros",
|
||||
"cloudBenefitMetrics": "Obtenha uma visão holística do seu consumo de tokens",
|
||||
"visitCloudWebsite": "Visitar Roo Code Cloud",
|
||||
"taskSync": "Sincronização de tarefas",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/ru/cloud.json
generated
12
webview-ui/src/i18n/locales/ru/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Выход",
|
||||
"testApiAuthentication": "Проверить аутентификацию API",
|
||||
"signIn": "Подключиться к Roo Code Cloud",
|
||||
"connect": "Подключиться сейчас",
|
||||
"cloudBenefitsTitle": "Подключиться к Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Отслеживайте и управляйте задачами откуда угодно с Roomote Control",
|
||||
"cloudBenefitSharing": "Делитесь задачами с другими",
|
||||
"cloudBenefitHistory": "Получите доступ к истории задач",
|
||||
"connect": "Начать",
|
||||
"cloudBenefitsTitle": "Попробуйте Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Доступ к бесплатным и платным моделям, которые отлично работают с Roo",
|
||||
"cloudBenefitCloudAgents": "Поручайте задачи автономным облачным агентам",
|
||||
"cloudBenefitTriggers": "Получайте код-ревью на Github, запускайте задачи из Slack и многое другое",
|
||||
"cloudBenefitWalkaway": "Отслеживайте и управляйте задачами откуда угодно (включая телефон)",
|
||||
"cloudBenefitHistory": "Доступ к истории задач откуда угодно и возможность делиться ими с другими",
|
||||
"cloudBenefitMetrics": "Получите целостное представление о потреблении токенов",
|
||||
"visitCloudWebsite": "Посетить Roo Code Cloud",
|
||||
"taskSync": "Синхронизация задач",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/tr/cloud.json
generated
12
webview-ui/src/i18n/locales/tr/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Çıkış yap",
|
||||
"testApiAuthentication": "API Kimlik Doğrulamayı Test Et",
|
||||
"signIn": "Roo Code Cloud'a bağlan",
|
||||
"connect": "Şimdi Bağlan",
|
||||
"cloudBenefitsTitle": "Roo Code Cloud'a bağlan",
|
||||
"cloudBenefitWalkaway": "Roomote Control ile görevleri her yerden takip et ve kontrol et",
|
||||
"cloudBenefitSharing": "Görevleri başkalarıyla paylaş",
|
||||
"cloudBenefitHistory": "Görev geçmişine eriş",
|
||||
"connect": "Başlayın",
|
||||
"cloudBenefitsTitle": "Roo Code Cloud'u Deneyin",
|
||||
"cloudBenefitProvider": "Roo ile harika çalışan ücretsiz ve ücretli modellere erişin",
|
||||
"cloudBenefitCloudAgents": "Otonom Bulut ajanlarına görevler verin",
|
||||
"cloudBenefitTriggers": "Github'da kod incelemeleri alın, Slack'ten görevler başlatın ve daha fazlasını yapın",
|
||||
"cloudBenefitWalkaway": "Görevleri her yerden (telefonunuz dahil) takip edin ve kontrol edin",
|
||||
"cloudBenefitHistory": "Görev geçmişinize her yerden erişin ve başkalarıyla paylaşın",
|
||||
"cloudBenefitMetrics": "Token tüketiminizin bütünsel görünümünü elde edin",
|
||||
"visitCloudWebsite": "Roo Code Cloud'u ziyaret et",
|
||||
"taskSync": "Görev senkronizasyonu",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/vi/cloud.json
generated
12
webview-ui/src/i18n/locales/vi/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "Đăng xuất",
|
||||
"testApiAuthentication": "Kiểm tra xác thực API",
|
||||
"signIn": "Kết nối với Roo Code Cloud",
|
||||
"connect": "Kết nối ngay",
|
||||
"cloudBenefitsTitle": "Kết nối với Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "Theo dõi và điều khiển tác vụ từ bất kỳ đâu với Roomote Control",
|
||||
"cloudBenefitSharing": "Chia sẻ tác vụ với người khác",
|
||||
"cloudBenefitHistory": "Truy cập lịch sử tác vụ của bạn",
|
||||
"connect": "Bắt đầu",
|
||||
"cloudBenefitsTitle": "Dùng thử Roo Code Cloud",
|
||||
"cloudBenefitProvider": "Truy cập các mô hình miễn phí và trả phí hoạt động tuyệt vời với Roo",
|
||||
"cloudBenefitCloudAgents": "Giao nhiệm vụ cho các agent đám mây tự trị",
|
||||
"cloudBenefitTriggers": "Nhận đánh giá mã trên Github, bắt đầu tác vụ từ Slack và hơn thế nữa",
|
||||
"cloudBenefitWalkaway": "Theo dõi và kiểm soát các tác vụ từ mọi nơi (bao gồm cả điện thoại của bạn)",
|
||||
"cloudBenefitHistory": "Truy cập lịch sử tác vụ của bạn từ mọi nơi và chia sẻ chúng với người khác",
|
||||
"cloudBenefitMetrics": "Có cái nhìn toàn diện về mức tiêu thụ token của bạn",
|
||||
"visitCloudWebsite": "Truy cập Roo Code Cloud",
|
||||
"taskSync": "Đồng bộ tác vụ",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/zh-CN/cloud.json
generated
12
webview-ui/src/i18n/locales/zh-CN/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "退出登录",
|
||||
"testApiAuthentication": "测试 API 认证",
|
||||
"signIn": "连接到 Roo Code Cloud",
|
||||
"connect": "立即连接",
|
||||
"cloudBenefitsTitle": "连接到 Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "使用 Roomote Control 随时随地跟踪和控制任务",
|
||||
"cloudBenefitSharing": "与他人共享任务",
|
||||
"cloudBenefitHistory": "访问您的任务历史",
|
||||
"connect": "开始使用",
|
||||
"cloudBenefitsTitle": "试用 Roo Code Cloud",
|
||||
"cloudBenefitProvider": "访问与 Roo 完美配合的免费和付费模型",
|
||||
"cloudBenefitCloudAgents": "将任务分配给自主云代理",
|
||||
"cloudBenefitTriggers": "在 GitHub 上获取代码审查,从 Slack 启动任务等等",
|
||||
"cloudBenefitWalkaway": "随时随地(包括您的手机)跟踪和控制任务",
|
||||
"cloudBenefitHistory": "随时随地访问您的任务历史记录并与他人共享",
|
||||
"cloudBenefitMetrics": "获取您的令牌消耗的整体视图",
|
||||
"visitCloudWebsite": "访问 Roo Code Cloud",
|
||||
"taskSync": "任务同步",
|
||||
|
|
|
|||
12
webview-ui/src/i18n/locales/zh-TW/cloud.json
generated
12
webview-ui/src/i18n/locales/zh-TW/cloud.json
generated
|
|
@ -4,11 +4,13 @@
|
|||
"logOut": "登出",
|
||||
"testApiAuthentication": "測試 API 認證",
|
||||
"signIn": "連線至 Roo Code Cloud",
|
||||
"connect": "立即連線",
|
||||
"cloudBenefitsTitle": "連線至 Roo Code Cloud",
|
||||
"cloudBenefitWalkaway": "使用 Roomote Control 隨時隨地追蹤和控制任務",
|
||||
"cloudBenefitSharing": "與他人分享任務",
|
||||
"cloudBenefitHistory": "存取您的任務歷史",
|
||||
"connect": "開始使用",
|
||||
"cloudBenefitsTitle": "試用 Roo Code Cloud",
|
||||
"cloudBenefitProvider": "存取與 Roo 完美配合的免費和付費模型",
|
||||
"cloudBenefitCloudAgents": "將任務分配給自主雲端代理",
|
||||
"cloudBenefitTriggers": "在 Github 上獲取程式碼審查,從 Slack 啟動任務等等",
|
||||
"cloudBenefitWalkaway": "隨時隨地(包括您的手機)追蹤和控制任務",
|
||||
"cloudBenefitHistory": "隨時隨地存取您的任務歷史記錄並與他人分享",
|
||||
"cloudBenefitMetrics": "獲得您的代幣消耗的整體視圖",
|
||||
"visitCloudWebsite": "造訪 Roo Code Cloud",
|
||||
"taskSync": "任務同步",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue