mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-28 19:11:03 +08:00
Merge pull request #9481 from Kilo-Org/charmed-saver
Expose Agent Manager capabilities in the sidebar chat
This commit is contained in:
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:63c6e23a31f570031361db39105d4283e05da923bb50757e7583c9430f805c53
|
||||
size 16379
|
||||
oid sha256:6fbf2dc34c9c1ba549244a750a5ce828089fc378fa2352645c9a2267270a0c08
|
||||
size 18021
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:024ac7b12c5c6455d30c349dbfde0faff8d8c864761d0d79f0f9e08dbf7144e0
|
||||
size 26331
|
||||
oid sha256:d2cdb6dfc9a907b8ff98bb1982f324efa6d19e4ee98f9f690b8adbc2a0a163de
|
||||
size 28994
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
{
|
||||
"command": "kilo-code.new.agentManagerOpen",
|
||||
"title": "Agent Manager",
|
||||
"icon": "$(circuit-board)"
|
||||
"icon": "$(organization)"
|
||||
},
|
||||
{
|
||||
"command": "kilo-code.new.kiloClawOpen",
|
||||
|
||||
@@ -45,7 +45,7 @@ import { resolveProjectDirectory } from "./project-directory"
|
||||
import { getBusySessionCount, seedSessionStatuses } from "./session-status"
|
||||
import { retry } from "./services/cli-backend/retry"
|
||||
import { slimPart, slimParts } from "./kilo-provider/slim-metadata"
|
||||
import { handleContinueInWorktree } from "./kilo-provider/continue-worktree"
|
||||
import { handleSidebarWorktreeMessage } from "./kilo-provider/sidebar-worktree"
|
||||
import { parseMessageFiles, type MessageFile } from "./kilo-provider/message-files"
|
||||
import { handleFileSearch } from "./kilo-provider/file-search"
|
||||
import { getTerminalContents } from "./services/terminal/context"
|
||||
@@ -241,6 +241,9 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
|
||||
| ((sessionId: string, progress: (status: string, detail?: string, error?: string) => void) => Promise<void>)
|
||||
| null = null
|
||||
|
||||
/** Handler for sidebar worktree creation — delegates to AgentManagerProvider. */
|
||||
private createWorktreeHandler: ((baseBranch?: string, branchName?: string) => Promise<void>) | null = null
|
||||
|
||||
private diffVirtualProvider: import("./DiffVirtualProvider").DiffVirtualProvider | undefined
|
||||
private remoteService: RemoteStatusService | null = null
|
||||
private unsubscribeRemote: (() => void) | null = null
|
||||
@@ -555,6 +558,10 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
|
||||
this.continueInWorktreeHandler = handler
|
||||
}
|
||||
|
||||
public setCreateWorktreeHandler(handler: (baseBranch?: string, branchName?: string) => Promise<void>): void {
|
||||
this.createWorktreeHandler = handler
|
||||
}
|
||||
|
||||
public attachToWebview(
|
||||
webview: vscode.Webview,
|
||||
options?: { onBeforeMessage?: (msg: Record<string, unknown>) => Promise<Record<string, unknown> | null> },
|
||||
@@ -583,6 +590,20 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
|
||||
await routeSuggestionWebviewMessage(this.questionCtx, message)
|
||||
if (await ModelState.handleMessage(message.type, message, this.client, (msg) => this.postMessage(msg))) return
|
||||
if (await routeAutocompleteMessage(message, (msg) => this.postMessage(msg))) return
|
||||
if (
|
||||
await handleSidebarWorktreeMessage(message, {
|
||||
post: (msg) => this.postMessage(msg),
|
||||
openAgentManager: () => vscode.commands.executeCommand("kilo-code.new.agentManagerOpen"),
|
||||
openAdvancedWorktree: () => vscode.commands.executeCommand("kilo-code.new.agentManager.advancedWorktree"),
|
||||
openChanges: () => vscode.commands.executeCommand("kilo-code.new.showChanges"),
|
||||
createWorktree: async (baseBranch, branchName) => {
|
||||
await this.createWorktreeHandler?.(baseBranch, branchName)
|
||||
},
|
||||
continueInWorktree: this.continueInWorktreeHandler ?? undefined,
|
||||
})
|
||||
) {
|
||||
return
|
||||
}
|
||||
switch (message.type) {
|
||||
case "webviewReady":
|
||||
console.log("[Kilo New] KiloProvider: ✅ webviewReady received")
|
||||
@@ -707,19 +728,9 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
|
||||
case "openMarketplacePanel":
|
||||
vscode.commands.executeCommand("kilo-code.new.marketplaceButtonClicked", this.projectDirectory)
|
||||
break
|
||||
case "openChanges":
|
||||
vscode.commands.executeCommand("kilo-code.new.showChanges")
|
||||
break
|
||||
case "openDiffVirtual":
|
||||
this.openDiffVirtual(message.diff)
|
||||
break
|
||||
case "continueInWorktree":
|
||||
handleContinueInWorktree({
|
||||
sessionId: message.sessionId,
|
||||
handler: this.continueInWorktreeHandler ?? undefined,
|
||||
post: (msg) => this.postMessage(msg),
|
||||
})
|
||||
break
|
||||
case "forkSession":
|
||||
handleForkSession(this.forkCtx, message.sessionId, message.messageId).catch((e) =>
|
||||
console.error("[Kilo New] handleForkSession failed:", e),
|
||||
|
||||
@@ -1537,6 +1537,25 @@ export class AgentManagerProvider implements Disposable {
|
||||
)
|
||||
}
|
||||
|
||||
public async createFromSidebar(baseBranch?: string, branchName?: string): Promise<void> {
|
||||
this.openPanel()
|
||||
const panel = this.panel
|
||||
if (!panel) return
|
||||
await panel.waitForReady()
|
||||
await this.waitForStateReady("createFromSidebar")
|
||||
await this.onCreateWorktree(baseBranch, branchName)
|
||||
}
|
||||
|
||||
public async openAdvancedWorktree(): Promise<void> {
|
||||
this.openPanel()
|
||||
const panel = this.panel
|
||||
if (!panel) return
|
||||
await panel.waitForActive()
|
||||
await panel.waitForReady()
|
||||
await this.waitForStateReady("openAdvancedWorktree")
|
||||
queueMicrotask(() => this.postToWebview({ type: "action", action: "advancedWorktree" }))
|
||||
}
|
||||
|
||||
private handleSection(m: AgentManagerInMessage): boolean {
|
||||
return handleSection(this.state, m, () => this.pushState())
|
||||
}
|
||||
|
||||
@@ -56,6 +56,12 @@ export interface PanelContext {
|
||||
/** Send a message to the webview. */
|
||||
postMessage(msg: unknown): void
|
||||
|
||||
/** Resolve once the panel webview is ready to receive messages. */
|
||||
waitForReady(): Promise<void>
|
||||
|
||||
/** Resolve once the panel is the active editor tab. */
|
||||
waitForActive(): Promise<void>
|
||||
|
||||
/** Reveal the panel. */
|
||||
reveal(preserveFocus?: boolean): void
|
||||
|
||||
|
||||
@@ -110,6 +110,19 @@ export class VscodeHost implements Host {
|
||||
postMessage(msg) {
|
||||
void panel.webview.postMessage(msg)
|
||||
},
|
||||
waitForReady() {
|
||||
return provider.waitForReady()
|
||||
},
|
||||
waitForActive() {
|
||||
if (panel.active) return Promise.resolve()
|
||||
return new Promise((resolve) => {
|
||||
const sub = panel.onDidChangeViewState((e) => {
|
||||
if (!e.webviewPanel.active) return
|
||||
sub.dispose()
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
},
|
||||
reveal(preserveFocus) {
|
||||
panel.reveal(vscode.ViewColumn.One, preserveFocus ?? false)
|
||||
},
|
||||
|
||||
@@ -112,6 +112,9 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
provider.setContinueInWorktreeHandler((sessionId, progress) =>
|
||||
agentManagerProvider.continueFromSidebar(sessionId, progress),
|
||||
)
|
||||
provider.setCreateWorktreeHandler((baseBranch, branchName) =>
|
||||
agentManagerProvider.createFromSidebar(baseBranch, branchName),
|
||||
)
|
||||
|
||||
// Register serializer so Agent Manager restores when VS Code restarts
|
||||
context.subscriptions.push(
|
||||
@@ -145,6 +148,9 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
tabProvider.setContinueInWorktreeHandler((sessionId, progress) =>
|
||||
agentManagerProvider.continueFromSidebar(sessionId, progress),
|
||||
)
|
||||
tabProvider.setCreateWorktreeHandler((baseBranch, branchName) =>
|
||||
agentManagerProvider.createFromSidebar(baseBranch, branchName),
|
||||
)
|
||||
tabProvider.setDiffVirtualProvider(diffVirtualProvider)
|
||||
tabProvider.resolveWebviewPanel(panel)
|
||||
tabPanels.set(panel, tabProvider)
|
||||
@@ -338,9 +344,9 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
vscode.commands.registerCommand("kilo-code.new.agentManager.closeWorktree", () => {
|
||||
agentManagerProvider.postMessage({ type: "action", action: "closeWorktree" })
|
||||
}),
|
||||
vscode.commands.registerCommand("kilo-code.new.agentManager.advancedWorktree", () => {
|
||||
agentManagerProvider.postMessage({ type: "action", action: "advancedWorktree" })
|
||||
}),
|
||||
vscode.commands.registerCommand("kilo-code.new.agentManager.advancedWorktree", () =>
|
||||
agentManagerProvider.openAdvancedWorktree(),
|
||||
),
|
||||
...Array.from({ length: 9 }, (_, i) =>
|
||||
vscode.commands.registerCommand(`kilo-code.new.agentManager.jumpTo${i + 1}`, () => {
|
||||
agentManagerProvider.postMessage({ type: "action", action: `jumpTo${i + 1}` })
|
||||
@@ -453,6 +459,9 @@ async function openKiloInNewTab(
|
||||
tabProvider.setContinueInWorktreeHandler((sessionId, progress) =>
|
||||
agentManagerProvider.continueFromSidebar(sessionId, progress),
|
||||
)
|
||||
tabProvider.setCreateWorktreeHandler((baseBranch, branchName) =>
|
||||
agentManagerProvider.createFromSidebar(baseBranch, branchName),
|
||||
)
|
||||
tabProvider.setDiffVirtualProvider(diffVirtualProvider)
|
||||
tabProvider.resolveWebviewPanel(panel)
|
||||
tabPanels.set(panel, tabProvider)
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
import { GitOps } from "../agent-manager/GitOps"
|
||||
import { getWorkspaceRoot } from "../review-utils"
|
||||
import { handleContinueInWorktree } from "./continue-worktree"
|
||||
|
||||
interface Msg {
|
||||
type: string
|
||||
baseBranch?: string
|
||||
branchName?: string
|
||||
sessionId?: string
|
||||
}
|
||||
|
||||
interface Ctx {
|
||||
post: (msg: unknown) => void
|
||||
openAgentManager: () => Thenable<unknown>
|
||||
openAdvancedWorktree: () => Thenable<unknown>
|
||||
openChanges: () => Thenable<unknown>
|
||||
createWorktree?: (baseBranch?: string, branchName?: string) => Promise<void>
|
||||
continueInWorktree?: (
|
||||
sessionId: string,
|
||||
progress: (status: string, detail?: string, error?: string) => void,
|
||||
) => Promise<void>
|
||||
}
|
||||
|
||||
async function repo(post: Ctx["post"]) {
|
||||
const root = getWorkspaceRoot()
|
||||
if (!root) return
|
||||
const git = new GitOps({ log: () => {} })
|
||||
const branch = await git.currentBranch(root).catch(() => "")
|
||||
git.dispose()
|
||||
if (!branch || branch === "HEAD") return
|
||||
post({ type: "agentManager.repoInfo", branch })
|
||||
}
|
||||
|
||||
export async function handleSidebarWorktreeMessage(message: Msg, ctx: Ctx) {
|
||||
if (message.type === "openAgentManager") {
|
||||
await ctx.openAgentManager()
|
||||
return true
|
||||
}
|
||||
|
||||
if (message.type === "openAdvancedWorktree") {
|
||||
await ctx.openAdvancedWorktree()
|
||||
return true
|
||||
}
|
||||
|
||||
if (message.type === "agentManager.requestRepoInfo") {
|
||||
await repo(ctx.post)
|
||||
return true
|
||||
}
|
||||
|
||||
if (message.type === "agentManager.createWorktree") {
|
||||
await ctx.createWorktree?.(message.baseBranch, message.branchName)
|
||||
return true
|
||||
}
|
||||
|
||||
if (message.type === "openChanges") {
|
||||
await ctx.openChanges()
|
||||
return true
|
||||
}
|
||||
|
||||
if (message.type !== "continueInWorktree") return false
|
||||
handleContinueInWorktree({
|
||||
sessionId: message.sessionId,
|
||||
handler: ctx.continueInWorktree,
|
||||
post: ctx.post,
|
||||
})
|
||||
return true
|
||||
}
|
||||
@@ -17,6 +17,24 @@ const SRC_DIR = path.join(ROOT, "src")
|
||||
const EXTENSION_FILE = path.join(ROOT, "src/extension.ts")
|
||||
const KILO_PROVIDER_FILE = path.join(ROOT, "src/KiloProvider.ts")
|
||||
|
||||
function sliceBlock(source: string, start: number): string {
|
||||
const open = source.indexOf("{", start)
|
||||
expect(open, "block opening brace must exist").toBeGreaterThan(-1)
|
||||
|
||||
const state = { depth: 0, end: -1 }
|
||||
Array.from(source.slice(open)).some((ch, i) => {
|
||||
if (ch === "{") state.depth++
|
||||
if (ch === "}") state.depth--
|
||||
if (state.depth !== 0) return false
|
||||
state.end = open + i
|
||||
return true
|
||||
})
|
||||
|
||||
if (state.end > -1) return source.slice(start, state.end + 1)
|
||||
|
||||
throw new Error("block closing brace not found")
|
||||
}
|
||||
|
||||
function readSrcFiles(dir: string): string {
|
||||
const parts: string[] = []
|
||||
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
||||
@@ -141,7 +159,7 @@ describe("Extension — KiloProvider handler wiring", () => {
|
||||
it("openKiloInNewTab wires setContinueInWorktreeHandler before resolveWebviewPanel", () => {
|
||||
const fn = ext.indexOf("function openKiloInNewTab")
|
||||
expect(fn, "openKiloInNewTab must exist").toBeGreaterThan(-1)
|
||||
const body = ext.slice(fn, fn + 1500)
|
||||
const body = sliceBlock(ext, fn)
|
||||
const handler = body.indexOf("setContinueInWorktreeHandler")
|
||||
const resolve = body.indexOf("resolveWebviewPanel")
|
||||
expect(handler, "setContinueInWorktreeHandler must be called").toBeGreaterThan(-1)
|
||||
@@ -152,7 +170,7 @@ describe("Extension — KiloProvider handler wiring", () => {
|
||||
it("TabPanel deserializer wires setContinueInWorktreeHandler before resolveWebviewPanel", () => {
|
||||
const serializer = ext.indexOf('"kilo-code.new.TabPanel"')
|
||||
expect(serializer, "TabPanel serializer must exist").toBeGreaterThan(-1)
|
||||
const body = ext.slice(serializer, serializer + 800)
|
||||
const body = sliceBlock(ext, serializer)
|
||||
const handler = body.indexOf("setContinueInWorktreeHandler")
|
||||
const resolve = body.indexOf("resolveWebviewPanel")
|
||||
expect(handler, "setContinueInWorktreeHandler must be called in deserializer").toBeGreaterThan(-1)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// Agent Manager root component
|
||||
/** @jsxImportSource solid-js */
|
||||
|
||||
import {
|
||||
Component,
|
||||
For,
|
||||
Show,
|
||||
createSignal,
|
||||
@@ -11,6 +10,7 @@ import {
|
||||
onMount,
|
||||
onCleanup,
|
||||
type Accessor,
|
||||
type Component,
|
||||
} from "solid-js"
|
||||
import type {
|
||||
ExtensionMessage,
|
||||
@@ -137,14 +137,10 @@ interface ApplyState {
|
||||
message: string
|
||||
conflicts: AgentManagerApplyWorktreeDiffConflict[]
|
||||
}
|
||||
|
||||
/** Sidebar selection: LOCAL for local repo, worktree ID for a worktree, or null for an unassigned session. */
|
||||
type SidebarSelection = typeof LOCAL | string | null
|
||||
|
||||
type SidePanel = "diff" | "pr" | null
|
||||
|
||||
const isMac = typeof navigator !== "undefined" && /Mac|iPhone|iPad/.test(navigator.userAgent)
|
||||
|
||||
// Fallback keybindings before extension sends resolved ones
|
||||
const MAX_JUMP_INDEX = 9
|
||||
|
||||
@@ -179,7 +175,6 @@ function useTabScroll(activeTabs: Accessor<SessionInfo[]>, activeId: Accessor<st
|
||||
const [ref, setRef] = createSignal<HTMLDivElement | undefined>()
|
||||
const [showLeft, setShowLeft] = createSignal(false)
|
||||
const [showRight, setShowRight] = createSignal(false)
|
||||
|
||||
let scrollFrame: number | undefined
|
||||
const update = () => {
|
||||
if (scrollFrame !== undefined) return
|
||||
@@ -191,7 +186,6 @@ function useTabScroll(activeTabs: Accessor<SessionInfo[]>, activeId: Accessor<st
|
||||
setShowRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 2)
|
||||
})
|
||||
}
|
||||
|
||||
// Wheel → horizontal scroll conversion
|
||||
const onWheel = (e: WheelEvent) => {
|
||||
const el = ref()
|
||||
@@ -200,7 +194,6 @@ function useTabScroll(activeTabs: Accessor<SessionInfo[]>, activeId: Accessor<st
|
||||
e.preventDefault()
|
||||
el.scrollLeft += e.deltaY > 0 ? 60 : -60
|
||||
}
|
||||
|
||||
// Recalculate on scroll, resize, or tab changes
|
||||
createEffect(() => {
|
||||
const el = ref()
|
||||
@@ -218,7 +211,6 @@ function useTabScroll(activeTabs: Accessor<SessionInfo[]>, activeId: Accessor<st
|
||||
mo.disconnect()
|
||||
})
|
||||
})
|
||||
|
||||
createEffect(() => {
|
||||
const id = activeId()
|
||||
const el = ref()
|
||||
@@ -237,7 +229,6 @@ function useTabScroll(activeTabs: Accessor<SessionInfo[]>, activeId: Accessor<st
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
return { setRef, showLeft, showRight }
|
||||
}
|
||||
|
||||
@@ -2276,17 +2267,23 @@ const AgentManagerContent: Component = () => {
|
||||
<DropdownMenu.Portal>
|
||||
<DropdownMenu.Content class="am-split-menu">
|
||||
<DropdownMenu.Item onSelect={handleCreateWorktree}>
|
||||
<DropdownMenu.ItemLabel>{t("agentManager.worktree.new")}</DropdownMenu.ItemLabel>
|
||||
<span class="am-worktree-menu-gap" aria-hidden="true" />
|
||||
<DropdownMenu.ItemLabel class="am-worktree-menu-label">
|
||||
<span>{t("sidebar.session.newWorktree.from")}</span>
|
||||
<span class="am-worktree-menu-branch">
|
||||
<Icon name="branch" size="small" />
|
||||
<strong>{repoDefaultBranch()}</strong>
|
||||
</span>
|
||||
</DropdownMenu.ItemLabel>
|
||||
<span class="am-menu-shortcut">
|
||||
{parseBindingTokens(kb().newWorktree ?? "").map((token) => (
|
||||
<kbd class="am-menu-key">{token}</kbd>
|
||||
))}
|
||||
</span>
|
||||
</DropdownMenu.Item>
|
||||
<DropdownMenu.Separator />
|
||||
<DropdownMenu.Item onSelect={showAdvancedWorktreeDialog}>
|
||||
<Icon name="settings-gear" size="small" />
|
||||
<DropdownMenu.ItemLabel>{t("agentManager.dialog.advanced")}</DropdownMenu.ItemLabel>
|
||||
<DropdownMenu.ItemLabel>{t("agentManager.dialog.configureWorktree")}</DropdownMenu.ItemLabel>
|
||||
<span class="am-menu-shortcut">
|
||||
{parseBindingTokens(kb().advancedWorktree ?? "").map((token) => (
|
||||
<kbd class="am-menu-key">{token}</kbd>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// New Worktree dialog — prompt, versions, model, mode, import tab
|
||||
|
||||
import { Component, For, Show, createSignal, createEffect, createMemo, onMount, onCleanup } from "solid-js"
|
||||
/** @jsxImportSource solid-js */
|
||||
|
||||
import { type Component, For, Show, createSignal, createEffect, createMemo, onMount, onCleanup } from "solid-js"
|
||||
import type { AgentManagerBranchesMessage, AgentManagerImportResultMessage, BranchInfo } from "../src/types/messages"
|
||||
import { Dialog } from "@kilocode/kilo-ui/dialog"
|
||||
import { showToast } from "@kilocode/kilo-ui/toast"
|
||||
@@ -171,6 +173,17 @@ export const NewWorktreeDialog: Component<{ onClose: () => void; defaultBaseBran
|
||||
vscode.postMessage({ type: "agentManager.requestBranches" })
|
||||
// Resize textarea if restoring a cached prompt
|
||||
if (prompt()) adjustHeight()
|
||||
const focus = () => {
|
||||
textareaRef?.focus({ preventScroll: true })
|
||||
const end = textareaRef?.value.length ?? 0
|
||||
textareaRef?.setSelectionRange(end, end)
|
||||
}
|
||||
requestAnimationFrame(() => {
|
||||
focus()
|
||||
requestAnimationFrame(focus)
|
||||
setTimeout(focus, 0)
|
||||
setTimeout(focus, 50)
|
||||
})
|
||||
})
|
||||
|
||||
const effectiveBaseBranch = () => baseBranch() ?? defaultBranch()
|
||||
|
||||
@@ -2029,15 +2029,36 @@ body.am-wt-dragging-active * {
|
||||
}
|
||||
|
||||
.am-split-menu {
|
||||
min-width: 210px;
|
||||
min-width: 250px;
|
||||
}
|
||||
|
||||
.am-split-menu [data-slot="dropdown-menu-item"] {
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.am-split-menu [data-slot="dropdown-menu-separator"] {
|
||||
margin: 4px 0;
|
||||
.am-worktree-menu-gap {
|
||||
display: inline-flex;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.am-worktree-menu-label {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.am-worktree-menu-branch {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.am-worktree-menu-branch strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* New Versioned Session Dialog */
|
||||
|
||||
+2
-1
@@ -71,7 +71,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "العنصر التالي",
|
||||
"agentManager.shortcuts.newWorktree": "Worktree جديد",
|
||||
"agentManager.shortcuts.openWorktree": "فتح Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Worktree متقدم",
|
||||
"agentManager.shortcuts.advancedWorktree": "تكوين worktree جديد",
|
||||
"agentManager.shortcuts.deleteWorktree": "حذف Worktree",
|
||||
"agentManager.shortcuts.previousTab": "علامة التبويب السابقة",
|
||||
"agentManager.shortcuts.nextTab": "علامة التبويب التالية",
|
||||
@@ -93,6 +93,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "إزالة Worktree القديم",
|
||||
|
||||
"agentManager.dialog.openWorktree": "شجرة عمل جديدة",
|
||||
"agentManager.dialog.configureWorktree": "تكوين Worktree جديد...",
|
||||
"agentManager.dialog.tab.new": "جديد",
|
||||
"agentManager.dialog.tab.import": "استيراد",
|
||||
"agentManager.dialog.namePlaceholder": "اسم Worktree (اختياري)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Próximo item",
|
||||
"agentManager.shortcuts.newWorktree": "Novo Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Abrir Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Worktree avançado",
|
||||
"agentManager.shortcuts.advancedWorktree": "Configurar novo worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Excluir Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Aba anterior",
|
||||
"agentManager.shortcuts.nextTab": "Próxima aba",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Remover Worktree obsoleto",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Novo Worktree",
|
||||
"agentManager.dialog.configureWorktree": "Configurar Novo Worktree...",
|
||||
"agentManager.dialog.tab.new": "Novo",
|
||||
"agentManager.dialog.tab.import": "Importar",
|
||||
"agentManager.dialog.namePlaceholder": "Nome do Worktree (opcional)",
|
||||
|
||||
+2
-1
@@ -73,7 +73,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Sljedeći element",
|
||||
"agentManager.shortcuts.newWorktree": "Novi Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Otvori worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Napredni Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Konfiguriši novi worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Obriši Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Prethodna kartica",
|
||||
"agentManager.shortcuts.nextTab": "Sljedeća kartica",
|
||||
@@ -95,6 +95,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Ukloni zastarjeli Worktree",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Novi worktree",
|
||||
"agentManager.dialog.configureWorktree": "Konfiguriši Novi Worktree...",
|
||||
"agentManager.dialog.tab.new": "Novo",
|
||||
"agentManager.dialog.tab.import": "Uvezi",
|
||||
"agentManager.dialog.namePlaceholder": "Naziv Worktree-a (opcionalno)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Næste element",
|
||||
"agentManager.shortcuts.newWorktree": "Nyt Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Åbn Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Avanceret Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Konfigurer nyt worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Slet Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Forrige fane",
|
||||
"agentManager.shortcuts.nextTab": "Næste fane",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Fjern forældet Worktree",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Ny Worktree",
|
||||
"agentManager.dialog.configureWorktree": "Konfigurer Nyt Worktree...",
|
||||
"agentManager.dialog.tab.new": "Ny",
|
||||
"agentManager.dialog.tab.import": "Importér",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree-navn (valgfrit)",
|
||||
|
||||
+2
-1
@@ -73,7 +73,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Nächstes Element",
|
||||
"agentManager.shortcuts.newWorktree": "Neuer Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Worktree öffnen",
|
||||
"agentManager.shortcuts.advancedWorktree": "Erweiterter Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Neuen Worktree konfigurieren",
|
||||
"agentManager.shortcuts.deleteWorktree": "Worktree löschen",
|
||||
"agentManager.shortcuts.previousTab": "Vorheriger Tab",
|
||||
"agentManager.shortcuts.nextTab": "Nächster Tab",
|
||||
@@ -95,6 +95,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Veralteten Worktree entfernen",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Neuer Worktree",
|
||||
"agentManager.dialog.configureWorktree": "Neuen Worktree konfigurieren...",
|
||||
"agentManager.dialog.tab.new": "Neu",
|
||||
"agentManager.dialog.tab.import": "Importieren",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree-Name (optional)",
|
||||
|
||||
@@ -77,7 +77,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Next item",
|
||||
"agentManager.shortcuts.newWorktree": "New worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Open worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Advanced worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Configure new worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Delete worktree",
|
||||
"agentManager.shortcuts.previousTab": "Previous tab",
|
||||
"agentManager.shortcuts.nextTab": "Next tab",
|
||||
@@ -122,6 +122,7 @@ export const dict = {
|
||||
"agentManager.dialog.createWorktree": "Create Worktree",
|
||||
"agentManager.dialog.removeImage": "Remove image",
|
||||
"agentManager.dialog.advanced": "Advanced...",
|
||||
"agentManager.dialog.configureWorktree": "Configure New Worktree...",
|
||||
|
||||
"agentManager.diff.toggle": "Toggle diff",
|
||||
"agentManager.diff.openFile": "Open file",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Siguiente elemento",
|
||||
"agentManager.shortcuts.newWorktree": "Nuevo Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Abrir Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Worktree avanzado",
|
||||
"agentManager.shortcuts.advancedWorktree": "Configurar nuevo worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Eliminar Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Pestaña anterior",
|
||||
"agentManager.shortcuts.nextTab": "Siguiente pestaña",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Eliminar Worktree obsoleto",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Nuevo Worktree",
|
||||
"agentManager.dialog.configureWorktree": "Configurar Nuevo Worktree...",
|
||||
"agentManager.dialog.tab.new": "Nuevo",
|
||||
"agentManager.dialog.tab.import": "Importar",
|
||||
"agentManager.dialog.namePlaceholder": "Nombre del Worktree (opcional)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Élément suivant",
|
||||
"agentManager.shortcuts.newWorktree": "Nouveau Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Ouvrir le worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Worktree avancé",
|
||||
"agentManager.shortcuts.advancedWorktree": "Configurer un nouveau worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Supprimer le Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Onglet précédent",
|
||||
"agentManager.shortcuts.nextTab": "Onglet suivant",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Supprimer le Worktree obsolète",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Nouveau worktree",
|
||||
"agentManager.dialog.configureWorktree": "Configurer un Nouveau Worktree...",
|
||||
"agentManager.dialog.tab.new": "Nouveau",
|
||||
"agentManager.dialog.tab.import": "Importer",
|
||||
"agentManager.dialog.namePlaceholder": "Nom du Worktree (optionnel)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "次の項目",
|
||||
"agentManager.shortcuts.newWorktree": "新しいWorktree",
|
||||
"agentManager.shortcuts.openWorktree": "Worktreeを開く",
|
||||
"agentManager.shortcuts.advancedWorktree": "詳細Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "新規 worktree の構成",
|
||||
"agentManager.shortcuts.deleteWorktree": "Worktreeを削除",
|
||||
"agentManager.shortcuts.previousTab": "前のタブ",
|
||||
"agentManager.shortcuts.nextTab": "次のタブ",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "無効な Worktree を削除",
|
||||
|
||||
"agentManager.dialog.openWorktree": "新規ワークツリー",
|
||||
"agentManager.dialog.configureWorktree": "新規 Worktree の構成...",
|
||||
"agentManager.dialog.tab.new": "新規",
|
||||
"agentManager.dialog.tab.import": "インポート",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree名(任意)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "다음 항목",
|
||||
"agentManager.shortcuts.newWorktree": "새 Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Worktree 열기",
|
||||
"agentManager.shortcuts.advancedWorktree": "고급 Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "새 worktree 구성",
|
||||
"agentManager.shortcuts.deleteWorktree": "Worktree 삭제",
|
||||
"agentManager.shortcuts.previousTab": "이전 탭",
|
||||
"agentManager.shortcuts.nextTab": "다음 탭",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "오래된 Worktree 제거",
|
||||
|
||||
"agentManager.dialog.openWorktree": "새 워크트리",
|
||||
"agentManager.dialog.configureWorktree": "새 Worktree 구성...",
|
||||
"agentManager.dialog.tab.new": "새로 만들기",
|
||||
"agentManager.dialog.tab.import": "가져오기",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree 이름 (선택사항)",
|
||||
|
||||
+2
-1
@@ -77,7 +77,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Volgend item",
|
||||
"agentManager.shortcuts.newWorktree": "Nieuwe worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Worktree openen",
|
||||
"agentManager.shortcuts.advancedWorktree": "Geavanceerde worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Nieuwe worktree configureren",
|
||||
"agentManager.shortcuts.deleteWorktree": "Worktree verwijderen",
|
||||
"agentManager.shortcuts.previousTab": "Vorig tabblad",
|
||||
"agentManager.shortcuts.nextTab": "Volgend tabblad",
|
||||
@@ -100,6 +100,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Verouderde worktree verwijderen",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Nieuwe worktree",
|
||||
"agentManager.dialog.configureWorktree": "Nieuwe Worktree Configureren...",
|
||||
"agentManager.dialog.tab.new": "Nieuw",
|
||||
"agentManager.dialog.tab.import": "Importeren",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree naam (optioneel)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Neste element",
|
||||
"agentManager.shortcuts.newWorktree": "Nytt Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Åpne Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Avansert Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Konfigurer nytt worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Slett Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Forrige fane",
|
||||
"agentManager.shortcuts.nextTab": "Neste fane",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Fjern utdatert Worktree",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Ny worktree",
|
||||
"agentManager.dialog.configureWorktree": "Konfigurer Nytt Worktree...",
|
||||
"agentManager.dialog.tab.new": "Ny",
|
||||
"agentManager.dialog.tab.import": "Importer",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree-navn (valgfritt)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Następny element",
|
||||
"agentManager.shortcuts.newWorktree": "Nowy Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Otwórz Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Zaawansowany Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Skonfiguruj nowe worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Usuń Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Poprzednia karta",
|
||||
"agentManager.shortcuts.nextTab": "Następna karta",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Usuń nieaktualny Worktree",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Nowy Worktree",
|
||||
"agentManager.dialog.configureWorktree": "Skonfiguruj Nowe Worktree...",
|
||||
"agentManager.dialog.tab.new": "Nowy",
|
||||
"agentManager.dialog.tab.import": "Importuj",
|
||||
"agentManager.dialog.namePlaceholder": "Nazwa Worktree (opcjonalnie)",
|
||||
|
||||
+2
-1
@@ -72,7 +72,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Следующий элемент",
|
||||
"agentManager.shortcuts.newWorktree": "Новый Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Открыть Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Расширенный Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Настроить новое worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Удалить Worktree",
|
||||
"agentManager.shortcuts.previousTab": "Предыдущая вкладка",
|
||||
"agentManager.shortcuts.nextTab": "Следующая вкладка",
|
||||
@@ -94,6 +94,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Удалить устаревший Worktree",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Новый worktree",
|
||||
"agentManager.dialog.configureWorktree": "Настроить новое Worktree...",
|
||||
"agentManager.dialog.tab.new": "Новый",
|
||||
"agentManager.dialog.tab.import": "Импорт",
|
||||
"agentManager.dialog.namePlaceholder": "Имя Worktree (необязательно)",
|
||||
|
||||
+2
-1
@@ -69,7 +69,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "รายการถัดไป",
|
||||
"agentManager.shortcuts.newWorktree": "Worktree ใหม่",
|
||||
"agentManager.shortcuts.openWorktree": "เปิด Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Worktree ขั้นสูง",
|
||||
"agentManager.shortcuts.advancedWorktree": "กำหนดค่า worktree ใหม่",
|
||||
"agentManager.shortcuts.deleteWorktree": "ลบ Worktree",
|
||||
"agentManager.shortcuts.previousTab": "แท็บก่อนหน้า",
|
||||
"agentManager.shortcuts.nextTab": "แท็บถัดไป",
|
||||
@@ -91,6 +91,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "ลบ Worktree ที่ล้าสมัย",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Worktree ใหม่",
|
||||
"agentManager.dialog.configureWorktree": "กำหนดค่า Worktree ใหม่...",
|
||||
"agentManager.dialog.tab.new": "ใหม่",
|
||||
"agentManager.dialog.tab.import": "นำเข้า",
|
||||
"agentManager.dialog.namePlaceholder": "ชื่อ Worktree (ไม่บังคับ)",
|
||||
|
||||
+2
-1
@@ -77,7 +77,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Sonraki öğe",
|
||||
"agentManager.shortcuts.newWorktree": "Yeni worktree",
|
||||
"agentManager.shortcuts.openWorktree": "Worktree aç",
|
||||
"agentManager.shortcuts.advancedWorktree": "Gelişmiş worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "Yeni worktree yapılandır",
|
||||
"agentManager.shortcuts.deleteWorktree": "Worktree'yi sil",
|
||||
"agentManager.shortcuts.previousTab": "Önceki sekme",
|
||||
"agentManager.shortcuts.nextTab": "Sonraki sekme",
|
||||
@@ -100,6 +100,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Eskimiş worktree'yi kaldır",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Yeni Worktree",
|
||||
"agentManager.dialog.configureWorktree": "Yeni Worktree Yapılandır...",
|
||||
"agentManager.dialog.tab.new": "Yeni",
|
||||
"agentManager.dialog.tab.import": "İçe Aktar",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree adı (isteğe bağlı)",
|
||||
|
||||
+2
-1
@@ -78,7 +78,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "Наступний елемент",
|
||||
"agentManager.shortcuts.newWorktree": "Нове робоче дерево",
|
||||
"agentManager.shortcuts.openWorktree": "Відкрити робоче дерево",
|
||||
"agentManager.shortcuts.advancedWorktree": "Розширене робоче дерево",
|
||||
"agentManager.shortcuts.advancedWorktree": "Налаштувати нове worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "Видалити робоче дерево",
|
||||
"agentManager.shortcuts.previousTab": "Попередня вкладка",
|
||||
"agentManager.shortcuts.nextTab": "Наступна вкладка",
|
||||
@@ -101,6 +101,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "Видалити застаріле робоче дерево",
|
||||
|
||||
"agentManager.dialog.openWorktree": "Нове робоче дерево",
|
||||
"agentManager.dialog.configureWorktree": "Налаштувати нове Worktree...",
|
||||
"agentManager.dialog.tab.new": "Нове",
|
||||
"agentManager.dialog.tab.import": "Імпортувати",
|
||||
"agentManager.dialog.namePlaceholder": "Назва робочого дерева (необов'язково)",
|
||||
|
||||
+2
-1
@@ -69,7 +69,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "下一项",
|
||||
"agentManager.shortcuts.newWorktree": "新建 Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "打开 Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "高级 Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "配置新 worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "删除 Worktree",
|
||||
"agentManager.shortcuts.previousTab": "上一个标签页",
|
||||
"agentManager.shortcuts.nextTab": "下一个标签页",
|
||||
@@ -90,6 +90,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "移除失效 Worktree",
|
||||
|
||||
"agentManager.dialog.openWorktree": "新建工作树",
|
||||
"agentManager.dialog.configureWorktree": "配置新 Worktree...",
|
||||
"agentManager.dialog.tab.new": "新建",
|
||||
"agentManager.dialog.tab.import": "导入",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree 名称(可选)",
|
||||
|
||||
+2
-1
@@ -69,7 +69,7 @@ export const dict = {
|
||||
"agentManager.shortcuts.nextItem": "下一個項目",
|
||||
"agentManager.shortcuts.newWorktree": "新建 Worktree",
|
||||
"agentManager.shortcuts.openWorktree": "開啟 Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "進階 Worktree",
|
||||
"agentManager.shortcuts.advancedWorktree": "配置新 worktree",
|
||||
"agentManager.shortcuts.deleteWorktree": "刪除 Worktree",
|
||||
"agentManager.shortcuts.previousTab": "上一個分頁",
|
||||
"agentManager.shortcuts.nextTab": "下一個分頁",
|
||||
@@ -90,6 +90,7 @@ export const dict = {
|
||||
"agentManager.dialog.removeStaleWorktree.confirm": "移除失效 Worktree",
|
||||
|
||||
"agentManager.dialog.openWorktree": "新建工作樹",
|
||||
"agentManager.dialog.configureWorktree": "配置新 Worktree...",
|
||||
"agentManager.dialog.tab.new": "新建",
|
||||
"agentManager.dialog.tab.import": "匯入",
|
||||
"agentManager.dialog.namePlaceholder": "Worktree 名稱(選填)",
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
/** @jsxImportSource solid-js */
|
||||
|
||||
/**
|
||||
* ChatView component
|
||||
* Main chat container that combines all chat components
|
||||
*/
|
||||
|
||||
import { Component, Show, createEffect, createMemo, createSignal, on, onCleanup, onMount } from "solid-js"
|
||||
import { type Component, Show, createEffect, createMemo, createSignal, on, onCleanup, onMount } from "solid-js"
|
||||
import { Button } from "@kilocode/kilo-ui/button"
|
||||
import { Icon } from "@kilocode/kilo-ui/icon"
|
||||
import { Spinner } from "@kilocode/kilo-ui/spinner"
|
||||
import { Tooltip } from "@kilocode/kilo-ui/tooltip"
|
||||
import { showToast } from "@kilocode/kilo-ui/toast"
|
||||
import { DropdownMenu } from "@kilocode/kilo-ui/dropdown-menu"
|
||||
import { TaskHeader } from "./TaskHeader"
|
||||
import { MessageList } from "./MessageList"
|
||||
import { PromptInput } from "./PromptInput"
|
||||
@@ -50,6 +53,8 @@ export const ChatView: Component<ChatViewProps> = (props) => {
|
||||
// "Continue in Worktree" state
|
||||
const [transferring, setTransferring] = createSignal(false)
|
||||
const [transferDetail, setTransferDetail] = createSignal("")
|
||||
const [repoBranch, setRepoBranch] = createSignal<string>()
|
||||
let worktreeRef: HTMLDivElement | undefined
|
||||
|
||||
// Permissions and questions scoped to this session's family (self + subagents).
|
||||
// Each ChatView only sees its own session tree — no cross-session leakage.
|
||||
@@ -98,13 +103,17 @@ export const ChatView: Component<ChatViewProps> = (props) => {
|
||||
// Listen for "Continue in Worktree" progress messages
|
||||
{
|
||||
const labels: Record<string, string> = {
|
||||
capturing: "Capturing changes...",
|
||||
creating: "Creating worktree...",
|
||||
setup: "Running setup...",
|
||||
transferring: "Transferring changes...",
|
||||
forking: "Starting session...",
|
||||
capturing: language.t("sidebar.session.progress.capturing"),
|
||||
creating: language.t("sidebar.session.progress.creating"),
|
||||
setup: language.t("sidebar.session.progress.setup"),
|
||||
transferring: language.t("sidebar.session.progress.transferring"),
|
||||
forking: language.t("sidebar.session.progress.forking"),
|
||||
}
|
||||
const cleanup = vscode.onMessage((msg) => {
|
||||
if (msg.type === "agentManager.repoInfo") {
|
||||
setRepoBranch(msg.branch)
|
||||
return
|
||||
}
|
||||
if (msg.type !== "continueInWorktreeProgress") return
|
||||
const m = msg as { status: string; error?: string }
|
||||
if (m.status === "done") {
|
||||
@@ -115,10 +124,10 @@ export const ChatView: Component<ChatViewProps> = (props) => {
|
||||
if (m.status === "error") {
|
||||
setTransferring(false)
|
||||
setTransferDetail("")
|
||||
showToast({ title: m.error ?? "Failed to continue in worktree" })
|
||||
showToast({ title: m.error ?? language.t("sidebar.session.progress.failed") })
|
||||
return
|
||||
}
|
||||
setTransferDetail(labels[m.status] ?? "Working...")
|
||||
setTransferDetail(labels[m.status] ?? language.t("session.status.working"))
|
||||
})
|
||||
onCleanup(cleanup)
|
||||
}
|
||||
@@ -129,6 +138,170 @@ export const ChatView: Component<ChatViewProps> = (props) => {
|
||||
session.respondToPermission(perm.id, response, approvedAlways, deniedAlways)
|
||||
}
|
||||
|
||||
const startSession = () => window.dispatchEvent(new CustomEvent("newTaskRequest"))
|
||||
|
||||
const startWorktree = () => vscode.postMessage({ type: "agentManager.createWorktree" })
|
||||
|
||||
const startWorktreeFromBranch = () =>
|
||||
vscode.postMessage({ type: "agentManager.createWorktree", baseBranch: repoBranch()! })
|
||||
|
||||
const openAgentManager = () => vscode.postMessage({ type: "openAgentManager" })
|
||||
|
||||
const openChanges = () => vscode.postMessage({ type: "openChanges" })
|
||||
|
||||
const moveToWorktree = () => {
|
||||
if (transferring()) return
|
||||
const sid = id()
|
||||
if (!sid) return
|
||||
setTransferring(true)
|
||||
setTransferDetail(language.t("sidebar.session.progress.capturing"))
|
||||
vscode.postMessage({ type: "continueInWorktree", sessionId: sid })
|
||||
}
|
||||
|
||||
const worktreeTooltip = language.t("sidebar.session.newWorktree.tooltip")
|
||||
|
||||
const advancedTooltip = language.t("sidebar.session.configureWorktree.tooltip")
|
||||
|
||||
const moveTooltip = () => {
|
||||
const stats = session.worktreeStats()
|
||||
if (!stats?.files) return language.t("sidebar.session.moveToWorktree.tooltip.empty")
|
||||
if (stats.files === 1) return language.t("sidebar.session.moveToWorktree.tooltip.one")
|
||||
return language.t("sidebar.session.moveToWorktree.tooltip.other", { files: stats.files })
|
||||
}
|
||||
|
||||
const changesTooltip = () => {
|
||||
const stats = session.worktreeStats()
|
||||
if (!stats?.files) return language.t("sidebar.session.showChanges.tooltip.empty")
|
||||
return (
|
||||
<span class="session-changes-tooltip">
|
||||
<span>{stats.files === 1 ? "1 file changed" : `${stats.files} files changed`}</span>
|
||||
<span class="session-changes-tooltip-separator">·</span>
|
||||
<span class="session-diff-add">+{stats.additions}</span>
|
||||
<span class="session-diff-del">-{stats.deletions}</span>
|
||||
<span>Open the changes view.</span>
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
const showAdvancedWorktree = () => vscode.postMessage({ type: "openAdvancedWorktree" })
|
||||
|
||||
createEffect(() => {
|
||||
if (!isSidebar() || !server.gitInstalled()) return
|
||||
vscode.postMessage({ type: "agentManager.requestRepoInfo" })
|
||||
})
|
||||
|
||||
const renderActions = (hasChat: boolean) => (
|
||||
<div class="new-task-button-wrapper" classList={{ "new-task-button-wrapper--empty": !hasChat }}>
|
||||
<div class="session-actions-row">
|
||||
<Tooltip
|
||||
value={
|
||||
hasChat
|
||||
? language.t("sidebar.session.newSession.tooltip")
|
||||
: language.t("sidebar.session.newSession.disabled")
|
||||
}
|
||||
placement="top"
|
||||
>
|
||||
<Button
|
||||
variant="secondary"
|
||||
size="small"
|
||||
class="session-new-button"
|
||||
onClick={startSession}
|
||||
disabled={!hasChat}
|
||||
aria-label={language.t("sidebar.session.newSession")}
|
||||
>
|
||||
{language.t("sidebar.session.newSession")}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Show when={isSidebar() && server.gitInstalled()}>
|
||||
<div class="session-worktree-split" ref={worktreeRef}>
|
||||
<Tooltip value={worktreeTooltip} placement="top">
|
||||
<Button
|
||||
variant="secondary"
|
||||
size="small"
|
||||
class="session-worktree-main"
|
||||
onClick={startWorktree}
|
||||
aria-label={language.t("sidebar.session.newWorktree")}
|
||||
>
|
||||
{language.t("sidebar.session.newWorktree")}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<DropdownMenu gutter={4} placement="top-start" getAnchorRect={() => worktreeRef?.getBoundingClientRect()}>
|
||||
<Tooltip value={advancedTooltip} placement="top">
|
||||
<DropdownMenu.Trigger
|
||||
class="session-worktree-split-arrow"
|
||||
aria-label={language.t("agentManager.worktree.advancedOptions")}
|
||||
>
|
||||
<Icon name="chevron-down" size="small" />
|
||||
</DropdownMenu.Trigger>
|
||||
</Tooltip>
|
||||
<DropdownMenu.Portal>
|
||||
<DropdownMenu.Content class="session-worktree-split-menu">
|
||||
<DropdownMenu.Item disabled={!repoBranch()} onSelect={startWorktreeFromBranch}>
|
||||
<span class="session-worktree-menu-gap" aria-hidden="true" />
|
||||
<DropdownMenu.ItemLabel class="session-worktree-menu-label">
|
||||
<span>{language.t("sidebar.session.newWorktree.from")}</span>
|
||||
<span class="session-worktree-menu-branch">
|
||||
<Icon name="branch" size="small" />
|
||||
<strong>{repoBranch() ?? language.t("sidebar.session.currentBranch")}</strong>
|
||||
</span>
|
||||
</DropdownMenu.ItemLabel>
|
||||
</DropdownMenu.Item>
|
||||
<DropdownMenu.Item onSelect={showAdvancedWorktree}>
|
||||
<Icon name="settings-gear" size="small" />
|
||||
<DropdownMenu.ItemLabel>
|
||||
{language.t("agentManager.dialog.configureWorktree")}
|
||||
</DropdownMenu.ItemLabel>
|
||||
</DropdownMenu.Item>
|
||||
</DropdownMenu.Content>
|
||||
</DropdownMenu.Portal>
|
||||
</DropdownMenu>
|
||||
</div>
|
||||
</Show>
|
||||
<Show when={hasChat && canContinueInWorktree() && server.gitInstalled()}>
|
||||
<>
|
||||
<Tooltip value={moveTooltip()} placement="top">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
class="session-move-action"
|
||||
aria-disabled={transferring()}
|
||||
onClick={moveToWorktree}
|
||||
aria-label={language.t("sidebar.session.moveToWorktree")}
|
||||
>
|
||||
<Show when={transferring()} fallback={<Icon name="branch" size="small" />}>
|
||||
<Spinner class="chat-spinner-small" />
|
||||
</Show>
|
||||
<span class="session-move-label">
|
||||
{transferring() ? transferDetail() : language.t("sidebar.session.moveToWorktree")}
|
||||
</span>
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Tooltip value={changesTooltip()} placement="top" class="session-move-changes-trigger">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
class="session-move-changes"
|
||||
classList={{
|
||||
"session-move-changes--empty": !session.worktreeStats()?.files,
|
||||
"session-move-changes--has-changes": !!session.worktreeStats()?.files,
|
||||
}}
|
||||
onClick={openChanges}
|
||||
aria-label={language.t("command.session.show.changes")}
|
||||
>
|
||||
<Icon name="layers" size="small" />
|
||||
<Show when={session.worktreeStats()?.files}>
|
||||
<span class="session-diff-add">+{session.worktreeStats()!.additions}</span>
|
||||
<span class="session-diff-del">-{session.worktreeStats()!.deletions}</span>
|
||||
<span class="session-move-dot" aria-hidden="true" />
|
||||
</Show>
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</>
|
||||
</Show>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
return (
|
||||
<div class="chat-view">
|
||||
<TaskHeader readonly={props.readonly} />
|
||||
@@ -159,70 +332,8 @@ export const ChatView: Component<ChatViewProps> = (props) => {
|
||||
/>
|
||||
)}
|
||||
</Show>
|
||||
<Show when={!props.readonly && hasMessages() && idle() && !blocked()}>
|
||||
<div class="new-task-button-wrapper">
|
||||
<div class="session-actions-row">
|
||||
<Tooltip value="Start a new conversation" placement="top">
|
||||
<Button
|
||||
variant="secondary"
|
||||
size="small"
|
||||
onClick={() => window.dispatchEvent(new CustomEvent("newTaskRequest"))}
|
||||
aria-label={language.t("command.session.new.task")}
|
||||
>
|
||||
{language.t("command.session.new.task")}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Show when={canContinueInWorktree() && server.gitInstalled()}>
|
||||
<Tooltip value="Continue in isolated worktree" placement="top">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
disabled={transferring()}
|
||||
onClick={() => {
|
||||
const sid = id()
|
||||
if (!sid) return
|
||||
setTransferring(true)
|
||||
setTransferDetail("Capturing changes...")
|
||||
vscode.postMessage({ type: "continueInWorktree", sessionId: sid })
|
||||
}}
|
||||
aria-label="Continue in Worktree"
|
||||
>
|
||||
<Show when={transferring()} fallback={<Icon name="branch" size="small" />}>
|
||||
<Spinner class="chat-spinner-small" />
|
||||
</Show>
|
||||
{transferring() ? transferDetail() : "Worktree"}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</Show>
|
||||
<Show when={isSidebar() && server.gitInstalled()}>
|
||||
<Tooltip
|
||||
value={
|
||||
session.worktreeStats()?.files
|
||||
? `${session.worktreeStats()!.files} file${session.worktreeStats()!.files > 1 ? "s" : ""} changed · +${session.worktreeStats()!.additions} -${session.worktreeStats()!.deletions}`
|
||||
: "No file changes"
|
||||
}
|
||||
placement="top"
|
||||
class="session-diff-wrapper"
|
||||
>
|
||||
<button
|
||||
class="session-diff-badge"
|
||||
classList={{
|
||||
"session-diff-badge--empty": !session.worktreeStats()?.files,
|
||||
"session-diff-badge--has-changes": !!session.worktreeStats()?.files,
|
||||
}}
|
||||
onClick={() => vscode.postMessage({ type: "openChanges" })}
|
||||
aria-label={language.t("command.session.show.changes")}
|
||||
>
|
||||
<Icon name="layers" size="small" />
|
||||
<Show when={session.worktreeStats()?.files}>
|
||||
<span class="session-diff-add">+{session.worktreeStats()!.additions}</span>
|
||||
<span class="session-diff-del">-{session.worktreeStats()!.deletions}</span>
|
||||
</Show>
|
||||
</button>
|
||||
</Tooltip>
|
||||
</Show>
|
||||
</div>
|
||||
</div>
|
||||
<Show when={!props.readonly && idle() && !blocked() && (hasMessages() || isSidebar())}>
|
||||
{renderActions(hasMessages())}
|
||||
</Show>
|
||||
<Show when={!props.readonly}>
|
||||
<PromptInput
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
/** @jsxImportSource solid-js */
|
||||
|
||||
/**
|
||||
* MessageList component
|
||||
* Scrollable turn-based message list with virtualization.
|
||||
@@ -7,7 +9,7 @@
|
||||
* Shows recent sessions in the empty state for quick resumption.
|
||||
*/
|
||||
|
||||
import { Component, For, Show, createEffect, createMemo, createSignal, on, onCleanup, JSX } from "solid-js"
|
||||
import { type Component, For, Show, createEffect, createMemo, createSignal, on, onCleanup, JSX } from "solid-js"
|
||||
import { Icon } from "@kilocode/kilo-ui/icon"
|
||||
import { Spinner } from "@kilocode/kilo-ui/spinner"
|
||||
import { useDialog } from "@kilocode/kilo-ui/context/dialog"
|
||||
|
||||
@@ -979,7 +979,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
|
||||
variant="ghost"
|
||||
size="small"
|
||||
onClick={() => void handleSend()}
|
||||
disabled={!canSend()}
|
||||
aria-disabled={!canSend()}
|
||||
aria-label={language.t("prompt.action.send")}
|
||||
>
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
|
||||
|
||||
+30
-1
@@ -533,7 +533,36 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "الفرع الرئيسي ({{branch}})",
|
||||
"session.new.worktree.create": "إنشاء شجرة عمل جديدة",
|
||||
"session.new.lastModified": "آخر تعديل",
|
||||
|
||||
"sidebar.session.newSession": "جلسة جديدة",
|
||||
"sidebar.session.newSession.tooltip": "ابدأ محادثة جديدة مع الاحتفاظ بالجلسة الحالية كما هي.",
|
||||
"sidebar.session.newSession.disabled": "هذه الجلسة جديدة بالفعل. ابدأ الدردشة أو أنشئ worktree بدلاً من ذلك.",
|
||||
"sidebar.session.newWorktree": "Worktree جديد",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"أنشئ git worktree معزول للتجربة بأمان، وفصل التغييرات، وتشغيل جلسات متوازية دون تعطيل فرعك الحالي.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"افتح مربع حوار worktree في Agent Manager لتكوين worktree جديد قبل إنشائه.",
|
||||
"sidebar.session.newWorktree.from": "Worktree جديد من",
|
||||
"sidebar.session.currentBranch": "الفرع الحالي",
|
||||
"sidebar.session.moveToWorktree": "نقل إلى Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"انقل هذه المحادثة وتغييراتك المحلية الحالية إلى worktree مخصص لمتابعة العمل في بيئة معزولة.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"انقل هذه المحادثة وملفًا واحدًا معدلًا إلى worktree مخصص لمتابعة العمل في بيئة معزولة.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"انقل هذه المحادثة و{{files}} ملفات معدلة إلى worktree مخصص لمتابعة العمل في بيئة معزولة.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "افتح عرض التغييرات لفحص شجرة العمل الحالية.",
|
||||
"sidebar.session.showChanges.tooltip.one": "تم تعديل ملف واحد · +{{additions}} -{{deletions}}. افتح عرض التغييرات.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"تم تعديل {{files}} ملفات · +{{additions}} -{{deletions}}. افتح عرض التغييرات.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"افتح Agent Manager للحصول على نظرة عامة كاملة على الجلسات المتوازية و worktrees، لتتمكن من تنسيق المهام الطويلة في مكان واحد.",
|
||||
"sidebar.session.openAgentManager": "فتح Agent Manager",
|
||||
"sidebar.session.progress.capturing": "جاري التقاط التغييرات...",
|
||||
"sidebar.session.progress.creating": "جاري إنشاء worktree...",
|
||||
"sidebar.session.progress.setup": "جاري تشغيل الإعداد...",
|
||||
"sidebar.session.progress.transferring": "جاري نقل التغييرات...",
|
||||
"sidebar.session.progress.forking": "جاري بدء الجلسة...",
|
||||
"sidebar.session.progress.failed": "فشلت المتابعة في worktree",
|
||||
"session.header.search.placeholder": "بحث {{project}}",
|
||||
"session.header.searchFiles": "بحث عن الملفات",
|
||||
"session.header.openIn": "فتح في",
|
||||
|
||||
+32
-1
@@ -536,7 +536,38 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Branch principal ({{branch}})",
|
||||
"session.new.worktree.create": "Criar novo worktree",
|
||||
"session.new.lastModified": "Última modificação",
|
||||
|
||||
"sidebar.session.newSession": "Nova Sessão",
|
||||
"sidebar.session.newSession.tooltip": "Inicie uma nova conversa mantendo a sessão atual intacta.",
|
||||
"sidebar.session.newSession.disabled": "Esta sessão já é nova. Comece a conversar ou crie um worktree em vez disso.",
|
||||
"sidebar.session.newWorktree": "Novo Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Crie um git worktree isolado para experimentar com segurança, manter as alterações separadas e executar sessões paralelas sem interromper sua branch atual.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Abra a caixa de diálogo de worktree do Agent Manager para configurar um novo worktree antes de criá-lo.",
|
||||
"sidebar.session.newWorktree.from": "Novo Worktree de",
|
||||
"sidebar.session.currentBranch": "branch atual",
|
||||
"sidebar.session.moveToWorktree": "Mover para Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Mova esta conversa e suas alterações locais atuais para um worktree dedicado para trabalho de acompanhamento isolado.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Mover esta conversa e 1 arquivo alterado para um worktree dedicado para trabalho de acompanhamento isolado.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Mover esta conversa e {{files}} arquivos alterados para um worktree dedicado para trabalho de acompanhamento isolado.",
|
||||
"sidebar.session.showChanges.tooltip.empty":
|
||||
"Abra a visualização de alterações para inspecionar a árvore de trabalho atual.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 arquivo alterado · +{{additions}} -{{deletions}}. Abrir a visualização de alterações.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} arquivos alterados · +{{additions}} -{{deletions}}. Abrir a visualização de alterações.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Abra o Agent Manager para uma visão geral completa de sessões paralelas e worktrees, para que você possa coordenar tarefas longas em um só lugar.",
|
||||
"sidebar.session.openAgentManager": "Abrir Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Capturando alterações...",
|
||||
"sidebar.session.progress.creating": "Criando worktree...",
|
||||
"sidebar.session.progress.setup": "Executando configuração...",
|
||||
"sidebar.session.progress.transferring": "Transferindo alterações...",
|
||||
"sidebar.session.progress.forking": "Iniciando sessão...",
|
||||
"sidebar.session.progress.failed": "Falha ao continuar no worktree",
|
||||
"session.header.search.placeholder": "Buscar {{project}}",
|
||||
"session.header.searchFiles": "Buscar arquivos",
|
||||
"session.header.openIn": "Abrir em",
|
||||
|
||||
+32
-1
@@ -541,7 +541,38 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Glavna grana ({{branch}})",
|
||||
"session.new.worktree.create": "Kreiraj novi worktree",
|
||||
"session.new.lastModified": "Posljednja izmjena",
|
||||
|
||||
"sidebar.session.newSession": "Nova Sesija",
|
||||
"sidebar.session.newSession.tooltip": "Započnite novi razgovor držeći trenutnu sesiju netaknutom.",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"Ova sesija je već nova. Započnite razgovor ili umjesto toga kreirajte worktree.",
|
||||
"sidebar.session.newWorktree": "Novi Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Kreirajte izolovani git worktree za sigurno eksperimentisanje, odvojeno čuvanje izmjena i pokretanje paralelnih sesija bez prekidanja vaše trenutne grane.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Otvorite Agent Manager worktree dijalog za konfigurisanje novog worktree-a prije kreiranja.",
|
||||
"sidebar.session.newWorktree.from": "Novi Worktree od",
|
||||
"sidebar.session.currentBranch": "trenutna grana",
|
||||
"sidebar.session.moveToWorktree": "Premjesti u Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Premjestite ovaj razgovor i vaše trenutne lokalne izmjene u namjenski worktree za izolovani radni nastavak.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Premjesti ovaj razgovor i 1 izmijenjen fajl u namjenski worktree za izolovani naknadni rad.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Premjesti ovaj razgovor i {{files}} izmijenjenih fajlova u namjenski worktree za izolovani naknadni rad.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Otvorite prikaz izmjena da pregledate trenutno radno stablo.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 fajl izmijenjen · +{{additions}} -{{deletions}}. Otvori pregled izmjena.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} fajlova izmijenjeno · +{{additions}} -{{deletions}}. Otvori pregled izmjena.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Otvorite Agent Manager za potpuni pregled paralelnih sesija i worktree-a, kako biste mogli koordinirati dugotrajne zadatke na jednom mjestu.",
|
||||
"sidebar.session.openAgentManager": "Otvori Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Snimanje izmjena...",
|
||||
"sidebar.session.progress.creating": "Kreiranje worktree-a...",
|
||||
"sidebar.session.progress.setup": "Pokretanje podešavanja...",
|
||||
"sidebar.session.progress.transferring": "Prijenos izmjena...",
|
||||
"sidebar.session.progress.forking": "Pokretanje sesije...",
|
||||
"sidebar.session.progress.failed": "Nije uspjelo nastavljanje u worktree-u",
|
||||
"session.header.search.placeholder": "Pretraži {{project}}",
|
||||
"session.header.searchFiles": "Pretraži datoteke",
|
||||
"session.header.openIn": "Otvori u",
|
||||
|
||||
+31
-1
@@ -536,7 +536,37 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Hovedgren ({{branch}})",
|
||||
"session.new.worktree.create": "Opret nyt worktree",
|
||||
"session.new.lastModified": "Sidst ændret",
|
||||
|
||||
"sidebar.session.newSession": "Ny Session",
|
||||
"sidebar.session.newSession.tooltip": "Start en frisk samtale, mens den nuværende session holdes intakt.",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"Denne session er allerede ny. Start med at chatte eller opret et worktree i stedet.",
|
||||
"sidebar.session.newWorktree": "Nyt Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Opret et isoleret git worktree for at eksperimentere sikkert, holde ændringer adskilt og køre parallelle sessioner uden at forstyrre din nuværende branch.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Åbn Agent Manager worktree-dialogen for at konfigurere et nyt worktree før oprettelse.",
|
||||
"sidebar.session.newWorktree.from": "Nyt Worktree fra",
|
||||
"sidebar.session.currentBranch": "nuværende branch",
|
||||
"sidebar.session.moveToWorktree": "Flyt til Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Flyt denne samtale og dine nuværende lokale ændringer til et dedikeret worktree for isoleret opfølgningsarbejde.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Flyt denne samtale og 1 ændret fil til et dedikeret worktree for isoleret opfølgende arbejde.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Flyt denne samtale og {{files}} ændrede filer til et dedikeret worktree for isoleret opfølgende arbejde.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Åbn ændringsvisningen for at inspicere det nuværende worktree.",
|
||||
"sidebar.session.showChanges.tooltip.one": "1 fil ændret · +{{additions}} -{{deletions}}. Åbn ændringsvisningen.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} filer ændret · +{{additions}} -{{deletions}}. Åbn ændringsvisningen.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Åbn Agent Manager for et komplet overblik over parallelle sessioner og worktrees, så du kan koordinere langvarige opgaver ét sted.",
|
||||
"sidebar.session.openAgentManager": "Åbn Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Fanger ændringer...",
|
||||
"sidebar.session.progress.creating": "Opretter worktree...",
|
||||
"sidebar.session.progress.setup": "Kører opsætning...",
|
||||
"sidebar.session.progress.transferring": "Overfører ændringer...",
|
||||
"sidebar.session.progress.forking": "Starter session...",
|
||||
"sidebar.session.progress.failed": "Kunne ikke fortsætte i worktree",
|
||||
"session.header.search.placeholder": "Søg {{project}}",
|
||||
"session.header.searchFiles": "Søg efter filer",
|
||||
"session.header.openIn": "Åbn i",
|
||||
|
||||
+33
-1
@@ -543,7 +543,39 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Haupt-Branch ({{branch}})",
|
||||
"session.new.worktree.create": "Neuen Worktree erstellen",
|
||||
"session.new.lastModified": "Zuletzt geändert",
|
||||
|
||||
"sidebar.session.newSession": "Neue Sitzung",
|
||||
"sidebar.session.newSession.tooltip": "Starte eine neue Unterhaltung, während die aktuelle Sitzung intakt bleibt.",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"Diese Sitzung ist bereits neu. Beginne zu chatten oder erstelle stattdessen einen Worktree.",
|
||||
"sidebar.session.newWorktree": "Neuer Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Erstelle einen isolierten Git-Worktree, um sicher zu experimentieren, Änderungen getrennt zu halten und parallele Sitzungen auszuführen, ohne deinen aktuellen Branch zu stören.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Öffne den Agent Manager Worktree-Dialog, um einen neuen Worktree vor der Erstellung zu konfigurieren.",
|
||||
"sidebar.session.newWorktree.from": "Neuer Worktree von",
|
||||
"sidebar.session.currentBranch": "aktueller Branch",
|
||||
"sidebar.session.moveToWorktree": "In Worktree verschieben",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Verschiebe diese Unterhaltung und deine aktuellen lokalen Änderungen in einen dedizierten Worktree für isolierte Folgearbeiten.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Diese Unterhaltung und 1 geänderte Datei in einen dedizierten Worktree für isolierte Folgearbeiten verschieben.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Diese Unterhaltung und {{files}} geänderte Dateien in einen dedizierten Worktree für isolierte Folgearbeiten verschieben.",
|
||||
"sidebar.session.showChanges.tooltip.empty":
|
||||
"Öffne die Änderungsansicht, um den aktuellen Working Tree zu überprüfen.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 Datei geändert · +{{additions}} -{{deletions}}. Änderungsansicht öffnen.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} Dateien geändert · +{{additions}} -{{deletions}}. Änderungsansicht öffnen.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Öffne den Agent Manager für einen vollständigen Überblick über parallele Sitzungen und Worktrees, damit du langlaufende Aufgaben an einem Ort koordinieren kannst.",
|
||||
"sidebar.session.openAgentManager": "Agent Manager öffnen",
|
||||
"sidebar.session.progress.capturing": "Änderungen werden erfasst...",
|
||||
"sidebar.session.progress.creating": "Worktree wird erstellt...",
|
||||
"sidebar.session.progress.setup": "Setup wird ausgeführt...",
|
||||
"sidebar.session.progress.transferring": "Änderungen werden übertragen...",
|
||||
"sidebar.session.progress.forking": "Sitzung wird gestartet...",
|
||||
"sidebar.session.progress.failed": "Fortsetzen im Worktree fehlgeschlagen",
|
||||
"session.header.search.placeholder": "{{project}} durchsuchen",
|
||||
"session.header.searchFiles": "Dateien suchen",
|
||||
"session.header.openIn": "Öffnen in",
|
||||
|
||||
@@ -1034,6 +1034,36 @@ export const dict = {
|
||||
"session.status.retrying": "Retrying (attempt {{ attempt }})… {{ message }}",
|
||||
"session.status.working": "Working...",
|
||||
"session.status.offline": "Network disconnected — reconnecting...",
|
||||
"sidebar.session.newSession": "New Session",
|
||||
"sidebar.session.newSession.tooltip": "Start a fresh conversation while keeping the current session intact.",
|
||||
"sidebar.session.newSession.disabled": "This session is already new. Start chatting or create a worktree instead.",
|
||||
"sidebar.session.newWorktree": "New Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Create an isolated git worktree to experiment safely, keep changes separated, and run parallel sessions without disrupting your current branch.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Open the Agent Manager worktree dialog to configure a new worktree before creating it.",
|
||||
"sidebar.session.newWorktree.from": "New Worktree from",
|
||||
"sidebar.session.currentBranch": "current branch",
|
||||
"sidebar.session.moveToWorktree": "Move to Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Move this conversation and your current local changes into a dedicated worktree for isolated follow-up work.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Move this conversation and 1 changed file into a dedicated worktree for isolated follow-up work.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Move this conversation and {{files}} changed files into a dedicated worktree for isolated follow-up work.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Open the changes view to inspect the current working tree.",
|
||||
"sidebar.session.showChanges.tooltip.one": "1 file changed · +{{additions}} -{{deletions}}. Open the changes view.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} files changed · +{{additions}} -{{deletions}}. Open the changes view.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Open Agent Manager for a full overview of parallel sessions and worktrees, so you can coordinate long-running tasks in one place.",
|
||||
"sidebar.session.openAgentManager": "Open Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Capturing changes...",
|
||||
"sidebar.session.progress.creating": "Creating worktree...",
|
||||
"sidebar.session.progress.setup": "Running setup...",
|
||||
"sidebar.session.progress.transferring": "Transferring changes...",
|
||||
"sidebar.session.progress.forking": "Starting session...",
|
||||
"sidebar.session.progress.failed": "Failed to continue in worktree",
|
||||
|
||||
"ui.sessionTurn.cancel": "Cancel",
|
||||
"ui.sessionTurn.status.thinking": "Thinking...",
|
||||
|
||||
+31
-1
@@ -539,7 +539,37 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Rama principal ({{branch}})",
|
||||
"session.new.worktree.create": "Crear nuevo árbol de trabajo",
|
||||
"session.new.lastModified": "Última modificación",
|
||||
|
||||
"sidebar.session.newSession": "Nueva Sesión",
|
||||
"sidebar.session.newSession.tooltip": "Inicia una nueva conversación manteniendo intacta la sesión actual.",
|
||||
"sidebar.session.newSession.disabled": "Esta sesión ya es nueva. Empieza a chatear o crea un worktree en su lugar.",
|
||||
"sidebar.session.newWorktree": "Nuevo Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Crea un git worktree aislado para experimentar de forma segura, mantener los cambios separados y ejecutar sesiones paralelas sin interrumpir tu rama actual.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Abre el diálogo de worktree en el Agent Manager para configurar un nuevo worktree antes de crearlo.",
|
||||
"sidebar.session.newWorktree.from": "Nuevo Worktree desde",
|
||||
"sidebar.session.currentBranch": "rama actual",
|
||||
"sidebar.session.moveToWorktree": "Mover a Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Mueve esta conversación y tus cambios locales actuales a un worktree dedicado para un trabajo de seguimiento aislado.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Mover esta conversación y 1 archivo modificado a un worktree dedicado para trabajo de seguimiento aislado.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Mover esta conversación y {{files}} archivos modificados a un worktree dedicado para trabajo de seguimiento aislado.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Abre la vista de cambios para inspeccionar el árbol de trabajo actual.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 archivo modificado · +{{additions}} -{{deletions}}. Abrir la vista de cambios.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} archivos modificados · +{{additions}} -{{deletions}}. Abrir la vista de cambios.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Abre el Agent Manager para obtener una vista general completa de las sesiones paralelas y los worktrees, para que puedas coordinar tareas de larga duración en un solo lugar.",
|
||||
"sidebar.session.openAgentManager": "Abrir Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Capturando cambios...",
|
||||
"sidebar.session.progress.creating": "Creando worktree...",
|
||||
"sidebar.session.progress.setup": "Ejecutando configuración...",
|
||||
"sidebar.session.progress.transferring": "Transfiriendo cambios...",
|
||||
"sidebar.session.progress.forking": "Iniciando sesión...",
|
||||
"sidebar.session.progress.failed": "No se pudo continuar en el worktree",
|
||||
"session.header.search.placeholder": "Buscar {{project}}",
|
||||
"session.header.searchFiles": "Buscar archivos",
|
||||
"session.header.openIn": "Abrir en",
|
||||
|
||||
+34
-1
@@ -544,7 +544,40 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Branche principale ({{branch}})",
|
||||
"session.new.worktree.create": "Créer un nouvel arbre de travail",
|
||||
"session.new.lastModified": "Dernière modification",
|
||||
|
||||
"sidebar.session.newSession": "Nouvelle Session",
|
||||
"sidebar.session.newSession.tooltip":
|
||||
"Démarrer une nouvelle conversation tout en gardant la session actuelle intacte.",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"Cette session est déjà nouvelle. Commencez à discuter ou créez plutôt un worktree.",
|
||||
"sidebar.session.newWorktree": "Nouveau Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Créer un git worktree isolé pour expérimenter en toute sécurité, séparer les modifications et exécuter des sessions parallèles sans perturber votre branche actuelle.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Ouvrez la boîte de dialogue worktree du Agent Manager pour configurer un nouveau worktree avant de le créer.",
|
||||
"sidebar.session.newWorktree.from": "Nouveau Worktree depuis",
|
||||
"sidebar.session.currentBranch": "branche actuelle",
|
||||
"sidebar.session.moveToWorktree": "Déplacer vers un Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Déplacez cette conversation et vos modifications locales actuelles dans un worktree dédié pour un travail de suivi isolé.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Déplacer cette conversation et 1 fichier modifié vers un worktree dédié pour un travail de suivi isolé.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Déplacer cette conversation et {{files}} fichiers modifiés vers un worktree dédié pour un travail de suivi isolé.",
|
||||
"sidebar.session.showChanges.tooltip.empty":
|
||||
"Ouvrez la vue des modifications pour inspecter l'arborescence de travail actuelle.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 fichier modifié · +{{additions}} -{{deletions}}. Ouvrir la vue des modifications.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} fichiers modifiés · +{{additions}} -{{deletions}}. Ouvrir la vue des modifications.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Ouvrez Agent Manager pour une vue d'ensemble complète des sessions parallèles et des worktrees, afin de coordonner les tâches longues en un seul endroit.",
|
||||
"sidebar.session.openAgentManager": "Ouvrir Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Capture des modifications...",
|
||||
"sidebar.session.progress.creating": "Création du worktree...",
|
||||
"sidebar.session.progress.setup": "Exécution de la configuration...",
|
||||
"sidebar.session.progress.transferring": "Transfert des modifications...",
|
||||
"sidebar.session.progress.forking": "Démarrage de la session...",
|
||||
"sidebar.session.progress.failed": "Échec de la poursuite dans le worktree",
|
||||
"session.header.search.placeholder": "Rechercher {{project}}",
|
||||
"session.header.searchFiles": "Rechercher des fichiers",
|
||||
"session.header.openIn": "Ouvrir dans",
|
||||
|
||||
+32
-1
@@ -535,7 +535,38 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "メインブランチ ({{branch}})",
|
||||
"session.new.worktree.create": "新しいワークツリーを作成",
|
||||
"session.new.lastModified": "最終更新",
|
||||
|
||||
"sidebar.session.newSession": "新規セッション",
|
||||
"sidebar.session.newSession.tooltip": "現在のセッションを維持したまま、新しい会話を開始します。",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"このセッションは既に新規です。チャットを開始するか、代わりに worktree を作成してください。",
|
||||
"sidebar.session.newWorktree": "新規 Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"隔離された git worktree を作成して、安全に実験し、変更を分離し、現在のブランチを中断することなく並行セッションを実行します。",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Agent Manager の worktree ダイアログを開き、作成する前に新しい worktree を構成します。",
|
||||
"sidebar.session.newWorktree.from": "新規 Worktree の作成元",
|
||||
"sidebar.session.currentBranch": "現在のブランチ",
|
||||
"sidebar.session.moveToWorktree": "Worktree に移動",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"この会話と現在のローカルの変更を専用の worktree に移動して、隔離された環境で作業を続行します。",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"この会話と1つの変更されたファイルを、分離されたフォローアップ作業用の専用 worktree に移動します。",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"この会話と{{files}}個の変更されたファイルを、分離されたフォローアップ作業用の専用 worktree に移動します。",
|
||||
"sidebar.session.showChanges.tooltip.empty": "変更ビューを開いて、現在の作業ツリーを検査します。",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1つのファイルが変更されました · +{{additions}} -{{deletions}}。変更ビューを開きます。",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}}個のファイルが変更されました · +{{additions}} -{{deletions}}。変更ビューを開きます。",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Agent Manager を開いて、並行セッションと worktree の全体像を把握し、時間のかかるタスクを 1 か所で調整できます。",
|
||||
"sidebar.session.openAgentManager": "Agent Manager を開く",
|
||||
"sidebar.session.progress.capturing": "変更をキャプチャ中...",
|
||||
"sidebar.session.progress.creating": "worktree を作成中...",
|
||||
"sidebar.session.progress.setup": "セットアップを実行中...",
|
||||
"sidebar.session.progress.transferring": "変更を転送中...",
|
||||
"sidebar.session.progress.forking": "セッションを開始中...",
|
||||
"sidebar.session.progress.failed": "worktree での再開に失敗しました",
|
||||
"session.header.search.placeholder": "{{project}}を検索",
|
||||
"session.header.searchFiles": "ファイルを検索",
|
||||
"session.header.openIn": "で開く",
|
||||
|
||||
+30
-1
@@ -536,7 +536,36 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "메인 브랜치 ({{branch}})",
|
||||
"session.new.worktree.create": "새 작업 트리 생성",
|
||||
"session.new.lastModified": "최근 수정",
|
||||
|
||||
"sidebar.session.newSession": "새 세션",
|
||||
"sidebar.session.newSession.tooltip": "현재 세션을 그대로 유지하면서 새로운 대화를 시작합니다.",
|
||||
"sidebar.session.newSession.disabled": "이 세션은 이미 새 세션입니다. 채팅을 시작하거나 대신 worktree를 만드세요.",
|
||||
"sidebar.session.newWorktree": "새 Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"격리된 git worktree를 만들어 안전하게 실험하고, 변경 사항을 분리하며, 현재 브랜치를 방해하지 않고 병렬 세션을 실행합니다.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Agent Manager worktree 대화상자를 열어 생성하기 전에 새 worktree를 구성합니다.",
|
||||
"sidebar.session.newWorktree.from": "다음에서 새 Worktree 생성:",
|
||||
"sidebar.session.currentBranch": "현재 브랜치",
|
||||
"sidebar.session.moveToWorktree": "Worktree로 이동",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"이 대화 및 현재 로컬 변경 사항을 전용 worktree로 이동하여 격리된 후속 작업을 수행합니다.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"이 대화와 변경된 파일 1개를 격리된 후속 작업을 위해 전용 worktree로 이동합니다.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"이 대화와 변경된 파일 {{files}}개를 격리된 후속 작업을 위해 전용 worktree로 이동합니다.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "변경 사항 뷰를 열어 현재 작업 트리를 검사합니다.",
|
||||
"sidebar.session.showChanges.tooltip.one": "파일 1개 변경됨 · +{{additions}} -{{deletions}}. 변경 사항 뷰 열기.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"파일 {{files}}개 변경됨 · +{{additions}} -{{deletions}}. 변경 사항 뷰 열기.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Agent Manager를 열어 병렬 세션 및 worktree의 전체 개요를 확인하고, 장기 실행 작업을 한 곳에서 조정할 수 있습니다.",
|
||||
"sidebar.session.openAgentManager": "Agent Manager 열기",
|
||||
"sidebar.session.progress.capturing": "변경 사항 캡처 중...",
|
||||
"sidebar.session.progress.creating": "worktree 생성 중...",
|
||||
"sidebar.session.progress.setup": "설정 실행 중...",
|
||||
"sidebar.session.progress.transferring": "변경 사항 전송 중...",
|
||||
"sidebar.session.progress.forking": "세션 시작 중...",
|
||||
"sidebar.session.progress.failed": "worktree에서 계속하지 못했습니다",
|
||||
"session.header.search.placeholder": "{{project}} 검색",
|
||||
"session.header.searchFiles": "파일 검색",
|
||||
"session.header.openIn": "열기",
|
||||
|
||||
+33
-1
@@ -541,7 +541,39 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Main-branch ({{branch}})",
|
||||
"session.new.worktree.create": "Nieuwe worktree aanmaken",
|
||||
"session.new.lastModified": "Laatst gewijzigd",
|
||||
|
||||
"sidebar.session.newSession": "Nieuwe Sessie",
|
||||
"sidebar.session.newSession.tooltip": "Start een nieuw gesprek terwijl je de huidige sessie intact houdt.",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"Deze sessie is al nieuw. Begin met chatten of maak in plaats daarvan een worktree aan.",
|
||||
"sidebar.session.newWorktree": "Nieuwe Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Maak een geïsoleerde git worktree aan om veilig te experimenteren, wijzigingen gescheiden te houden en parallelle sessies uit te voeren zonder je huidige branch te verstoren.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Open het Agent Manager worktree-dialoogvenster om een nieuwe worktree te configureren voordat je deze aanmaakt.",
|
||||
"sidebar.session.newWorktree.from": "Nieuwe Worktree van",
|
||||
"sidebar.session.currentBranch": "huidige branch",
|
||||
"sidebar.session.moveToWorktree": "Verplaats naar Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Verplaats dit gesprek en je huidige lokale wijzigingen naar een toegewijde worktree voor geïsoleerd vervolgwerk.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Verplaats deze conversatie en 1 gewijzigd bestand naar een specifieke worktree voor geïsoleerd vervolgwerk.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Verplaats deze conversatie en {{files}} gewijzigde bestanden naar een specifieke worktree voor geïsoleerd vervolgwerk.",
|
||||
"sidebar.session.showChanges.tooltip.empty":
|
||||
"Open de weergave met wijzigingen om de huidige worktree te inspecteren.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 bestand gewijzigd · +{{additions}} -{{deletions}}. Open de wijzigingenweergave.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} bestanden gewijzigd · +{{additions}} -{{deletions}}. Open de wijzigingenweergave.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Open Agent Manager voor een compleet overzicht van parallelle sessies en worktrees, zodat je langlopende taken op één plek kunt coördineren.",
|
||||
"sidebar.session.openAgentManager": "Open Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Wijzigingen vastleggen...",
|
||||
"sidebar.session.progress.creating": "Worktree aanmaken...",
|
||||
"sidebar.session.progress.setup": "Setup uitvoeren...",
|
||||
"sidebar.session.progress.transferring": "Wijzigingen overzetten...",
|
||||
"sidebar.session.progress.forking": "Sessie starten...",
|
||||
"sidebar.session.progress.failed": "Kan niet doorgaan in worktree",
|
||||
"session.header.search.placeholder": "Zoek in {{project}}",
|
||||
"session.header.searchFiles": "Bestanden zoeken",
|
||||
"session.header.openIn": "Open in",
|
||||
|
||||
+31
-1
@@ -540,7 +540,37 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Hovedgren ({{branch}})",
|
||||
"session.new.worktree.create": "Opprett nytt worktree",
|
||||
"session.new.lastModified": "Sist endret",
|
||||
|
||||
"sidebar.session.newSession": "Ny Økt",
|
||||
"sidebar.session.newSession.tooltip": "Start en ny samtale mens den nåværende økten holdes intakt.",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"Denne økten er allerede ny. Start en chat eller opprett et worktree i stedet.",
|
||||
"sidebar.session.newWorktree": "Nytt Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Opprett et isolert git worktree for å eksperimentere trygt, holde endringer adskilt og kjøre parallelle økter uten å forstyrre din nåværende branch.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Åpne Agent Manager worktree-dialogen for å konfigurere et nytt worktree før opprettelse.",
|
||||
"sidebar.session.newWorktree.from": "Nytt Worktree fra",
|
||||
"sidebar.session.currentBranch": "nåværende branch",
|
||||
"sidebar.session.moveToWorktree": "Flytt til Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Flytt denne samtalen og dine nåværende lokale endringer til et dedikert worktree for isolert oppfølgingsarbeid.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Flytt denne samtalen og 1 endret fil til en dedikert worktree for isolert oppfølgingsarbeid.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Flytt denne samtalen og {{files}} endrede filer til en dedikert worktree for isolert oppfølgingsarbeid.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Åpne endringsvisningen for å inspisere det nåværende arbeidstreet.",
|
||||
"sidebar.session.showChanges.tooltip.one": "1 fil endret · +{{additions}} -{{deletions}}. Åpne endringsvisningen.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} filer endret · +{{additions}} -{{deletions}}. Åpne endringsvisningen.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Åpne Agent Manager for full oversikt over parallelle økter og worktrees, slik at du kan koordinere langvarige oppgaver på ett sted.",
|
||||
"sidebar.session.openAgentManager": "Åpne Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Fanger endringer...",
|
||||
"sidebar.session.progress.creating": "Oppretter worktree...",
|
||||
"sidebar.session.progress.setup": "Kjører oppsett...",
|
||||
"sidebar.session.progress.transferring": "Overfører endringer...",
|
||||
"sidebar.session.progress.forking": "Starter økt...",
|
||||
"sidebar.session.progress.failed": "Kunne ikke fortsette i worktree",
|
||||
"session.header.search.placeholder": "Søk i {{project}}",
|
||||
"session.header.searchFiles": "Søk etter filer",
|
||||
"session.header.openIn": "Åpne i",
|
||||
|
||||
+30
-1
@@ -538,7 +538,36 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Główna gałąź ({{branch}})",
|
||||
"session.new.worktree.create": "Utwórz nowe drzewo robocze",
|
||||
"session.new.lastModified": "Ostatnio zmodyfikowano",
|
||||
|
||||
"sidebar.session.newSession": "Nowa Sesja",
|
||||
"sidebar.session.newSession.tooltip": "Rozpocznij nową konwersację, zachowując obecną sesję bez zmian.",
|
||||
"sidebar.session.newSession.disabled": "Ta sesja jest już nowa. Rozpocznij czat lub zamiast tego utwórz worktree.",
|
||||
"sidebar.session.newWorktree": "Nowe Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Utwórz odizolowane git worktree, aby bezpiecznie eksperymentować, oddzielać zmiany i uruchamiać równoległe sesje bez zakłócania obecnej gałęzi.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Otwórz okno dialogowe worktree w Agent Manager, aby skonfigurować nowe worktree przed jego utworzeniem.",
|
||||
"sidebar.session.newWorktree.from": "Nowe Worktree z",
|
||||
"sidebar.session.currentBranch": "obecna gałąź",
|
||||
"sidebar.session.moveToWorktree": "Przenieś do Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Przenieś tę konwersację i obecne lokalne zmiany do dedykowanego worktree w celu izolowanej dalszej pracy.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Przenieś tę rozmowę i 1 zmieniony plik do dedykowanego worktree w celu izolowanej dalszej pracy.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Przenieś tę rozmowę i {{files}} zmienionych plików do dedykowanego worktree w celu izolowanej dalszej pracy.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Otwórz widok zmian, aby sprawdzić obecne drzewo robocze.",
|
||||
"sidebar.session.showChanges.tooltip.one": "1 plik zmieniony · +{{additions}} -{{deletions}}. Otwórz widok zmian.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} zmienionych plików · +{{additions}} -{{deletions}}. Otwórz widok zmian.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Otwórz Agent Manager, aby uzyskać pełny przegląd równoległych sesji i worktree, ułatwiając koordynację długotrwałych zadań w jednym miejscu.",
|
||||
"sidebar.session.openAgentManager": "Otwórz Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Przechwytywanie zmian...",
|
||||
"sidebar.session.progress.creating": "Tworzenie worktree...",
|
||||
"sidebar.session.progress.setup": "Uruchamianie konfiguracji...",
|
||||
"sidebar.session.progress.transferring": "Przesyłanie zmian...",
|
||||
"sidebar.session.progress.forking": "Uruchamianie sesji...",
|
||||
"sidebar.session.progress.failed": "Nie udało się kontynuować w worktree",
|
||||
"session.header.search.placeholder": "Szukaj {{project}}",
|
||||
"session.header.searchFiles": "Szukaj plików",
|
||||
"session.header.openIn": "Otwórz w",
|
||||
|
||||
+31
-1
@@ -539,7 +539,37 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Основная ветка ({{branch}})",
|
||||
"session.new.worktree.create": "Создать новый worktree",
|
||||
"session.new.lastModified": "Последнее изменение",
|
||||
|
||||
"sidebar.session.newSession": "Новая сессия",
|
||||
"sidebar.session.newSession.tooltip": "Начать новую беседу, сохранив текущую сессию нетронутой.",
|
||||
"sidebar.session.newSession.disabled": "Эта сессия уже новая. Начните чат или создайте worktree.",
|
||||
"sidebar.session.newWorktree": "Новое Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Создайте изолированное git worktree для безопасных экспериментов, разделения изменений и запуска параллельных сессий без прерывания вашей текущей ветки.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Откройте диалоговое окно worktree в Agent Manager, чтобы настроить новое worktree перед созданием.",
|
||||
"sidebar.session.newWorktree.from": "Новое Worktree из",
|
||||
"sidebar.session.currentBranch": "текущей ветки",
|
||||
"sidebar.session.moveToWorktree": "Перенести в Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Перенесите эту беседу и ваши текущие локальные изменения в выделенное worktree для изолированной последующей работы.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Переместить этот разговор и 1 измененный файл в выделенный worktree для изолированной дальнейшей работы.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Переместить этот разговор и {{files}} измененных файлов в выделенный worktree для изолированной дальнейшей работы.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Откройте просмотр изменений, чтобы изучить текущее рабочее дерево.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 файл изменен · +{{additions}} -{{deletions}}. Открыть просмотр изменений.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} файлов изменено · +{{additions}} -{{deletions}}. Открыть просмотр изменений.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Откройте Agent Manager для полного обзора параллельных сессий и worktree, чтобы координировать длительные задачи в одном месте.",
|
||||
"sidebar.session.openAgentManager": "Открыть Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Захват изменений...",
|
||||
"sidebar.session.progress.creating": "Создание worktree...",
|
||||
"sidebar.session.progress.setup": "Выполнение настройки...",
|
||||
"sidebar.session.progress.transferring": "Перенос изменений...",
|
||||
"sidebar.session.progress.forking": "Запуск сессии...",
|
||||
"sidebar.session.progress.failed": "Не удалось продолжить в worktree",
|
||||
"session.header.search.placeholder": "Поиск {{project}}",
|
||||
"session.header.searchFiles": "Поиск файлов",
|
||||
"session.header.openIn": "Открыть в",
|
||||
|
||||
+31
-1
@@ -537,7 +537,37 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "สาขาหลัก ({{branch}})",
|
||||
"session.new.worktree.create": "สร้าง worktree ใหม่",
|
||||
"session.new.lastModified": "แก้ไขล่าสุด",
|
||||
|
||||
"sidebar.session.newSession": "เซสชันใหม่",
|
||||
"sidebar.session.newSession.tooltip": "เริ่มการสนทนาใหม่โดยที่ยังคงเซสชันปัจจุบันไว้",
|
||||
"sidebar.session.newSession.disabled": "เซสชันนี้เป็นเซสชันใหม่อยู่แล้ว เริ่มแชทหรือสร้าง worktree แทน",
|
||||
"sidebar.session.newWorktree": "Worktree ใหม่",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"สร้าง git worktree ที่แยกออกมาต่างหากเพื่อทดลองอย่างปลอดภัย แยกการเปลี่ยนแปลงออกจากกัน และรันเซสชันคู่ขนานโดยไม่รบกวน branch ปัจจุบันของคุณ",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"เปิดกล่องโต้ตอบ worktree ของ Agent Manager เพื่อกำหนดค่า worktree ใหม่ก่อนที่จะสร้าง",
|
||||
"sidebar.session.newWorktree.from": "Worktree ใหม่จาก",
|
||||
"sidebar.session.currentBranch": "branch ปัจจุบัน",
|
||||
"sidebar.session.moveToWorktree": "ย้ายไปยัง Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"ย้ายบทสนทนานี้และการเปลี่ยนแปลงในเครื่องปัจจุบันของคุณไปยัง worktree เฉพาะสำหรับการทำงานต่อเนื่องแบบแยกส่วน",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"ย้ายบทสนทนานี้และ 1 ไฟล์ที่ถูกแก้ไขไปยัง worktree เฉพาะสำหรับการทำงานต่อเนื่องแบบแยกส่วน",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"ย้ายบทสนทนานี้และ {{files}} ไฟล์ที่ถูกแก้ไขไปยัง worktree เฉพาะสำหรับการทำงานต่อเนื่องแบบแยกส่วน",
|
||||
"sidebar.session.showChanges.tooltip.empty": "เปิดมุมมองการเปลี่ยนแปลงเพื่อตรวจสอบ working tree ปัจจุบัน",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"เปลี่ยนแปลง 1 ไฟล์ · +{{additions}} -{{deletions}} เปิดมุมมองการเปลี่ยนแปลง",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"เปลี่ยนแปลง {{files}} ไฟล์ · +{{additions}} -{{deletions}} เปิดมุมมองการเปลี่ยนแปลง",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"เปิด Agent Manager เพื่อดูภาพรวมของเซสชันและ worktree คู่ขนาน เพื่อให้คุณสามารถประสานงานงานที่ใช้เวลานานได้ในที่เดียว",
|
||||
"sidebar.session.openAgentManager": "เปิด Agent Manager",
|
||||
"sidebar.session.progress.capturing": "กำลังบันทึกการเปลี่ยนแปลง...",
|
||||
"sidebar.session.progress.creating": "กำลังสร้าง worktree...",
|
||||
"sidebar.session.progress.setup": "กำลังรันการตั้งค่า...",
|
||||
"sidebar.session.progress.transferring": "กำลังถ่ายโอนการเปลี่ยนแปลง...",
|
||||
"sidebar.session.progress.forking": "กำลังเริ่มเซสชัน...",
|
||||
"sidebar.session.progress.failed": "ดำเนินการต่อใน worktree ไม่สำเร็จ",
|
||||
"session.header.search.placeholder": "ค้นหา {{project}}",
|
||||
"session.header.searchFiles": "ค้นหาไฟล์",
|
||||
"session.header.openIn": "เปิดใน",
|
||||
|
||||
+32
-1
@@ -542,7 +542,38 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Ana dal ({{branch}})",
|
||||
"session.new.worktree.create": "Yeni çalışma ağacı oluştur",
|
||||
"session.new.lastModified": "Son değişiklik",
|
||||
|
||||
"sidebar.session.newSession": "Yeni Oturum",
|
||||
"sidebar.session.newSession.tooltip": "Mevcut oturumu koruyarak yeni bir konuşma başlatın.",
|
||||
"sidebar.session.newSession.disabled":
|
||||
"Bu oturum zaten yeni. Sohbet etmeye başlayın veya bunun yerine bir worktree oluşturun.",
|
||||
"sidebar.session.newWorktree": "Yeni Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Güvenli bir şekilde deneme yapmak, değişiklikleri ayrı tutmak ve mevcut dalınızı kesintiye uğratmadan paralel oturumlar çalıştırmak için izole bir git worktree oluşturun.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Oluşturmadan önce yeni bir worktree yapılandırmak için Agent Manager worktree iletişim kutusunu açın.",
|
||||
"sidebar.session.newWorktree.from": "Şuradan Yeni Worktree:",
|
||||
"sidebar.session.currentBranch": "mevcut dal",
|
||||
"sidebar.session.moveToWorktree": "Worktree'ye Taşı",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"İzole bir takip çalışması için bu konuşmayı ve mevcut yerel değişikliklerinizi özel bir worktree'ye taşıyın.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Bu konuşmayı ve değiştirilen 1 dosyayı, izole edilmiş takip çalışmaları için özel bir worktree'ye taşıyın.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Bu konuşmayı ve değiştirilen {{files}} dosyayı, izole edilmiş takip çalışmaları için özel bir worktree'ye taşıyın.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Mevcut çalışma ağacını incelemek için değişiklikler görünümünü açın.",
|
||||
"sidebar.session.showChanges.tooltip.one":
|
||||
"1 dosya değiştirildi · +{{additions}} -{{deletions}}. Değişiklikler görünümünü aç.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} dosya değiştirildi · +{{additions}} -{{deletions}}. Değişiklikler görünümünü aç.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Paralel oturumların ve worktree'lerin tam bir genel görünümü için Agent Manager'ı açın, böylece uzun süren görevleri tek bir yerden koordine edebilirsiniz.",
|
||||
"sidebar.session.openAgentManager": "Agent Manager'ı Aç",
|
||||
"sidebar.session.progress.capturing": "Değişiklikler yakalanıyor...",
|
||||
"sidebar.session.progress.creating": "Worktree oluşturuluyor...",
|
||||
"sidebar.session.progress.setup": "Kurulum çalıştırılıyor...",
|
||||
"sidebar.session.progress.transferring": "Değişiklikler aktarılıyor...",
|
||||
"sidebar.session.progress.forking": "Oturum başlatılıyor...",
|
||||
"sidebar.session.progress.failed": "Worktree'de devam edilemedi",
|
||||
"session.header.search.placeholder": "{{project}} ara",
|
||||
"session.header.searchFiles": "Dosya ara",
|
||||
"session.header.openIn": "Aç",
|
||||
|
||||
+30
-1
@@ -543,7 +543,36 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Основна гілка ({{branch}})",
|
||||
"session.new.worktree.create": "Створити нове робоче дерево",
|
||||
"session.new.lastModified": "Останнє змінення",
|
||||
|
||||
"sidebar.session.newSession": "Нова сесія",
|
||||
"sidebar.session.newSession.tooltip": "Почати нову розмову, зберігши поточну сесію незмінною.",
|
||||
"sidebar.session.newSession.disabled": "Ця сесія вже нова. Почніть спілкуватися або створіть worktree.",
|
||||
"sidebar.session.newWorktree": "Нове Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"Створіть ізольоване git worktree для безпечних експериментів, розділення змін та запуску паралельних сесій без переривання поточної гілки.",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"Відкрийте діалогове вікно worktree в Agent Manager, щоб налаштувати нове worktree перед створенням.",
|
||||
"sidebar.session.newWorktree.from": "Нове Worktree з",
|
||||
"sidebar.session.currentBranch": "поточна гілка",
|
||||
"sidebar.session.moveToWorktree": "Перенести у Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"Перенесіть цю розмову та ваші поточні локальні зміни до виділеного worktree для ізольованої подальшої роботи.",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"Перемістити цю розмову та 1 змінений файл у виділений worktree для ізольованої подальшої роботи.",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"Перемістити цю розмову та {{files}} змінених файлів у виділений worktree для ізольованої подальшої роботи.",
|
||||
"sidebar.session.showChanges.tooltip.empty": "Відкрийте перегляд змін, щоб оглянути поточне робоче дерево.",
|
||||
"sidebar.session.showChanges.tooltip.one": "1 файл змінено · +{{additions}} -{{deletions}}. Відкрити перегляд змін.",
|
||||
"sidebar.session.showChanges.tooltip.other":
|
||||
"{{files}} файлів змінено · +{{additions}} -{{deletions}}. Відкрити перегляд змін.",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"Відкрийте Agent Manager для повного огляду паралельних сесій та worktree, щоб координивати тривалі завдання в одному місці.",
|
||||
"sidebar.session.openAgentManager": "Відкрити Agent Manager",
|
||||
"sidebar.session.progress.capturing": "Захоплення змін...",
|
||||
"sidebar.session.progress.creating": "Створення worktree...",
|
||||
"sidebar.session.progress.setup": "Виконання налаштування...",
|
||||
"sidebar.session.progress.transferring": "Перенесення змін...",
|
||||
"sidebar.session.progress.forking": "Запуск сесії...",
|
||||
"sidebar.session.progress.failed": "Не вдалося продовжити у worktree",
|
||||
"session.header.search.placeholder": "Пошук {{project}}",
|
||||
"session.header.searchFiles": "Пошук файлів",
|
||||
"session.header.openIn": "Відкрити в",
|
||||
|
||||
+29
-1
@@ -530,7 +530,35 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "主分支({{branch}})",
|
||||
"session.new.worktree.create": "创建新的 worktree",
|
||||
"session.new.lastModified": "最后修改",
|
||||
|
||||
"sidebar.session.newSession": "新会话",
|
||||
"sidebar.session.newSession.tooltip": "在保持当前会话完整的同时开始全新的对话。",
|
||||
"sidebar.session.newSession.disabled": "此会话已经是新的。请开始聊天或创建一个 worktree。",
|
||||
"sidebar.session.newWorktree": "新 Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"创建一个隔离的 git worktree 以安全地进行实验、保持更改分离并在不中断当前分支的情况下运行并行会话。",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"打开 Agent Manager 的 worktree 对话框,以便在创建之前配置新的 worktree。",
|
||||
"sidebar.session.newWorktree.from": "新 Worktree 来源:",
|
||||
"sidebar.session.currentBranch": "当前分支",
|
||||
"sidebar.session.moveToWorktree": "移动到 Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"将此对话和您当前的本地更改移动到专用的 worktree 中,以便进行隔离的后续工作。",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"将此对话和 1 个更改的文件移动到专用的 worktree 中,以便进行隔离的后续工作。",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"将此对话和 {{files}} 个更改的文件移动到专用的 worktree 中,以便进行隔离的后续工作。",
|
||||
"sidebar.session.showChanges.tooltip.empty": "打开更改视图以检查当前工作树。",
|
||||
"sidebar.session.showChanges.tooltip.one": "1 个文件已更改 · +{{additions}} -{{deletions}}。打开更改视图。",
|
||||
"sidebar.session.showChanges.tooltip.other": "{{files}} 个文件已更改 · +{{additions}} -{{deletions}}。打开更改视图。",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"打开 Agent Manager 以全面了解并行会话和 worktree,让您可以在一个地方协调长期运行的任务。",
|
||||
"sidebar.session.openAgentManager": "打开 Agent Manager",
|
||||
"sidebar.session.progress.capturing": "正在捕获更改...",
|
||||
"sidebar.session.progress.creating": "正在创建 worktree...",
|
||||
"sidebar.session.progress.setup": "正在运行设置...",
|
||||
"sidebar.session.progress.transferring": "正在传输更改...",
|
||||
"sidebar.session.progress.forking": "正在启动会话...",
|
||||
"sidebar.session.progress.failed": "在 worktree 中继续失败",
|
||||
"session.header.search.placeholder": "搜索 {{project}}",
|
||||
"session.header.searchFiles": "搜索文件",
|
||||
"session.header.openIn": "打开方式",
|
||||
|
||||
+29
-1
@@ -530,7 +530,35 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "主分支 ({{branch}})",
|
||||
"session.new.worktree.create": "建立新的 worktree",
|
||||
"session.new.lastModified": "最後修改",
|
||||
|
||||
"sidebar.session.newSession": "新會話",
|
||||
"sidebar.session.newSession.tooltip": "在保持當前會話完整的同時開始全新的對話。",
|
||||
"sidebar.session.newSession.disabled": "此會話已經是新的。請開始聊天或建立一個 worktree。",
|
||||
"sidebar.session.newWorktree": "新 Worktree",
|
||||
"sidebar.session.newWorktree.tooltip":
|
||||
"建立一個隔離的 git worktree 以安全地進行實驗、保持變更分離並在不中斷當前分支的情況下執行平行會話。",
|
||||
"sidebar.session.configureWorktree.tooltip":
|
||||
"打開 Agent Manager 的 worktree 對話框,以便在建立之前配置新的 worktree。",
|
||||
"sidebar.session.newWorktree.from": "新 Worktree 來源:",
|
||||
"sidebar.session.currentBranch": "當前分支",
|
||||
"sidebar.session.moveToWorktree": "移動到 Worktree",
|
||||
"sidebar.session.moveToWorktree.tooltip.empty":
|
||||
"將此對話和您當前的本地變更移動到專用的 worktree 中,以便進行隔離的後續工作。",
|
||||
"sidebar.session.moveToWorktree.tooltip.one":
|
||||
"將此對話和 1 個變更的檔案移動到專用的 worktree 中,以便進行隔離的後續工作。",
|
||||
"sidebar.session.moveToWorktree.tooltip.other":
|
||||
"將此對話和 {{files}} 個變更的檔案移動到專用的 worktree 中,以便進行隔離的後續工作。",
|
||||
"sidebar.session.showChanges.tooltip.empty": "打開變更檢視以檢查當前工作樹。",
|
||||
"sidebar.session.showChanges.tooltip.one": "1 個檔案已變更 · +{{additions}} -{{deletions}}。開啟變更檢視。",
|
||||
"sidebar.session.showChanges.tooltip.other": "{{files}} 個檔案已變更 · +{{additions}} -{{deletions}}。開啟變更檢視。",
|
||||
"sidebar.session.agentManager.tooltip":
|
||||
"打開 Agent Manager 以全面了解平行會話和 worktree,讓您可以在一個地方協調長期執行的任務。",
|
||||
"sidebar.session.openAgentManager": "打開 Agent Manager",
|
||||
"sidebar.session.progress.capturing": "正在捕獲變更...",
|
||||
"sidebar.session.progress.creating": "正在建立 worktree...",
|
||||
"sidebar.session.progress.setup": "正在執行設定...",
|
||||
"sidebar.session.progress.transferring": "正在傳輸變更...",
|
||||
"sidebar.session.progress.forking": "正在啟動會話...",
|
||||
"sidebar.session.progress.failed": "在 worktree 中繼續失敗",
|
||||
"session.header.search.placeholder": "搜尋 {{project}}",
|
||||
"session.header.searchFiles": "搜尋檔案",
|
||||
"session.header.openIn": "開啟方式",
|
||||
|
||||
@@ -1,37 +1,280 @@
|
||||
/* New Task Button */
|
||||
.new-task-button-wrapper {
|
||||
padding: 8px 12px 0;
|
||||
padding: 6px 12px;
|
||||
container-type: inline-size;
|
||||
}
|
||||
|
||||
.new-task-button-wrapper--empty {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.chat-input > .new-task-button-wrapper + .prompt-input-container {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
:root {
|
||||
--session-action-radius: 6px;
|
||||
}
|
||||
|
||||
.session-actions-row {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
min-height: 22px;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
/* All direct children share extra space equally, but start from their content size */
|
||||
.session-actions-row > * {
|
||||
flex: 1 1 auto;
|
||||
flex: 0 0 auto;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Tooltip wrappers fill their flex slot, buttons fill the tooltip wrapper */
|
||||
.session-actions-row > [data-component="tooltip-trigger"] {
|
||||
display: flex;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.session-actions-row > .session-move-changes-trigger {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.session-actions-row > [data-component="tooltip-trigger"] > [data-component="button"] {
|
||||
flex: 1;
|
||||
flex: 0 0 auto;
|
||||
border-radius: var(--session-action-radius);
|
||||
min-height: 22px;
|
||||
height: auto;
|
||||
padding: 4px 6px !important;
|
||||
background: transparent;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: 12px;
|
||||
font-style: normal;
|
||||
font-weight: var(--font-weight-medium);
|
||||
line-height: normal;
|
||||
letter-spacing: var(--letter-spacing-normal);
|
||||
color: var(--vscode-descriptionForeground);
|
||||
transition:
|
||||
background-color 150ms ease,
|
||||
color 150ms ease;
|
||||
}
|
||||
|
||||
/* Diff wrapper also stretches evenly (same flex as buttons) */
|
||||
.session-diff-wrapper {
|
||||
display: flex !important;
|
||||
.session-actions-row > [data-component="tooltip-trigger"] > [data-component="button"]:hover:not(:disabled),
|
||||
.session-actions-row > [data-component="tooltip-trigger"] > [data-component="button"]:focus-visible:not(:disabled),
|
||||
.session-actions-row > [data-component="tooltip-trigger"] > [data-component="button"]:active:not(:disabled) {
|
||||
background: var(--surface-interactive-hover, var(--vscode-list-hoverBackground));
|
||||
color: var(--vscode-foreground);
|
||||
}
|
||||
|
||||
/* Diff stats badge — fills its flex slot, content centered */
|
||||
.session-actions-row > [data-component="tooltip-trigger"] > [data-component="button"].session-new-button:disabled {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.session-worktree-split {
|
||||
display: flex;
|
||||
flex: 0 0 auto;
|
||||
min-width: 0;
|
||||
align-items: stretch;
|
||||
gap: 2px;
|
||||
border-radius: var(--session-action-radius);
|
||||
box-shadow: none;
|
||||
overflow: hidden;
|
||||
color: var(--vscode-descriptionForeground);
|
||||
transition:
|
||||
background-color 150ms ease,
|
||||
color 150ms ease;
|
||||
}
|
||||
|
||||
.session-worktree-split:hover,
|
||||
.session-worktree-split:has(.session-worktree-main:focus-visible),
|
||||
.session-worktree-split:has(.session-worktree-split-arrow:focus-visible),
|
||||
.session-worktree-split:has(.session-worktree-split-arrow[data-expanded]) {
|
||||
color: var(--vscode-foreground);
|
||||
}
|
||||
|
||||
.session-worktree-split:hover > [data-component="tooltip-trigger"] > .session-worktree-main,
|
||||
.session-worktree-split:hover .session-worktree-split-arrow,
|
||||
.session-worktree-split:has(.session-worktree-main:focus-visible)
|
||||
> [data-component="tooltip-trigger"]
|
||||
> .session-worktree-main,
|
||||
.session-worktree-split:has(.session-worktree-main:focus-visible) .session-worktree-split-arrow,
|
||||
.session-worktree-split:has(.session-worktree-split-arrow:focus-visible)
|
||||
> [data-component="tooltip-trigger"]
|
||||
> .session-worktree-main,
|
||||
.session-worktree-split:has(.session-worktree-split-arrow:focus-visible) .session-worktree-split-arrow,
|
||||
.session-worktree-split:has(.session-worktree-split-arrow[data-expanded])
|
||||
> [data-component="tooltip-trigger"]
|
||||
> .session-worktree-main,
|
||||
.session-worktree-split:has(.session-worktree-split-arrow[data-expanded]) .session-worktree-split-arrow {
|
||||
background: var(--surface-interactive-hover, var(--vscode-list-hoverBackground));
|
||||
}
|
||||
|
||||
.session-worktree-split > [data-component="tooltip-trigger"] {
|
||||
display: flex;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.session-worktree-split > [data-component="tooltip-trigger"] > [data-component="button"] {
|
||||
flex: 0 0 auto;
|
||||
border-radius: var(--session-action-radius) 0 0 var(--session-action-radius);
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
color: inherit;
|
||||
padding: 4px 6px !important;
|
||||
}
|
||||
|
||||
.session-worktree-split > [data-component="tooltip-trigger"] > [data-component="button"]:hover:not(:disabled),
|
||||
.session-worktree-split > [data-component="tooltip-trigger"] > [data-component="button"]:focus-visible:not(:disabled),
|
||||
.session-worktree-split > [data-component="tooltip-trigger"] > [data-component="button"]:active:not(:disabled) {
|
||||
background: var(--surface-base-hover);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.session-worktree-split-arrow {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 12px;
|
||||
padding: 0 3px;
|
||||
border: none;
|
||||
border-radius: 0 var(--session-action-radius) var(--session-action-radius) 0;
|
||||
background: transparent;
|
||||
color: inherit;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.session-worktree-split-arrow:focus-visible {
|
||||
outline: none;
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
.session-worktree-split > [data-component="tooltip-trigger"] > [data-component="button"],
|
||||
.session-worktree-split-arrow {
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.session-worktree-main {
|
||||
padding-right: 6px !important;
|
||||
}
|
||||
|
||||
.session-worktree-split-menu {
|
||||
min-width: 250px;
|
||||
}
|
||||
|
||||
.session-worktree-split-menu [data-slot="dropdown-menu-item"] {
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.session-worktree-menu-gap {
|
||||
display: inline-flex;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.session-worktree-menu-label {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.session-worktree-menu-branch {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.session-worktree-menu-branch strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.session-move-action {
|
||||
display: flex;
|
||||
flex: 0 0 auto;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 5px;
|
||||
border-radius: var(--session-action-radius);
|
||||
color: var(--vscode-descriptionForeground);
|
||||
padding: 4px 6px !important;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
transition:
|
||||
background-color 150ms ease,
|
||||
color 150ms ease;
|
||||
}
|
||||
|
||||
.session-move-action:hover:not(:disabled),
|
||||
.session-move-action:focus-visible:not(:disabled),
|
||||
.session-move-action:active:not(:disabled) {
|
||||
color: var(--vscode-foreground);
|
||||
background: var(--surface-interactive-hover, var(--vscode-list-hoverBackground));
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.session-move-label {
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.session-move-action [data-component="icon"],
|
||||
.session-move-changes [data-component="icon"] {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.session-move-changes {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 3px;
|
||||
flex: 0 0 auto;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
border-radius: var(--session-action-radius);
|
||||
color: var(--vscode-descriptionForeground);
|
||||
padding: 4px 6px !important;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
transition:
|
||||
background-color 150ms ease,
|
||||
color 150ms ease;
|
||||
}
|
||||
|
||||
.session-move-changes:hover:not(:disabled),
|
||||
.session-move-changes:focus-visible:not(:disabled),
|
||||
.session-move-changes:active:not(:disabled) {
|
||||
color: var(--vscode-foreground);
|
||||
background: var(--surface-interactive-hover, var(--vscode-list-hoverBackground));
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.session-move-changes {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: 12px;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.session-move-changes--empty {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.session-move-dot {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 5px;
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
border-radius: 999px;
|
||||
background: #34d399;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* Diff stats badge styles retained for the inline move button stats */
|
||||
.session-diff-badge {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
@@ -73,27 +316,56 @@
|
||||
color: #f87171;
|
||||
}
|
||||
|
||||
/* Collapse diff stats to icon-only when truly narrow */
|
||||
@container (max-width: 300px) {
|
||||
.session-diff-add,
|
||||
.session-diff-del {
|
||||
display: none;
|
||||
.session-changes-tooltip {
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
flex-wrap: wrap;
|
||||
column-gap: 4px;
|
||||
row-gap: 2px;
|
||||
}
|
||||
|
||||
.session-changes-tooltip-separator {
|
||||
color: var(--vscode-descriptionForeground);
|
||||
}
|
||||
|
||||
/* Collapse diff stats to icon-only before the row wraps. */
|
||||
@container (max-width: 420px) {
|
||||
.session-actions-row {
|
||||
gap: 4px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.session-diff-badge {
|
||||
padding: 4px 6px;
|
||||
.session-actions-row > *,
|
||||
.session-worktree-split {
|
||||
flex-basis: auto;
|
||||
}
|
||||
|
||||
.session-move-action {
|
||||
padding-right: 5px !important;
|
||||
}
|
||||
|
||||
.session-move-changes {
|
||||
gap: 0;
|
||||
width: 26px;
|
||||
min-width: 26px;
|
||||
padding-left: 5px !important;
|
||||
padding-right: 5px !important;
|
||||
}
|
||||
|
||||
.session-diff-add,
|
||||
.session-diff-del {
|
||||
width: 0;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Dot indicator on the icon when collapsed and there are changes */
|
||||
.session-diff-badge--has-changes [data-component="icon"]::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -2px;
|
||||
right: -2px;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background: #34d399;
|
||||
.session-move-dot {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@container (max-width: 420px) {
|
||||
.session-actions-row > .session-move-changes-trigger {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,6 +194,14 @@ export interface OpenMarketplacePanelRequest {
|
||||
type: "openMarketplacePanel"
|
||||
}
|
||||
|
||||
export interface OpenAgentManagerRequest {
|
||||
type: "openAgentManager"
|
||||
}
|
||||
|
||||
export interface OpenAdvancedWorktreeRequest {
|
||||
type: "openAdvancedWorktree"
|
||||
}
|
||||
|
||||
export interface RequestAgentsMessage {
|
||||
type: "requestAgents"
|
||||
}
|
||||
@@ -939,6 +947,8 @@ export type WebviewMessage =
|
||||
| OpenVSCodeSettingsRequest
|
||||
| OpenConfigFileRequest
|
||||
| OpenMarketplacePanelRequest
|
||||
| OpenAgentManagerRequest
|
||||
| OpenAdvancedWorktreeRequest
|
||||
| OpenFileRequest
|
||||
| CancelLoginRequest
|
||||
| SetOrganizationRequest
|
||||
|
||||
@@ -33,6 +33,8 @@ const icons = {
|
||||
compress: `<path d="M5 10H15M6.667 4.167L10 7.5L13.333 4.167M6.667 15.833L10 12.5L13.333 15.833" stroke="currentColor" stroke-linecap="square"/>`,
|
||||
code: `<path d="M8.7513 7.5013L6.2513 10.0013L8.7513 12.5013M11.2513 7.5013L13.7513 10.0013L11.2513 12.5013M2.91797 2.91797H17.0846V17.0846H2.91797V2.91797Z" stroke="currentColor"/>`,
|
||||
"code-lines": `<path d="M2.08325 3.75H11.2499M14.5833 3.75H17.9166M2.08325 10L7.08325 10M10.4166 10L17.9166 10M2.08325 16.25L8.74992 16.25M12.0833 16.25L17.9166 16.25" stroke="currentColor" stroke-linecap="square" stroke-linejoin="round"/>`,
|
||||
"circuit-board": `<path d="M12.5 1H3.5C2.121 1 1 2.121 1 3.5V12.5C1 13.879 2.121 15 3.5 15H12.5C13.879 15 15 13.879 15 12.5V3.5C15 2.121 13.879 1 12.5 1ZM6 6.5C6 6.775 5.775 7 5.5 7C5.225 7 5 6.775 5 6.5C5 6.225 5.225 6 5.5 6C5.775 6 6 6.225 6 6.5ZM12.5 14H6V11.5C6 11.225 6.225 11 6.5 11H9.092C9.299 11.581 9.849 12 10.5 12C11.327 12 12 11.327 12 10.5C12 9.673 11.327 9 10.5 9C9.849 9 9.299 9.419 9.092 10H6.5C5.673 10 5 10.673 5 11.5V14H3.5C2.673 14 2 13.327 2 12.5V3.5C2 2.673 2.673 2 3.5 2H5V5.092C4.419 5.299 4 5.849 4 6.5C4 7.327 4.673 8 5.5 8C6.327 8 7 7.327 7 6.5C7 5.849 6.581 5.299 6 5.092V2H12.5C13.327 2 14 2.673 14 3.5V6H10.908C10.701 5.419 10.151 5 9.5 5C8.673 5 8 5.673 8 6.5C8 7.327 8.673 8 9.5 8C10.151 8 10.701 7.581 10.908 7H14V12.5C14 13.327 13.327 14 12.5 14ZM10 10.5C10 10.225 10.225 10 10.5 10C10.775 10 11 10.225 11 10.5C11 10.775 10.775 11 10.5 11C10.225 11 10 10.775 10 10.5ZM10 6.5C10 6.775 9.775 7 9.5 7C9.225 7 9 6.775 9 6.5C9 6.225 9.225 6 9.5 6C9.775 6 10 6.225 10 6.5Z" fill="currentColor"/>`,
|
||||
organization: `<path d="M6.00195 4.00002C6.00195 2.89655 6.89649 2.00201 7.99995 2.00201C9.10342 2.00201 9.99796 2.89655 9.99796 4.00002C9.99796 5.10348 9.10342 5.99802 7.99995 5.99802C6.89649 5.99802 6.00195 5.10348 6.00195 4.00002ZM7.99995 3.00201C7.44877 3.00201 7.00195 3.44883 7.00195 4.00002C7.00195 4.5512 7.44877 4.99802 7.99995 4.99802C8.55114 4.99802 8.99796 4.5512 8.99796 4.00002C8.99796 3.44883 8.55114 3.00201 7.99995 3.00201ZM11 4.5C11 3.67157 11.6716 3 12.5 3C13.3284 3 14 3.67157 14 4.5C14 5.32843 13.3284 6 12.5 6C11.6716 6 11 5.32843 11 4.5ZM12.5 4C12.2239 4 12 4.22386 12 4.5C12 4.77614 12.2239 5 12.5 5C12.7761 5 13 4.77614 13 4.5C13 4.22386 12.7761 4 12.5 4ZM3.5 3C2.67157 3 2 3.67157 2 4.5C2 5.32843 2.67157 6 3.5 6C4.32843 6 5 5.32843 5 4.5C5 3.67157 4.32843 3 3.5 3ZM3 4.5C3 4.22386 3.22386 4 3.5 4C3.77614 4 4 4.22386 4 4.5C4 4.77614 3.77614 5 3.5 5C3.22386 5 3 4.77614 3 4.5ZM4.26756 6.99969C4.09739 7.29387 4 7.63541 4 7.99969L2 7.99969V10.5C2 11.3285 2.67157 12 3.5 12C3.71194 12 3.91361 11.9561 4.09639 11.8768C4.1705 12.2082 4.28572 12.524 4.43643 12.8187C4.14721 12.9356 3.83112 13 3.5 13C2.11929 13 1 11.8807 1 10.5V7.99969C1 7.44741 1.44772 6.99969 2 6.99969H4.26756ZM11.5636 12.8187C11.8528 12.9356 12.1689 13 12.5 13C13.8807 13 15 11.8807 15 10.5V7.99969C15 7.44741 14.5523 6.99969 14 6.99969H11.7324C11.9026 7.29387 12 7.63541 12 7.9997L14 7.99969V10.5C14 11.3285 13.3284 12 12.5 12C12.2881 12 12.0864 11.9561 11.9036 11.8768C11.8295 12.2082 11.7143 12.524 11.5636 12.8187ZM6 6.99969C5.44772 6.99969 5 7.44741 5 7.99969V11C5 12.6569 6.34315 14 8 14C9.65685 14 11 12.6569 11 11V7.99969C11 7.44741 10.5523 6.99969 10 6.99969H6ZM6 7.99969L10 7.99969V11C10 12.1046 9.10457 13 8 13C6.89543 13 6 12.1046 6 11V7.99969Z" fill="currentColor"/>`,
|
||||
"circle-ban-sign": `<path d="M15.3675 4.63087L4.55742 15.441M17.9163 9.9987C17.9163 14.371 14.3719 17.9154 9.99967 17.9154C7.81355 17.9154 5.83438 17.0293 4.40175 15.5966C2.96911 14.164 2.08301 12.1848 2.08301 9.9987C2.08301 5.62644 5.62742 2.08203 9.99967 2.08203C12.1858 2.08203 14.165 2.96813 15.5976 4.40077C17.0302 5.8334 17.9163 7.81257 17.9163 9.9987Z" stroke="currentColor" stroke-linecap="round"/>`,
|
||||
"edit-small-2": `<path d="M17.0834 17.0833V17.5833H17.5834V17.0833H17.0834ZM2.91675 17.0833H2.41675V17.5833H2.91675V17.0833ZM2.91675 2.91659V2.41659H2.41675V2.91659H2.91675ZM9.58341 3.41659H10.0834V2.41659H9.58341V2.91659V3.41659ZM17.5834 10.4166V9.91659H16.5834V10.4166H17.0834H17.5834ZM10.4167 7.08325L10.0632 6.7297L9.91675 6.87615V7.08325H10.4167ZM10.4167 9.58325H9.91675V10.0833H10.4167V9.58325ZM12.9167 9.58325V10.0833H13.1239L13.2703 9.93681L12.9167 9.58325ZM15.4167 2.08325L15.7703 1.7297L15.4167 1.37615L15.0632 1.7297L15.4167 2.08325ZM17.9167 4.58325L18.2703 4.93681L18.6239 4.58325L18.2703 4.2297L17.9167 4.58325ZM17.0834 17.0833V16.5833H2.91675V17.0833V17.5833H17.0834V17.0833ZM2.91675 17.0833H3.41675V2.91659H2.91675H2.41675V17.0833H2.91675ZM2.91675 2.91659V3.41659H9.58341V2.91659V2.41659H2.91675V2.91659ZM17.0834 10.4166H16.5834V17.0833H17.0834H17.5834V10.4166H17.0834ZM10.4167 7.08325H9.91675V9.58325H10.4167H10.9167V7.08325H10.4167ZM10.4167 9.58325V10.0833H12.9167V9.58325V9.08325H10.4167V9.58325ZM10.4167 7.08325L10.7703 7.43681L15.7703 2.43681L15.4167 2.08325L15.0632 1.7297L10.0632 6.7297L10.4167 7.08325ZM15.4167 2.08325L15.0632 2.43681L17.5632 4.93681L17.9167 4.58325L18.2703 4.2297L15.7703 1.7297L15.4167 2.08325ZM17.9167 4.58325L17.5632 4.2297L12.5632 9.2297L12.9167 9.58325L13.2703 9.93681L18.2703 4.93681L17.9167 4.58325Z" fill="currentColor"/>`,
|
||||
eye: `<path d="M10 4.58325C5.83333 4.58325 2.5 9.99992 2.5 9.99992C2.5 9.99992 5.83333 15.4166 10 15.4166C14.1667 15.4166 17.5 9.99992 17.5 9.99992C17.5 9.99992 14.1667 4.58325 10 4.58325Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="10" r="2.5" stroke="currentColor"/>`,
|
||||
@@ -119,15 +121,18 @@ export interface IconProps extends ComponentProps<"svg"> {
|
||||
|
||||
export function Icon(props: IconProps) {
|
||||
const [local, others] = splitProps(props, ["name", "size", "class", "classList"])
|
||||
const viewBox = () => (local.name === "magnifying-glass" ? "0 0 16 16" : "0 0 20 20")
|
||||
const viewBox = () =>
|
||||
local.name === "magnifying-glass" || local.name === "circuit-board" || local.name === "organization"
|
||||
? "0 0 16 16"
|
||||
: "0 0 20 20"
|
||||
return (
|
||||
<div data-component="icon" data-size={local.size || "normal"}>
|
||||
<svg
|
||||
data-slot="icon-svg"
|
||||
classList={{
|
||||
...local.classList,
|
||||
[local.class ?? ""]: !!local.class,
|
||||
}}
|
||||
data-slot="icon-svg"
|
||||
fill="none"
|
||||
viewBox={viewBox()}
|
||||
innerHTML={icons[local.name as keyof typeof icons]}
|
||||
|
||||
Reference in New Issue
Block a user