From b430dbed0e68057de5322de7250b16d8ebac878d Mon Sep 17 00:00:00 2001 From: malek Date: Fri, 11 Sep 2026 08:51:16 +0300 Subject: [PATCH 01/14] feat(core): support clearing and listing session archive state - projector writes explicit null for time_archived/time_compacting so updates can clear them; drizzle .set() skips undefined fields - session update payload accepts null for time.archived to unarchive - listGlobal returns only archived rows when archived=true instead of dropping the filter entirely --- packages/core/src/session/projector.ts | 5 +++-- .../src/server/routes/instance/httpapi/groups/session.ts | 5 ++++- .../src/server/routes/instance/httpapi/handlers/session.ts | 3 ++- packages/opencode/src/session/session.ts | 5 ++++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/core/src/session/projector.ts b/packages/core/src/session/projector.ts index 792067017d14..a06f62966db9 100644 --- a/packages/core/src/session/projector.ts +++ b/packages/core/src/session/projector.ts @@ -69,8 +69,9 @@ function sessionRow(info: SessionV1.SessionInfo): typeof SessionTable.$inferInse permission: info.permission ? [...info.permission] : undefined, time_created: info.time.created, time_updated: info.time.updated, - time_compacting: info.time.compacting, - time_archived: info.time.archived, + time_compacting: info.time.compacting ?? null, + // Explicit null so updates can clear the archive timestamp; drizzle skips undefined. + time_archived: info.time.archived ?? null, } } diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/session.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/session.ts index 959a303dc964..8848fdb350da 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/groups/session.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/groups/session.ts @@ -52,7 +52,10 @@ export const UpdatePayload = Schema.Struct({ permission: Schema.optional(PermissionV1.Ruleset), time: Schema.optional( Schema.Struct({ - archived: Schema.optional(Session.ArchivedTimestamp), + // null clears the archive timestamp (unarchive); a number sets it. + // Note: the OpenAPI emitter renders optional+nullable as plain number, + // so SDK callers pass null through a documented cast. + archived: Schema.optional(Schema.NullOr(Session.ArchivedTimestamp)), }), ), }) diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts index 662585020a64..f5636ac275ee 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts @@ -198,7 +198,8 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session", }) } if (ctx.payload.time?.archived !== undefined) { - yield* session.setArchived({ sessionID: ctx.params.sessionID, time: ctx.payload.time.archived }) + // null unarchives; numbers archive. + yield* session.setArchived({ sessionID: ctx.params.sessionID, time: ctx.payload.time.archived ?? undefined }) } return yield* requireSession(ctx.params.sessionID) }) diff --git a/packages/opencode/src/session/session.ts b/packages/opencode/src/session/session.ts index a2a91cd47b5e..ce8e96da6bd7 100644 --- a/packages/opencode/src/session/session.ts +++ b/packages/opencode/src/session/session.ts @@ -19,6 +19,7 @@ import { eq } from "drizzle-orm" import { and } from "drizzle-orm" import { gte } from "drizzle-orm" import { isNull } from "drizzle-orm" +import { isNotNull } from "drizzle-orm" import { desc } from "drizzle-orm" import { like } from "drizzle-orm" import { sql } from "drizzle-orm" @@ -559,7 +560,9 @@ const layer: Layer.Layer< if (input?.start) conditions.push(gte(SessionTable.time_updated, input.start)) if (input?.cursor) conditions.push(lt(SessionTable.time_updated, input.cursor)) if (input?.search) conditions.push(like(SessionTable.title, `%${input.search}%`)) - if (!input?.archived) conditions.push(isNull(SessionTable.time_archived)) + // archived=true lists only archived sessions; default excludes them. + if (input?.archived === true) conditions.push(isNotNull(SessionTable.time_archived)) + else conditions.push(isNull(SessionTable.time_archived)) const query = conditions.length > 0 From 37dfc49b403e27791fe858bd78f44c35929b2bbc Mon Sep 17 00:00:00 2001 From: malek Date: Fri, 11 Sep 2026 08:51:16 +0300 Subject: [PATCH 02/14] feat(app): add sidebar navigation mode with settle support Settings > General gains a Navigation select (Tabs default, Sidebar) that hides the titlebar tab strip on desktop widths and mounts a navigation sidebar next to the session pane. The sidebar lists projects with their active sessions, working indicators, unread badges, and hover actions; sessions idle past a configurable window settle into an expandable Settled section where they can be restored. Working, open, and current sessions always stay visible. --- .../src/components/settings-v2/general.tsx | 64 +- packages/app/src/components/titlebar.tsx | 72 +- packages/app/src/context/language.tsx | 1 + packages/app/src/context/settings.tsx | 17 + packages/app/src/i18n/en.ts | 19 + packages/app/src/pages/layout-new.tsx | 26 +- .../navigation-sidebar-visibility.test.ts | 103 +++ .../layout/navigation-sidebar-visibility.ts | 86 +++ .../src/pages/layout/navigation-sidebar.tsx | 648 ++++++++++++++++++ 9 files changed, 998 insertions(+), 38 deletions(-) create mode 100644 packages/app/src/pages/layout/navigation-sidebar-visibility.test.ts create mode 100644 packages/app/src/pages/layout/navigation-sidebar-visibility.ts create mode 100644 packages/app/src/pages/layout/navigation-sidebar.tsx diff --git a/packages/app/src/components/settings-v2/general.tsx b/packages/app/src/components/settings-v2/general.tsx index b41da107ed6e..f7462cce0eae 100644 --- a/packages/app/src/components/settings-v2/general.tsx +++ b/packages/app/src/components/settings-v2/general.tsx @@ -8,7 +8,7 @@ import { useDialog } from "@opencode-ai/ui/context/dialog" import { useLanguage } from "@/context/language" import { usePlatform } from "@/context/platform" import { useUpdaterAction } from "../updater-action" -import { useSettings } from "@/context/settings" +import { useSettings, type NavigationMode } from "@/context/settings" import { ExternalLink } from "../external-link" import { SettingsListV2 } from "./parts/list" import { SettingsRowV2 } from "./parts/row" @@ -119,6 +119,61 @@ const ShellSetting: Component<{ controller: ShellSettingsController }> = (props) ) } +const navigationModeOptions: NavigationMode[] = ["tabs", "sidebar"] +const sidebarSessionDayOptions = [0, 1, 3, 7, 30] + +const NavigationModeSetting: Component = () => { + const language = useLanguage() + const settings = useSettings() + return ( + + option === settings.general.navigationMode())} + placement="bottom-end" + gutter={6} + label={(option) => + option === "tabs" + ? language.t("settings.general.row.navigation.tabs") + : language.t("settings.general.row.navigation.sidebar") + } + onSelect={(option) => option && settings.general.setNavigationMode(option)} + /> + + ) +} + +const SidebarSessionDaysSetting: Component = () => { + const language = useLanguage() + const settings = useSettings() + return ( + + option === settings.general.sidebarSessionDays())} + placement="bottom-end" + gutter={6} + label={(option) => + option + ? language.plural("settings.general.row.sidebarSessions.days", option) + : language.t("settings.general.row.sidebarSessions.always") + } + onSelect={(option) => option !== null && settings.general.setSidebarSessionDays(option)} + /> + + ) +} + const AppearanceSection: Component<{ controller: AppearanceSettingsController }> = (props) => { const language = useLanguage() return ( @@ -333,6 +388,13 @@ export const SettingsGeneralV2: Component<{ + + + + + + + settings.general.newLayoutDesigns()) + // Sidebar navigation mode replaces the tab strip on desktop widths; mobile keeps tabs. + const sidebarNavigation = createMemo( + () => useV2Titlebar() && !mobile() && settings.general.navigationMode() === "sidebar", + ) const mobile = createMediaQuery("(max-width: 767px)") const bottom = createMemo(() => useV2Titlebar() && mobile() && settings.general.mobileTitlebarPosition() === "bottom") @@ -395,40 +399,42 @@ export function Titlebar(props: { update?: TitlebarUpdate; debugTools?: { visibl /> - { - tabs.select(tab) - el?.scrollIntoView({ behavior: "instant" }) - }} - onClose={(tab) => { - const index = tabsStore.findIndex((item) => tabKey(item) === tabKey(tab)) - if (index !== -1) tabsStoreActions.closeTab(index) - }} - onReorder={(keys) => tabsStoreActions.reorder(keys)} - /> - - {language.t("command.session.new")} - - - } - > - } - onClick={openNewTab} - aria-label={language.t("command.session.new")} + + { + tabs.select(tab) + el?.scrollIntoView({ behavior: "instant" }) + }} + onClose={(tab) => { + const index = tabsStore.findIndex((item) => tabKey(item) === tabKey(tab)) + if (index !== -1) tabsStoreActions.closeTab(index) + }} + onReorder={(keys) => tabsStoreActions.reorder(keys)} /> - + + {language.t("command.session.new")} + + + } + > + } + onClick={openNewTab} + aria-label={language.t("command.session.new")} + /> + +
diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx index e387391f68bf..41fc94bd8aae 100644 --- a/packages/app/src/context/language.tsx +++ b/packages/app/src/context/language.tsx @@ -33,6 +33,7 @@ type PluralKey = | "session.question.pending" | "session.followupDock.summary" | "session.revertDock.summary" + | "settings.general.row.sidebarSessions.days" type Source = { dict: Record } function cookie(locale: Locale) { diff --git a/packages/app/src/context/settings.tsx b/packages/app/src/context/settings.tsx index 1a118b654479..ccf6423579b8 100644 --- a/packages/app/src/context/settings.tsx +++ b/packages/app/src/context/settings.tsx @@ -19,6 +19,8 @@ export interface SoundSettings { errors: string } +export type NavigationMode = "tabs" | "sidebar" + export interface Settings { general: { autoSave: boolean @@ -34,6 +36,8 @@ export interface Settings { editToolPartsExpanded: boolean showCustomAgents: boolean mobileTitlebarPosition: "top" | "bottom" + navigationMode?: NavigationMode + sidebarSessionDays?: number newLayoutDesigns?: boolean layoutTransitionEligible?: boolean agentVisibilityInitialized?: boolean @@ -195,6 +199,8 @@ const defaultSettings: Settings = { editToolPartsExpanded: false, showCustomAgents: false, mobileTitlebarPosition: "top", + navigationMode: "tabs", + sidebarSessionDays: 3, }, appearance: { fontSize: 14, @@ -428,6 +434,17 @@ export const { use: useSettings, provider: SettingsProvider } = createSimpleCont setMobileTitlebarPosition(value: "top" | "bottom") { setStore("general", "mobileTitlebarPosition", value) }, + navigationMode: withFallback(() => store.general?.navigationMode, defaultSettings.general.navigationMode), + setNavigationMode(value: NavigationMode) { + setStore("general", "navigationMode", value) + }, + sidebarSessionDays: withFallback( + () => store.general?.sidebarSessionDays, + defaultSettings.general.sidebarSessionDays, + ), + setSidebarSessionDays(value: number) { + setStore("general", "sidebarSessionDays", value) + }, newLayoutDesigns, setNewLayoutDesigns(value: boolean) { const next = oldInterfaceRetired() ? true : value diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 62d4dc1ae6e9..ca38ee30c6db 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -854,6 +854,15 @@ export const dict = { "sidebar.project.clearNotifications": "Clear notifications", "sidebar.empty.title": "No projects open", "sidebar.empty.description": "Open a project to get started", + "sidebar.navigation.label": "Navigation", + "sidebar.navigation.filter": "Filter projects and sessions", + "sidebar.navigation.noMatches": "No matching sessions", + "sidebar.navigation.projects": "Projects", + "sidebar.navigation.settle": "Settle session", + "sidebar.navigation.settled": "Settled", + "sidebar.navigation.settled.show": "Show settled sessions", + "sidebar.navigation.settled.empty": "No settled sessions", + "sidebar.navigation.settled.restore": "Restore session", "debugBar.ariaLabel": "Development performance diagnostics", "debugBar.na": "n/a", @@ -907,6 +916,16 @@ export const dict = { "settings.general.row.language.title": "Language", "settings.general.row.language.description": "Change the display language for OpenCode", + "settings.general.row.navigation.title": "Navigation", + "settings.general.row.navigation.description": "Switch between session tabs in the title bar and a persistent sidebar", + "settings.general.row.navigation.tabs": "Tabs", + "settings.general.row.navigation.sidebar": "Sidebar", + "settings.general.row.sidebarSessions.title": "Settle sessions after", + "settings.general.row.sidebarSessions.description": + "Sessions idle for longer than this are hidden under Settled in the sidebar. Working and open sessions always stay visible.", + "settings.general.row.sidebarSessions.always": "Always show", + "settings.general.row.sidebarSessions.days.one": "{{count}} day", + "settings.general.row.sidebarSessions.days.other": "{{count}} days", "settings.general.row.shell.title": "Terminal shell", "settings.general.row.shell.description": "Shell used by the terminal and agent tools", "settings.general.row.shell.autoDefault": "Auto (Default)", diff --git a/packages/app/src/pages/layout-new.tsx b/packages/app/src/pages/layout-new.tsx index 6d76ca840178..c0a2512621ec 100644 --- a/packages/app/src/pages/layout-new.tsx +++ b/packages/app/src/pages/layout-new.tsx @@ -1,17 +1,28 @@ -import { createEffect, Suspense, type ParentProps } from "solid-js" +import { createEffect, createMemo, lazy, Show, Suspense, type ParentProps } from "solid-js" import { createStore } from "solid-js/store" +import { createMediaQuery } from "@solid-primitives/media" import { DebugBar } from "@/components/debug-bar" import { TabsInfoPopup } from "@/components/help-button" import { Titlebar, type TitlebarUpdate } from "@/components/titlebar" import { usePlatform } from "@/context/platform" +import { useSettings } from "@/context/settings" import { setV2Toast, ToastRegion } from "@/utils/toast" +const NavigationSidebar = lazy(() => + import("@/pages/layout/navigation-sidebar").then((mod) => ({ default: mod.NavigationSidebar })), +) + export default function NewLayout(props: ParentProps) { const platform = usePlatform() + const settings = useSettings() + const mobile = createMediaQuery("(max-width: 767px)") const [state, setState] = createStore({ debugTools: true }) createEffect(() => setV2Toast(true)) + // Sidebar navigation mode replaces the titlebar tab strip on desktop widths. + const sidebarNavigation = createMemo(() => !mobile() && settings.general.navigationMode() === "sidebar") + const update: TitlebarUpdate = { version: () => { const state = platform.updater?.state() @@ -38,9 +49,16 @@ export default function NewLayout(props: ParentProps) { : undefined } /> -
- {props.children} -
+
+ + + + + +
+ {props.children} +
+
{import.meta.env.DEV && state.debugTools && } diff --git a/packages/app/src/pages/layout/navigation-sidebar-visibility.test.ts b/packages/app/src/pages/layout/navigation-sidebar-visibility.test.ts new file mode 100644 index 000000000000..2926dceca07d --- /dev/null +++ b/packages/app/src/pages/layout/navigation-sidebar-visibility.test.ts @@ -0,0 +1,103 @@ +import { describe, expect, test } from "bun:test" +import { type Session } from "@opencode-ai/sdk/v2/client" +import type { LocalProject } from "@/context/layout" +import { + buildSidebarRecords, + groupSidebarRecords, + matchesSidebarFilter, + partitionSidebarRecords, + SIDEBAR_SESSION_DAY, +} from "./navigation-sidebar-visibility" + +const session = (input: Partial & Pick) => + ({ + title: "", + version: "v2", + parentID: undefined, + messageCount: 0, + permissions: { session: {}, share: {} }, + time: { created: 0, updated: 0, archived: undefined }, + ...input, + }) as Session + +const project = (worktree: string): LocalProject => + ({ worktree, expanded: false, id: worktree, name: worktree.split("/").pop() }) as LocalProject + +const DAY = SIDEBAR_SESSION_DAY +const NOW = 100 * DAY + +describe("navigation sidebar visibility", () => { + test("buildSidebarRecords keeps only root sessions inside project directories", () => { + const projects = [project("/src/a"), project("/src/b")] + const records = buildSidebarRecords({ + projects, + sessions: [ + session({ id: "1", directory: "/src/a", time: { created: 10, updated: 20, archived: undefined } }), + session({ id: "2", directory: "/src/other" }), + session({ id: "3", directory: "/src/a", parentID: "1" }), + session({ id: "1", directory: "/src/a", time: { created: 10, updated: 30, archived: undefined } }), + ], + }) + expect(records).toHaveLength(1) + expect(records[0]?.session.id).toBe("1") + }) + + test("groupSidebarRecords groups records by project worktree", () => { + const projects = [project("/src/a"), project("/src/b")] + const groups = groupSidebarRecords( + buildSidebarRecords({ + projects, + sessions: [ + session({ id: "1", directory: "/src/a", time: { created: 1, updated: 5, archived: undefined } }), + session({ id: "2", directory: "/src/b", time: { created: 1, updated: 9, archived: undefined } }), + session({ id: "3", directory: "/src/a", time: { created: 1, updated: 2, archived: undefined } }), + ], + }), + ) + expect(groups.map((group) => group.key)).toEqual(["/src/b", "/src/a"]) + expect(groups[0]?.records.map((record) => record.session.id)).toEqual(["2"]) + expect(groups[1]?.records.map((record) => record.session.id)).toEqual(["1", "3"]) + }) + + test("partitions by age while keeping pinned records visible", () => { + const fresh = session({ id: "fresh", directory: "/src/a", time: { created: NOW - DAY, updated: NOW - DAY, archived: undefined } }) + const stale = session({ id: "stale", directory: "/src/a", time: { created: NOW - 10 * DAY, updated: NOW - 10 * DAY, archived: undefined } }) + const staleWorking = session({ id: "working", directory: "/src/a", time: { created: NOW - 10 * DAY, updated: NOW - 10 * DAY, archived: undefined } }) + const result = partitionSidebarRecords({ + records: [ + { session: fresh, project: project("/src/a"), name: "a" }, + { session: stale, project: project("/src/a"), name: "a" }, + { session: staleWorking, project: project("/src/a"), name: "a" }, + ], + pinned: (record) => record.session.id === "working", + days: 3, + now: NOW, + }) + expect(result.visible.map((record) => record.session.id)).toEqual(["fresh", "working"]) + expect(result.hidden.map((record) => record.session.id)).toEqual(["stale"]) + }) + + test("days of zero keeps every session visible", () => { + const ancient = session({ id: "ancient", directory: "/src/a", time: { created: 0, updated: 0, archived: undefined } }) + const result = partitionSidebarRecords({ + records: [{ session: ancient, project: project("/src/a"), name: "a" }], + pinned: () => false, + days: 0, + now: NOW, + }) + expect(result.visible).toHaveLength(1) + expect(result.hidden).toHaveLength(0) + }) + + test("matchesSidebarFilter checks project name and session title", () => { + const record = { + session: session({ id: "1", directory: "/src/a", title: "Fix login bug" }), + project: project("/src/a"), + name: "Web App", + } + expect(matchesSidebarFilter(record, "")).toBe(true) + expect(matchesSidebarFilter(record, "web")).toBe(true) + expect(matchesSidebarFilter(record, "login")).toBe(true) + expect(matchesSidebarFilter(record, "missing")).toBe(false) + }) +}) diff --git a/packages/app/src/pages/layout/navigation-sidebar-visibility.ts b/packages/app/src/pages/layout/navigation-sidebar-visibility.ts new file mode 100644 index 000000000000..0a5e4e4b8a49 --- /dev/null +++ b/packages/app/src/pages/layout/navigation-sidebar-visibility.ts @@ -0,0 +1,86 @@ +import type { Session } from "@opencode-ai/sdk/v2/client" +import type { LocalProject } from "@/context/layout" +import { compareSessionTime, displayName, projectForSession } from "@/pages/layout/helpers" +import { pathKey } from "@/utils/path-key" + +export const SIDEBAR_SESSION_DAY = 86_400_000 + +export type SidebarSessionRecord = { + session: Session + project: LocalProject + name: string +} + +export type SidebarProjectGroup = { + key: string + project: LocalProject + name: string + records: SidebarSessionRecord[] +} + +export function buildSidebarRecords(input: { sessions: Session[]; projects: LocalProject[] }) { + const projectByID = new Map(input.projects.flatMap((project) => (project.id ? [[project.id, project]] : []))) + const directories = new Set( + input.projects.flatMap((project) => [project.worktree, ...(project.sandboxes ?? [])]).map(pathKey), + ) + const sessions = input.sessions + .filter((session) => directories.has(pathKey(session.directory))) + .filter((session) => !session.parentID) + const unique = [...new Map(sessions.map((session) => [session.id, session] as const)).values()].sort( + compareSessionTime, + ) + return unique.flatMap((session): SidebarSessionRecord[] => { + const directory = pathKey(session.directory) + const project = + input.projects.find( + (item) => pathKey(item.worktree) === directory || item.sandboxes?.some((sandbox) => pathKey(sandbox) === directory), + ) ?? projectForSession(session, input.projects, projectByID) + if (!project) return [] + return [{ session, project, name: displayName(project) }] + }) +} + +export function groupSidebarRecords(records: SidebarSessionRecord[]): SidebarProjectGroup[] { + return [ + ...records + .reduce((groups, record) => { + const key = pathKey(record.project.worktree) + const group = groups.get(key) + if (group) group.records.push(record) + if (!group) groups.set(key, { key, project: record.project, name: record.name, records: [record] }) + return groups + }, new Map()) + .values(), + ] +} + +export function sidebarSessionAge(session: Session, now: number) { + return Math.max(0, now - (session.time.updated || session.time.created)) +} + +/** + * Working, open and currently viewed sessions stay pinned regardless of age so the sidebar never + * hides a session the user is actively waiting on. + */ +export function partitionSidebarRecords(input: { + records: SidebarSessionRecord[] + pinned: (record: SidebarSessionRecord) => boolean + days: number + now: number +}) { + const cutoff = input.days <= 0 ? Number.POSITIVE_INFINITY : input.days * SIDEBAR_SESSION_DAY + return input.records.reduce( + (groups, record) => { + const visible = input.pinned(record) || sidebarSessionAge(record.session, input.now) <= cutoff + groups[visible ? "visible" : "hidden"].push(record) + return groups + }, + { visible: [] as SidebarSessionRecord[], hidden: [] as SidebarSessionRecord[] }, + ) +} + +export function matchesSidebarFilter(record: SidebarSessionRecord, query: string) { + const needle = query.trim().toLowerCase() + if (!needle) return true + return record.name.toLowerCase().includes(needle) || (record.session.title ?? "").toLowerCase().includes(needle) +} diff --git a/packages/app/src/pages/layout/navigation-sidebar.tsx b/packages/app/src/pages/layout/navigation-sidebar.tsx new file mode 100644 index 000000000000..c54a5ed59031 --- /dev/null +++ b/packages/app/src/pages/layout/navigation-sidebar.tsx @@ -0,0 +1,648 @@ +import { createMemo, createSignal, For, onCleanup, Show, startTransition } from "solid-js" +import { createStore, produce } from "solid-js/store" +import { useQuery } from "@tanstack/solid-query" +import type { GlobalSession } from "@opencode-ai/sdk/v2/client" +import { Binary } from "@opencode-ai/core/util/binary" +import { ScrollView } from "@opencode-ai/ui/scroll-view" +import { Spinner } from "@opencode-ai/ui/spinner" +import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon" +import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" +import { MenuV2 } from "@opencode-ai/ui/v2/menu-v2" +import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" +import { TooltipV2 } from "@opencode-ai/ui/v2/tooltip-v2" +import { + loadHomeSessionIndex, + retainHomeSessions, + type HomeSessionEvents, +} from "@/context/global-sync/home-session-index" +import type { LocalProject } from "@/context/layout" +import { useLayout } from "@/context/layout" +import { useLanguage } from "@/context/language" +import { ServerConnection } from "@/context/server" +import { useSettings } from "@/context/settings" +import { usePlatform } from "@/context/platform" +import { sessionHasOpenTab, useTabs } from "@/context/tabs" +import { createHomeController } from "@/pages/home/home-controller" +import { createHomeProjectsController } from "@/pages/home/home-projects-controller" +import { archiveHomeSession } from "@/pages/home-session-archive" +import { shouldOpenSessionInBackground } from "@/pages/home-session-open" +import { errorMessage } from "@/pages/layout/helpers" +import { + buildSidebarRecords, + groupSidebarRecords, + matchesSidebarFilter, + partitionSidebarRecords, + type SidebarProjectGroup, + type SidebarSessionRecord, +} from "@/pages/layout/navigation-sidebar-visibility" +import { useSessionTabAvatarState } from "@/pages/layout/project-avatar-state" +import { SessionTabAvatarView } from "@/pages/layout/session-tab-avatar" +import { fileManagerApp } from "@/utils/file-manager" +import { pathKey } from "@/utils/path-key" +import { Persist, persisted } from "@/utils/persist" +import { sessionTitle, withTimestampedFallback } from "@/utils/session-title" +import { showToast } from "@/utils/toast" + +type SidebarProjectSection = SidebarProjectGroup & { + visible: SidebarSessionRecord[] + hidden: SidebarSessionRecord[] +} + +const SESSION_LIMIT = 64 +const ARCHIVED_LIMIT = 100 +const AGE_TICK = 60_000 +const SECTION_LABEL = "px-3 pb-1 pt-3 text-v2-text-text-muted [font-weight:440]" +const ROW = + "group/row relative flex h-7 min-w-0 w-full shrink-0 cursor-default items-center gap-2 rounded-[6px] bg-transparent px-1.5 text-start text-v2-text-text-muted [font-weight:440] transition-[background-color,color,box-shadow] duration-[120ms] ease-in-out hover:bg-v2-background-bg-layer-01 hover:text-v2-text-text-base data-[selected=true]:bg-v2-background-bg-layer-03 data-[selected=true]:text-v2-text-text-base data-[selected=true]:hover:bg-v2-background-bg-layer-03 focus-visible:bg-v2-background-bg-layer-01 focus-visible:text-v2-text-text-base focus-visible:outline-none focus-visible:[box-shadow:inset_0_0_0_0.5px_var(--v2-border-border-muted)]" +const ROW_ACTIONS = + "hover-reveal absolute end-1 top-1/2 flex -translate-y-1/2 items-center gap-1 opacity-0 group-hover/row:opacity-100 focus-within:opacity-100 data-[menu=true]:opacity-100" + +function titleOf(session: { title?: string; parentID?: string; time: { created: number } }) { + return sessionTitle(session.title) ?? withTimestampedFallback(session) +} + +function isBackgroundOpen(event: MouseEvent) { + return shouldOpenSessionInBackground({ + button: event.button, + mac: typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform), + meta: event.metaKey, + ctrl: event.ctrlKey, + shift: event.shiftKey, + alt: event.altKey, + }) +} + +export function NavigationSidebar() { + const language = useLanguage() + const layout = useLayout() + const settings = useSettings() + const tabs = useTabs() + const home = createHomeController() + const projects = createHomeProjectsController(home) + + const [filter, setFilter] = createSignal("") + const [now, setNow] = createSignal(Date.now()) + const [state, setState] = persisted( + Persist.global("sidebar.navigation", ["sidebar.navigation.v1"]), + createStore({ collapsed: {} as Record, settledOpen: false }), + ) + + const ticker = setInterval(() => setNow(Date.now()), AGE_TICK) + onCleanup(() => clearInterval(ticker)) + + const homeSessions = () => home.server.focusedSync().homeSessions + + const sessionEvents = useQuery(() => ({ + queryKey: homeSessions().eventsKey, + queryFn: async (): Promise => ({ sequence: 0, entries: [] }), + initialData: { sequence: 0, entries: [] } satisfies HomeSessionEvents, + enabled: false, + })) + + const sessionIndex = useQuery(() => ({ + queryKey: homeSessions().indexKey, + enabled: !!home.server.focusedContext(), + queryFn: async ({ signal }) => { + const ctx = home.server.focusedContext() + if (!ctx) return { sessions: [], eventSequence: 0 } + const cache = homeSessions() + const eventSequence = cache.eventSequence() + const index = await loadHomeSessionIndex( + (input, options) => ctx.sdk.client.v2.session.list(input, options), + eventSequence, + signal, + ) + cache.complete(eventSequence) + return index + }, + retry: false, + staleTime: 30_000, + refetchOnMount: true, + refetchOnReconnect: true, + })) + + const sessions = createMemo(() => + retainHomeSessions(homeSessions().sessions(sessionIndex.data, sessionEvents.data), SESSION_LIMIT, now()), + ) + + const serverKey = createMemo(() => home.selection.value().server ?? ServerConnection.Key.make("")) + const route = createMemo(() => layout.route()) + const currentSession = createMemo(() => { + const value = route() + return value.type === "session" ? value.sessionId : undefined + }) + const working = (sessionID: string) => home.server.focusedSync().session.data.session_working(sessionID) + + const groups = createMemo((): SidebarProjectSection[] => { + const records = buildSidebarRecords({ sessions: sessions(), projects: home.project.list() }).filter((record) => + matchesSidebarFilter(record, filter()), + ) + return groupSidebarRecords(records).map((group) => ({ + ...group, + ...partitionSidebarRecords({ + records: group.records, + pinned: (record) => isPinned(record), + days: settings.general.sidebarSessionDays() ?? 3, + now: now(), + }), + })) + }) + + const settled = createMemo(() => groups().flatMap((group) => group.hidden)) + const visibleGroups = createMemo(() => groups().filter((group) => group.visible.length > 0)) + const empty = createMemo(() => visibleGroups().length === 0 && settled().length === 0) + + const archivedOpen = () => state.settledOpen + const archived = useQuery(() => ({ + queryKey: ["sidebar", "settled", serverKey()], + enabled: archivedOpen() && !!home.server.focusedContext(), + queryFn: async ({ signal }): Promise => { + const ctx = home.server.focusedContext() + if (!ctx) return [] + const response = await ctx.sdk.client.experimental.session.list( + { archived: true, roots: true, limit: ARCHIVED_LIMIT }, + { signal }, + ) + return response.data ?? [] + }, + retry: false, + staleTime: 30_000, + })) + + function isPinned(record: SidebarSessionRecord) { + if (record.session.id === currentSession()) return true + if (working(record.session.id)) return true + return sessionHasOpenTab(tabs.store, serverKey(), record.session) + } + + function projectOf(session: { directory: string }) { + const directory = pathKey(session.directory) + return home.project.list().find((item) => pathKey(item.worktree) === directory) + } + + function open(session: { id: string; directory: string }, project: LocalProject | undefined, event?: MouseEvent) { + const conn = home.server.focused() + const ctx = home.server.focusedContext() + if (!conn || !ctx) return + const directory = project?.worktree ?? session.directory + ctx.projects.open(directory) + if (event && isBackgroundOpen(event)) { + tabs.addSessionTab({ server: ServerConnection.key(conn), sessionId: session.id }) + return + } + ctx.projects.touch(directory) + void startTransition(() => { + const tab = tabs.addSessionTab({ server: ServerConnection.key(conn), sessionId: session.id }) + tabs.select(tab) + }) + } + + function requestFailed(cause: unknown) { + showToast({ + title: language.t("common.requestFailed"), + description: errorMessage(cause, language.t("common.requestFailed")), + }) + } + + function settle(record: SidebarSessionRecord) { + void (async () => { + const conn = home.server.focused() + const ctx = home.server.focusedContext() + if (!conn || !ctx) return + if ((await ctx.sdk.protocol) !== "v1") return + const [, setStore] = ctx.sync.child(record.session.directory) + await archiveHomeSession({ + server: ServerConnection.key(conn), + session: record.session, + archive: (sessionID) => + ctx.sdk.client.session.update({ + sessionID, + directory: record.session.directory, + time: { archived: Date.now() }, + }), + remove: () => { + setStore( + produce((draft) => { + const match = Binary.search(draft.session, record.session.id, (item) => item.id) + if (match.found) draft.session.splice(match.index, 1) + }), + ) + homeSessions().remove(record.session.id) + }, + onError: requestFailed, + }) + })() + } + + function unsettle(session: GlobalSession) { + void (async () => { + const conn = home.server.focused() + const ctx = home.server.focusedContext() + if (!conn || !ctx) return + if ((await ctx.sdk.protocol) !== "v1") return + const result = await ctx.sdk.client.session + .update({ + sessionID: session.id, + directory: session.directory, + // The server clears the archive timestamp on null; the generated type only models the + // positive case because the OpenAPI emitter drops nullable members of optional fields. + time: { archived: null as unknown as number }, + }) + .catch((cause) => { + requestFailed(cause) + return undefined + }) + if (!result) return + void sessionIndex.refetch() + void archived.refetch() + })() + } + + function closeTab(record: SidebarSessionRecord) { + tabs.removeSessionTab({ server: serverKey(), sessionId: record.session.id }) + } + + const canCreate = createMemo(() => !!home.project.newSession()) + const connection = createMemo(() => home.server.focused()) + + return ( + + ) +} + +function SidebarProject(props: { + group: SidebarProjectSection + server: ServerConnection.Key + collapsed: boolean + current: string | undefined + working: (sessionID: string) => boolean + unseen: () => number + canReveal: () => boolean + onToggleCollapsed: () => void + onOpen: (session: { id: string; directory: string }, project: LocalProject | undefined, event?: MouseEvent) => void + onSettle: (record: SidebarSessionRecord) => void + onCloseTab: (record: SidebarSessionRecord) => void + onNewSession: () => void + onEdit: () => void + onReveal: () => void + onClearNotifications: () => void + onClose: () => void +}) { + const language = useLanguage() + const platform = usePlatform() + const [menuOpen, setMenuOpen] = createSignal(false) + const projectWorking = createMemo(() => props.group.visible.some((record) => props.working(record.session.id))) + + return ( +
+
+ +
+ + } + aria-label={language.t("command.session.new")} + onClick={props.onNewSession} + /> + + setMenuOpen(open)} + > + } + aria-label={language.t("common.moreOptions")} + /> + + + {language.t("command.session.new")} + {language.t("dialog.project.edit.title")} + + + {language.t( + fileManagerApp(platform.platform === "desktop" ? (platform.os ?? "unknown") : "unknown") + .actionLabel, + )} + + + + {language.t("sidebar.project.clearNotifications")} + + + {language.t("common.close")} + + + +
+
+ + +
+ + {(record) => ( + + )} + +
+
+
+ ) +} + +function SidebarSessionRow(props: { + record: SidebarSessionRecord + server: ServerConnection.Key + current: boolean + onOpen: (session: { id: string; directory: string }, project: LocalProject | undefined, event?: MouseEvent) => void + onSettle: (record: SidebarSessionRecord) => void + onCloseTab: (record: SidebarSessionRecord) => void +}) { + const language = useLanguage() + const tabs = useTabs() + const server = createMemo(() => props.server) + const directory = createMemo(() => props.record.session.directory) + const sessionID = createMemo(() => props.record.session.id) + const status = useSessionTabAvatarState(server, directory, sessionID) + const open = createMemo(() => sessionHasOpenTab(tabs.store, props.server, props.record.session)) + const title = createMemo(() => titleOf(props.record.session)) + + return ( +
+ +
+ + } + aria-label={language.t("sidebar.navigation.settle")} + onClick={() => props.onSettle(props.record)} + /> + + + + } + aria-label={language.t("command.tab.close")} + onClick={() => props.onCloseTab(props.record)} + /> + + +
+
+ ) +} From 9da54efba11d8cb60236f9ed189d017d5c64cd1f Mon Sep 17 00:00:00 2001 From: malek Date: Fri, 11 Sep 2026 12:50:12 +0300 Subject: [PATCH 03/14] fix(app): propagate sidebar i18n keys to all locales Reuses existing translated keys where semantics match and reduces the new key set to eight placeholder-free strings, then adds them to all 61 app locales so the i18n parity tests stay green. Also drops the plural family in favour of numeric day labels and fixes the archived row onOpen arity. --- .../src/components/settings-v2/general.tsx | 6 +-- packages/app/src/context/language.tsx | 1 - packages/app/src/i18n/am.ts | 8 ++++ packages/app/src/i18n/ar.ts | 8 ++++ packages/app/src/i18n/az.ts | 8 ++++ packages/app/src/i18n/bg.ts | 8 ++++ packages/app/src/i18n/bn.ts | 8 ++++ packages/app/src/i18n/br.ts | 8 ++++ packages/app/src/i18n/bs.ts | 8 ++++ packages/app/src/i18n/ca.ts | 8 ++++ packages/app/src/i18n/cs.ts | 8 ++++ packages/app/src/i18n/da.ts | 8 ++++ packages/app/src/i18n/de.ts | 8 ++++ packages/app/src/i18n/dv.ts | 8 ++++ packages/app/src/i18n/dz.ts | 8 ++++ packages/app/src/i18n/el.ts | 8 ++++ packages/app/src/i18n/en.ts | 21 +++------ packages/app/src/i18n/es.ts | 8 ++++ packages/app/src/i18n/et.ts | 8 ++++ packages/app/src/i18n/fa.ts | 8 ++++ packages/app/src/i18n/fi.ts | 8 ++++ packages/app/src/i18n/fo.ts | 8 ++++ packages/app/src/i18n/fr.ts | 8 ++++ packages/app/src/i18n/hi.ts | 8 ++++ packages/app/src/i18n/hr.ts | 8 ++++ packages/app/src/i18n/hu.ts | 8 ++++ packages/app/src/i18n/hy.ts | 8 ++++ packages/app/src/i18n/id.ts | 8 ++++ packages/app/src/i18n/is.ts | 8 ++++ packages/app/src/i18n/it.ts | 8 ++++ packages/app/src/i18n/ja.ts | 8 ++++ packages/app/src/i18n/ka.ts | 8 ++++ packages/app/src/i18n/km.ts | 8 ++++ packages/app/src/i18n/ko.ts | 8 ++++ packages/app/src/i18n/lo.ts | 8 ++++ packages/app/src/i18n/lt.ts | 8 ++++ packages/app/src/i18n/lv.ts | 8 ++++ packages/app/src/i18n/mk.ts | 8 ++++ packages/app/src/i18n/mn.ts | 8 ++++ packages/app/src/i18n/ms.ts | 8 ++++ packages/app/src/i18n/my.ts | 8 ++++ packages/app/src/i18n/ne.ts | 8 ++++ packages/app/src/i18n/nl.ts | 8 ++++ packages/app/src/i18n/no.ts | 8 ++++ packages/app/src/i18n/pa.ts | 8 ++++ packages/app/src/i18n/pl.ts | 8 ++++ packages/app/src/i18n/ro.ts | 8 ++++ packages/app/src/i18n/ru.ts | 8 ++++ packages/app/src/i18n/si.ts | 8 ++++ packages/app/src/i18n/sk.ts | 8 ++++ packages/app/src/i18n/sl.ts | 8 ++++ packages/app/src/i18n/sq.ts | 8 ++++ packages/app/src/i18n/sr.ts | 8 ++++ packages/app/src/i18n/sv.ts | 8 ++++ packages/app/src/i18n/tg.ts | 8 ++++ packages/app/src/i18n/th.ts | 8 ++++ packages/app/src/i18n/tk.ts | 8 ++++ packages/app/src/i18n/tr.ts | 8 ++++ packages/app/src/i18n/uk.ts | 8 ++++ packages/app/src/i18n/ur.ts | 8 ++++ packages/app/src/i18n/uz.ts | 8 ++++ packages/app/src/i18n/vi.ts | 8 ++++ packages/app/src/i18n/zh.ts | 8 ++++ packages/app/src/i18n/zht.ts | 8 ++++ .../src/pages/layout/navigation-sidebar.tsx | 45 +++++++++++-------- 65 files changed, 521 insertions(+), 40 deletions(-) diff --git a/packages/app/src/components/settings-v2/general.tsx b/packages/app/src/components/settings-v2/general.tsx index f7462cce0eae..002279b61de9 100644 --- a/packages/app/src/components/settings-v2/general.tsx +++ b/packages/app/src/components/settings-v2/general.tsx @@ -127,7 +127,7 @@ const NavigationModeSetting: Component = () => { const settings = useSettings() return ( { placement="bottom-end" gutter={6} label={(option) => - option - ? language.plural("settings.general.row.sidebarSessions.days", option) - : language.t("settings.general.row.sidebarSessions.always") + option ? String(option) : language.t("settings.general.row.sidebarSessions.always") } onSelect={(option) => option !== null && settings.general.setSidebarSessionDays(option)} /> diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx index 41fc94bd8aae..e387391f68bf 100644 --- a/packages/app/src/context/language.tsx +++ b/packages/app/src/context/language.tsx @@ -33,7 +33,6 @@ type PluralKey = | "session.question.pending" | "session.followupDock.summary" | "session.revertDock.summary" - | "settings.general.row.sidebarSessions.days" type Source = { dict: Record } function cookie(locale: Locale) { diff --git a/packages/app/src/i18n/am.ts b/packages/app/src/i18n/am.ts index bda48350e532..9b3f939f5d5a 100644 --- a/packages/app/src/i18n/am.ts +++ b/packages/app/src/i18n/am.ts @@ -860,6 +860,8 @@ export const dict = { "sidebar.project.clearNotifications": "ማሳወቂያዎችን አጽዳ", "sidebar.empty.title": "ምንም ክፍት ፕሮጀክቶች የሉም", "sidebar.empty.description": "ለመጀመር ፕሮጀክት ይክፈቱ", + "sidebar.archived": "በማህደር የተቀመጠ", + "sidebar.archived.restore": "ክፍለ ጊዜን መልስ", "debugBar.ariaLabel": "የልማት አፈጻጸም ምርመራዎች", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -906,6 +908,12 @@ export const dict = { "settings.general.section.display": "ማሳያ", "settings.general.row.language.title": "ቋንቋ", "settings.general.row.language.description": "የማሳያ ቋንቋውን ለOpenCode", + "settings.general.row.navigation.description": "በርዕስ አሞሌ ውስጥ ትሮችን ወይም ቋሚ የጎን አሞሌ ይጠቀሙ", + "settings.general.row.navigation.tabs": "ትሮች", + "settings.general.row.navigation.sidebar": "የጎን አሞሌ", + "settings.general.row.sidebarSessions.title": "የማይሰሩ ክፍለ ጊዜያትን አስቀምጥ", + "settings.general.row.sidebarSessions.description": "የማይሰሩ ክፍለ ጊዜያት ወደ በማህደር የተቀመጠ ይሄዳሉ። እየሰሩ ያሉ ክፍለ ጊዜያት ይታያሉ።", + "settings.general.row.sidebarSessions.always": "ሁልጊዜ አሳይ", "settings.general.row.shell.title": "ተርሚናል ሼል", "settings.general.row.shell.description": "ሼል በተርሚናል እና ወኪል መሳሪያዎች ጥቅም ላይ የዋለ", "settings.general.row.shell.autoDefault": "ራስ-ሰር (ነባሪ)", diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 3f55b3084088..ddb9c7321716 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -827,6 +827,8 @@ export const dict = { "sidebar.project.clearNotifications": "مسح الإشعارات", "sidebar.empty.title": "لا توجد مشاريع مفتوحة", "sidebar.empty.description": "افتح مشروعًا للبدء", + "sidebar.archived": "المؤرشفة", + "sidebar.archived.restore": "استعادة الجلسة", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "سطح المكتب", "settings.section.server": "الخادم", @@ -844,6 +846,12 @@ export const dict = { "settings.general.section.display": "العرض", "settings.general.row.language.title": "اللغة", "settings.general.row.language.description": "تغيير لغة العرض لـ OpenCode", + "settings.general.row.navigation.description": "استخدم علامات التبويب في شريط العنوان أو الشريط الجانبي الثابت", + "settings.general.row.navigation.tabs": "علامات التبويب", + "settings.general.row.navigation.sidebar": "الشريط الجانبي", + "settings.general.row.sidebarSessions.title": "أرشفة الجلسات الخاملة بعد", + "settings.general.row.sidebarSessions.description": "تنتقل الجلسات الخاملة إلى المؤرشفة. تبقى الجلسات النشطة ظاهرة.", + "settings.general.row.sidebarSessions.always": "الإظهار دائمًا", "settings.general.row.shell.title": "Shell المحطة الطرفية", "settings.general.row.shell.description": "اختر shell المستخدم في المحطة الطرفية. تُستخدم واجهات shell المتوافقة أيضًا في استدعاءات أدوات الوكيل.", diff --git a/packages/app/src/i18n/az.ts b/packages/app/src/i18n/az.ts index d818ae57fd6c..eb041d751a9a 100644 --- a/packages/app/src/i18n/az.ts +++ b/packages/app/src/i18n/az.ts @@ -886,6 +886,8 @@ export const dict = { "sidebar.project.clearNotifications": "Bildirişləri təmizlə", "sidebar.empty.title": "Heç bir layihə açılmayıb", "sidebar.empty.description": "Başlamaq üçün bir layihə açın", + "sidebar.archived": "Arxivlənib", + "sidebar.archived.restore": "Sessiyanı bərpa et", "debugBar.ariaLabel": "Tərtibatçı performans diaqnostikası", "debugBar.na": "yox", "debugBar.nav.label": "NAV", @@ -934,6 +936,12 @@ export const dict = { "settings.general.section.display": "Ekran", "settings.general.row.language.title": "Dil", "settings.general.row.language.description": "OpenCode üçün ekran dilini dəyişdirin", + "settings.general.row.navigation.description": "Başlıq panelində tablar və ya daimi yan panel istifadə et", + "settings.general.row.navigation.tabs": "Tablar", + "settings.general.row.navigation.sidebar": "Yan panel", + "settings.general.row.sidebarSessions.title": "Boşda qalan sessiyaları arxivlə", + "settings.general.row.sidebarSessions.description": "Boşda qalan sessiyalar Arxivlənib bölməsinə keçir. İşləyən sessiyalar görünən qalır.", + "settings.general.row.sidebarSessions.always": "Həmişə göstər", "settings.general.row.shell.title": "Terminal qabığı", "settings.general.row.shell.description": "Terminal və agent alətləri tərəfindən istifadə edilən qabıq", "settings.general.row.shell.autoDefault": "Avtomatik (Standart)", diff --git a/packages/app/src/i18n/bg.ts b/packages/app/src/i18n/bg.ts index 7f63d1fa4b3e..a33132500978 100644 --- a/packages/app/src/i18n/bg.ts +++ b/packages/app/src/i18n/bg.ts @@ -882,6 +882,8 @@ export const dict = { "sidebar.project.clearNotifications": "Изчистване на известията", "sidebar.empty.title": "Няма отворени проекти", "sidebar.empty.description": "Отворете проект, за да започнете", + "sidebar.archived": "Архивирани", + "sidebar.archived.restore": "Възстанови сесия", "debugBar.ariaLabel": "Диагностика на ефективността на разработката", "debugBar.na": "няма", "debugBar.nav.label": "NAV", @@ -931,6 +933,12 @@ export const dict = { "settings.general.section.display": "Дисплей", "settings.general.row.language.title": "език", "settings.general.row.language.description": "Променете езика на дисплея за OpenCode", + "settings.general.row.navigation.description": "Използвайте раздели в заглавната лента или постоянна странична лента", + "settings.general.row.navigation.tabs": "Раздели", + "settings.general.row.navigation.sidebar": "Странична лента", + "settings.general.row.sidebarSessions.title": "Архивирай неактивни сесии след", + "settings.general.row.sidebarSessions.description": "Неактивните сесии отиват в Архивирани. Активните сесии остават видими.", + "settings.general.row.sidebarSessions.always": "Винаги показвай", "settings.general.row.shell.title": "Терминал shell", "settings.general.row.shell.description": "Shell използвани от инструментите на терминала и агента", "settings.general.row.shell.autoDefault": "Автоматично (по подразбиране)", diff --git a/packages/app/src/i18n/bn.ts b/packages/app/src/i18n/bn.ts index 5f0698ab64f1..0410241cd3aa 100644 --- a/packages/app/src/i18n/bn.ts +++ b/packages/app/src/i18n/bn.ts @@ -876,6 +876,8 @@ export const dict: Record = { "sidebar.project.clearNotifications": "বিজ্ঞপ্তিগুলি সাফ করুন", "sidebar.empty.title": "কোনো প্রকল্প খোলা নেই", "sidebar.empty.description": "শুরু করতে একটি প্রকল্প খুলুন", + "sidebar.archived": "আর্কাইভ করা", + "sidebar.archived.restore": "সেশন পুনরুদ্ধার করুন", "debugBar.ariaLabel": "উন্নয়ন কর্মক্ষমতা ডায়গনিস্টিক", "debugBar.na": "n/a", "debugBar.nav.label": "এনএভি", @@ -923,6 +925,12 @@ export const dict: Record = { "settings.general.section.display": "প্রদর্শন", "settings.general.row.language.title": "ভাষা", "settings.general.row.language.description": "OpenCode-এর জন্য প্রদর্শনের ভাষা পরিবর্তন করুন", + "settings.general.row.navigation.description": "শিরোনাম বারে ট্যাব বা স্থায়ী সাইডবার ব্যবহার করুন", + "settings.general.row.navigation.tabs": "ট্যাব", + "settings.general.row.navigation.sidebar": "সাইডবার", + "settings.general.row.sidebarSessions.title": "নিষ্ক্রিয় সেশন আর্কাইভ করুন", + "settings.general.row.sidebarSessions.description": "নিষ্ক্রিয় সেশন আর্কাইভ করাতে চলে যায়। কর্মরত সেশন দৃশ্যমান থাকে।", + "settings.general.row.sidebarSessions.always": "সবসময় দেখান", "settings.general.row.shell.title": "টার্মিনাল শেল", "settings.general.row.shell.description": "টার্মিনাল এবং এজেন্ট সরঞ্জাম দ্বারা ব্যবহৃত শেল", "settings.general.row.shell.autoDefault": "স্বয়ংক্রিয় (ডিফল্ট)", diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index 09da845ccb53..ab2b89e40c86 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -830,6 +830,8 @@ export const dict = { "sidebar.project.clearNotifications": "Limpar notificações", "sidebar.empty.title": "Nenhum projeto aberto", "sidebar.empty.description": "Abra um projeto para começar", + "sidebar.archived": "Archiuet", + "sidebar.archived.restore": "Adsevel ar sesion", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "Desktop", "settings.section.server": "Servidor", @@ -847,6 +849,12 @@ export const dict = { "settings.general.section.display": "Tela", "settings.general.row.language.title": "Idioma", "settings.general.row.language.description": "Alterar o idioma de exibição do OpenCode", + "settings.general.row.navigation.description": "Implijit abadennoù er varenn ditl pe ur varrenn gostez padus", + "settings.general.row.navigation.tabs": "Abadennoù", + "settings.general.row.navigation.sidebar": "Barrenn gostez", + "settings.general.row.sidebarSessions.title": "Arc'hivañ ar sesionoù diseblant goude", + "settings.general.row.sidebarSessions.description": "Ar sesionoù diseblant a ya d'an arquiv. Ar sesionoù oberiant a chom gwelet.", + "settings.general.row.sidebarSessions.always": "Diskouez bepred", "settings.general.row.shell.title": "Shell do terminal", "settings.general.row.shell.description": "Escolha o shell usado no terminal. Os shells compatíveis também são usados nas chamadas de ferramentas do agente.", diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts index feb41c651a87..3f58821407f9 100644 --- a/packages/app/src/i18n/bs.ts +++ b/packages/app/src/i18n/bs.ts @@ -891,6 +891,8 @@ export const dict = { "sidebar.project.clearNotifications": "Očisti obavijesti", "sidebar.empty.title": "Nema otvorenih projekata", "sidebar.empty.description": "Otvori projekat za početak", + "sidebar.archived": "Arhivirano", + "sidebar.archived.restore": "Vrati sesiju", "app.name.desktop": "OpenCode Desktop", @@ -912,6 +914,12 @@ export const dict = { "settings.general.row.language.title": "Jezik", "settings.general.row.language.description": "Promijeni jezik prikaza u OpenCode-u", + "settings.general.row.navigation.description": "Koristite kartice u traci naslova ili stalnu bočnu traku", + "settings.general.row.navigation.tabs": "Kartice", + "settings.general.row.navigation.sidebar": "Bočna traka", + "settings.general.row.sidebarSessions.title": "Arhiviraj neaktivne sesije nakon", + "settings.general.row.sidebarSessions.description": "Neaktivne sesije idu u Arhivirano. Aktivne sesije ostaju vidljive.", + "settings.general.row.sidebarSessions.always": "Uvijek prikaži", "settings.general.row.shell.title": "Shell terminala", "settings.general.row.shell.description": "Odaberi shell koji se koristi za terminal. Kompatibilni shellovi koriste se i za pozive alata agenta.", diff --git a/packages/app/src/i18n/ca.ts b/packages/app/src/i18n/ca.ts index 21ad325607a6..359af691d3c4 100644 --- a/packages/app/src/i18n/ca.ts +++ b/packages/app/src/i18n/ca.ts @@ -886,6 +886,8 @@ export const dict = { "sidebar.project.clearNotifications": "Esborra les notificacions", "sidebar.empty.title": "No hi ha projectes oberts", "sidebar.empty.description": "Obriu un projecte per començar", + "sidebar.archived": "Arxivades", + "sidebar.archived.restore": "Restaura la sessió", "debugBar.ariaLabel": "Diagnòstic de rendiment del desenvolupament", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -934,6 +936,12 @@ export const dict = { "settings.general.section.display": "Mostra", "settings.general.row.language.title": "Llengua", "settings.general.row.language.description": "Canvia l'idioma de visualització per a OpenCode", + "settings.general.row.navigation.description": "Usa pestanyes a la barra de títol o una barra lateral persistent", + "settings.general.row.navigation.tabs": "Pestanyes", + "settings.general.row.navigation.sidebar": "Barra lateral", + "settings.general.row.sidebarSessions.title": "Arxiva les sessions inactives després de", + "settings.general.row.sidebarSessions.description": "Les sessions inactives van a Arxivades. Les sessions actives continuen visibles.", + "settings.general.row.sidebarSessions.always": "Mostra sempre", "settings.general.row.shell.title": "Carcassa terminal", "settings.general.row.shell.description": "Shell utilitzat pel terminal i les eines d'agent", "settings.general.row.shell.autoDefault": "Automàtic (per defecte)", diff --git a/packages/app/src/i18n/cs.ts b/packages/app/src/i18n/cs.ts index d79d4eb5a7f8..0a3ddc854800 100644 --- a/packages/app/src/i18n/cs.ts +++ b/packages/app/src/i18n/cs.ts @@ -882,6 +882,8 @@ export const dict = { "sidebar.project.clearNotifications": "Vymazat oznámení", "sidebar.empty.title": "Nejsou otevřeny žádné projekty", "sidebar.empty.description": "Chcete-li začít, otevřete projekt", + "sidebar.archived": "Archivované", + "sidebar.archived.restore": "Obnovit relaci", "debugBar.ariaLabel": "Diagnostika vývoje výkonnosti", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -930,6 +932,12 @@ export const dict = { "settings.general.section.display": "Displej", "settings.general.row.language.title": "Jazyk", "settings.general.row.language.description": "Změnit jazyk zobrazení pro OpenCode", + "settings.general.row.navigation.description": "Použijte karty na titulním panelu nebo trvalý postranní panel", + "settings.general.row.navigation.tabs": "Karty", + "settings.general.row.navigation.sidebar": "Postranní panel", + "settings.general.row.sidebarSessions.title": "Archivovat nečinné relace po", + "settings.general.row.sidebarSessions.description": "Nečinné relace se přesunou do Archivované. Aktivní relace zůstávají viditelné.", + "settings.general.row.sidebarSessions.always": "Vždy zobrazit", "settings.general.row.shell.title": "Shell terminálu", "settings.general.row.shell.description": "Shell používaný terminálem a nástroji agenta", "settings.general.row.shell.autoDefault": "Auto (výchozí)", diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index 87737b094240..6ba53be1143c 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -768,6 +768,8 @@ export const dict = { "sidebar.project.clearNotifications": "Ryd notifikationer", "sidebar.empty.title": "Ingen åbne projekter", "sidebar.empty.description": "Åbn et projekt for at komme i gang", + "sidebar.archived": "Arkiveret", + "sidebar.archived.restore": "Gendan session", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "Desktop", @@ -788,6 +790,12 @@ export const dict = { "settings.general.row.language.title": "Sprog", "settings.general.row.language.description": "Ændr visningssproget for OpenCode", + "settings.general.row.navigation.description": "Brug faner i titellinjen eller et fast sidepanel", + "settings.general.row.navigation.tabs": "Faner", + "settings.general.row.navigation.sidebar": "Sidepanel", + "settings.general.row.sidebarSessions.title": "Arkivér inaktive sessioner efter", + "settings.general.row.sidebarSessions.description": "Inaktive sessioner flyttes til Arkiveret. Aktive sessioner forbliver synlige.", + "settings.general.row.sidebarSessions.always": "Vis altid", "settings.general.row.shell.title": "Terminalshell", "settings.general.row.shell.description": "Vælg den shell, der bruges i din terminal. Kompatible shells bruges også til agentens værktøjskald.", diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index 00849598c5c5..641d004239d3 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -721,6 +721,8 @@ export const dict = { "sidebar.project.clearNotifications": "Benachrichtigungen löschen", "sidebar.empty.title": "Keine Projekte geöffnet", "sidebar.empty.description": "Öffnen Sie ein Projekt, um loszulegen", + "sidebar.archived": "Archiviert", + "sidebar.archived.restore": "Sitzung wiederherstellen", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "Desktop", "settings.section.server": "Server", @@ -738,6 +740,12 @@ export const dict = { "settings.general.section.display": "Anzeige", "settings.general.row.language.title": "Sprache", "settings.general.row.language.description": "Die Anzeigesprache für OpenCode ändern", + "settings.general.row.navigation.description": "Tabs in der Titelleiste oder eine dauerhafte Seitenleiste verwenden", + "settings.general.row.navigation.tabs": "Tabs", + "settings.general.row.navigation.sidebar": "Seitenleiste", + "settings.general.row.sidebarSessions.title": "Inaktive Sitzungen archivieren nach", + "settings.general.row.sidebarSessions.description": "Inaktive Sitzungen werden nach „Archiviert“ verschoben. Aktive Sitzungen bleiben sichtbar.", + "settings.general.row.sidebarSessions.always": "Immer anzeigen", "settings.general.row.shell.title": "Terminal-Shell", "settings.general.row.shell.description": "Wählen Sie die Shell für Ihr Terminal aus. Kompatible Shells werden auch für Tool-Aufrufe von Agenten verwendet.", diff --git a/packages/app/src/i18n/dv.ts b/packages/app/src/i18n/dv.ts index 27b5fea86999..5c010a424d0d 100644 --- a/packages/app/src/i18n/dv.ts +++ b/packages/app/src/i18n/dv.ts @@ -890,6 +890,8 @@ export const dict = { "sidebar.project.clearNotifications": "ނޮޓިފިކޭޝަންތައް ސާފުކުރުން", "sidebar.empty.title": "އެއްވެސް މަޝްރޫއެއް ނުހުޅުވޭ", "sidebar.empty.description": "ފަށަން ޕްރޮޖެކްޓެއް ހުޅުވާށެވެ", + "sidebar.archived": "ގެންދެވިފައި", + "sidebar.archived.restore": "ސެޝަން އަލުން ގެންނާން", "debugBar.ariaLabel": "ޑިވެލޮޕްމަންޓް ޕާފޯމަންސް ޑައިގްނޯސްޓިކްސް", "debugBar.na": "n/a", "debugBar.nav.label": "NAV އެވެ", @@ -939,6 +941,12 @@ export const dict = { "settings.general.section.display": "ޑިސްޕްލޭ", "settings.general.row.language.title": "ބަސް", "settings.general.row.language.description": "OpenCode އަށް ޑިސްޕްލޭ ލޭންގުއޭޖް ބަދަލުކުރުން", + "settings.general.row.navigation.description": "ސިރުސްތޮށުގައި ޓެބްތައް ނުވަތަ ސައިޑްބާރެއް ބޭނުން ކުރޭ", + "settings.general.row.navigation.tabs": "ޓެބްތައް", + "settings.general.row.navigation.sidebar": "ސައިޑްބާރް", + "settings.general.row.sidebarSessions.title": "ނުހަރަކާތްތެރި ސެޝަންތައް ގެންދަން", + "settings.general.row.sidebarSessions.description": "ނުހަރަކާތްތެރި ސެޝަންތައް ގެންދެވިފައި އަށް ބަދަލުވޭ. މަސައްކަތް ކުރަމުންދާ ސެޝަންތައް ފެންނާނެ.", + "settings.general.row.sidebarSessions.always": "އެންމެހާ ވަގުތު ދައްކާ", "settings.general.row.shell.title": "ޓާމިނަލް ޝެލް އެވެ", "settings.general.row.shell.description": "ޓާމިނަލް އާއި އޭޖެންޓް ޓޫލްސް އިން ބޭނުންކުރާ ޝެލް", "settings.general.row.shell.autoDefault": "އޮޓޯ (ޑިފޯލްޓް)", diff --git a/packages/app/src/i18n/dz.ts b/packages/app/src/i18n/dz.ts index 3b2ad46ca304..ba70de0bae0c 100644 --- a/packages/app/src/i18n/dz.ts +++ b/packages/app/src/i18n/dz.ts @@ -891,6 +891,8 @@ export const dict: Record = { "sidebar.project.clearNotifications": "བརྡ་བསྐུལ་ཚུ་གསལ་བཟོ།", "sidebar.empty.title": "ལས་འགུལ་ཁ་ཕྱེ་མེད།", "sidebar.empty.description": "འགོ་བཙུགས་ནིའི་དོན་ལུ་ལས་འགུལ་ཅིག་ཁ་ཕྱེ།", + "sidebar.archived": "ཡིག་མཛོད་ནང་བཞག", + "sidebar.archived.restore": "ལཱ་ཡུན་སོར་ཆུད", "debugBar.ariaLabel": "གོང་འཕེལ་གྱི་ལས་དོན་བརྟག་དཔྱད།", "debugBar.na": "ན/ཨེ།", "debugBar.nav.label": "NAV", @@ -940,6 +942,12 @@ export const dict: Record = { "settings.general.section.display": "གསལ༌སྟོན", "settings.general.row.language.title": "སྐད༌ཡིག", "settings.general.row.language.description": "OpenCodeགི་དོན་ལུ་ བཀྲམ་སྟོན་སྐད་ཡིག་བསྒྱུར་བཅོས་འབད།", + "settings.general.row.navigation.description": "མགོ་བརྗོད་ནང་ མཆོང་ལྡེ་ ཡང་ན་ ཟུར་ཕྲེང་ ལག་ལེན་འཐབ།", + "settings.general.row.navigation.tabs": "མཆོང་ལྡེ།", + "settings.general.row.navigation.sidebar": "ཟུར་ཕྲེང་།", + "settings.general.row.sidebarSessions.title": "ལཱ་ཡུན་མ་འགུལ་བ་ ཡིག་མཛོད་ནང་བཞག", + "settings.general.row.sidebarSessions.description": "ལཱ་ཡུན་མ་འགུལ་བ་ ཡིག་མཛོད་ནང་འགྱོ། ལཱ་འབད་མི་ ལཱ་ཡུན་ མཐོང་ཚུགས།", + "settings.general.row.sidebarSessions.always": "ད་ལྟོ་རང་ སྟོན།", "settings.general.row.shell.title": "ཊར་མི་ནཱལ་ Shell", "settings.general.row.shell.description": "ཊར་མི་ནཱལ་དང་ལས་ཚབ་ལག་ཆས་ཚུ་གིས་ལག་ལེན་འཐབ་མི་ Shell", "settings.general.row.shell.autoDefault": "རང་བཞིན་ (སྔོན་སྒྲིག)", diff --git a/packages/app/src/i18n/el.ts b/packages/app/src/i18n/el.ts index 8f91b46af010..90f8409b51bf 100644 --- a/packages/app/src/i18n/el.ts +++ b/packages/app/src/i18n/el.ts @@ -885,6 +885,8 @@ export const dict = { "sidebar.project.clearNotifications": "Διαγραφή ειδοποιήσεων", "sidebar.empty.title": "Δεν υπάρχουν ανοιχτά έργα", "sidebar.empty.description": "Ανοίξτε ένα έργο για να ξεκινήσετε", + "sidebar.archived": "Αρχειοθετημένες", + "sidebar.archived.restore": "Επαναφορά συνεδρίας", "debugBar.ariaLabel": "Διαγνωστικά απόδοσης ανάπτυξης", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -935,6 +937,12 @@ export const dict = { "settings.general.section.display": "Εμφάνιση", "settings.general.row.language.title": "Γλώσσα", "settings.general.row.language.description": "Αλλαγή της γλώσσας εμφάνισης για το OpenCode", + "settings.general.row.navigation.description": "Χρησιμοποιήστε καρτέλες στη γραμμή τίτλου ή μια μόνιμη πλευρική γραμμή", + "settings.general.row.navigation.tabs": "Καρτέλες", + "settings.general.row.navigation.sidebar": "Πλευρική γραμμή", + "settings.general.row.sidebarSessions.title": "Αρχειοθέτηση αδρανών συνεδριών μετά από", + "settings.general.row.sidebarSessions.description": "Οι αδρανείς συνεδρίες μετακινούνται στις Αρχειοθετημένες. Οι ενεργές συνεδρίες παραμένουν ορατές.", + "settings.general.row.sidebarSessions.always": "Να εμφανίζονται πάντα", "settings.general.row.shell.title": "Τερματικό κέλυφος", "settings.general.row.shell.description": "Κέλυφος που χρησιμοποιείται από το τερματικό και τα εργαλεία του πράκτορα", "settings.general.row.shell.autoDefault": "Αυτόματο (Προεπιλογή)", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index ca38ee30c6db..2b50834e1523 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -854,15 +854,8 @@ export const dict = { "sidebar.project.clearNotifications": "Clear notifications", "sidebar.empty.title": "No projects open", "sidebar.empty.description": "Open a project to get started", - "sidebar.navigation.label": "Navigation", - "sidebar.navigation.filter": "Filter projects and sessions", - "sidebar.navigation.noMatches": "No matching sessions", - "sidebar.navigation.projects": "Projects", - "sidebar.navigation.settle": "Settle session", - "sidebar.navigation.settled": "Settled", - "sidebar.navigation.settled.show": "Show settled sessions", - "sidebar.navigation.settled.empty": "No settled sessions", - "sidebar.navigation.settled.restore": "Restore session", + "sidebar.archived": "Archived", + "sidebar.archived.restore": "Restore session", "debugBar.ariaLabel": "Development performance diagnostics", "debugBar.na": "n/a", @@ -916,16 +909,12 @@ export const dict = { "settings.general.row.language.title": "Language", "settings.general.row.language.description": "Change the display language for OpenCode", - "settings.general.row.navigation.title": "Navigation", - "settings.general.row.navigation.description": "Switch between session tabs in the title bar and a persistent sidebar", + "settings.general.row.navigation.description": "Use title bar tabs or a persistent sidebar", "settings.general.row.navigation.tabs": "Tabs", "settings.general.row.navigation.sidebar": "Sidebar", - "settings.general.row.sidebarSessions.title": "Settle sessions after", - "settings.general.row.sidebarSessions.description": - "Sessions idle for longer than this are hidden under Settled in the sidebar. Working and open sessions always stay visible.", + "settings.general.row.sidebarSessions.title": "Archive idle sessions after", + "settings.general.row.sidebarSessions.description": "Idle sessions move to Archived. Working sessions stay visible.", "settings.general.row.sidebarSessions.always": "Always show", - "settings.general.row.sidebarSessions.days.one": "{{count}} day", - "settings.general.row.sidebarSessions.days.other": "{{count}} days", "settings.general.row.shell.title": "Terminal shell", "settings.general.row.shell.description": "Shell used by the terminal and agent tools", "settings.general.row.shell.autoDefault": "Auto (Default)", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 9e9ff2c36750..f66d8aee8950 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -896,6 +896,8 @@ export const dict = { "sidebar.project.clearNotifications": "Borrar notificaciones", "sidebar.empty.title": "No hay proyectos abiertos", "sidebar.empty.description": "Abre un proyecto para empezar", + "sidebar.archived": "Archivadas", + "sidebar.archived.restore": "Restaurar sesión", "app.name.desktop": "OpenCode Desktop", @@ -917,6 +919,12 @@ export const dict = { "settings.general.row.language.title": "Idioma", "settings.general.row.language.description": "Cambiar el idioma de visualización para OpenCode", + "settings.general.row.navigation.description": "Usa pestañas en la barra de título o una barra lateral persistente", + "settings.general.row.navigation.tabs": "Pestañas", + "settings.general.row.navigation.sidebar": "Barra lateral", + "settings.general.row.sidebarSessions.title": "Archivar sesiones inactivas después de", + "settings.general.row.sidebarSessions.description": "Las sesiones inactivas pasan a Archivadas. Las sesiones activas siguen visibles.", + "settings.general.row.sidebarSessions.always": "Mostrar siempre", "settings.general.row.shell.title": "Shell del terminal", "settings.general.row.shell.description": "Shell que usan el terminal y las herramientas del agente", "settings.general.row.shell.autoDefault": "Automático (predeterminado)", diff --git a/packages/app/src/i18n/et.ts b/packages/app/src/i18n/et.ts index d78296675e3d..bc74ab728832 100644 --- a/packages/app/src/i18n/et.ts +++ b/packages/app/src/i18n/et.ts @@ -872,6 +872,8 @@ export const dict = { "sidebar.project.clearNotifications": "Tühjenda märguanded", "sidebar.empty.title": "Avatud projekte pole", "sidebar.empty.description": "Alustamiseks avage projekt", + "sidebar.archived": "Arhiveeritud", + "sidebar.archived.restore": "Taasta seanss", "debugBar.ariaLabel": "Arendustegevuse diagnostika", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -921,6 +923,12 @@ export const dict = { "settings.general.section.display": "Ekraan", "settings.general.row.language.title": "Keel", "settings.general.row.language.description": "Muutke OpenCode kuvakeelt", + "settings.general.row.navigation.description": "Kasuta tiitliriba vahekaarte või püsivat külgriba", + "settings.general.row.navigation.tabs": "Vahekaardid", + "settings.general.row.navigation.sidebar": "Külgriba", + "settings.general.row.sidebarSessions.title": "Arhiveeri passiivsed seansid pärast", + "settings.general.row.sidebarSessions.description": "Passiivsed seansid liiguvad kausta Arhiveeritud. Aktiivsed seansid jäävad nähtavale.", + "settings.general.row.sidebarSessions.always": "Kuva alati", "settings.general.row.shell.title": "Terminali shell", "settings.general.row.shell.description": "Terminali ja agenditööriistade kasutatav shell", "settings.general.row.shell.autoDefault": "Automaatne (vaikimisi)", diff --git a/packages/app/src/i18n/fa.ts b/packages/app/src/i18n/fa.ts index 0d3d721b5324..c72ccc1fd53f 100644 --- a/packages/app/src/i18n/fa.ts +++ b/packages/app/src/i18n/fa.ts @@ -875,6 +875,8 @@ export const dict = { "sidebar.project.clearNotifications": "پرامپت ها را پاک کنید", "sidebar.empty.title": "هیچ پروژه ای باز نشده است", "sidebar.empty.description": "برای شروع یک پروژه باز کنید", + "sidebar.archived": "آرشیوشده", + "sidebar.archived.restore": "بازیابی جلسه", "debugBar.ariaLabel": "تشخیص عملکرد توسعه", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -922,6 +924,12 @@ export const dict = { "settings.general.section.display": "نمایش", "settings.general.row.language.title": "زبان", "settings.general.row.language.description": "زبان نمایش را برای OpenCode تغییر دهید", + "settings.general.row.navigation.description": "از برگه‌های نوار عنوان یا نوار کناری ثابت استفاده کنید", + "settings.general.row.navigation.tabs": "برگه‌ها", + "settings.general.row.navigation.sidebar": "نوار کناری", + "settings.general.row.sidebarSessions.title": "آرشیو کردن جلسات بیکار پس از", + "settings.general.row.sidebarSessions.description": "جلسات بیکار به آرشیوشده منتقل می‌شوند. جلسات در حال کار نمایان می‌مانند.", + "settings.general.row.sidebarSessions.always": "همیشه نمایش بده", "settings.general.row.shell.title": "پوسته ترمینال", "settings.general.row.shell.description": "پوسته مورد استفاده ترمینال و ابزار عامل", "settings.general.row.shell.autoDefault": "خودکار (پیش‌فرض)", diff --git a/packages/app/src/i18n/fi.ts b/packages/app/src/i18n/fi.ts index aa9c92574cff..684e7d4f6a2d 100644 --- a/packages/app/src/i18n/fi.ts +++ b/packages/app/src/i18n/fi.ts @@ -776,6 +776,8 @@ export const dict = { "sidebar.project.clearNotifications": "Tyhjennä ilmoitukset", "sidebar.empty.title": "Ei avoimia projekteja", "sidebar.empty.description": "Aloita avaamalla projekti", + "sidebar.archived": "Arkistoitu", + "sidebar.archived.restore": "Palauta istunto", "debugBar.ariaLabel": "Kehityksen suorituskyvyn diagnostiikka", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -824,6 +826,12 @@ export const dict = { "settings.general.section.display": "Näyttö", "settings.general.row.language.title": "Kieli", "settings.general.row.language.description": "Vaihda OpenCoden näyttökieli", + "settings.general.row.navigation.description": "Käytä välilehtiä otsikkopalkissa tai pysyvää sivupalkkia", + "settings.general.row.navigation.tabs": "Välilehdet", + "settings.general.row.navigation.sidebar": "Sivupalkki", + "settings.general.row.sidebarSessions.title": "Arkistoi käyttämättömät istunnot, kun", + "settings.general.row.sidebarSessions.description": "Käyttämättömät istunnot siirtyvät kohtaan Arkistoitu. Aktiiviset istunnot pysyvät näkyvissä.", + "settings.general.row.sidebarSessions.always": "Näytä aina", "settings.general.row.shell.title": "Terminaalin komentotulkki", "settings.general.row.shell.description": "Terminaalin ja agenttityökalujen käyttämä komentotulkki", "settings.general.row.shell.autoDefault": "Automaattinen (oletus)", diff --git a/packages/app/src/i18n/fo.ts b/packages/app/src/i18n/fo.ts index 4329a35b4247..4256ca89914c 100644 --- a/packages/app/src/i18n/fo.ts +++ b/packages/app/src/i18n/fo.ts @@ -877,6 +877,8 @@ export const dict = { "sidebar.project.clearNotifications": "Rudda fráboðanir", "sidebar.empty.title": "Ongar verkætlanir lata upp", "sidebar.empty.description": "Opna eina verkætlan fyri at koma í gongd", + "sidebar.archived": "Arkiverað", + "sidebar.archived.restore": "Endurstovna setan", "debugBar.ariaLabel": "Menningar avriksdiagnostikk", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -924,6 +926,12 @@ export const dict = { "settings.general.section.display": "Sýn", "settings.general.row.language.title": "Mál", "settings.general.row.language.description": "Broyt sýnismálið fyri OpenCode", + "settings.general.row.navigation.description": "Brúka flipar í heitinum ella eitt fast síðupanel", + "settings.general.row.navigation.tabs": "Flipar", + "settings.general.row.navigation.sidebar": "Síðupanel", + "settings.general.row.sidebarSessions.title": "Arkiverað óvirknar setanir eftir", + "settings.general.row.sidebarSessions.description": "Óvirknar setanir fara í Arkiverað. Virknar setanir síggjast framhaldandi.", + "settings.general.row.sidebarSessions.always": "Vís altíð", "settings.general.row.shell.title": "Terminal-shell", "settings.general.row.shell.description": "Shell, sum terminal- og agenttólini brúka", "settings.general.row.shell.autoDefault": "Sjálvvirkandi (Standard)", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index 3c89860a4490..73909c87a858 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -835,6 +835,8 @@ export const dict = { "sidebar.project.clearNotifications": "Effacer les notifications", "sidebar.empty.title": "Aucun projet ouvert", "sidebar.empty.description": "Ouvrez un projet pour commencer", + "sidebar.archived": "Archivées", + "sidebar.archived.restore": "Restaurer la session", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "Application de bureau", "settings.section.server": "Serveur", @@ -852,6 +854,12 @@ export const dict = { "settings.general.section.display": "Affichage", "settings.general.row.language.title": "Langue", "settings.general.row.language.description": "Changer la langue d'affichage pour OpenCode", + "settings.general.row.navigation.description": "Utiliser des onglets dans la barre de titre ou une barre latérale permanente", + "settings.general.row.navigation.tabs": "Onglets", + "settings.general.row.navigation.sidebar": "Barre latérale", + "settings.general.row.sidebarSessions.title": "Archiver les sessions inactives après", + "settings.general.row.sidebarSessions.description": "Les sessions inactives passent dans Archivées. Les sessions actives restent visibles.", + "settings.general.row.sidebarSessions.always": "Toujours afficher", "settings.general.row.shell.title": "Interpréteur de commandes du terminal", "settings.general.row.shell.description": "Choisissez le shell utilisé par votre terminal. Les shells compatibles sont également utilisés pour les appels d'outils de l'agent.", diff --git a/packages/app/src/i18n/hi.ts b/packages/app/src/i18n/hi.ts index 0aaf8e14dc6d..566004fa3918 100644 --- a/packages/app/src/i18n/hi.ts +++ b/packages/app/src/i18n/hi.ts @@ -886,6 +886,8 @@ export const dict = { "sidebar.project.clearNotifications": "सूचनाएँ साफ़ करें", "sidebar.empty.title": "कोई प्रोजेक्ट खुला नहीं", "sidebar.empty.description": "आरंभ करने के लिए एक प्रोजेक्ट खोलें", + "sidebar.archived": "संग्रहित", + "sidebar.archived.restore": "सेशन बहाल करें", "debugBar.ariaLabel": "विकास प्रदर्शन निदान", "debugBar.na": "एन/ए", "debugBar.nav.label": "NAV", @@ -933,6 +935,12 @@ export const dict = { "settings.general.section.display": "प्रदर्शन", "settings.general.row.language.title": "भाषा", "settings.general.row.language.description": "OpenCode के लिए प्रदर्शन भाषा बदलें", + "settings.general.row.navigation.description": "शीर्षक बार में टैब या स्थायी साइडबार का उपयोग करें", + "settings.general.row.navigation.tabs": "टैब", + "settings.general.row.navigation.sidebar": "साइडबार", + "settings.general.row.sidebarSessions.title": "निष्क्रिय सेशन संग्रहित करें", + "settings.general.row.sidebarSessions.description": "निष्क्रिय सेशन संग्रहित में चले जाते हैं। कार्यरत सेशन दिखाई देते रहते हैं।", + "settings.general.row.sidebarSessions.always": "हमेशा दिखाएं", "settings.general.row.shell.title": "टर्मिनल शेल", "settings.general.row.shell.description": "शेल का उपयोग टर्मिनल और एजेंट टूल द्वारा किया जाता है", "settings.general.row.shell.autoDefault": "स्वतः (डिफ़ॉल्ट)", diff --git a/packages/app/src/i18n/hr.ts b/packages/app/src/i18n/hr.ts index 2130c88ada2d..b6c4602e074c 100644 --- a/packages/app/src/i18n/hr.ts +++ b/packages/app/src/i18n/hr.ts @@ -885,6 +885,8 @@ export const dict = { "sidebar.project.clearNotifications": "Očistite obavijesti", "sidebar.empty.title": "Nema otvorenih projekata", "sidebar.empty.description": "Otvorite projekt da biste započeli", + "sidebar.archived": "Arhivirano", + "sidebar.archived.restore": "Vrati sesiju", "debugBar.ariaLabel": "Dijagnostika izvedbe razvoja", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -933,6 +935,12 @@ export const dict = { "settings.general.section.display": "Prikaz", "settings.general.row.language.title": "Jezik", "settings.general.row.language.description": "Promijenite jezik prikaza za OpenCode", + "settings.general.row.navigation.description": "Koristite kartice u naslovnoj traci ili trajnu bočnu traku", + "settings.general.row.navigation.tabs": "Kartice", + "settings.general.row.navigation.sidebar": "Bočna traka", + "settings.general.row.sidebarSessions.title": "Arhiviraj neaktivne sesije nakon", + "settings.general.row.sidebarSessions.description": "Neaktivne sesije idu u Arhivirano. Aktivne sesije ostaju vidljive.", + "settings.general.row.sidebarSessions.always": "Uvijek prikaži", "settings.general.row.shell.title": "Terminal školjka", "settings.general.row.shell.description": "Ljuska koju koriste alati terminala i agenta", "settings.general.row.shell.autoDefault": "Automatski (zadano)", diff --git a/packages/app/src/i18n/hu.ts b/packages/app/src/i18n/hu.ts index 664abf8ee4c0..6a0329f6638b 100644 --- a/packages/app/src/i18n/hu.ts +++ b/packages/app/src/i18n/hu.ts @@ -884,6 +884,8 @@ export const dict = { "sidebar.project.clearNotifications": "Értesítések törlése", "sidebar.empty.title": "Nincs nyitott projekt", "sidebar.empty.description": "A kezdéshez nyisson meg egy projektet", + "sidebar.archived": "Archiválva", + "sidebar.archived.restore": "Munkamenet visszaállítása", "debugBar.ariaLabel": "Fejlesztési teljesítmény diagnosztika", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -933,6 +935,12 @@ export const dict = { "settings.general.section.display": "Kijelző", "settings.general.row.language.title": "Nyelv", "settings.general.row.language.description": "Módosítsa a OpenCode kijelző nyelvét", + "settings.general.row.navigation.description": "Lapok a címsorban vagy rögzített oldalsáv", + "settings.general.row.navigation.tabs": "Lapok", + "settings.general.row.navigation.sidebar": "Oldalsáv", + "settings.general.row.sidebarSessions.title": "Inaktív munkamenetek archiválása ennyi idő után", + "settings.general.row.sidebarSessions.description": "Az inaktív munkamenetek az Archiválva részbe kerülnek. A futó munkamenetek láthatók maradnak.", + "settings.general.row.sidebarSessions.always": "Mindig látszódjon", "settings.general.row.shell.title": "Terminál shellje", "settings.general.row.shell.description": "A terminál és az ügynökeszközök által használt shell", "settings.general.row.shell.autoDefault": "Automatikus (alapértelmezett)", diff --git a/packages/app/src/i18n/hy.ts b/packages/app/src/i18n/hy.ts index 6eac43b5e6dd..3b0c430ecc46 100644 --- a/packages/app/src/i18n/hy.ts +++ b/packages/app/src/i18n/hy.ts @@ -883,6 +883,8 @@ export const dict = { "sidebar.project.clearNotifications": "Մաքրել ծանուցումները", "sidebar.empty.title": "Ոչ մի նախագիծ բաց", "sidebar.empty.description": "Բացեք նախագիծ՝ սկսելու համար", + "sidebar.archived": "Արխիվացված", + "sidebar.archived.restore": "Վերականգնել նիստը", "debugBar.ariaLabel": "Զարգացման կատարողականի ախտորոշում", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -932,6 +934,12 @@ export const dict = { "settings.general.section.display": "Ցուցադրել", "settings.general.row.language.title": "Լեզու", "settings.general.row.language.description": "Փոխել ցուցադրման լեզուն OpenCode", + "settings.general.row.navigation.description": "Օգտագործեք ներդիրներ վերնագրի տողում կամ մշտական կողային վահանակ", + "settings.general.row.navigation.tabs": "Ներդիրներ", + "settings.general.row.navigation.sidebar": "Կողային վահանակ", + "settings.general.row.sidebarSessions.title": "Արխիվացնել անգործուն նիստերը՝", + "settings.general.row.sidebarSessions.description": "Անգործուն նիստերը տեղափոխվում են Արխիվացված։ Աշխատող նիստերը մնում են տեսանելի։", + "settings.general.row.sidebarSessions.always": "Միշտ ցուցադրել", "settings.general.row.shell.title": "Տերմինալի Shell", "settings.general.row.shell.description": "Shell-ն օգտագործվում է տերմինալի և գործակալի գործիքների կողմից", "settings.general.row.shell.autoDefault": "Ավտոմատ (կանխադրված)", diff --git a/packages/app/src/i18n/id.ts b/packages/app/src/i18n/id.ts index 96dc3c7592e4..c37c02ddc2d7 100644 --- a/packages/app/src/i18n/id.ts +++ b/packages/app/src/i18n/id.ts @@ -953,6 +953,8 @@ export const dict = { "sidebar.project.clearNotifications": "Hapus notifikasi", "sidebar.empty.title": "Tidak ada proyek terbuka", "sidebar.empty.description": "Buka proyek untuk memulai", + "sidebar.archived": "Diarsipkan", + "sidebar.archived.restore": "Pulihkan sesi", "debugBar.ariaLabel": "Diagnostik kinerja pengembangan", "debugBar.na": "n/a", @@ -1005,6 +1007,12 @@ export const dict = { "settings.general.row.language.title": "Bahasa", "settings.general.row.language.description": "Ubah bahasa tampilan untuk OpenCode", + "settings.general.row.navigation.description": "Gunakan tab di bilah judul atau bilah sisi tetap", + "settings.general.row.navigation.tabs": "Tab", + "settings.general.row.navigation.sidebar": "Bilah sisi", + "settings.general.row.sidebarSessions.title": "Arsipkan sesi tak aktif setelah", + "settings.general.row.sidebarSessions.description": "Sesi tak aktif dipindahkan ke Diarsipkan. Sesi yang bekerja tetap terlihat.", + "settings.general.row.sidebarSessions.always": "Selalu tampilkan", "settings.general.row.shell.title": "Shell terminal", "settings.general.row.shell.description": "Shell yang digunakan oleh terminal dan alat agen", "settings.general.row.shell.autoDefault": "Otomatis (Bawaan)", diff --git a/packages/app/src/i18n/is.ts b/packages/app/src/i18n/is.ts index a45ed9a40cb0..9fd4742d29d1 100644 --- a/packages/app/src/i18n/is.ts +++ b/packages/app/src/i18n/is.ts @@ -880,6 +880,8 @@ export const dict = { "sidebar.project.clearNotifications": "Hreinsaðu tilkynningar", "sidebar.empty.title": "Engin verkefni opin", "sidebar.empty.description": "Opnaðu verkefni til að byrja", + "sidebar.archived": "Geymt", + "sidebar.archived.restore": "Endurheimta setu", "debugBar.ariaLabel": "Þróunarárangursgreiningar", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -927,6 +929,12 @@ export const dict = { "settings.general.section.display": "Skjár", "settings.general.row.language.title": "Tungumál", "settings.general.row.language.description": "Breyttu skjátungumálinu fyrir OpenCode", + "settings.general.row.navigation.description": "Nota flipa í titilstiku eða varanlega hliðarstiku", + "settings.general.row.navigation.tabs": "Flipar", + "settings.general.row.navigation.sidebar": "Hliðarstika", + "settings.general.row.sidebarSessions.title": "Geyma óvirkar setur eftir", + "settings.general.row.sidebarSessions.description": "Óvirkar setur færast í Geymt. Virkar setur haldast sýnilegar.", + "settings.general.row.sidebarSessions.always": "Sýna alltaf", "settings.general.row.shell.title": "Skel skjáhermis", "settings.general.row.shell.description": "Skelin sem skjáhermirinn og verkfæri fulltrúans nota", "settings.general.row.shell.autoDefault": "Sjálfvirkt (sjálfgefið)", diff --git a/packages/app/src/i18n/it.ts b/packages/app/src/i18n/it.ts index a093e11485a3..cdc14e3faba7 100644 --- a/packages/app/src/i18n/it.ts +++ b/packages/app/src/i18n/it.ts @@ -796,6 +796,8 @@ export const dict = { "sidebar.project.clearNotifications": "Cancella notifiche", "sidebar.empty.title": "Nessun progetto aperto", "sidebar.empty.description": "Apri un progetto per iniziare", + "sidebar.archived": "Archiviate", + "sidebar.archived.restore": "Ripristina sessione", "debugBar.ariaLabel": "Diagnostica delle prestazioni di sviluppo", "debugBar.na": "n/d", "debugBar.nav.label": "NAV", @@ -845,6 +847,12 @@ export const dict = { "settings.general.section.display": "Visualizzazione", "settings.general.row.language.title": "Lingua", "settings.general.row.language.description": "Cambia la lingua di visualizzazione per OpenCode", + "settings.general.row.navigation.description": "Usa schede nella barra del titolo o una barra laterale fissa", + "settings.general.row.navigation.tabs": "Schede", + "settings.general.row.navigation.sidebar": "Barra laterale", + "settings.general.row.sidebarSessions.title": "Archivia sessioni inattive dopo", + "settings.general.row.sidebarSessions.description": "Le sessioni inattive passano in Archiviate. Le sessioni attive restano visibili.", + "settings.general.row.sidebarSessions.always": "Mostra sempre", "settings.general.row.shell.title": "Shell del terminale", "settings.general.row.shell.description": "Shell utilizzata dal terminale e dagli strumenti dell'agente", "settings.general.row.shell.autoDefault": "Automatico (predefinito)", diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index b96e8b544b2b..23f7599bcd3b 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -815,6 +815,8 @@ export const dict = { "sidebar.project.clearNotifications": "通知をクリア", "sidebar.empty.title": "開いているプロジェクトはありません", "sidebar.empty.description": "プロジェクトを開いて始めましょう", + "sidebar.archived": "アーカイブ済み", + "sidebar.archived.restore": "セッションを復元", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "デスクトップ", "settings.section.server": "サーバー", @@ -832,6 +834,12 @@ export const dict = { "settings.general.section.display": "ディスプレイ", "settings.general.row.language.title": "言語", "settings.general.row.language.description": "OpenCodeの表示言語を変更します", + "settings.general.row.navigation.description": "タイトルバーのタブまたは常時表示のサイドバーを使用します", + "settings.general.row.navigation.tabs": "タブ", + "settings.general.row.navigation.sidebar": "サイドバー", + "settings.general.row.sidebarSessions.title": "アーカイブするまでのアイドル時間", + "settings.general.row.sidebarSessions.description": "アーカイブ済みに移動します。作業中のセッションは表示されたままです。", + "settings.general.row.sidebarSessions.always": "常に表示", "settings.general.row.shell.title": "ターミナルシェル", "settings.general.row.shell.description": "ターミナルで使用するシェルを選択します。互換性のあるシェルはエージェントのツール呼び出しにも使用されます。", diff --git a/packages/app/src/i18n/ka.ts b/packages/app/src/i18n/ka.ts index be052930a2ec..4fa2d3bc01c4 100644 --- a/packages/app/src/i18n/ka.ts +++ b/packages/app/src/i18n/ka.ts @@ -876,6 +876,8 @@ export const dict = { "sidebar.project.clearNotifications": "შეტყობინებების გასუფთავება", "sidebar.empty.title": "პროექტები არ არის გახსნილი", "sidebar.empty.description": "გახსენით პროექტი დასაწყებად", + "sidebar.archived": "დაარქივებული", + "sidebar.archived.restore": "სესიის აღდგენა", "debugBar.ariaLabel": "განვითარების შესრულების დიაგნოსტიკა", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -924,6 +926,12 @@ export const dict = { "settings.general.section.display": "ჩვენება", "settings.general.row.language.title": "ენა", "settings.general.row.language.description": "შეცვალეთ ჩვენების ენა OpenCode", + "settings.general.row.navigation.description": "გამოიყენეთ ჩანართები სათაურის ზოლში ან მუდმივი გვერდითი პანელი", + "settings.general.row.navigation.tabs": "ჩანართები", + "settings.general.row.navigation.sidebar": "გვერდითი პანელი", + "settings.general.row.sidebarSessions.title": "უქმი სესიების დაარქივება", + "settings.general.row.sidebarSessions.description": "უქმი სესიები გადაინაცვლებს დაარქივებულში. მოქმედი სესიები რჩება ხილული.", + "settings.general.row.sidebarSessions.always": "ყოველთვის ჩვენება", "settings.general.row.shell.title": "ტერმინალის გარსი", "settings.general.row.shell.description": "Shell გამოიყენება ტერმინალის და აგენტის ხელსაწყოების მიერ", "settings.general.row.shell.autoDefault": "ავტომატური (ნაგულისხმევი)", diff --git a/packages/app/src/i18n/km.ts b/packages/app/src/i18n/km.ts index 7f1b61fe3667..040374efa54b 100644 --- a/packages/app/src/i18n/km.ts +++ b/packages/app/src/i18n/km.ts @@ -873,6 +873,8 @@ export const dict = { "sidebar.project.clearNotifications": "ជម្រះការជូនដំណឹង", "sidebar.empty.title": "គ្មានគម្រោងបើកទេ។", "sidebar.empty.description": "បើកគម្រោងដើម្បីចាប់ផ្តើម", + "sidebar.archived": "បានបណ្ណសារ", + "sidebar.archived.restore": "ស្តារសម័យ", "debugBar.ariaLabel": "ការវិនិច្ឆ័យដំណើរការអភិវឌ្ឍន៍", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -922,6 +924,12 @@ export const dict = { "settings.general.section.display": "បង្ហាញ", "settings.general.row.language.title": "ភាសា", "settings.general.row.language.description": "ប្តូរភាសាបង្ហាញសម្រាប់ OpenCode", + "settings.general.row.navigation.description": "ប្រើផ្ទាំងក្នុងរបារចំណងជើង ឬរបារចំហៀងអចិន្ត្រៃយ៍", + "settings.general.row.navigation.tabs": "ផ្ទាំង", + "settings.general.row.navigation.sidebar": "របារចំហៀង", + "settings.general.row.sidebarSessions.title": "បណ្ណសារសម័យដែលមិនដំណើរការបន្ទាប់ពី", + "settings.general.row.sidebarSessions.description": "សម័យដែលមិនដំណើរការត្រូវផ្លាស់ទៅ បានបណ្ណសារ។ សម័យដែលកំពុងដំណើរការនៅបង្ហាញ។", + "settings.general.row.sidebarSessions.always": "បង្ហាញជានិច្ច", "settings.general.row.shell.title": "សែលស្ថានីយ", "settings.general.row.shell.description": "សែលប្រើដោយឧបករណ៍ស្ថានីយ និងភ្នាក់ងារ", "settings.general.row.shell.autoDefault": "ស្វ័យប្រវត្តិ (លំនាំដើម)\nស្ថានីយ", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index b96fb4c59471..e4812c006363 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -592,6 +592,12 @@ export const dict = { "settings.general.section.display": "디스플레이", "settings.general.row.language.title": "언어", "settings.general.row.language.description": "OpenCode 표시 언어 변경", + "settings.general.row.navigation.description": "제목 표시줄 탭 또는 고정 사이드바 사용", + "settings.general.row.navigation.tabs": "탭", + "settings.general.row.navigation.sidebar": "사이드바", + "settings.general.row.sidebarSessions.title": "유휴 세션 보관 기준", + "settings.general.row.sidebarSessions.description": "유휴 세션은 보관됨으로 이동합니다. 작업 중인 세션은 계속 표시됩니다.", + "settings.general.row.sidebarSessions.always": "항상 표시", "settings.general.row.appearance.title": "모양", "settings.general.row.appearance.description": "기기에서 OpenCode가 보이는 방식 사용자 지정", "settings.general.row.colorScheme.title": "색상 테마", @@ -1016,6 +1022,8 @@ export const dict = { "sidebar.empty.title": "열린 프로젝트 없음", "sidebar.empty.description": "프로젝트를 열어 시작하세요", + "sidebar.archived": "보관됨", + "sidebar.archived.restore": "세션 복원", "settings.general.section.advanced": "고급", "settings.general.row.shell.title": "터미널 셸", diff --git a/packages/app/src/i18n/lo.ts b/packages/app/src/i18n/lo.ts index acdc26df08aa..c6719dde88b9 100644 --- a/packages/app/src/i18n/lo.ts +++ b/packages/app/src/i18n/lo.ts @@ -871,6 +871,8 @@ export const dict = { "sidebar.project.clearNotifications": "ລຶບການແຈ້ງເຕືອນ", "sidebar.empty.title": "ບໍ່ມີໂຄງການເປີດ", "sidebar.empty.description": "ເປີດໂຄງການເພື່ອເລີ່ມຕົ້ນ", + "sidebar.archived": "ຈັດເກັບແລ້ວ", + "sidebar.archived.restore": "ກູ້ຄືນເຊດຊັນ", "debugBar.ariaLabel": "ການວິນິດໄສປະສິດທິພາບການພັດທະນາ", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -919,6 +921,12 @@ export const dict = { "settings.general.section.display": "ຈໍສະແດງຜົນ", "settings.general.row.language.title": "ພາສາ", "settings.general.row.language.description": "ປ່ຽນພາສາສະແດງສໍາລັບ OpenCode", + "settings.general.row.navigation.description": "ໃຊ້ແຖບຢູ່ແຖບຫົວຂໍ້ ຫຼືແຖບດ້ານຂ້າງຖາວອນ", + "settings.general.row.navigation.tabs": "ແຖບ", + "settings.general.row.navigation.sidebar": "ແຖບດ້ານຂ້າງ", + "settings.general.row.sidebarSessions.title": "ຈັດເກັບເຊດຊັນທີ່ບໍ່ໃຊ້ງານຫຼັງຈາກ", + "settings.general.row.sidebarSessions.description": "ເຊດຊັນທີ່ບໍ່ໃຊ້ງານຈະຍ້າຍໄປ ຈັດເກັບແລ້ວ. ເຊດຊັນທີ່ກຳລັງເຮັດວຽກຍັງສະແດງຢູ່.", + "settings.general.row.sidebarSessions.always": "ສະແດງສະເໝີ", "settings.general.row.shell.title": "Shell ຂອງເທີມິນອນ", "settings.general.row.shell.description": "Shell ທີ່ໃຊ້ໂດຍເຄື່ອງໃຊ້ປາຍທາງ ແລະຕົວແທນ", "settings.general.row.shell.autoDefault": "ອັດຕະໂນມັດ (ຄ່າເລີ່ມຕົ້ນ)", diff --git a/packages/app/src/i18n/lt.ts b/packages/app/src/i18n/lt.ts index ba161eb31879..b226326622a3 100644 --- a/packages/app/src/i18n/lt.ts +++ b/packages/app/src/i18n/lt.ts @@ -890,6 +890,8 @@ export const dict = { "sidebar.project.clearNotifications": "Išvalyti pranešimus", "sidebar.empty.title": "Jokių atvirų projektų", "sidebar.empty.description": "Norėdami pradėti, atidarykite projektą", + "sidebar.archived": "Archyvuota", + "sidebar.archived.restore": "Atkurti seansą", "debugBar.ariaLabel": "Vystymosi veiklos diagnostika", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -939,6 +941,12 @@ export const dict = { "settings.general.section.display": "Ekranas", "settings.general.row.language.title": "Kalba", "settings.general.row.language.description": "Pakeiskite OpenCode ekrano kalbą", + "settings.general.row.navigation.description": "Naudoti skirtukus pavadinimo juostoje arba nuolatinę šoninę juostą", + "settings.general.row.navigation.tabs": "Skirtukai", + "settings.general.row.navigation.sidebar": "Šoninė juosta", + "settings.general.row.sidebarSessions.title": "Archyvuoti neveiklius seansus po", + "settings.general.row.sidebarSessions.description": "Neveiklūs seansai perkeliami į Archyvuota. Aktyvūs seansai lieka matomi.", + "settings.general.row.sidebarSessions.always": "Visada rodyti", "settings.general.row.shell.title": "Terminalo apvalkalas", "settings.general.row.shell.description": "Terminalo ir agento įrankių naudojamas apvalkalas", "settings.general.row.shell.autoDefault": "Automatinis (numatytasis)", diff --git a/packages/app/src/i18n/lv.ts b/packages/app/src/i18n/lv.ts index df4c5b2dcd91..cb0a1ef4b834 100644 --- a/packages/app/src/i18n/lv.ts +++ b/packages/app/src/i18n/lv.ts @@ -882,6 +882,8 @@ export const dict = { "sidebar.project.clearNotifications": "Notīrīt paziņojumus", "sidebar.empty.title": "Nav atvērts neviens projekts", "sidebar.empty.description": "Atveriet projektu, lai sāktu", + "sidebar.archived": "Arhivētas", + "sidebar.archived.restore": "Atjaunot sesiju", "debugBar.ariaLabel": "Izstrādes veiktspējas diagnostika", "debugBar.na": "nav", "debugBar.nav.label": "NAV", @@ -930,6 +932,12 @@ export const dict = { "settings.general.section.display": "Displejs", "settings.general.row.language.title": "Valoda", "settings.general.row.language.description": "Mainīt OpenCode saskarnes valodu", + "settings.general.row.navigation.description": "Izmantot cilnes virsraksta joslā vai pastāvīgu sānjoslu", + "settings.general.row.navigation.tabs": "Cilnes", + "settings.general.row.navigation.sidebar": "Sānjosla", + "settings.general.row.sidebarSessions.title": "Arhivēt neaktīvas sesijas pēc", + "settings.general.row.sidebarSessions.description": "Neaktīvas sesijas tiek pārvietotas uz Arhivētas. Aktīvas sesijas paliek redzamas.", + "settings.general.row.sidebarSessions.always": "Rādīt vienmēr", "settings.general.row.shell.title": "Termināļa čaula", "settings.general.row.shell.description": "Čaula, ko izmanto terminālis un aģenta rīki", "settings.general.row.shell.autoDefault": "Automātiski (noklusējums)", diff --git a/packages/app/src/i18n/mk.ts b/packages/app/src/i18n/mk.ts index 01e60baa408b..8c7f3231ec1b 100644 --- a/packages/app/src/i18n/mk.ts +++ b/packages/app/src/i18n/mk.ts @@ -880,6 +880,8 @@ export const dict = { "sidebar.project.clearNotifications": "Исчистете ги известувањата", "sidebar.empty.title": "Нема отворени проекти", "sidebar.empty.description": "Отворете проект за да започнете", + "sidebar.archived": "Архивирани", + "sidebar.archived.restore": "Врати сесија", "debugBar.ariaLabel": "Дијагностика на перформансите на развојот", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -929,6 +931,12 @@ export const dict = { "settings.general.section.display": "Приказ", "settings.general.row.language.title": "Јазик", "settings.general.row.language.description": "Променете го јазикот на прикажување за OpenCode", + "settings.general.row.navigation.description": "Користете картички во насловната лента или постојана странична лента", + "settings.general.row.navigation.tabs": "Картички", + "settings.general.row.navigation.sidebar": "Странична лента", + "settings.general.row.sidebarSessions.title": "Архивирај неактивни сесии по", + "settings.general.row.sidebarSessions.description": "Неактивните сесии одат во Архивирани. Активните сесии остануваат видливи.", + "settings.general.row.sidebarSessions.always": "Секогаш прикажувај", "settings.general.row.shell.title": "Терминал shell", "settings.general.row.shell.description": "Школката ја користат алатките за терминал и агент", "settings.general.row.shell.autoDefault": "Автоматски (стандардно)", diff --git a/packages/app/src/i18n/mn.ts b/packages/app/src/i18n/mn.ts index 41c4fa085d1a..e2d7344b97d4 100644 --- a/packages/app/src/i18n/mn.ts +++ b/packages/app/src/i18n/mn.ts @@ -884,6 +884,8 @@ export const dict = { "sidebar.project.clearNotifications": "Мэдэгдлийг арилгах", "sidebar.empty.title": "Нээлттэй төсөл байхгүй", "sidebar.empty.description": "Эхлэхийн тулд төсөл нээнэ үү", + "sidebar.archived": "Архивласан", + "sidebar.archived.restore": "Сесс сэргээх", "debugBar.ariaLabel": "Хөгжлийн гүйцэтгэлийн оношлогоо", "debugBar.na": "үгүй", "debugBar.nav.label": "NAV", @@ -932,6 +934,12 @@ export const dict = { "settings.general.section.display": "Дэлгэц", "settings.general.row.language.title": "Хэл", "settings.general.row.language.description": "OpenCode дэлгэцийн хэлийг өөрчлөх", + "settings.general.row.navigation.description": "Гарчгийн мөрөнд таб ашиглах эсвэл байнгын хажуу самбар", + "settings.general.row.navigation.tabs": "Табууд", + "settings.general.row.navigation.sidebar": "Хажуу самбар", + "settings.general.row.sidebarSessions.title": "Идэвхгүй сессийг архивлах хугацаа", + "settings.general.row.sidebarSessions.description": "Идэвхгүй сессүүд Архивласан руу шилжинэ. Ажиллаж буй сессүүд харагдсаар байна.", + "settings.general.row.sidebarSessions.always": "Үргэлж харуулах", "settings.general.row.shell.title": "Терминал shell", "settings.general.row.shell.description": "Shell нь терминал болон агентын хэрэгслүүдэд ашиглагддаг", "settings.general.row.shell.autoDefault": "Автомат (Өгөгдмөл)", diff --git a/packages/app/src/i18n/ms.ts b/packages/app/src/i18n/ms.ts index 2c3783d43b7d..3412fd548800 100644 --- a/packages/app/src/i18n/ms.ts +++ b/packages/app/src/i18n/ms.ts @@ -876,6 +876,8 @@ export const dict = { "sidebar.project.clearNotifications": "Kosongkan notifikasi", "sidebar.empty.title": "Tiada projek dibuka", "sidebar.empty.description": "Buka projek untuk bermula", + "sidebar.archived": "Diarkibkan", + "sidebar.archived.restore": "Pulihkan sesi", "debugBar.ariaLabel": "Diagnostik prestasi pembangunan", "debugBar.na": "tiada", "debugBar.nav.label": "NAV", @@ -924,6 +926,12 @@ export const dict = { "settings.general.section.display": "Paparan", "settings.general.row.language.title": "Bahasa", "settings.general.row.language.description": "Tukar bahasa paparan untuk OpenCode", + "settings.general.row.navigation.description": "Guna tab pada bar tajuk atau bar sisi kekal", + "settings.general.row.navigation.tabs": "Tab", + "settings.general.row.navigation.sidebar": "Bar sisi", + "settings.general.row.sidebarSessions.title": "Arkibkan sesi tidak aktif selepas", + "settings.general.row.sidebarSessions.description": "Sesi tidak aktif dialihkan ke Diarkibkan. Sesi sedang berjalan kekal kelihatan.", + "settings.general.row.sidebarSessions.always": "Sentiasa tunjuk", "settings.general.row.shell.title": "Shell terminal", "settings.general.row.shell.description": "Shell yang digunakan oleh terminal dan alat ejen", "settings.general.row.shell.autoDefault": "Auto (Lalai)", diff --git a/packages/app/src/i18n/my.ts b/packages/app/src/i18n/my.ts index 6046f337ff06..a3e9bc33b1f6 100644 --- a/packages/app/src/i18n/my.ts +++ b/packages/app/src/i18n/my.ts @@ -886,6 +886,8 @@ export const dict = { "sidebar.project.clearNotifications": "အကြောင်းကြားချက်များကို ရှင်းလင်းပါ။", "sidebar.empty.title": "မည်သည့်ပရောဂျက်မှ ဖွင့်ထားခြင်းမရှိပါ။", "sidebar.empty.description": "စတင်ရန် ပရောဂျက်တစ်ခုကို ဖွင့်ပါ။", + "sidebar.archived": "သိမ်းဆည်းပြီး", + "sidebar.archived.restore": "စက်ရှင် ပြန်လည်ရယူရန်", "debugBar.ariaLabel": "ဖွံ့ဖြိုးတိုးတက်မှု စွမ်းဆောင်ရည် အဖြေရှာခြင်း", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -937,6 +939,12 @@ export const dict = { "settings.general.section.display": "မျက်နှာပြင်", "settings.general.row.language.title": "ဘာသာစကား", "settings.general.row.language.description": "OpenCode အတွက် ဖော်ပြသည့် ဘာသာစကားကို ပြောင်းပါ။", + "settings.general.row.navigation.description": "ခေါင်းစီးတန်းတွင် တဘ်များ သို့မဟုတ် အမြဲတမ်း ဘေးတန်း သုံးပါ", + "settings.general.row.navigation.tabs": "တဘ်များ", + "settings.general.row.navigation.sidebar": "ဘေးတန်း", + "settings.general.row.sidebarSessions.title": "အသုံးမပြုသော စက်ရှင်များကို သိမ်းဆည်းရန်", + "settings.general.row.sidebarSessions.description": "အသုံးမပြုသော စက်ရှင်များသည် သိမ်းဆည်းပြီး သို့ ရွှေ့သွားသည်။ လုပ်ဆောင်နေသော စက်ရှင်များ မြင်ရဆဲဖြစ်သည်။", + "settings.general.row.sidebarSessions.always": "အမြဲပြသ", "settings.general.row.shell.title": "Terminal Shell", "settings.general.row.shell.description": "terminal နှင့် agent tools မှအသုံးပြုသော Shell", "settings.general.row.shell.autoDefault": "အလိုအလျောက် (ပုံသေ)", diff --git a/packages/app/src/i18n/ne.ts b/packages/app/src/i18n/ne.ts index cc60bff9f400..42e358cbb26a 100644 --- a/packages/app/src/i18n/ne.ts +++ b/packages/app/src/i18n/ne.ts @@ -877,6 +877,8 @@ export const dict: Record = { "sidebar.project.clearNotifications": "सूचनाहरू खाली गर्नुहोस्", "sidebar.empty.title": "कुनै पनि आयोजना खुलेका छैनन्", "sidebar.empty.description": "सुरु गर्न एउटा परियोजना खोल्नुहोस्", + "sidebar.archived": "अभिलेखित", + "sidebar.archived.restore": "सत्र पुनर्स्थापना", "debugBar.ariaLabel": "विकास प्रदर्शन निदान", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -924,6 +926,12 @@ export const dict: Record = { "settings.general.section.display": "प्रदर्शन", "settings.general.row.language.title": "भाषा", "settings.general.row.language.description": "OpenCode को लागि प्रदर्शन भाषा परिवर्तन गर्नुहोस्", + "settings.general.row.navigation.description": "शीर्षक पट्टीमा ट्याब वा स्थायी साइडबार प्रयोग गर्नुहोस्", + "settings.general.row.navigation.tabs": "ट्याबहरू", + "settings.general.row.navigation.sidebar": "साइडबार", + "settings.general.row.sidebarSessions.title": "निष्क्रिय सत्र अभिलेखन गर्ने समय", + "settings.general.row.sidebarSessions.description": "निष्क्रिय सत्र अभिलेखितमा सर्छन्। कार्यरत सत्र देखिरहन्छन्।", + "settings.general.row.sidebarSessions.always": "सधैँ देखाउनुहोस्", "settings.general.row.shell.title": "टर्मिनल शेल", "settings.general.row.shell.description": "टर्मिनल र एजेन्ट उपकरणहरू द्वारा प्रयोग गरिएको शेल", "settings.general.row.shell.autoDefault": "स्वतः (पूर्वनिर्धारित)", diff --git a/packages/app/src/i18n/nl.ts b/packages/app/src/i18n/nl.ts index 6fb1dc09f24b..be54bdeb5416 100644 --- a/packages/app/src/i18n/nl.ts +++ b/packages/app/src/i18n/nl.ts @@ -886,6 +886,8 @@ export const dict = { "sidebar.project.clearNotifications": "Meldingen wissen", "sidebar.empty.title": "Geen projecten geopend", "sidebar.empty.description": "Open een project om aan de slag te gaan", + "sidebar.archived": "Gearchiveerd", + "sidebar.archived.restore": "Sessie herstellen", "debugBar.ariaLabel": "Diagnostiek voor ontwikkelprestaties", "debugBar.na": "n.v.t.", "debugBar.nav.label": "NAV", @@ -934,6 +936,12 @@ export const dict = { "settings.general.section.display": "Weergave", "settings.general.row.language.title": "Taal", "settings.general.row.language.description": "Wijzig de weergavetaal voor OpenCode", + "settings.general.row.navigation.description": "Gebruik tabbladen in de titelbalk of een vaste zijbalk", + "settings.general.row.navigation.tabs": "Tabbladen", + "settings.general.row.navigation.sidebar": "Zijbalk", + "settings.general.row.sidebarSessions.title": "Inactieve sessies archiveren na", + "settings.general.row.sidebarSessions.description": "Inactieve sessies gaan naar Gearchiveerd. Actieve sessies blijven zichtbaar.", + "settings.general.row.sidebarSessions.always": "Altijd tonen", "settings.general.row.shell.title": "Terminalshell", "settings.general.row.shell.description": "Shell gebruikt door de terminal- en agenttools", "settings.general.row.shell.autoDefault": "Automatisch (standaard)", diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts index 11958029dc38..8605630ca656 100644 --- a/packages/app/src/i18n/no.ts +++ b/packages/app/src/i18n/no.ts @@ -774,6 +774,12 @@ export const dict = { "settings.general.row.language.title": "Språk", "settings.general.row.language.description": "Endre visningsspråket for OpenCode", + "settings.general.row.navigation.description": "Bruk faner i tittellinjen eller et fast sidefelt", + "settings.general.row.navigation.tabs": "Faner", + "settings.general.row.navigation.sidebar": "Sidefelt", + "settings.general.row.sidebarSessions.title": "Arkiver inaktive sesjoner etter", + "settings.general.row.sidebarSessions.description": "Inaktive sesjoner flyttes til Arkivert. Aktive sesjoner forblir synlige.", + "settings.general.row.sidebarSessions.always": "Vis alltid", "settings.general.row.appearance.title": "Utseende", "settings.general.row.appearance.description": "Tilpass hvordan OpenCode ser ut på enheten din", "settings.general.row.colorScheme.title": "Fargevalg", @@ -1229,6 +1235,8 @@ export const dict = { "sidebar.empty.title": "Ingen åpne prosjekter", "sidebar.empty.description": "Åpne et prosjekt for å komme i gang", + "sidebar.archived": "Arkivert", + "sidebar.archived.restore": "Gjenopprett sesjon", "settings.general.section.advanced": "Avansert", "settings.general.row.shell.title": "Terminalskall", diff --git a/packages/app/src/i18n/pa.ts b/packages/app/src/i18n/pa.ts index 6298581c0aab..f6058ccc596b 100644 --- a/packages/app/src/i18n/pa.ts +++ b/packages/app/src/i18n/pa.ts @@ -884,6 +884,8 @@ export const dict = { "sidebar.project.clearNotifications": "نوٹیفکیشن صاف کرو", "sidebar.empty.title": "کوئی پروجیکٹ نئیں کھلیا", "sidebar.empty.description": "شروع کرن لئی کوئی پروجیکٹ کھولو", + "sidebar.archived": "ਆਰਕਾਈਵ ਕੀਤੇ", + "sidebar.archived.restore": "ਸ਼ੈਸ਼ਨ ਬਹਾਲ ਕਰੋ", "debugBar.ariaLabel": "ترقی دی کارکردگی دی تشخیص", "debugBar.na": "لاگو نئیں", "debugBar.nav.label": "NAV", @@ -931,6 +933,12 @@ export const dict = { "settings.general.section.display": "ڈسپلے", "settings.general.row.language.title": "بولی", "settings.general.row.language.description": "OpenCode لئی ڈسپلے دی بولی بدلو", + "settings.general.row.navigation.description": "ਟਾਈਟਲ ਬਾਰ ਵਿੱਚ ਟੈਬਾਂ ਜਾਂ ਸਥਾਈ ਸਾਈਡਬਾਰ ਵਰਤੋ", + "settings.general.row.navigation.tabs": "ਟੈਬਾਂ", + "settings.general.row.navigation.sidebar": "ਸਾਈਡਬਾਰ", + "settings.general.row.sidebarSessions.title": "ਬੇਕਾਰ ਸ਼ੈਸ਼ਨ ਆਰਕਾਈਵ ਕਰੋ", + "settings.general.row.sidebarSessions.description": "ਬੇਕਾਰ ਸ਼ੈਸ਼ਨ ਆਰਕਾਈਵ ਕੀਤੇ ਵਿੱਚ ਚਲੇ ਜਾਂਦੇ ਹਨ। ਕੰਮ ਕਰ ਰਹੇ ਸ਼ੈਸ਼ਨ ਦਿਖਾਈ ਦਿੰਦੇ ਰਹਿੰਦੇ ਹਨ।", + "settings.general.row.sidebarSessions.always": "ਹਮੇਸ਼ਾ ਦਿਖਾਓ", "settings.general.row.shell.title": "شیل", "settings.general.row.shell.description": "Shell ٹرمینل تے ایجنٹ ٹولز دے ذریعہ استعمال کیتا جاندا اے", "settings.general.row.shell.autoDefault": "آٹو (پہلے توں طے شدہ)", diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index 9b3c927498d8..a2dd1669ce7a 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -831,6 +831,8 @@ export const dict = { "sidebar.project.clearNotifications": "Wyczyść powiadomienia", "sidebar.empty.title": "Brak otwartych projektów", "sidebar.empty.description": "Otwórz projekt, aby rozpocząć", + "sidebar.archived": "Zarchiwizowane", + "sidebar.archived.restore": "Przywróć sesję", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "Aplikacja komputerowa", "settings.section.server": "Serwer", @@ -848,6 +850,12 @@ export const dict = { "settings.general.section.display": "Ekran", "settings.general.row.language.title": "Język", "settings.general.row.language.description": "Zmień język wyświetlania dla OpenCode", + "settings.general.row.navigation.description": "Używaj kart na pasku tytułu lub stałego paska bocznego", + "settings.general.row.navigation.tabs": "Karty", + "settings.general.row.navigation.sidebar": "Pasek boczny", + "settings.general.row.sidebarSessions.title": "Archiwizuj bezczynne sesje po", + "settings.general.row.sidebarSessions.description": "Bezczynne sesje trafiają do Zarchiwizowane. Aktywne sesje pozostają widoczne.", + "settings.general.row.sidebarSessions.always": "Zawsze pokazuj", "settings.general.row.shell.title": "Powłoka terminala", "settings.general.row.shell.description": "Wybierz powłokę używaną w terminalu. Zgodne powłoki są również używane przez wywołania narzędzi agenta.", diff --git a/packages/app/src/i18n/ro.ts b/packages/app/src/i18n/ro.ts index c84f9a4ee76e..29a0f59cad4b 100644 --- a/packages/app/src/i18n/ro.ts +++ b/packages/app/src/i18n/ro.ts @@ -881,6 +881,8 @@ export const dict = { "sidebar.project.clearNotifications": "Șterge notificările", "sidebar.empty.title": "Niciun proiect deschis", "sidebar.empty.description": "Deschide un proiect pentru a începe", + "sidebar.archived": "Arhivate", + "sidebar.archived.restore": "Restaurează sesiunea", "debugBar.ariaLabel": "Diagnosticare performanță dezvoltare", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -929,6 +931,12 @@ export const dict = { "settings.general.section.display": "Afișare", "settings.general.row.language.title": "Limbă", "settings.general.row.language.description": "Schimbă limba de afișare pentru OpenCode", + "settings.general.row.navigation.description": "Folosește file în bara de titlu sau o bară laterală permanentă", + "settings.general.row.navigation.tabs": "File", + "settings.general.row.navigation.sidebar": "Bară laterală", + "settings.general.row.sidebarSessions.title": "Arhivează sesiunile inactive după", + "settings.general.row.sidebarSessions.description": "Sesiunile inactive trec în Arhivate. Sesiunile active rămân vizibile.", + "settings.general.row.sidebarSessions.always": "Afișează mereu", "settings.general.row.shell.title": "Shell terminal", "settings.general.row.shell.description": "Shell folosit de terminal și instrumentele agentului", "settings.general.row.shell.autoDefault": "Auto (implicit)", diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index cf4fa8d8f4ca..4191622a9445 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -894,6 +894,8 @@ export const dict = { "sidebar.project.clearNotifications": "Очистить уведомления", "sidebar.empty.title": "Нет открытых проектов", "sidebar.empty.description": "Откройте проект, чтобы начать", + "sidebar.archived": "Архивированные", + "sidebar.archived.restore": "Восстановить сессию", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "Приложение", @@ -914,6 +916,12 @@ export const dict = { "settings.general.row.language.title": "Язык", "settings.general.row.language.description": "Изменить язык отображения OpenCode", + "settings.general.row.navigation.description": "Вкладки в заголовке или постоянная боковая панель", + "settings.general.row.navigation.tabs": "Вкладки", + "settings.general.row.navigation.sidebar": "Боковая панель", + "settings.general.row.sidebarSessions.title": "Архивировать неактивные сессии через", + "settings.general.row.sidebarSessions.description": "Неактивные сессии перемещаются в «Архивированные». Активные сессии остаются видимыми.", + "settings.general.row.sidebarSessions.always": "Всегда показывать", "settings.general.row.shell.title": "Оболочка терминала", "settings.general.row.shell.description": "Выберите оболочку для терминала. Совместимые оболочки также используются агентом при вызове инструментов.", diff --git a/packages/app/src/i18n/si.ts b/packages/app/src/i18n/si.ts index 00ca188b1581..e712c3e52737 100644 --- a/packages/app/src/i18n/si.ts +++ b/packages/app/src/i18n/si.ts @@ -874,6 +874,8 @@ export const dict: Record = { "sidebar.project.clearNotifications": "දැනුම්දීම් හිස් කරන්න", "sidebar.empty.title": "ව්‍යාපෘති විවෘත නැත", "sidebar.empty.description": "ආරම්භ කිරීමට ව්‍යාපෘතියක් විවෘත කරන්න", + "sidebar.archived": "සංරක්ෂිත", + "sidebar.archived.restore": "සැසිය යළි පිහිටුවන්න", "debugBar.ariaLabel": "සංවර්ධන කාර්ය සාධන රෝග විනිශ්චය", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -921,6 +923,12 @@ export const dict: Record = { "settings.general.section.display": "ප්රදර්ශනය කරන්න", "settings.general.row.language.title": "භාෂාව", "settings.general.row.language.description": "OpenCode සඳහා සංදර්ශක භාෂාව වෙනස් කරන්න", + "settings.general.row.navigation.description": "මාතෘකා තීරුවේ ටැබ් හෝ ස්ථිර පැති තීරුව භාවිත කරන්න", + "settings.general.row.navigation.tabs": "ටැබ්", + "settings.general.row.navigation.sidebar": "පැති තීරුව", + "settings.general.row.sidebarSessions.title": "නිෂ්ක්‍රීය සැසි සංරක්ෂණය කරන්න", + "settings.general.row.sidebarSessions.description": "නිෂ්ක්‍රීය සැසි සංරක්ෂිත වෙත යයි. ක්‍රියාත්මක සැසි දිස්වේ.", + "settings.general.row.sidebarSessions.always": "සැමවිටම පෙන්වන්න", "settings.general.row.shell.title": "පර්යන්ත ෂෙල්", "settings.general.row.shell.description": "පර්යන්තය සහ නියෝජිත මෙවලම් භාවිතා කරන ෂෙල්", "settings.general.row.shell.autoDefault": "ස්වයංක්‍රීය (පෙරනිමි)", diff --git a/packages/app/src/i18n/sk.ts b/packages/app/src/i18n/sk.ts index 9992e06cc4af..2b7cec1c2d41 100644 --- a/packages/app/src/i18n/sk.ts +++ b/packages/app/src/i18n/sk.ts @@ -880,6 +880,8 @@ export const dict = { "sidebar.project.clearNotifications": "Vymazať oznámenia", "sidebar.empty.title": "Nie sú otvorené žiadne projekty", "sidebar.empty.description": "Otvorte projekt pre začiatok", + "sidebar.archived": "Archivované", + "sidebar.archived.restore": "Obnoviť reláciu", "debugBar.ariaLabel": "Diagnostika výkonu vývoja", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -928,6 +930,12 @@ export const dict = { "settings.general.section.display": "Zobrazenie", "settings.general.row.language.title": "Jazyk", "settings.general.row.language.description": "Zmeniť jazyk rozhrania pre OpenCode", + "settings.general.row.navigation.description": "Použiť karty na titulnom paneli alebo trvalý bočný panel", + "settings.general.row.navigation.tabs": "Karty", + "settings.general.row.navigation.sidebar": "Bočný panel", + "settings.general.row.sidebarSessions.title": "Archivovať nečinné relácie po", + "settings.general.row.sidebarSessions.description": "Nečinné relácie sa presunú do Archivované. Aktívne relácie zostávajú viditeľné.", + "settings.general.row.sidebarSessions.always": "Vždy zobraziť", "settings.general.row.shell.title": "Terminálový shell", "settings.general.row.shell.description": "Shell používaný terminálom a nástrojmi agenta", "settings.general.row.shell.autoDefault": "Automaticky (predvolené)", diff --git a/packages/app/src/i18n/sl.ts b/packages/app/src/i18n/sl.ts index 3c23fcd7f708..ff968a72cd47 100644 --- a/packages/app/src/i18n/sl.ts +++ b/packages/app/src/i18n/sl.ts @@ -881,6 +881,8 @@ export const dict = { "sidebar.project.clearNotifications": "Počisti obvestila", "sidebar.empty.title": "Ni odprtih projektov", "sidebar.empty.description": "Za začetek odprite projekt", + "sidebar.archived": "Arhivirano", + "sidebar.archived.restore": "Obnovi sejo", "debugBar.ariaLabel": "Diagnostika uspešnosti razvoja", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -929,6 +931,12 @@ export const dict = { "settings.general.section.display": "Zaslon", "settings.general.row.language.title": "Jezik", "settings.general.row.language.description": "Spremenite jezik prikaza za OpenCode", + "settings.general.row.navigation.description": "Uporabite zavihke v naslovni vrstici ali trajno stransko vrstico", + "settings.general.row.navigation.tabs": "Zavihki", + "settings.general.row.navigation.sidebar": "Stranska vrstica", + "settings.general.row.sidebarSessions.title": "Arhiviraj nedejavne seje po", + "settings.general.row.sidebarSessions.description": "Nedejavne seje se premaknejo v Arhivirano. Dejavnе seje ostanejo vidne.", + "settings.general.row.sidebarSessions.always": "Vedno prikaži", "settings.general.row.shell.title": "Končna lupina", "settings.general.row.shell.description": "Lupina, ki jo uporabljajo terminalska in agentska orodja", "settings.general.row.shell.autoDefault": "Samodejno (privzeto)", diff --git a/packages/app/src/i18n/sq.ts b/packages/app/src/i18n/sq.ts index ca94793ab0e6..e3cb45ae788e 100644 --- a/packages/app/src/i18n/sq.ts +++ b/packages/app/src/i18n/sq.ts @@ -879,6 +879,8 @@ export const dict = { "sidebar.project.clearNotifications": "Pastro njoftimet", "sidebar.empty.title": "Asnjë projekt i hapur", "sidebar.empty.description": "Hapni një projekt për të filluar", + "sidebar.archived": "Arkivuar", + "sidebar.archived.restore": "Rikthe sesionin", "debugBar.ariaLabel": "Diagnostifikimi i performancës së zhvillimit", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -928,6 +930,12 @@ export const dict = { "settings.general.section.display": "Ekrani", "settings.general.row.language.title": "Gjuha", "settings.general.row.language.description": "Ndryshoni gjuhën e ekranit për OpenCode", + "settings.general.row.navigation.description": "Përdor skeda në shiritin e titullit ose një shirit anësor të përhershëm", + "settings.general.row.navigation.tabs": "Skeda", + "settings.general.row.navigation.sidebar": "Shiriti anësor", + "settings.general.row.sidebarSessions.title": "Arkivo sesionet joaktive pas", + "settings.general.row.sidebarSessions.description": "Sesionet joaktive kalojnë te Arkivuar. Sesionet aktive mbeten të dukshme.", + "settings.general.row.sidebarSessions.always": "Shfaq gjithmonë", "settings.general.row.shell.title": "Predha e terminalit", "settings.general.row.shell.description": "Predha e përdorur nga terminali dhe mjetet e agjentit", "settings.general.row.shell.autoDefault": "Auto (e parazgjedhur)", diff --git a/packages/app/src/i18n/sr.ts b/packages/app/src/i18n/sr.ts index f059160087d8..e261f7f2edfd 100644 --- a/packages/app/src/i18n/sr.ts +++ b/packages/app/src/i18n/sr.ts @@ -880,6 +880,8 @@ export const dict = { "sidebar.project.clearNotifications": "Обришите обавештења", "sidebar.empty.title": "Нема отворених пројеката", "sidebar.empty.description": "Отворите пројекат да бисте започели", + "sidebar.archived": "Архивирано", + "sidebar.archived.restore": "Врати сесију", "debugBar.ariaLabel": "Дијагностика перформанси развоја", "debugBar.na": "н/а", "debugBar.nav.label": "NAV", @@ -928,6 +930,12 @@ export const dict = { "settings.general.section.display": "Приказ", "settings.general.row.language.title": "Језик", "settings.general.row.language.description": "Промените језик приказа за OpenCode", + "settings.general.row.navigation.description": "Користите картице у насловној траци или трајну бочну траку", + "settings.general.row.navigation.tabs": "Картице", + "settings.general.row.navigation.sidebar": "Бочна трака", + "settings.general.row.sidebarSessions.title": "Архивирај неактивне сесије након", + "settings.general.row.sidebarSessions.description": "Неактивне сесије иду у Архивирано. Активне сесије остају видљиве.", + "settings.general.row.sidebarSessions.always": "Увек прикажи", "settings.general.row.shell.title": "Терминал shell", "settings.general.row.shell.description": "Shell који користе алати терминала и агента", "settings.general.row.shell.autoDefault": "аутоматски (подразумевано)", diff --git a/packages/app/src/i18n/sv.ts b/packages/app/src/i18n/sv.ts index 39b363c6b657..9d5198af1af2 100644 --- a/packages/app/src/i18n/sv.ts +++ b/packages/app/src/i18n/sv.ts @@ -881,6 +881,8 @@ export const dict = { "sidebar.project.clearNotifications": "Rensa aviseringar", "sidebar.empty.title": "Inga projekt öppna", "sidebar.empty.description": "Öppna ett projekt för att komma igång", + "sidebar.archived": "Arkiverad", + "sidebar.archived.restore": "Återställ session", "debugBar.ariaLabel": "Utvecklingsprestandadiagnostik", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -930,6 +932,12 @@ export const dict = { "settings.general.section.display": "Visning", "settings.general.row.language.title": "Språk", "settings.general.row.language.description": "Ändra visningsspråket för OpenCode", + "settings.general.row.navigation.description": "Använd flikar i namnlisten eller ett fast sidofält", + "settings.general.row.navigation.tabs": "Flikar", + "settings.general.row.navigation.sidebar": "Sidofält", + "settings.general.row.sidebarSessions.title": "Arkivera inaktiva sessioner efter", + "settings.general.row.sidebarSessions.description": "Inaktiva sessioner flyttas till Arkiverad. Aktiva sessioner förblir synliga.", + "settings.general.row.sidebarSessions.always": "Visa alltid", "settings.general.row.shell.title": "Terminalskal", "settings.general.row.shell.description": "Skal som används av terminalen och agentverktygen", "settings.general.row.shell.autoDefault": "Auto (standard)", diff --git a/packages/app/src/i18n/tg.ts b/packages/app/src/i18n/tg.ts index ffa08409f684..a048e3b47374 100644 --- a/packages/app/src/i18n/tg.ts +++ b/packages/app/src/i18n/tg.ts @@ -880,6 +880,8 @@ export const dict = { "sidebar.project.clearNotifications": "Огоҳиҳоро тоза кунед", "sidebar.empty.title": "Ягон лоиҳа кушода нест", "sidebar.empty.description": "Барои оғоз кардани лоиҳа лоиҳа кушоед", + "sidebar.archived": "Арxivшуда", + "sidebar.archived.restore": "Барқарор кардани сеанс", "debugBar.ariaLabel": "Ташхиси самаранокии рушд", "debugBar.na": "не", "debugBar.nav.label": "NAV", @@ -928,6 +930,12 @@ export const dict = { "settings.general.section.display": "Намоиш", "settings.general.row.language.title": "Забон", "settings.general.row.language.description": "Забони намоишро барои OpenCode иваз кунед", + "settings.general.row.navigation.description": "Дар сарлавҳа варақаҳо ё панели паҳлуии доимӣ истифода баред", + "settings.general.row.navigation.tabs": "Варақаҳо", + "settings.general.row.navigation.sidebar": "Панели паҳлуӣ", + "settings.general.row.sidebarSessions.title": "Сеансҳои беҳаракатро архив кардан", + "settings.general.row.sidebarSessions.description": "Сеансҳои беҳаракат ба Арxivшуда мегузаранд. Сеансҳои фаъол намоён мемонанд.", + "settings.general.row.sidebarSessions.always": "Ҳамеша нишон додан", "settings.general.row.shell.title": "Терминал shell", "settings.general.row.shell.description": "Shell воситаи терминал ва агент истифода мешавад", "settings.general.row.shell.autoDefault": "Авто (Пешфарз)", diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts index 1a0e9db72b1b..0736d8e17b94 100644 --- a/packages/app/src/i18n/th.ts +++ b/packages/app/src/i18n/th.ts @@ -878,6 +878,8 @@ export const dict = { "sidebar.project.clearNotifications": "ล้างการแจ้งเตือน", "sidebar.empty.title": "ไม่มีโปรเจกต์ที่เปิดอยู่", "sidebar.empty.description": "เปิดโปรเจกต์เพื่อเริ่มต้น", + "sidebar.archived": "จัดเก็บแล้ว", + "sidebar.archived.restore": "กู้คืนเซสชัน", "app.name.desktop": "OpenCode Desktop", @@ -899,6 +901,12 @@ export const dict = { "settings.general.row.language.title": "ภาษา", "settings.general.row.language.description": "เปลี่ยนภาษาที่แสดงสำหรับ OpenCode", + "settings.general.row.navigation.description": "ใช้แท็บในแถบชื่อเรื่องหรือแถบด้านข้างถาวร", + "settings.general.row.navigation.tabs": "แท็บ", + "settings.general.row.navigation.sidebar": "แถบด้านข้าง", + "settings.general.row.sidebarSessions.title": "จัดเก็บเซสชันที่ไม่ได้ใช้งานหลังจาก", + "settings.general.row.sidebarSessions.description": "เซสชันที่ไม่ได้ใช้งานจะถูกย้ายไปยังจัดเก็บแล้ว เซสชันที่กำลังทำงานยังแสดงอยู่", + "settings.general.row.sidebarSessions.always": "แสดงเสมอ", "settings.general.row.shell.title": "เชลล์เทอร์มินัล", "settings.general.row.shell.description": "เลือกเชลล์ที่จะใช้กับเทอร์มินัล เชลล์ที่เข้ากันได้จะใช้สำหรับการเรียกเครื่องมือของเอเจนต์ด้วย", diff --git a/packages/app/src/i18n/tk.ts b/packages/app/src/i18n/tk.ts index 2b144c6a26c7..c29397a4bc7a 100644 --- a/packages/app/src/i18n/tk.ts +++ b/packages/app/src/i18n/tk.ts @@ -877,6 +877,8 @@ export const dict = { "sidebar.project.clearNotifications": "Duýduryşlary arassalaň", "sidebar.empty.title": "Taslama açylmaýar", "sidebar.empty.description": "Başlamak üçin taslama açyň", + "sidebar.archived": "Arhiwlenen", + "sidebar.archived.restore": "Sessiýany dikelt", "debugBar.ariaLabel": "Ösüş öndürijiligini anyklaýyş", "debugBar.na": "n / a", "debugBar.nav.label": "NAV", @@ -925,6 +927,12 @@ export const dict = { "settings.general.section.display": "Ekran", "settings.general.row.language.title": "Dil", "settings.general.row.language.description": "OpenCode üçin displeý dilini üýtgediň", + "settings.general.row.navigation.description": "Sözbaşy zolagynda goýmalar ýa-da hemişelik gapdal panel ulanyň", + "settings.general.row.navigation.tabs": "Goýmalar", + "settings.general.row.navigation.sidebar": "Gapdal panel", + "settings.general.row.sidebarSessions.title": "Işjeň däl sessiýalary arhiwle", + "settings.general.row.sidebarSessions.description": "Işjeň däl sessiýalar Arhiwlenen bölümine geçýär. Işleýän sessiýalar görünýär.", + "settings.general.row.sidebarSessions.always": "Elmydama görkez", "settings.general.row.shell.title": "Terminal shell-i", "settings.general.row.shell.description": "Terminal we agent gurallary tarapyndan ulanylýan shell", "settings.general.row.shell.autoDefault": "Awto (Bellenilen)", diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts index 85623036e429..48dea3da1562 100644 --- a/packages/app/src/i18n/tr.ts +++ b/packages/app/src/i18n/tr.ts @@ -896,6 +896,8 @@ export const dict = { "sidebar.project.clearNotifications": "Bildirimleri temizle", "sidebar.empty.title": "Açık proje yok", "sidebar.empty.description": "Başlamak için bir proje açın", + "sidebar.archived": "Arşivlendi", + "sidebar.archived.restore": "Oturumu geri yükle", "app.name.desktop": "OpenCode Masaüstü", @@ -917,6 +919,12 @@ export const dict = { "settings.general.row.language.title": "Dil", "settings.general.row.language.description": "OpenCode'un görünüm dilini değiştirin", + "settings.general.row.navigation.description": "Başlık çubuğunda sekmeler veya kalıcı bir kenar çubuğu kullan", + "settings.general.row.navigation.tabs": "Sekmeler", + "settings.general.row.navigation.sidebar": "Kenar çubuğu", + "settings.general.row.sidebarSessions.title": "Boşta oturumları şu süreden sonra arşivle", + "settings.general.row.sidebarSessions.description": "Boşta oturumlar Arşivlendi bölümüne taşınır. Çalışan oturumlar görünür kalır.", + "settings.general.row.sidebarSessions.always": "Her zaman göster", "settings.general.row.shell.title": "Terminal Kabuğu", "settings.general.row.shell.description": "Terminalinizde kullanılacak kabuğu seçin. Uyumlu kabuklar, ajan araç çağrılarında da kullanılır.", diff --git a/packages/app/src/i18n/uk.ts b/packages/app/src/i18n/uk.ts index 54732a87b7eb..6066c4a3de59 100644 --- a/packages/app/src/i18n/uk.ts +++ b/packages/app/src/i18n/uk.ts @@ -966,6 +966,8 @@ export const dict = { "sidebar.project.clearNotifications": "Очистити сповіщення", "sidebar.empty.title": "Немає відкритих проєктів", "sidebar.empty.description": "Відкрийте проєкт, щоб почати", + "sidebar.archived": "Архівовані", + "sidebar.archived.restore": "Відновити сесію", "debugBar.ariaLabel": "Діагностика продуктивності розробки", "debugBar.na": "н/д", @@ -1019,6 +1021,12 @@ export const dict = { "settings.general.row.language.title": "Мова", "settings.general.row.language.description": "Змінити мову інтерфейсу OpenCode", + "settings.general.row.navigation.description": "Вкладки в заголовку або постійна бічна панель", + "settings.general.row.navigation.tabs": "Вкладки", + "settings.general.row.navigation.sidebar": "Бічна панель", + "settings.general.row.sidebarSessions.title": "Архівувати неактивні сесії через", + "settings.general.row.sidebarSessions.description": "Неактивні сесії переміщуються в «Архівовані». Активні сесії залишаються видимими.", + "settings.general.row.sidebarSessions.always": "Завжди показувати", "settings.general.row.shell.title": "Командна оболонка термінала", "settings.general.row.shell.description": "Виберіть оболонку для термінала. Сумісні оболонки також використовуються для викликів інструментів агента.", diff --git a/packages/app/src/i18n/ur.ts b/packages/app/src/i18n/ur.ts index 2ab69e7aec71..22f2536e7036 100644 --- a/packages/app/src/i18n/ur.ts +++ b/packages/app/src/i18n/ur.ts @@ -887,6 +887,8 @@ export const dict = { "sidebar.project.clearNotifications": "اطلاعات کو صاف کریں۔", "sidebar.empty.title": "کوئی پروجیکٹ نہیں کھلا۔", "sidebar.empty.description": "شروع کرنے کے لیے ایک پروجیکٹ کھولیں۔", + "sidebar.archived": "آرکائیو شدہ", + "sidebar.archived.restore": "سیشن بحال کریں", "debugBar.ariaLabel": "ترقیاتی کارکردگی کی تشخیص", "debugBar.na": "n/a", "debugBar.nav.label": "NAV", @@ -934,6 +936,12 @@ export const dict = { "settings.general.section.display": "ڈسپلے", "settings.general.row.language.title": "زبان", "settings.general.row.language.description": "OpenCode کے لیے ڈسپلے کی زبان تبدیل کریں۔", + "settings.general.row.navigation.description": "ٹائٹل بار میں ٹیبز یا مستقل سائیڈ بار استعمال کریں", + "settings.general.row.navigation.tabs": "ٹیبز", + "settings.general.row.navigation.sidebar": "سائیڈ بار", + "settings.general.row.sidebarSessions.title": "غیر فعال سیشن آرکائیو کریں", + "settings.general.row.sidebarSessions.description": "غیر فعال سیشن آرکائیو شدہ میں منتقل ہو جاتے ہیں۔ فعال سیشن نظر آتے رہتے ہیں۔", + "settings.general.row.sidebarSessions.always": "ہمیشہ دکھائیں", "settings.general.row.shell.title": "ٹرمینل شیل", "settings.general.row.shell.description": "ٹرمینل اور ایجنٹ ٹولز کے ذریعے استعمال ہونے والا شیل", "settings.general.row.shell.autoDefault": "خودکار (پہلے سے طے شدہ)", diff --git a/packages/app/src/i18n/uz.ts b/packages/app/src/i18n/uz.ts index 8cb7097fc07a..30ed6948778c 100644 --- a/packages/app/src/i18n/uz.ts +++ b/packages/app/src/i18n/uz.ts @@ -884,6 +884,8 @@ export const dict = { "sidebar.project.clearNotifications": "Bildirishnomalarni tozalash", "sidebar.empty.title": "Hech qanday loyiha ochiq emas", "sidebar.empty.description": "Boshlash uchun loyihani oching", + "sidebar.archived": "Arxivlangan", + "sidebar.archived.restore": "Sessiyani tiklash", "debugBar.ariaLabel": "Rivojlanish samaradorligi diagnostikasi", "debugBar.na": "yo'q", "debugBar.nav.label": "NAV", @@ -932,6 +934,12 @@ export const dict = { "settings.general.section.display": "Displey", "settings.general.row.language.title": "Til", "settings.general.row.language.description": "OpenCode uchun ekran tilini o'zgartiring", + "settings.general.row.navigation.description": "Sarlavha panelida tablardan yoki doimiy yon paneldan foydalaning", + "settings.general.row.navigation.tabs": "Tablar", + "settings.general.row.navigation.sidebar": "Yon panel", + "settings.general.row.sidebarSessions.title": "Harakatsiz sessiyalarni arxivlash", + "settings.general.row.sidebarSessions.description": "Harakatsiz sessiyalar Arxivlangan bo'limiga o'tadi. Faol sessiyalar ko'rinib qoladi.", + "settings.general.row.sidebarSessions.always": "Har doim ko'rsatish", "settings.general.row.shell.title": "Terminal qobig'i", "settings.general.row.shell.description": "Terminal va agent vositalari tomonidan ishlatiladigan qobiq", "settings.general.row.shell.autoDefault": "Avtomatik (standart)", diff --git a/packages/app/src/i18n/vi.ts b/packages/app/src/i18n/vi.ts index 06fda4ce707c..54d24de4ba3e 100644 --- a/packages/app/src/i18n/vi.ts +++ b/packages/app/src/i18n/vi.ts @@ -888,6 +888,8 @@ export const dict = { "sidebar.project.clearNotifications": "Xóa thông báo", "sidebar.empty.title": "Không có dự án nào mở", "sidebar.empty.description": "Mở một dự án để bắt đầu", + "sidebar.archived": "Đã lưu trữ", + "sidebar.archived.restore": "Khôi phục phiên", "debugBar.ariaLabel": "Chẩn đoán hiệu suất phát triển", "debugBar.na": "không có", "debugBar.nav.label": "NAV", @@ -936,6 +938,12 @@ export const dict = { "settings.general.section.display": "Hiển thị", "settings.general.row.language.title": "Ngôn ngữ", "settings.general.row.language.description": "Thay đổi ngôn ngữ hiển thị cho OpenCode", + "settings.general.row.navigation.description": "Dùng thẻ trên thanh tiêu đề hoặc thanh bên cố định", + "settings.general.row.navigation.tabs": "Thẻ", + "settings.general.row.navigation.sidebar": "Thanh bên", + "settings.general.row.sidebarSessions.title": "Lưu trữ phiên không hoạt động sau", + "settings.general.row.sidebarSessions.description": "Phiên không hoạt động sẽ chuyển vào Đã lưu trữ. Phiên đang chạy vẫn hiển thị.", + "settings.general.row.sidebarSessions.always": "Luôn hiển thị", "settings.general.row.shell.title": "Shell terminal", "settings.general.row.shell.description": "Shell được terminal và các công cụ của tác nhân sử dụng", "settings.general.row.shell.autoDefault": "Tự động (Mặc định)", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index b0ba0453479b..66dc73572783 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -874,6 +874,8 @@ export const dict = { "sidebar.project.clearNotifications": "清除通知", "sidebar.empty.title": "没有打开的项目", "sidebar.empty.description": "打开一个项目以开始使用", + "sidebar.archived": "已归档", + "sidebar.archived.restore": "恢复会话", "app.name.desktop": "OpenCode Desktop", @@ -896,6 +898,12 @@ export const dict = { "settings.general.section.display": "显示", "settings.general.row.language.title": "语言", "settings.general.row.language.description": "更改 OpenCode 的显示语言", + "settings.general.row.navigation.description": "在标题栏使用标签页,或使用常驻侧边栏", + "settings.general.row.navigation.tabs": "标签页", + "settings.general.row.navigation.sidebar": "侧边栏", + "settings.general.row.sidebarSessions.title": "闲置会话归档时间", + "settings.general.row.sidebarSessions.description": "闲置会话会移入已归档。正在工作的会话始终可见。", + "settings.general.row.sidebarSessions.always": "始终显示", "settings.general.row.shell.title": "终端 Shell", "settings.general.row.shell.description": "选择终端使用的 shell。兼容的 shell 也会用于智能体工具调用。", "settings.general.row.shell.autoDefault": "自动(默认)", diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index 6cc3d555289d..2c777bc254ee 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -871,6 +871,8 @@ export const dict = { "sidebar.project.clearNotifications": "清除通知", "sidebar.empty.title": "未開啟任何專案", "sidebar.empty.description": "開啟專案以開始使用", + "sidebar.archived": "已封存", + "sidebar.archived.restore": "還原工作階段", "app.name.desktop": "OpenCode Desktop", "settings.section.desktop": "桌面", @@ -891,6 +893,12 @@ export const dict = { "settings.general.row.language.title": "語言", "settings.general.row.language.description": "變更 OpenCode 的顯示語言", + "settings.general.row.navigation.description": "在標題列使用分頁,或使用常駐側邊欄", + "settings.general.row.navigation.tabs": "分頁", + "settings.general.row.navigation.sidebar": "側邊欄", + "settings.general.row.sidebarSessions.title": "閒置工作階段封存時間", + "settings.general.row.sidebarSessions.description": "閒置工作階段會移至已封存。正在運作的工作階段會保持顯示。", + "settings.general.row.sidebarSessions.always": "一律顯示", "settings.general.row.shell.title": "終端機 Shell", "settings.general.row.shell.description": "選擇終端機使用的 Shell。相容的 Shell 也會用於代理程式工具呼叫。", "settings.general.row.shell.autoDefault": "自動(預設)", diff --git a/packages/app/src/pages/layout/navigation-sidebar.tsx b/packages/app/src/pages/layout/navigation-sidebar.tsx index c54a5ed59031..07e2d2a9ff5f 100644 --- a/packages/app/src/pages/layout/navigation-sidebar.tsx +++ b/packages/app/src/pages/layout/navigation-sidebar.tsx @@ -267,7 +267,7 @@ export function NavigationSidebar() { return (