From 3dec0fd0c7b5586c9b7b54f10edb5653fb628752 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Mon, 28 Sep 2026 13:14:35 -0700 Subject: [PATCH] feat(desktop): organize browser and file editor settings --- .../modules/settings/commands.ts | 11 +- .../BehaviorSettings/BehaviorSettings.tsx | 182 ------------ .../BrowserSettings/BrowserSettings.tsx | 67 +++++ .../BrowserLinkSettings.tsx | 172 +++++++++++ .../components/BrowserLinkSettings/index.ts | 1 + .../LinkTierMapper/LinkTierMapper.tsx | 13 +- .../components/LinkTierMapper/index.ts | 0 .../SettingsSidebar/GeneralSettings.tsx | 12 +- .../FilesSettings/FilesSettings.tsx | 268 +++++++++++++++++ .../files/components/FilesSettings/index.ts | 1 + .../FolderLinkTierMapper.tsx | 13 +- .../components/FolderLinkTierMapper/index.ts | 0 .../_authenticated/settings/files/page.tsx | 27 ++ .../routes/_authenticated/settings/layout.tsx | 4 +- .../LinksSettings/LinksSettings.tsx | 274 ------------------ .../links/components/LinksSettings/index.ts | 1 - .../_authenticated/settings/links/page.tsx | 28 +- .../settings-search/settings-search.test.ts | 4 +- .../utils/settings-search/settings-search.ts | 18 +- .../src/renderer/stores/settings-state.ts | 2 +- packages/i18n/locales/cs/messages.po | 21 +- packages/i18n/locales/de/messages.po | 21 +- packages/i18n/locales/en/messages.po | 21 +- packages/i18n/locales/es/messages.po | 21 +- packages/i18n/locales/fr/messages.po | 21 +- packages/i18n/locales/id/messages.po | 21 +- packages/i18n/locales/it/messages.po | 21 +- packages/i18n/locales/ja/messages.po | 21 +- packages/i18n/locales/ko/messages.po | 21 +- packages/i18n/locales/nl/messages.po | 21 +- packages/i18n/locales/pl/messages.po | 21 +- packages/i18n/locales/pt-BR/messages.po | 21 +- packages/i18n/locales/ru/messages.po | 21 +- packages/i18n/locales/tr/messages.po | 21 +- packages/i18n/locales/vi/messages.po | 21 +- packages/i18n/locales/zh-CN/messages.po | 21 +- packages/i18n/locales/zh-TW/messages.po | 21 +- 37 files changed, 790 insertions(+), 665 deletions(-) create mode 100644 apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/BrowserLinkSettings.tsx create mode 100644 apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/index.ts rename apps/desktop/src/renderer/routes/_authenticated/settings/{links => }/components/LinkTierMapper/LinkTierMapper.tsx (87%) rename apps/desktop/src/renderer/routes/_authenticated/settings/{links => }/components/LinkTierMapper/index.ts (100%) create mode 100644 apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/FilesSettings.tsx create mode 100644 apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/index.ts rename apps/desktop/src/renderer/routes/_authenticated/settings/{links => files}/components/FolderLinkTierMapper/FolderLinkTierMapper.tsx (88%) rename apps/desktop/src/renderer/routes/_authenticated/settings/{links => files}/components/FolderLinkTierMapper/index.ts (100%) create mode 100644 apps/desktop/src/renderer/routes/_authenticated/settings/files/page.tsx delete mode 100644 apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/LinksSettings.tsx delete mode 100644 apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/index.ts diff --git a/apps/desktop/src/renderer/commandPalette/modules/settings/commands.ts b/apps/desktop/src/renderer/commandPalette/modules/settings/commands.ts index 46854d68a87..25ea1d25fc2 100644 --- a/apps/desktop/src/renderer/commandPalette/modules/settings/commands.ts +++ b/apps/desktop/src/renderer/commandPalette/modules/settings/commands.ts @@ -3,10 +3,10 @@ import { msg } from "@lingui/core/macro"; import { BeakerIcon, BellIcon, - BookmarkIcon, BuildingIcon, ChartBarIcon, CreditCardIcon, + FileTextIcon, FolderIcon, GitBranchIcon, KeyboardIcon, @@ -113,10 +113,11 @@ const TABS: SettingsTab[] = [ keywords: ["hotkeys", "shortcuts"], }, { - id: "links", - title: msg({ message: "Links" }), - path: "/settings/links", - icon: BookmarkIcon, + id: "files", + title: msg({ message: "Files & Editor" }), + path: "/settings/files", + keywords: ["links", "files", "folders", "editor", "auto save"], + icon: FileTextIcon, }, { id: "permissions", diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/behavior/components/BehaviorSettings/BehaviorSettings.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/behavior/components/BehaviorSettings/BehaviorSettings.tsx index 4c57380ba73..94e215e88fd 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/behavior/components/BehaviorSettings/BehaviorSettings.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/behavior/components/BehaviorSettings/BehaviorSettings.tsx @@ -1,5 +1,4 @@ import { Trans, useLingui } from "@lingui/react/macro"; -import type { FileAutoSaveMode, FileOpenMode } from "@superset/local-db"; import { Label } from "@superset/ui/label"; import { Select, @@ -31,14 +30,6 @@ export function BehaviorSettings({ visibleItems }: BehaviorSettingsProps) { SETTING_ITEM_ID.BEHAVIOR_CONFIRM_QUIT, visibleItems, ); - const showFileOpenMode = isItemVisible( - SETTING_ITEM_ID.BEHAVIOR_FILE_OPEN_MODE, - visibleItems, - ); - const showFileAutoSave = isItemVisible( - SETTING_ITEM_ID.BEHAVIOR_FILE_AUTO_SAVE, - visibleItems, - ); const showChangesOpenTarget = isItemVisible( SETTING_ITEM_ID.BEHAVIOR_CHANGES_OPEN_TARGET, visibleItems, @@ -47,10 +38,6 @@ export function BehaviorSettings({ visibleItems }: BehaviorSettingsProps) { SETTING_ITEM_ID.BEHAVIOR_RESOURCE_MONITOR, visibleItems, ); - const showOpenLinksInApp = isItemVisible( - SETTING_ITEM_ID.BEHAVIOR_OPEN_LINKS_IN_APP, - visibleItems, - ); const showStarGithub = isItemVisible( SETTING_ITEM_ID.BEHAVIOR_STAR_GITHUB, visibleItems, @@ -83,44 +70,6 @@ export function BehaviorSettings({ visibleItems }: BehaviorSettingsProps) { setConfirmOnQuit.mutate({ enabled }); }; - const { data: fileOpenMode, isLoading: isFileOpenModeLoading } = - electronTrpc.settings.getFileOpenMode.useQuery(); - const setFileOpenMode = electronTrpc.settings.setFileOpenMode.useMutation({ - onMutate: async ({ mode }) => { - await utils.settings.getFileOpenMode.cancel(); - const previous = utils.settings.getFileOpenMode.getData(); - utils.settings.getFileOpenMode.setData(undefined, mode); - return { previous }; - }, - onError: (_err, _vars, context) => { - if (context?.previous !== undefined) { - utils.settings.getFileOpenMode.setData(undefined, context.previous); - } - }, - onSettled: () => { - utils.settings.getFileOpenMode.invalidate(); - }, - }); - - const { data: fileAutoSave, isLoading: isFileAutoSaveLoading } = - electronTrpc.settings.getFileAutoSave.useQuery(); - const setFileAutoSave = electronTrpc.settings.setFileAutoSave.useMutation({ - onMutate: async ({ mode }) => { - await utils.settings.getFileAutoSave.cancel(); - const previous = utils.settings.getFileAutoSave.getData(); - utils.settings.getFileAutoSave.setData(undefined, mode); - return { previous }; - }, - onError: (_err, _vars, context) => { - if (context?.previous !== undefined) { - utils.settings.getFileAutoSave.setData(undefined, context.previous); - } - }, - onSettled: () => { - utils.settings.getFileAutoSave.invalidate(); - }, - }); - const { data: resourceMonitorEnabled, isLoading: isResourceMonitorLoading } = electronTrpc.settings.getShowResourceMonitor.useQuery(); const setShowResourceMonitor = @@ -144,27 +93,6 @@ export function BehaviorSettings({ visibleItems }: BehaviorSettingsProps) { }, }); - const { data: openLinksInApp, isLoading: isOpenLinksInAppLoading } = - electronTrpc.settings.getOpenLinksInApp.useQuery(); - const setOpenLinksInApp = electronTrpc.settings.setOpenLinksInApp.useMutation( - { - onMutate: async ({ enabled }) => { - await utils.settings.getOpenLinksInApp.cancel(); - const previous = utils.settings.getOpenLinksInApp.getData(); - utils.settings.getOpenLinksInApp.setData(undefined, enabled); - return { previous }; - }, - onError: (_err, _vars, context) => { - if (context?.previous !== undefined) { - utils.settings.getOpenLinksInApp.setData(undefined, context.previous); - } - }, - onSettled: () => { - utils.settings.getOpenLinksInApp.invalidate(); - }, - }, - ); - return (
@@ -201,84 +129,6 @@ export function BehaviorSettings({ visibleItems }: BehaviorSettingsProps) {
)} - {showFileOpenMode && ( -
-
- -

- Choose how files open when no preview pane exists -

-
- -
- )} - - {showFileAutoSave && ( -
-
- -

- Controls when manually edited files are saved -

-
- -
- )} - {showChangesOpenTarget && (
@@ -348,38 +198,6 @@ export function BehaviorSettings({ visibleItems }: BehaviorSettingsProps) {
)} - {showOpenLinksInApp && ( -
-
- -

- - Open links from chat and terminal in the in-app browser - instead of your default browser - -

-
- - setOpenLinksInApp.mutate({ enabled }) - } - disabled={isOpenLinksInAppLoading || setOpenLinksInApp.isPending} - /> -
- )} - {showStarGithub && }
diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/BrowserSettings.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/BrowserSettings.tsx index f5387342c86..6d6408d0faf 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/BrowserSettings.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/BrowserSettings.tsx @@ -2,6 +2,7 @@ import { Trans, useLingui } from "@lingui/react/macro"; import { Button } from "@superset/ui/button"; import { Input } from "@superset/ui/input"; import { Label } from "@superset/ui/label"; +import { Switch } from "@superset/ui/switch"; import { useEffect, useState } from "react"; import { TbDownload } from "react-icons/tb"; import { ImportHistoryDialog } from "renderer/components/ImportHistoryDialog"; @@ -14,6 +15,8 @@ import { type SettingItemId, } from "../../../utils/settings-search"; +import { BrowserLinkSettings } from "./components/BrowserLinkSettings"; + interface BrowserSettingsProps { visibleItems?: SettingItemId[] | null; } @@ -23,6 +26,10 @@ export function BrowserSettings({ visibleItems }: BrowserSettingsProps) { const searchQuery = useSettingsSearchQuery(); const [isImportOpen, setIsImportOpen] = useState(false); + const showOpenLinksInApp = isItemVisible( + SETTING_ITEM_ID.BEHAVIOR_OPEN_LINKS_IN_APP, + visibleItems, + ); const showHomepage = isItemVisible( SETTING_ITEM_ID.BROWSER_HOMEPAGE, visibleItems, @@ -42,6 +49,27 @@ export function BrowserSettings({ visibleItems }: BrowserSettingsProps) { }, }); + const { data: openLinksInApp, isLoading: isOpenLinksInAppLoading } = + electronTrpc.settings.getOpenLinksInApp.useQuery(); + const setOpenLinksInApp = electronTrpc.settings.setOpenLinksInApp.useMutation( + { + onMutate: async ({ enabled }) => { + await utils.settings.getOpenLinksInApp.cancel(); + const previous = utils.settings.getOpenLinksInApp.getData(); + utils.settings.getOpenLinksInApp.setData(undefined, enabled); + return { previous }; + }, + onError: (_err, _vars, context) => { + if (context?.previous !== undefined) { + utils.settings.getOpenLinksInApp.setData(undefined, context.previous); + } + }, + onSettled: () => { + utils.settings.getOpenLinksInApp.invalidate(); + }, + }, + ); + // Local draft so the field stays editable while the query/mutation settle. const [draft, setDraft] = useState(""); useEffect(() => { @@ -66,6 +94,38 @@ export function BrowserSettings({ visibleItems }: BrowserSettingsProps) {
+ {showOpenLinksInApp && ( +
+
+ +

+ + Open links from chat and terminal in the in-app browser + instead of your default browser + +

+
+ + setOpenLinksInApp.mutate({ enabled }) + } + disabled={isOpenLinksInAppLoading || setOpenLinksInApp.isPending} + /> +
+ )} + {showHomepage && (
@@ -128,6 +188,13 @@ export function BrowserSettings({ visibleItems }: BrowserSettingsProps) {
)} + {[ + SETTING_ITEM_ID.LINKS_URL, + SETTING_ITEM_ID.LINKS_PORT, + SETTING_ITEM_ID.LINKS_PAGE, + ].some((id) => isItemVisible(id, visibleItems)) && ( + + )}
diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/BrowserLinkSettings.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/BrowserLinkSettings.tsx new file mode 100644 index 00000000000..c2ef92584b7 --- /dev/null +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/BrowserLinkSettings.tsx @@ -0,0 +1,172 @@ +import { Trans, useLingui } from "@lingui/react/macro"; +import { Label } from "@superset/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@superset/ui/select"; +import { toast } from "@superset/ui/sonner"; +import { useCallback } from "react"; +import { useV2UserPreferences } from "renderer/hooks/useV2UserPreferences"; +import { + actionLabel, + type LinkAction, + type LinkTierMap, +} from "renderer/lib/clickPolicy"; +import { HighlightText } from "renderer/routes/_authenticated/settings/components/HighlightText"; +import { useSettingsSearchQuery } from "renderer/stores/settings-state"; +import { LinkTierMapper } from "../../../../../components/LinkTierMapper"; +import { + isItemVisible, + SETTING_ITEM_ID, + type SettingItemId, +} from "../../../../../utils/settings-search"; + +const PORT_ACTIONS: LinkAction[] = ["pane", "newTab", "external"]; +const PAGE_ACTIONS: LinkAction[] = ["pane", "newTab", "external"]; + +interface BrowserLinkSettingsProps { + visibleItems?: SettingItemId[] | null; +} + +export function BrowserLinkSettings({ + visibleItems, +}: BrowserLinkSettingsProps) { + const { t } = useLingui(); + const searchQuery = useSettingsSearchQuery(); + const { preferences, setUrlLinks, setPortOpenAction, setPageOpenAction } = + useV2UserPreferences(); + const showUrl = isItemVisible(SETTING_ITEM_ID.LINKS_URL, visibleItems); + const showPort = isItemVisible(SETTING_ITEM_ID.LINKS_PORT, visibleItems); + const showPage = isItemVisible(SETTING_ITEM_ID.LINKS_PAGE, visibleItems); + + const handleUrlChange = useCallback( + (next: LinkTierMap) => { + setUrlLinks(next); + toast.success(t({ message: "Changes saved" })); + }, + [setUrlLinks, t], + ); + + const handlePortChange = useCallback( + (next: LinkAction) => { + setPortOpenAction(next); + toast.success(t({ message: "Changes saved" })); + }, + [setPortOpenAction, t], + ); + + const handlePageChange = useCallback( + (next: LinkAction) => { + setPageOpenAction(next); + toast.success(t({ message: "Changes saved" })); + }, + [setPageOpenAction, t], + ); + + return ( + <> + {showUrl && ( + + )} + {(showPort || showPage) && ( +
+ {showPort && ( +
+
+ +

+ + Where detected-port badges in the sidebar open when clicked. + +

+
+ +
+ )} + + {showPage && ( +
+
+ +

+ + Where Page links in terminals, chat messages, and task + markdown open when clicked. + +

+
+ +
+ )} +
+ )} + + ); +} diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/index.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/index.ts new file mode 100644 index 00000000000..4d80931dedf --- /dev/null +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/browser/components/BrowserSettings/components/BrowserLinkSettings/index.ts @@ -0,0 +1 @@ +export { BrowserLinkSettings } from "./BrowserLinkSettings"; diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinkTierMapper/LinkTierMapper.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/components/LinkTierMapper/LinkTierMapper.tsx similarity index 87% rename from apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinkTierMapper/LinkTierMapper.tsx rename to apps/desktop/src/renderer/routes/_authenticated/settings/components/LinkTierMapper/LinkTierMapper.tsx index 4902f503a81..4ac0d9f84c7 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinkTierMapper/LinkTierMapper.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/components/LinkTierMapper/LinkTierMapper.tsx @@ -67,11 +67,14 @@ export function LinkTierMapper({

-
+
{TIERS.map((tier) => { const id = `${idPrefix}-${tier}`; return ( -
+
@@ -79,7 +82,11 @@ export function LinkTierMapper({ value={toSlot(value[tier])} onValueChange={(v) => pick(tier, v as SlotValue)} > - + diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinkTierMapper/index.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/components/LinkTierMapper/index.ts similarity index 100% rename from apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinkTierMapper/index.ts rename to apps/desktop/src/renderer/routes/_authenticated/settings/components/LinkTierMapper/index.ts diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/components/SettingsSidebar/GeneralSettings.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/components/SettingsSidebar/GeneralSettings.tsx index b6c8699824c..b9cfbaf9eb8 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/components/SettingsSidebar/GeneralSettings.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/components/SettingsSidebar/GeneralSettings.tsx @@ -18,10 +18,10 @@ import { HiOutlineCreditCard, HiOutlineCube, HiOutlineDevicePhoneMobile, + HiOutlineDocumentText, HiOutlineFolder, HiOutlineGlobeAlt, HiOutlineKey, - HiOutlineLink, HiOutlineLockClosed, HiOutlinePaintBrush, HiOutlinePuzzlePiece, @@ -56,7 +56,7 @@ type SettingsRoute = | "/settings/git" | "/settings/agents" | "/settings/terminal" - | "/settings/links" + | "/settings/files" | "/settings/agent-accounts" | "/settings/experimental" | "/settings/integrations" @@ -185,12 +185,12 @@ const SECTION_GROUPS: SectionGroup[] = [ icon: , }, { - id: "/settings/links", - section: "links", + id: "/settings/files", + section: "files", label: msg({ - message: "Links", + message: "Files & Editor", }), - icon: , + icon: , }, { id: "/settings/browser", diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/FilesSettings.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/FilesSettings.tsx new file mode 100644 index 00000000000..316436d6c05 --- /dev/null +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/FilesSettings.tsx @@ -0,0 +1,268 @@ +import { Trans, useLingui } from "@lingui/react/macro"; +import type { FileAutoSaveMode, FileOpenMode } from "@superset/local-db"; +import { Label } from "@superset/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@superset/ui/select"; +import { toast } from "@superset/ui/sonner"; +import { useCallback } from "react"; +import { useV2UserPreferences } from "renderer/hooks/useV2UserPreferences"; +import type { FolderTierMap, LinkTierMap } from "renderer/lib/clickPolicy"; +import { electronTrpc } from "renderer/lib/electron-trpc"; +import { useSettingsSearchQuery } from "renderer/stores/settings-state"; +import { HighlightText } from "../../../components/HighlightText"; +import { LinkTierMapper } from "../../../components/LinkTierMapper"; +import { + isItemVisible, + SETTING_ITEM_ID, + type SettingItemId, +} from "../../../utils/settings-search"; +import { FolderLinkTierMapper } from "../FolderLinkTierMapper"; + +interface FilesSettingsProps { + visibleItems?: SettingItemId[] | null; +} + +export function FilesSettings({ visibleItems }: FilesSettingsProps) { + const { t } = useLingui(); + const { preferences, setFileLinks, setSidebarFileLinks, setFolderLinks } = + useV2UserPreferences(); + + const searchQuery = useSettingsSearchQuery(); + const utils = electronTrpc.useUtils(); + const showFileOpenMode = isItemVisible( + SETTING_ITEM_ID.BEHAVIOR_FILE_OPEN_MODE, + visibleItems, + ); + const showFileAutoSave = isItemVisible( + SETTING_ITEM_ID.BEHAVIOR_FILE_AUTO_SAVE, + visibleItems, + ); + const { data: fileOpenMode, isLoading: isFileOpenModeLoading } = + electronTrpc.settings.getFileOpenMode.useQuery(); + const setFileOpenMode = electronTrpc.settings.setFileOpenMode.useMutation({ + onMutate: async ({ mode }) => { + await utils.settings.getFileOpenMode.cancel(); + const previous = utils.settings.getFileOpenMode.getData(); + utils.settings.getFileOpenMode.setData(undefined, mode); + return { previous }; + }, + onError: (_err, _vars, context) => { + if (context?.previous !== undefined) { + utils.settings.getFileOpenMode.setData(undefined, context.previous); + } + }, + onSettled: () => { + utils.settings.getFileOpenMode.invalidate(); + }, + }); + + const { data: fileAutoSave, isLoading: isFileAutoSaveLoading } = + electronTrpc.settings.getFileAutoSave.useQuery(); + const setFileAutoSave = electronTrpc.settings.setFileAutoSave.useMutation({ + onMutate: async ({ mode }) => { + await utils.settings.getFileAutoSave.cancel(); + const previous = utils.settings.getFileAutoSave.getData(); + utils.settings.getFileAutoSave.setData(undefined, mode); + return { previous }; + }, + onError: (_err, _vars, context) => { + if (context?.previous !== undefined) { + utils.settings.getFileAutoSave.setData(undefined, context.previous); + } + }, + onSettled: () => { + utils.settings.getFileAutoSave.invalidate(); + }, + }); + + const showFile = isItemVisible(SETTING_ITEM_ID.LINKS_FILE, visibleItems); + const showFolder = isItemVisible(SETTING_ITEM_ID.LINKS_FOLDER, visibleItems); + const showSidebar = isItemVisible( + SETTING_ITEM_ID.LINKS_SIDEBAR_FILE, + visibleItems, + ); + + const handleFileChange = useCallback( + (next: LinkTierMap) => { + setFileLinks(next); + toast.success(t({ message: "Changes saved" })); + }, + [setFileLinks, t], + ); + + const handleFolderChange = useCallback( + (next: FolderTierMap) => { + setFolderLinks(next); + toast.success(t({ message: "Changes saved" })); + }, + [setFolderLinks, t], + ); + + const handleSidebarChange = useCallback( + (next: LinkTierMap) => { + setSidebarFileLinks(next); + toast.success(t({ message: "Changes saved" })); + }, + [setSidebarFileLinks, t], + ); + + return ( +
+
+

+ Files & Editor +

+
+ +
+ {showFileAutoSave && ( +
+

+ Editing +

+
+
+ +

+ Controls when manually edited files are saved +

+
+ +
+
+ )} + {(showFileOpenMode || showSidebar || showFile) && ( +
+

+ Opening files +

+ {showFileOpenMode && ( +
+
+ +

+ + Choose how files open when no preview pane exists + +

+
+ +
+ )} + {showSidebar && ( + + )} + {showFile && ( + + )} +
+ )} + {showFolder && ( +
+

+ Opening folders +

+ +
+ )} +
+
+ ); +} diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/index.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/index.ts new file mode 100644 index 00000000000..29137f5cf4f --- /dev/null +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FilesSettings/index.ts @@ -0,0 +1 @@ +export { FilesSettings } from "./FilesSettings"; diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/FolderLinkTierMapper/FolderLinkTierMapper.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FolderLinkTierMapper/FolderLinkTierMapper.tsx similarity index 88% rename from apps/desktop/src/renderer/routes/_authenticated/settings/links/components/FolderLinkTierMapper/FolderLinkTierMapper.tsx rename to apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FolderLinkTierMapper/FolderLinkTierMapper.tsx index 3f517109fc7..add02fcb214 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/FolderLinkTierMapper/FolderLinkTierMapper.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FolderLinkTierMapper/FolderLinkTierMapper.tsx @@ -69,11 +69,14 @@ export function FolderLinkTierMapper({

-
+
{TIERS.map((tier) => { const id = `${idPrefix}-${tier}`; return ( -
+
@@ -81,7 +84,11 @@ export function FolderLinkTierMapper({ value={toSlot(value[tier])} onValueChange={(v) => pick(tier, v as SlotValue)} > - + diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/FolderLinkTierMapper/index.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FolderLinkTierMapper/index.ts similarity index 100% rename from apps/desktop/src/renderer/routes/_authenticated/settings/links/components/FolderLinkTierMapper/index.ts rename to apps/desktop/src/renderer/routes/_authenticated/settings/files/components/FolderLinkTierMapper/index.ts diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/files/page.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/files/page.tsx new file mode 100644 index 00000000000..773652e550b --- /dev/null +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/files/page.tsx @@ -0,0 +1,27 @@ +import { createFileRoute } from "@tanstack/react-router"; +import { useMemo } from "react"; +import { useIsV2CloudEnabled } from "renderer/hooks/useIsV2CloudEnabled"; +import { useSettingsSearchQuery } from "renderer/stores/settings-state"; +import { getVisibleItemsForSection } from "../utils/settings-search"; +import { FilesSettings } from "./components/FilesSettings"; + +export const Route = createFileRoute("/_authenticated/settings/files/")({ + component: FilesSettingsPage, +}); + +function FilesSettingsPage() { + const searchQuery = useSettingsSearchQuery(); + const isV2CloudEnabled = useIsV2CloudEnabled(); + + const visibleItems = useMemo( + () => + getVisibleItemsForSection({ + section: "files", + searchQuery, + isV2: isV2CloudEnabled, + }), + [searchQuery, isV2CloudEnabled], + ); + + return ; +} diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/layout.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/layout.tsx index f794e879d68..429fded7687 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/layout.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/layout.tsx @@ -43,7 +43,7 @@ const SECTION_ORDER: SettingsSection[] = [ "git", "agents", "terminal", - "links", + "files", "browser", "environments", "agentAccounts", @@ -78,7 +78,7 @@ const SECTION_PATHS: Partial> = { git: "/settings/git", agents: "/settings/agents", terminal: "/settings/terminal", - links: "/settings/links", + files: "/settings/files", browser: "/settings/browser", experimental: "/settings/experimental", integrations: "/settings/integrations", diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/LinksSettings.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/LinksSettings.tsx deleted file mode 100644 index 5391771eb43..00000000000 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/LinksSettings.tsx +++ /dev/null @@ -1,274 +0,0 @@ -import { Trans, useLingui } from "@lingui/react/macro"; -import { Label } from "@superset/ui/label"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@superset/ui/select"; -import { toast } from "@superset/ui/sonner"; -import { useCallback } from "react"; -import { useV2UserPreferences } from "renderer/hooks/useV2UserPreferences"; -import { - actionLabel, - type FolderTierMap, - type LinkAction, - type LinkTierMap, -} from "renderer/lib/clickPolicy"; -import { HighlightText } from "renderer/routes/_authenticated/settings/components/HighlightText"; -import { useSettingsSearchQuery } from "renderer/stores/settings-state"; -import { - isItemVisible, - SETTING_ITEM_ID, - type SettingItemId, -} from "../../../utils/settings-search"; -import { FolderLinkTierMapper } from "../FolderLinkTierMapper"; -import { LinkTierMapper } from "../LinkTierMapper"; - -const PORT_ACTIONS: LinkAction[] = ["pane", "newTab", "external"]; -const PAGE_ACTIONS: LinkAction[] = ["pane", "newTab", "external"]; - -interface LinksSettingsProps { - visibleItems?: SettingItemId[] | null; -} - -export function LinksSettings({ visibleItems }: LinksSettingsProps) { - const { t } = useLingui(); - const searchQuery = useSettingsSearchQuery(); - const { - preferences, - setFileLinks, - setUrlLinks, - setSidebarFileLinks, - setFolderLinks, - setPortOpenAction, - setPageOpenAction, - } = useV2UserPreferences(); - - const showFile = isItemVisible(SETTING_ITEM_ID.LINKS_FILE, visibleItems); - const showFolder = isItemVisible(SETTING_ITEM_ID.LINKS_FOLDER, visibleItems); - const showUrl = isItemVisible(SETTING_ITEM_ID.LINKS_URL, visibleItems); - const showSidebar = isItemVisible( - SETTING_ITEM_ID.LINKS_SIDEBAR_FILE, - visibleItems, - ); - const showPort = isItemVisible(SETTING_ITEM_ID.LINKS_PORT, visibleItems); - const showPage = isItemVisible(SETTING_ITEM_ID.LINKS_PAGE, visibleItems); - - const handleFileChange = useCallback( - (next: LinkTierMap) => { - setFileLinks(next); - toast.success(t({ message: "Changes saved" })); - }, - [setFileLinks, t], - ); - - const handleUrlChange = useCallback( - (next: LinkTierMap) => { - setUrlLinks(next); - toast.success(t({ message: "Changes saved" })); - }, - [setUrlLinks, t], - ); - - const handleFolderChange = useCallback( - (next: FolderTierMap) => { - setFolderLinks(next); - toast.success(t({ message: "Changes saved" })); - }, - [setFolderLinks, t], - ); - - const handleSidebarChange = useCallback( - (next: LinkTierMap) => { - setSidebarFileLinks(next); - toast.success(t({ message: "Changes saved" })); - }, - [setSidebarFileLinks, t], - ); - - const handlePortChange = useCallback( - (next: LinkAction) => { - setPortOpenAction(next); - toast.success(t({ message: "Changes saved" })); - }, - [setPortOpenAction, t], - ); - - const handlePageChange = useCallback( - (next: LinkAction) => { - setPageOpenAction(next); - toast.success(t({ message: "Changes saved" })); - }, - [setPageOpenAction, t], - ); - - return ( -
-
-

- Links -

-

- - Control what each click — plain or with a modifier — does to a file - or URL. Each row binds one modifier combination to an action. - -

-
- -
- {showSidebar && ( - - )} - - {showPort && ( -
-

- -

-

- - Where detected-port badges in the sidebar open when clicked. - -

-
- - -
-
- )} - - {showPage && ( -
-

- -

-

- - Where Page links in terminals, chat messages, and task markdown - open when clicked. - -

-
- - -
-
- )} - - {showFile && ( - - )} - - {showFolder && ( - - )} - - {showUrl && ( - - )} -
-
- ); -} diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/index.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/index.ts deleted file mode 100644 index 684b25889cd..00000000000 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/links/components/LinksSettings/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { LinksSettings } from "./LinksSettings"; diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/links/page.tsx b/apps/desktop/src/renderer/routes/_authenticated/settings/links/page.tsx index c6b04ff653d..10d3afa4510 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/links/page.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/links/page.tsx @@ -1,27 +1,7 @@ -import { createFileRoute } from "@tanstack/react-router"; -import { useMemo } from "react"; -import { useIsV2CloudEnabled } from "renderer/hooks/useIsV2CloudEnabled"; -import { useSettingsSearchQuery } from "renderer/stores/settings-state"; -import { getVisibleItemsForSection } from "../utils/settings-search"; -import { LinksSettings } from "./components/LinksSettings"; +import { createFileRoute, redirect } from "@tanstack/react-router"; export const Route = createFileRoute("/_authenticated/settings/links/")({ - component: LinksSettingsPage, + beforeLoad: () => { + throw redirect({ to: "/settings/files", replace: true }); + }, }); - -function LinksSettingsPage() { - const searchQuery = useSettingsSearchQuery(); - const isV2CloudEnabled = useIsV2CloudEnabled(); - - const visibleItems = useMemo( - () => - getVisibleItemsForSection({ - section: "links", - searchQuery, - isV2: isV2CloudEnabled, - }), - [searchQuery, isV2CloudEnabled], - ); - - return ; -} diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.test.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.test.ts index 8dc35b5e3a7..c3d8cc26197 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.test.ts +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.test.ts @@ -117,7 +117,7 @@ describe("settings search - usage in sidebar", () => { describe("settings search - auto save", () => { it('lists Auto Save for v2 users when searching "onFocusChange"', () => { const ids = getVisibleItemsForSection({ - section: "behavior", + section: "files", searchQuery: "onFocusChange", isV2: true, }); @@ -130,7 +130,7 @@ describe("settings search - auto save", () => { "on window change", ])('lists Auto Save for v2 users when searching "%s"', (searchQuery) => { const ids = getVisibleItemsForSection({ - section: "behavior", + section: "files", searchQuery, isV2: true, }); diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts index b1b1b0d8def..421f7e42406 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts +++ b/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts @@ -804,7 +804,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.BEHAVIOR_FILE_OPEN_MODE, - section: "behavior", + section: "files", title: "File open mode", description: "Choose how files open when clicked in the file tree or changes view", @@ -823,7 +823,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.BEHAVIOR_FILE_AUTO_SAVE, - section: "behavior", + section: "files", title: "Auto Save", description: "Controls when manually edited files are saved", keywords: [ @@ -912,7 +912,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.BEHAVIOR_OPEN_LINKS_IN_APP, - section: "behavior", + section: "browser", title: "Open links in the in-app browser", description: "Open links from chat and terminal in the in-app browser instead of your default browser", @@ -1191,7 +1191,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.LINKS_FILE, - section: "links", + section: "files", title: "File links", description: "How file paths open when clicked in terminals, chat, and tasks", @@ -1215,7 +1215,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.LINKS_FOLDER, - section: "links", + section: "files", title: "Folder links", description: "How folder paths open when clicked in terminals: reveal in sidebar, editor, or Finder", @@ -1240,7 +1240,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.LINKS_URL, - section: "links", + section: "browser", title: "URL links", description: "How URLs open when clicked in terminals, chat, and tasks", keywords: [ @@ -1265,7 +1265,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.LINKS_SIDEBAR_FILE, - section: "links", + section: "files", title: "Sidebar file rows", description: "How file rows in the file tree, changes list, and diff header open when clicked", @@ -1291,7 +1291,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.LINKS_PORT, - section: "links", + section: "browser", title: "Ports", description: "How detected-port badges in the sidebar open when clicked (in-app or system browser)", @@ -1318,7 +1318,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [ }, { id: SETTING_ITEM_ID.LINKS_PAGE, - section: "links", + section: "browser", title: "Pages", description: "Whether Page links (in terminals, chat, and task markdown) open inside Superset or the system browser", diff --git a/apps/desktop/src/renderer/stores/settings-state.ts b/apps/desktop/src/renderer/stores/settings-state.ts index f27da759370..cdf02c8c961 100644 --- a/apps/desktop/src/renderer/stores/settings-state.ts +++ b/apps/desktop/src/renderer/stores/settings-state.ts @@ -15,7 +15,7 @@ export type SettingsSection = | "git" | "agents" | "terminal" - | "links" + | "files" | "experimental" | "integrations" | "billing" diff --git a/packages/i18n/locales/cs/messages.po b/packages/i18n/locales/cs/messages.po index 561e7e66bff..c9a6d4d227a 100644 --- a/packages/i18n/locales/cs/messages.po +++ b/packages/i18n/locales/cs/messages.po @@ -4007,9 +4007,6 @@ msgstr "Příspěvky" msgid "Control how your local machine is reachable from elsewhere" msgstr "Určete, jak je váš lokální počítač dosažitelný zvenčí" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Určete, co každé kliknutí — prosté i s modifikátorem — udělá se souborem nebo URL. Každý řádek váže jednu kombinaci modifikátorů k jedné akci." - msgid "Controls when manually edited files are saved" msgstr "Určuje, kdy se ručně upravené soubory ukládají" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Upraveno" +msgid "Editing" +msgstr "Úpravy" + msgid "Editing file..." msgstr "Upravuji soubor..." @@ -6589,6 +6589,9 @@ msgstr "Soubor byl na disku smazán. Pořád máte neuložené změny." msgid "Files" msgstr "Soubory" +msgid "Files & Editor" +msgstr "Soubory a editor" + msgid "Files changed" msgstr "Změněné soubory" @@ -8384,9 +8387,6 @@ msgstr "Propojit úkol" msgid "Linked {slug} to workspace" msgstr "{slug} propojeno s pracovním prostorem" -msgid "Links" -msgstr "Odkazy" - msgid "List" msgstr "Seznam" @@ -10141,9 +10141,6 @@ msgstr "na {offScopeHostName} — tady nepoběží" msgid "On a host you can't reach" msgstr "Na hostiteli, ke kterému nemáte přístup" -msgid "On click" -msgstr "Po kliknutí" - msgid "On focus change" msgstr "Při změně zaměření" @@ -10690,6 +10687,12 @@ msgstr "Otevřen existující pracovní prostor" msgid "opened PR #841 for review" msgstr "otevřel PR #841 k revizi" +msgid "Opening files" +msgstr "Otevírání souborů" + +msgid "Opening folders" +msgstr "Otevírání složek" + msgid "Opening worktree..." msgstr "Otevírám worktree..." diff --git a/packages/i18n/locales/de/messages.po b/packages/i18n/locales/de/messages.po index 2e4350e1300..f687b634c5b 100644 --- a/packages/i18n/locales/de/messages.po +++ b/packages/i18n/locales/de/messages.po @@ -4007,9 +4007,6 @@ msgstr "Beiträge" msgid "Control how your local machine is reachable from elsewhere" msgstr "Lege fest, wie deine lokale Maschine von außen erreichbar ist" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Lege fest, was jeder Klick — einfach oder mit Modifikator — mit einer Datei oder URL macht. Jede Zeile bindet eine Modifikator-Kombination an eine Aktion." - msgid "Controls when manually edited files are saved" msgstr "Legt fest, wann manuell bearbeitete Dateien gespeichert werden" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Bearbeitet" +msgid "Editing" +msgstr "Bearbeitung" + msgid "Editing file..." msgstr "Datei wird bearbeitet..." @@ -6589,6 +6589,9 @@ msgstr "Die Datei wurde auf der Festplatte gelöscht. Du hast noch ungespeichert msgid "Files" msgstr "Dateien" +msgid "Files & Editor" +msgstr "Dateien & Editor" + msgid "Files changed" msgstr "Geänderte Dateien" @@ -8384,9 +8387,6 @@ msgstr "Aufgabe verknüpfen" msgid "Linked {slug} to workspace" msgstr "{slug} mit Arbeitsbereich verknüpft" -msgid "Links" -msgstr "Links" - msgid "List" msgstr "Liste" @@ -10141,9 +10141,6 @@ msgstr "auf {offScopeHostName} — läuft hier nicht" msgid "On a host you can't reach" msgstr "Auf einem Host, den du nicht erreichst" -msgid "On click" -msgstr "Beim Klick" - msgid "On focus change" msgstr "Bei Fokuswechsel" @@ -10690,6 +10687,12 @@ msgstr "Vorhandenen Arbeitsbereich geöffnet" msgid "opened PR #841 for review" msgstr "PR #841 zum Review geöffnet" +msgid "Opening files" +msgstr "Dateien öffnen" + +msgid "Opening folders" +msgstr "Ordner öffnen" + msgid "Opening worktree..." msgstr "Worktree wird geöffnet..." diff --git a/packages/i18n/locales/en/messages.po b/packages/i18n/locales/en/messages.po index e52779d98d5..b9e814c52cd 100644 --- a/packages/i18n/locales/en/messages.po +++ b/packages/i18n/locales/en/messages.po @@ -4007,9 +4007,6 @@ msgstr "Contributions" msgid "Control how your local machine is reachable from elsewhere" msgstr "Control how your local machine is reachable from elsewhere" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." - msgid "Controls when manually edited files are saved" msgstr "Controls when manually edited files are saved" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Edited" +msgid "Editing" +msgstr "Editing" + msgid "Editing file..." msgstr "Editing file..." @@ -6589,6 +6589,9 @@ msgstr "File was deleted on disk. You still have unsaved changes." msgid "Files" msgstr "Files" +msgid "Files & Editor" +msgstr "Files & Editor" + msgid "Files changed" msgstr "Files changed" @@ -8384,9 +8387,6 @@ msgstr "Link task" msgid "Linked {slug} to workspace" msgstr "Linked {slug} to workspace" -msgid "Links" -msgstr "Links" - msgid "List" msgstr "List" @@ -10141,9 +10141,6 @@ msgstr "on {offScopeHostName} — won't run here" msgid "On a host you can't reach" msgstr "On a host you can't reach" -msgid "On click" -msgstr "On click" - msgid "On focus change" msgstr "On focus change" @@ -10690,6 +10687,12 @@ msgstr "Opened existing workspace" msgid "opened PR #841 for review" msgstr "opened PR #841 for review" +msgid "Opening files" +msgstr "Opening files" + +msgid "Opening folders" +msgstr "Opening folders" + msgid "Opening worktree..." msgstr "Opening worktree..." diff --git a/packages/i18n/locales/es/messages.po b/packages/i18n/locales/es/messages.po index be7d349a58f..30e9fc38ef9 100644 --- a/packages/i18n/locales/es/messages.po +++ b/packages/i18n/locales/es/messages.po @@ -4007,9 +4007,6 @@ msgstr "Contribuciones" msgid "Control how your local machine is reachable from elsewhere" msgstr "Controla cómo se puede acceder a tu máquina local desde el exterior" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Controla qué hace cada clic, solo o con un modificador, sobre un archivo o una URL. Cada fila asocia una combinación de modificadores a una acción." - msgid "Controls when manually edited files are saved" msgstr "Controla cuándo se guardan los archivos editados manualmente" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Editada" +msgid "Editing" +msgstr "Edición" + msgid "Editing file..." msgstr "Editando archivo..." @@ -6589,6 +6589,9 @@ msgstr "El archivo se eliminó del disco. Todavía tienes cambios sin guardar." msgid "Files" msgstr "Archivos" +msgid "Files & Editor" +msgstr "Archivos y editor" + msgid "Files changed" msgstr "Archivos modificados" @@ -8384,9 +8387,6 @@ msgstr "Enlazar tarea" msgid "Linked {slug} to workspace" msgstr "{slug} enlazado al espacio de trabajo" -msgid "Links" -msgstr "Enlaces" - msgid "List" msgstr "Lista" @@ -10141,9 +10141,6 @@ msgstr "en {offScopeHostName}: no se ejecutará aquí" msgid "On a host you can't reach" msgstr "En un host que no puedes alcanzar" -msgid "On click" -msgstr "Al hacer clic" - msgid "On focus change" msgstr "Al cambiar el foco" @@ -10690,6 +10687,12 @@ msgstr "Se abrió un espacio de trabajo existente" msgid "opened PR #841 for review" msgstr "abrió la PR #841 para revisión" +msgid "Opening files" +msgstr "Abrir archivos" + +msgid "Opening folders" +msgstr "Abrir carpetas" + msgid "Opening worktree..." msgstr "Abriendo el worktree..." diff --git a/packages/i18n/locales/fr/messages.po b/packages/i18n/locales/fr/messages.po index 8d4ea5cdc18..92ed9cb0368 100644 --- a/packages/i18n/locales/fr/messages.po +++ b/packages/i18n/locales/fr/messages.po @@ -4007,9 +4007,6 @@ msgstr "Contributions" msgid "Control how your local machine is reachable from elsewhere" msgstr "Contrôlez comment votre machine locale est joignable depuis l'extérieur" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Contrôlez ce que fait chaque clic — simple ou avec un modificateur — sur un fichier ou une URL. Chaque ligne associe une combinaison de modificateurs à une action." - msgid "Controls when manually edited files are saved" msgstr "Contrôle le moment où les fichiers modifiés manuellement sont enregistrés" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Modifiée" +msgid "Editing" +msgstr "Édition" + msgid "Editing file..." msgstr "Modification du fichier..." @@ -6589,6 +6589,9 @@ msgstr "Le fichier a été supprimé sur le disque. Vous avez encore des modific msgid "Files" msgstr "Fichiers" +msgid "Files & Editor" +msgstr "Fichiers et éditeur" + msgid "Files changed" msgstr "Fichiers modifiés" @@ -8384,9 +8387,6 @@ msgstr "Lier une tâche" msgid "Linked {slug} to workspace" msgstr "{slug} lié à l'espace de travail" -msgid "Links" -msgstr "Liens" - msgid "List" msgstr "Liste" @@ -10141,9 +10141,6 @@ msgstr "sur {offScopeHostName} — ne s'exécutera pas ici" msgid "On a host you can't reach" msgstr "Sur un hôte que vous ne pouvez pas joindre" -msgid "On click" -msgstr "Au clic" - msgid "On focus change" msgstr "Lors du changement de focus" @@ -10690,6 +10687,12 @@ msgstr "Espace de travail existant ouvert" msgid "opened PR #841 for review" msgstr "PR #841 ouverte pour revue" +msgid "Opening files" +msgstr "Ouverture des fichiers" + +msgid "Opening folders" +msgstr "Ouverture des dossiers" + msgid "Opening worktree..." msgstr "Ouverture du worktree..." diff --git a/packages/i18n/locales/id/messages.po b/packages/i18n/locales/id/messages.po index c9387bb9877..ad0c32bd306 100644 --- a/packages/i18n/locales/id/messages.po +++ b/packages/i18n/locales/id/messages.po @@ -4007,9 +4007,6 @@ msgstr "Kontribusi" msgid "Control how your local machine is reachable from elsewhere" msgstr "Kontrol bagaimana mesin lokal Anda dapat diakses dari luar" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Atur apa yang dilakukan tiap klik — biasa atau dengan modifier — pada sebuah file atau URL. Tiap baris mengikat satu kombinasi modifier ke satu aksi." - msgid "Controls when manually edited files are saved" msgstr "Mengatur kapan file yang diedit secara manual disimpan" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Diedit" +msgid "Editing" +msgstr "Pengeditan" + msgid "Editing file..." msgstr "Mengedit file..." @@ -6589,6 +6589,9 @@ msgstr "File dihapus di disk. Anda masih punya perubahan yang belum disimpan." msgid "Files" msgstr "File" +msgid "Files & Editor" +msgstr "File & Editor" + msgid "Files changed" msgstr "File yang berubah" @@ -8384,9 +8387,6 @@ msgstr "Tautkan tugas" msgid "Linked {slug} to workspace" msgstr "{slug} ditautkan ke workspace" -msgid "Links" -msgstr "Tautan" - msgid "List" msgstr "Daftar" @@ -10141,9 +10141,6 @@ msgstr "di {offScopeHostName} — tidak akan berjalan di sini" msgid "On a host you can't reach" msgstr "Di host yang tidak bisa kamu jangkau" -msgid "On click" -msgstr "Saat diklik" - msgid "On focus change" msgstr "Saat fokus berubah" @@ -10690,6 +10687,12 @@ msgstr "Membuka workspace yang ada" msgid "opened PR #841 for review" msgstr "membuka PR #841 untuk direview" +msgid "Opening files" +msgstr "Membuka file" + +msgid "Opening folders" +msgstr "Membuka folder" + msgid "Opening worktree..." msgstr "Membuka worktree..." diff --git a/packages/i18n/locales/it/messages.po b/packages/i18n/locales/it/messages.po index 6fd8a90acd2..ef0d1e68c54 100644 --- a/packages/i18n/locales/it/messages.po +++ b/packages/i18n/locales/it/messages.po @@ -4007,9 +4007,6 @@ msgstr "Contributi" msgid "Control how your local machine is reachable from elsewhere" msgstr "Controlla come la tua macchina locale è raggiungibile dall'esterno" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Controlla cosa fa ogni clic — semplice o con un modificatore — su un file o un URL. Ogni riga associa una combinazione di modificatori a un'azione." - msgid "Controls when manually edited files are saved" msgstr "Controlla quando vengono salvati i file modificati manualmente" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Modificato" +msgid "Editing" +msgstr "Modifica" + msgid "Editing file..." msgstr "Modifica del file..." @@ -6589,6 +6589,9 @@ msgstr "Il file è stato eliminato dal disco. Hai ancora modifiche non salvate." msgid "Files" msgstr "File" +msgid "Files & Editor" +msgstr "File ed editor" + msgid "Files changed" msgstr "File modificati" @@ -8384,9 +8387,6 @@ msgstr "Collega un task" msgid "Linked {slug} to workspace" msgstr "{slug} collegato al workspace" -msgid "Links" -msgstr "Link" - msgid "List" msgstr "Elenco" @@ -10141,9 +10141,6 @@ msgstr "su {offScopeHostName} — non verrà eseguita qui" msgid "On a host you can't reach" msgstr "Su un host che non puoi raggiungere" -msgid "On click" -msgstr "Al clic" - msgid "On focus change" msgstr "Al cambio di focus" @@ -10690,6 +10687,12 @@ msgstr "Aperto il workspace esistente" msgid "opened PR #841 for review" msgstr "aperta la PR #841 per la revisione" +msgid "Opening files" +msgstr "Apertura dei file" + +msgid "Opening folders" +msgstr "Apertura delle cartelle" + msgid "Opening worktree..." msgstr "Apertura del worktree..." diff --git a/packages/i18n/locales/ja/messages.po b/packages/i18n/locales/ja/messages.po index 5b8206b6ef3..844daa9dd38 100644 --- a/packages/i18n/locales/ja/messages.po +++ b/packages/i18n/locales/ja/messages.po @@ -4007,9 +4007,6 @@ msgstr "コントリビューション" msgid "Control how your local machine is reachable from elsewhere" msgstr "このマシンに外部からどのように接続できるかを設定" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "クリック(修飾キーの有無)ごとのファイルやURLへの動作を設定します。各行が1つの修飾キーの組み合わせを1つのアクションに割り当てます。" - msgid "Controls when manually edited files are saved" msgstr "手動で編集したファイルを保存するタイミングを制御します" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "編集" +msgid "Editing" +msgstr "編集" + msgid "Editing file..." msgstr "ファイルを編集中..." @@ -6589,6 +6589,9 @@ msgstr "ファイルはディスク上で削除されました。未保存の変 msgid "Files" msgstr "ファイル" +msgid "Files & Editor" +msgstr "ファイルとエディター" + msgid "Files changed" msgstr "変更されたファイル" @@ -8384,9 +8387,6 @@ msgstr "タスクをリンク" msgid "Linked {slug} to workspace" msgstr "{slug}をワークスペースにリンクしました" -msgid "Links" -msgstr "リンク" - msgid "List" msgstr "リスト" @@ -10141,9 +10141,6 @@ msgstr "{offScopeHostName}上 — ここでは実行されません" msgid "On a host you can't reach" msgstr "接続できないホスト上" -msgid "On click" -msgstr "クリック時" - msgid "On focus change" msgstr "フォーカス変更時" @@ -10690,6 +10687,12 @@ msgstr "既存のワークスペースを開きました" msgid "opened PR #841 for review" msgstr "レビュー用にPR #841を作成" +msgid "Opening files" +msgstr "ファイルを開く" + +msgid "Opening folders" +msgstr "フォルダーを開く" + msgid "Opening worktree..." msgstr "ワークツリーを開いています..." diff --git a/packages/i18n/locales/ko/messages.po b/packages/i18n/locales/ko/messages.po index bae6a476156..539ba2d858d 100644 --- a/packages/i18n/locales/ko/messages.po +++ b/packages/i18n/locales/ko/messages.po @@ -4007,9 +4007,6 @@ msgstr "기여" msgid "Control how your local machine is reachable from elsewhere" msgstr "외부에서 로컬 머신에 접근하는 방식을 제어합니다" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "파일이나 URL을 클릭할 때 — 그냥 또는 보조 키와 함께 — 어떤 동작을 할지 설정합니다. 각 행은 보조 키 조합 하나를 동작 하나에 연결합니다." - msgid "Controls when manually edited files are saved" msgstr "수동으로 편집한 파일을 저장할 시점을 제어합니다" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "편집됨" +msgid "Editing" +msgstr "편집" + msgid "Editing file..." msgstr "파일 수정 중..." @@ -6589,6 +6589,9 @@ msgstr "디스크에서 파일이 삭제되었습니다. 저장하지 않은 변 msgid "Files" msgstr "파일" +msgid "Files & Editor" +msgstr "파일 및 편집기" + msgid "Files changed" msgstr "변경된 파일" @@ -8384,9 +8387,6 @@ msgstr "작업 연결" msgid "Linked {slug} to workspace" msgstr "{slug}을(를) 워크스페이스에 연결했습니다" -msgid "Links" -msgstr "링크" - msgid "List" msgstr "목록" @@ -10141,9 +10141,6 @@ msgstr "{offScopeHostName}에 있음 — 여기서는 실행되지 않습니다" msgid "On a host you can't reach" msgstr "접근할 수 없는 호스트에 있음" -msgid "On click" -msgstr "클릭 시" - msgid "On focus change" msgstr "포커스 변경 시" @@ -10690,6 +10687,12 @@ msgstr "기존 워크스페이스를 열었습니다" msgid "opened PR #841 for review" msgstr "리뷰용 PR #841 생성" +msgid "Opening files" +msgstr "파일 열기" + +msgid "Opening folders" +msgstr "폴더 열기" + msgid "Opening worktree..." msgstr "worktree를 여는 중..." diff --git a/packages/i18n/locales/nl/messages.po b/packages/i18n/locales/nl/messages.po index 90f917474a6..35a988a7160 100644 --- a/packages/i18n/locales/nl/messages.po +++ b/packages/i18n/locales/nl/messages.po @@ -4007,9 +4007,6 @@ msgstr "Bijdragen" msgid "Control how your local machine is reachable from elsewhere" msgstr "Bepaal hoe je lokale machine van buitenaf bereikbaar is" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Bepaal wat elke klik — kaal of met een modifier — met een bestand of URL doet. Elke rij koppelt één modifiercombinatie aan een actie." - msgid "Controls when manually edited files are saved" msgstr "Bepaalt wanneer handmatig bewerkte bestanden worden opgeslagen" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Bewerkt" +msgid "Editing" +msgstr "Bewerken" + msgid "Editing file..." msgstr "Bestand bewerken..." @@ -6589,6 +6589,9 @@ msgstr "Het bestand is op schijf verwijderd. Je hebt nog niet-opgeslagen wijzigi msgid "Files" msgstr "Bestanden" +msgid "Files & Editor" +msgstr "Bestanden en editor" + msgid "Files changed" msgstr "Gewijzigde bestanden" @@ -8384,9 +8387,6 @@ msgstr "Taak koppelen" msgid "Linked {slug} to workspace" msgstr "{slug} gekoppeld aan werkruimte" -msgid "Links" -msgstr "Links" - msgid "List" msgstr "Lijst" @@ -10141,9 +10141,6 @@ msgstr "op {offScopeHostName} — draait hier niet" msgid "On a host you can't reach" msgstr "Op een host die je niet kunt bereiken" -msgid "On click" -msgstr "Bij klikken" - msgid "On focus change" msgstr "Bij focuswijziging" @@ -10690,6 +10687,12 @@ msgstr "Bestaande werkruimte geopend" msgid "opened PR #841 for review" msgstr "PR #841 geopend voor review" +msgid "Opening files" +msgstr "Bestanden openen" + +msgid "Opening folders" +msgstr "Mappen openen" + msgid "Opening worktree..." msgstr "Worktree openen..." diff --git a/packages/i18n/locales/pl/messages.po b/packages/i18n/locales/pl/messages.po index ccc4b83c7de..495b2bd5f59 100644 --- a/packages/i18n/locales/pl/messages.po +++ b/packages/i18n/locales/pl/messages.po @@ -4007,9 +4007,6 @@ msgstr "Wkład" msgid "Control how your local machine is reachable from elsewhere" msgstr "Kontroluj, jak twoja lokalna maszyna jest osiągalna z zewnątrz" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Ustal, co robi każde kliknięcie — zwykłe lub z modyfikatorem — na pliku lub adresie URL. Każdy wiersz wiąże jedną kombinację modyfikatorów z akcją." - msgid "Controls when manually edited files are saved" msgstr "Określa, kiedy ręcznie edytowane pliki są zapisywane" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Edytowano" +msgid "Editing" +msgstr "Edycja" + msgid "Editing file..." msgstr "Edytowanie pliku..." @@ -6589,6 +6589,9 @@ msgstr "Plik został usunięty z dysku. Nadal masz niezapisane zmiany." msgid "Files" msgstr "Pliki" +msgid "Files & Editor" +msgstr "Pliki i edytor" + msgid "Files changed" msgstr "Zmienione pliki" @@ -8384,9 +8387,6 @@ msgstr "Powiąż zadanie" msgid "Linked {slug} to workspace" msgstr "Powiązano {slug} z obszarem roboczym" -msgid "Links" -msgstr "Linki" - msgid "List" msgstr "Lista" @@ -10141,9 +10141,6 @@ msgstr "na {offScopeHostName} — nie uruchomi się tutaj" msgid "On a host you can't reach" msgstr "Na hoście, do którego nie masz dostępu" -msgid "On click" -msgstr "Po kliknięciu" - msgid "On focus change" msgstr "Przy zmianie fokusu" @@ -10690,6 +10687,12 @@ msgstr "Otwarto istniejący obszar roboczy" msgid "opened PR #841 for review" msgstr "otworzył PR #841 do przeglądu" +msgid "Opening files" +msgstr "Otwieranie plików" + +msgid "Opening folders" +msgstr "Otwieranie folderów" + msgid "Opening worktree..." msgstr "Otwieranie worktree..." diff --git a/packages/i18n/locales/pt-BR/messages.po b/packages/i18n/locales/pt-BR/messages.po index 95fcac7ae83..381df08acba 100644 --- a/packages/i18n/locales/pt-BR/messages.po +++ b/packages/i18n/locales/pt-BR/messages.po @@ -4007,9 +4007,6 @@ msgstr "Contribuições" msgid "Control how your local machine is reachable from elsewhere" msgstr "Controle como sua máquina local pode ser acessada de fora" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Controle o que cada clique — simples ou com modificador — faz com um arquivo ou uma URL. Cada linha liga uma combinação de modificadores a uma ação." - msgid "Controls when manually edited files are saved" msgstr "Controla quando arquivos editados manualmente são salvos" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Editado" +msgid "Editing" +msgstr "Edição" + msgid "Editing file..." msgstr "Editando o arquivo..." @@ -6589,6 +6589,9 @@ msgstr "O arquivo foi excluído do disco. Você ainda tem alterações não salv msgid "Files" msgstr "Arquivos" +msgid "Files & Editor" +msgstr "Arquivos e editor" + msgid "Files changed" msgstr "Arquivos alterados" @@ -8384,9 +8387,6 @@ msgstr "Vincular tarefa" msgid "Linked {slug} to workspace" msgstr "{slug} vinculada à área de trabalho" -msgid "Links" -msgstr "Links" - msgid "List" msgstr "Lista" @@ -10141,9 +10141,6 @@ msgstr "em {offScopeHostName} — não vai rodar aqui" msgid "On a host you can't reach" msgstr "Em um host que você não alcança" -msgid "On click" -msgstr "Ao clicar" - msgid "On focus change" msgstr "Ao alterar o foco" @@ -10690,6 +10687,12 @@ msgstr "Área de trabalho existente aberta" msgid "opened PR #841 for review" msgstr "abriu o PR #841 para revisão" +msgid "Opening files" +msgstr "Abertura de arquivos" + +msgid "Opening folders" +msgstr "Abertura de pastas" + msgid "Opening worktree..." msgstr "Abrindo worktree..." diff --git a/packages/i18n/locales/ru/messages.po b/packages/i18n/locales/ru/messages.po index 35107390998..3fef4364298 100644 --- a/packages/i18n/locales/ru/messages.po +++ b/packages/i18n/locales/ru/messages.po @@ -4007,9 +4007,6 @@ msgstr "Вклад" msgid "Control how your local machine is reachable from elsewhere" msgstr "Управляйте тем, как ваша локальная машина доступна извне" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Определите, что делает каждый клик — обычный или с модификатором — с файлом или URL. Каждая строка привязывает одну комбинацию модификаторов к действию." - msgid "Controls when manually edited files are saved" msgstr "Определяет, когда сохраняются файлы, отредактированные вручную" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Изменён" +msgid "Editing" +msgstr "Редактирование" + msgid "Editing file..." msgstr "Редактирование файла..." @@ -6589,6 +6589,9 @@ msgstr "Файл удалён на диске. У вас остались нес msgid "Files" msgstr "Файлы" +msgid "Files & Editor" +msgstr "Файлы и редактор" + msgid "Files changed" msgstr "Изменённые файлы" @@ -8384,9 +8387,6 @@ msgstr "Привязать задачу" msgid "Linked {slug} to workspace" msgstr "{slug} привязана к рабочей области" -msgid "Links" -msgstr "Ссылки" - msgid "List" msgstr "Список" @@ -10141,9 +10141,6 @@ msgstr "на {offScopeHostName} — здесь не запустится" msgid "On a host you can't reach" msgstr "На недоступном хосте" -msgid "On click" -msgstr "По клику" - msgid "On focus change" msgstr "При смене фокуса" @@ -10690,6 +10687,12 @@ msgstr "Открыта существующая рабочая область" msgid "opened PR #841 for review" msgstr "открыл PR #841 на ревью" +msgid "Opening files" +msgstr "Открытие файлов" + +msgid "Opening folders" +msgstr "Открытие папок" + msgid "Opening worktree..." msgstr "Открытие worktree..." diff --git a/packages/i18n/locales/tr/messages.po b/packages/i18n/locales/tr/messages.po index 6d164a548b6..c47dfcaaa00 100644 --- a/packages/i18n/locales/tr/messages.po +++ b/packages/i18n/locales/tr/messages.po @@ -4007,9 +4007,6 @@ msgstr "Katkılar" msgid "Control how your local machine is reachable from elsewhere" msgstr "Yerel makinenize dışarıdan nasıl erişileceğini kontrol edin" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Her tıklamanın — düz ya da değiştirici tuşlu — bir dosyaya veya URL'ye ne yapacağını denetleyin. Her satır bir değiştirici birleşimini bir eyleme bağlar." - msgid "Controls when manually edited files are saved" msgstr "Elle düzenlenen dosyaların ne zaman kaydedileceğini belirler" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Düzenlendi" +msgid "Editing" +msgstr "Düzenleme" + msgid "Editing file..." msgstr "Dosya düzenleniyor..." @@ -6589,6 +6589,9 @@ msgstr "Dosya diskten silindi. Hâlâ kaydedilmemiş değişiklikleriniz var." msgid "Files" msgstr "Dosyalar" +msgid "Files & Editor" +msgstr "Dosyalar ve Düzenleyici" + msgid "Files changed" msgstr "Değişen dosyalar" @@ -8384,9 +8387,6 @@ msgstr "Görev bağla" msgid "Linked {slug} to workspace" msgstr "{slug} çalışma alanına bağlandı" -msgid "Links" -msgstr "Bağlantılar" - msgid "List" msgstr "Liste" @@ -10141,9 +10141,6 @@ msgstr "{offScopeHostName} üzerinde — burada çalışmaz" msgid "On a host you can't reach" msgstr "Erişemediğin bir ana makinede" -msgid "On click" -msgstr "Tıklandığında" - msgid "On focus change" msgstr "Odak değiştiğinde" @@ -10690,6 +10687,12 @@ msgstr "Mevcut çalışma alanı açıldı" msgid "opened PR #841 for review" msgstr "inceleme için PR #841 açtı" +msgid "Opening files" +msgstr "Dosyaları açma" + +msgid "Opening folders" +msgstr "Klasörleri açma" + msgid "Opening worktree..." msgstr "Worktree açılıyor..." diff --git a/packages/i18n/locales/vi/messages.po b/packages/i18n/locales/vi/messages.po index c637b2d972b..e3528538b58 100644 --- a/packages/i18n/locales/vi/messages.po +++ b/packages/i18n/locales/vi/messages.po @@ -4007,9 +4007,6 @@ msgstr "Đóng góp" msgid "Control how your local machine is reachable from elsewhere" msgstr "Kiểm soát cách máy cục bộ của bạn có thể được truy cập từ bên ngoài" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "Chọn mỗi kiểu nhấp — thường hoặc kèm phím bổ trợ — sẽ làm gì với một tệp hoặc URL. Mỗi dòng gắn một tổ hợp phím bổ trợ với một hành động." - msgid "Controls when manually edited files are saved" msgstr "Kiểm soát thời điểm lưu các tệp được chỉnh sửa thủ công" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "Đã chỉnh sửa" +msgid "Editing" +msgstr "Chỉnh sửa" + msgid "Editing file..." msgstr "Đang sửa tệp..." @@ -6589,6 +6589,9 @@ msgstr "Tệp đã bị xóa trên đĩa. Bạn vẫn còn thay đổi chưa lư msgid "Files" msgstr "Tệp" +msgid "Files & Editor" +msgstr "Tệp và trình soạn thảo" + msgid "Files changed" msgstr "Tệp đã thay đổi" @@ -8384,9 +8387,6 @@ msgstr "Liên kết tác vụ" msgid "Linked {slug} to workspace" msgstr "Đã liên kết {slug} với workspace" -msgid "Links" -msgstr "Liên kết" - msgid "List" msgstr "Danh sách" @@ -10141,9 +10141,6 @@ msgstr "trên {offScopeHostName} — sẽ không chạy ở đây" msgid "On a host you can't reach" msgstr "Trên một host bạn không kết nối được" -msgid "On click" -msgstr "Khi nhấp" - msgid "On focus change" msgstr "Khi thay đổi tiêu điểm" @@ -10690,6 +10687,12 @@ msgstr "Đã mở workspace có sẵn" msgid "opened PR #841 for review" msgstr "đã mở PR #841 để review" +msgid "Opening files" +msgstr "Mở tệp" + +msgid "Opening folders" +msgstr "Mở thư mục" + msgid "Opening worktree..." msgstr "Đang mở worktree..." diff --git a/packages/i18n/locales/zh-CN/messages.po b/packages/i18n/locales/zh-CN/messages.po index 47a67f222fb..c1749b69cdd 100644 --- a/packages/i18n/locales/zh-CN/messages.po +++ b/packages/i18n/locales/zh-CN/messages.po @@ -4007,9 +4007,6 @@ msgstr "贡献" msgid "Control how your local machine is reachable from elsewhere" msgstr "控制这台机器如何从外部访问" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "控制每种点击(普通点击或配合修饰键)对文件或URL的行为。每一行将一种修饰键组合绑定到一个操作。" - msgid "Controls when manually edited files are saved" msgstr "控制手动编辑的文件何时保存" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "已编辑" +msgid "Editing" +msgstr "编辑" + msgid "Editing file..." msgstr "正在编辑文件..." @@ -6589,6 +6589,9 @@ msgstr "文件已在磁盘上被删除。你仍有未保存的更改。" msgid "Files" msgstr "文件" +msgid "Files & Editor" +msgstr "文件与编辑器" + msgid "Files changed" msgstr "更改的文件" @@ -8384,9 +8387,6 @@ msgstr "关联任务" msgid "Linked {slug} to workspace" msgstr "已将{slug}关联到工作区" -msgid "Links" -msgstr "链接" - msgid "List" msgstr "列表" @@ -10141,9 +10141,6 @@ msgstr "在{offScopeHostName}上,不会在这里运行" msgid "On a host you can't reach" msgstr "在你无法连接的主机上" -msgid "On click" -msgstr "点击时" - msgid "On focus change" msgstr "焦点更改时" @@ -10690,6 +10687,12 @@ msgstr "已打开现有工作区" msgid "opened PR #841 for review" msgstr "开了PR #841待审查" +msgid "Opening files" +msgstr "打开文件" + +msgid "Opening folders" +msgstr "打开文件夹" + msgid "Opening worktree..." msgstr "正在打开worktree..." diff --git a/packages/i18n/locales/zh-TW/messages.po b/packages/i18n/locales/zh-TW/messages.po index 7e61470d8d2..5963baebe95 100644 --- a/packages/i18n/locales/zh-TW/messages.po +++ b/packages/i18n/locales/zh-TW/messages.po @@ -4007,9 +4007,6 @@ msgstr "貢獻" msgid "Control how your local machine is reachable from elsewhere" msgstr "控制這台機器如何從外部存取" -msgid "Control what each click — plain or with a modifier — does to a file or URL. Each row binds one modifier combination to an action." -msgstr "控制每種點選(普通點選或配合修飾鍵)對檔案或URL的行為。每一行將一種修飾鍵組合繫結到一個操作。" - msgid "Controls when manually edited files are saved" msgstr "控制手動編輯的檔案何時儲存" @@ -5699,6 +5696,9 @@ msgctxt "github release action" msgid "Edited" msgstr "已編輯" +msgid "Editing" +msgstr "編輯" + msgid "Editing file..." msgstr "正在編輯檔案..." @@ -6589,6 +6589,9 @@ msgstr "檔案已在磁碟上被刪除。你仍有未儲存的更改。" msgid "Files" msgstr "檔案" +msgid "Files & Editor" +msgstr "檔案與編輯器" + msgid "Files changed" msgstr "更改的檔案" @@ -8384,9 +8387,6 @@ msgstr "關聯任務" msgid "Linked {slug} to workspace" msgstr "已將{slug}關聯到工作區" -msgid "Links" -msgstr "連結" - msgid "List" msgstr "列表" @@ -10141,9 +10141,6 @@ msgstr "在{offScopeHostName}上,不會在這裡執行" msgid "On a host you can't reach" msgstr "在你無法連線的主機上" -msgid "On click" -msgstr "點選時" - msgid "On focus change" msgstr "焦點變更時" @@ -10690,6 +10687,12 @@ msgstr "已開啟現有工作區" msgid "opened PR #841 for review" msgstr "開了PR #841待審查" +msgid "Opening files" +msgstr "開啟檔案" + +msgid "Opening folders" +msgstr "開啟資料夾" + msgid "Opening worktree..." msgstr "正在開啟worktree..."