diff --git a/.vscode/settings.json b/.vscode/settings.json index 57d22dcb8e..974a4ff64e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -42,5 +42,8 @@ }, "eslint.rules.customizations": [ { "rule": "*", "severity": "warn" } + ], + "cSpell.words": [ + "Trilium" ] -} \ No newline at end of file +} diff --git a/apps/build-docs/package.json b/apps/build-docs/package.json index 8be2d93ce3..f259de6c4c 100644 --- a/apps/build-docs/package.json +++ b/apps/build-docs/package.json @@ -9,9 +9,9 @@ "keywords": [], "author": "Elian Doran ", "license": "AGPL-3.0-only", - "packageManager": "pnpm@10.28.2", + "packageManager": "pnpm@10.29.1", "devDependencies": { - "@redocly/cli": "2.14.9", + "@redocly/cli": "2.15.1", "archiver": "7.0.1", "fs-extra": "11.3.3", "react": "19.2.4", diff --git a/apps/client/index.html b/apps/client/index.html index e1db353327..12f653666f 100644 --- a/apps/client/index.html +++ b/apps/client/index.html @@ -13,6 +13,7 @@ +
diff --git a/apps/client/package.json b/apps/client/package.json index 1129d8c413..4f3e3e0275 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -27,7 +27,7 @@ "@mermaid-js/layout-elk": "0.2.0", "@mind-elixir/node-menu": "5.0.1", "@popperjs/core": "2.11.8", - "@preact/signals": "2.6.1", + "@preact/signals": "2.6.2", "@triliumnext/ckeditor5": "workspace:*", "@triliumnext/codemirror": "workspace:*", "@triliumnext/commons": "workspace:*", @@ -42,8 +42,8 @@ "color": "5.0.3", "debounce": "3.0.0", "draggabilly": "3.0.0", - "force-graph": "1.51.0", - "globals": "17.0.0", + "force-graph": "1.51.1", + "globals": "17.3.0", "i18next": "25.8.0", "i18next-http-backend": "3.0.2", "jquery": "4.0.0", @@ -56,12 +56,12 @@ "mark.js": "8.11.1", "marked": "17.0.1", "mermaid": "11.12.2", - "mind-elixir": "5.6.1", + "mind-elixir": "5.8.0", "normalize.css": "8.0.1", "panzoom": "9.4.3", - "preact": "10.28.2", + "preact": "10.28.3", "react-i18next": "16.5.4", - "react-window": "2.2.5", + "react-window": "2.2.6", "reveal.js": "5.2.1", "svg-pan-zoom": "3.6.2", "tabulator-tables": "6.3.1", @@ -78,7 +78,7 @@ "@types/reveal.js": "5.2.2", "@types/tabulator-tables": "6.3.1", "copy-webpack-plugin": "13.0.1", - "happy-dom": "20.4.0", + "happy-dom": "20.5.0", "lightningcss": "1.31.1", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.2.0" diff --git a/apps/client/src/desktop.ts b/apps/client/src/desktop.ts index cb90e998f2..6f22d3fc7b 100644 --- a/apps/client/src/desktop.ts +++ b/apps/client/src/desktop.ts @@ -46,10 +46,6 @@ if (utils.isElectron()) { electronContextMenu.setupContextMenu(); } -if (utils.isPWA()) { - initPWATopbarColor(); -} - function initOnElectron() { const electron: typeof Electron = utils.dynamicRequire("electron"); electron.ipcRenderer.on("globalShortcut", async (event, actionName) => appContext.triggerCommand(actionName)); @@ -99,15 +95,22 @@ function initFullScreenDetection(currentWindow: Electron.BrowserWindow) { } function initTransparencyEffects(style: CSSStyleDeclaration, currentWindow: Electron.BrowserWindow) { + const material = style.getPropertyValue("--background-material").trim(); if (window.glob.platform === "win32") { - const material = style.getPropertyValue("--background-material"); - // TriliumNextTODO: find a nicer way to make TypeScript happy – unfortunately TS did not like Array.includes here const bgMaterialOptions = ["auto", "none", "mica", "acrylic", "tabbed"] as const; const foundBgMaterialOption = bgMaterialOptions.find((bgMaterialOption) => material === bgMaterialOption); if (foundBgMaterialOption) { currentWindow.setBackgroundMaterial(foundBgMaterialOption); } } + + if (window.glob.platform === "darwin") { + const bgMaterialOptions = [ "popover", "tooltip", "titlebar", "selection", "menu", "sidebar", "header", "sheet", "window", "hud", "fullscreen-ui", "content", "under-window", "under-page" ] as const; + const foundBgMaterialOption = bgMaterialOptions.find((bgMaterialOption) => material === bgMaterialOption); + if (foundBgMaterialOption) { + currentWindow.setVibrancy(foundBgMaterialOption); + } + } } /** @@ -127,20 +130,3 @@ function initDarkOrLightMode(style: CSSStyleDeclaration) { const { nativeTheme } = utils.dynamicRequire("@electron/remote") as typeof ElectronRemote; nativeTheme.themeSource = themeSource; } - -function initPWATopbarColor() { - const tracker = $("#background-color-tracker"); - - if (tracker.length) { - const applyThemeColor = () => { - let meta = $("meta[name='theme-color']"); - if (!meta.length) { - meta = $(``).appendTo($("head")); - } - meta.attr("content", tracker.css("color")); - }; - - tracker.on("transitionend", applyThemeColor); - applyThemeColor(); - } -} diff --git a/apps/client/src/layouts/mobile_layout.css b/apps/client/src/layouts/mobile_layout.css new file mode 100644 index 0000000000..396fa4a467 --- /dev/null +++ b/apps/client/src/layouts/mobile_layout.css @@ -0,0 +1,76 @@ +#background-color-tracker { + color: var(--main-background-color) !important; +} + +span.keyboard-shortcut, +kbd { + display: none; +} + +.dropdown-menu { + font-size: larger; +} + +.action-button { + background: none; + border: none; + cursor: pointer; + font-size: 1.25em; + padding-inline-start: 0.5em; + padding-inline-end: 0.5em; + color: var(--main-text-color); +} +.quick-search { + margin: 0; +} +.quick-search .dropdown-menu { + max-width: 350px; +} + +/* #region Tree */ +.tree-wrapper { + max-height: 100%; + margin-top: 0px; + overflow-y: auto; + contain: content; + padding-inline-start: 10px; +} + +.fancytree-title { + margin-inline-start: 0.6em !important; +} + +.fancytree-node { + padding: 5px; +} + +span.fancytree-expander { + width: 24px !important; + margin-inline-end: 5px; +} + +.fancytree-loading span.fancytree-expander { + width: 24px; + height: 32px; +} + +.fancytree-loading span.fancytree-expander:after { + width: 20px; + height: 20px; + margin-top: 4px; + border-width: 2px; + border-style: solid; +} + +.tree-wrapper .collapse-tree-button, +.tree-wrapper .scroll-to-active-note-button, +.tree-wrapper .tree-settings-button { + position: fixed; + margin-inline-end: 16px; + display: none; +} + +.tree-wrapper .unhoist-button { + font-size: 200%; +} +/* #endregion */ diff --git a/apps/client/src/layouts/mobile_layout.tsx b/apps/client/src/layouts/mobile_layout.tsx index da66ffa130..8b162bced3 100644 --- a/apps/client/src/layouts/mobile_layout.tsx +++ b/apps/client/src/layouts/mobile_layout.tsx @@ -1,128 +1,41 @@ +import "./mobile_layout.css"; + import type AppContext from "../components/app_context.js"; import GlobalMenuWidget from "../widgets/buttons/global_menu.js"; import CloseZenModeButton from "../widgets/close_zen_button.js"; import NoteList from "../widgets/collections/NoteList.jsx"; -import ContentHeader from "../widgets/containers/content_header.js"; import FlexContainer from "../widgets/containers/flex_container.js"; import RootContainer from "../widgets/containers/root_container.js"; import ScrollingContainer from "../widgets/containers/scrolling_container.js"; import SplitNoteContainer from "../widgets/containers/split_note_container.js"; -import FloatingButtons from "../widgets/FloatingButtons.jsx"; -import { MOBILE_FLOATING_BUTTONS } from "../widgets/FloatingButtonsDefinitions.jsx"; +import FindWidget from "../widgets/find.js"; import LauncherContainer from "../widgets/launch_bar/LauncherContainer.jsx"; +import InlineTitle from "../widgets/layout/InlineTitle.jsx"; +import NoteBadges from "../widgets/layout/NoteBadges.jsx"; +import NoteTitleActions from "../widgets/layout/NoteTitleActions.jsx"; import MobileDetailMenu from "../widgets/mobile_widgets/mobile_detail_menu.js"; import ScreenContainer from "../widgets/mobile_widgets/screen_container.js"; import SidebarContainer from "../widgets/mobile_widgets/sidebar_container.js"; import ToggleSidebarButton from "../widgets/mobile_widgets/toggle_sidebar_button.jsx"; +import NoteIconWidget from "../widgets/note_icon.jsx"; import NoteTitleWidget from "../widgets/note_title.js"; import NoteTreeWidget from "../widgets/note_tree.js"; import NoteWrapperWidget from "../widgets/note_wrapper.js"; import NoteDetail from "../widgets/NoteDetail.jsx"; -import PromotedAttributes from "../widgets/PromotedAttributes.jsx"; import QuickSearchWidget from "../widgets/quick_search.js"; import { useNoteContext } from "../widgets/react/hooks.jsx"; -import ReadOnlyNoteInfoBar from "../widgets/ReadOnlyNoteInfoBar.jsx"; import StandaloneRibbonAdapter from "../widgets/ribbon/components/StandaloneRibbonAdapter.jsx"; import FilePropertiesTab from "../widgets/ribbon/FilePropertiesTab.jsx"; import SearchDefinitionTab from "../widgets/ribbon/SearchDefinitionTab.jsx"; import SearchResult from "../widgets/search_result.jsx"; -import SharedInfoWidget from "../widgets/shared_info.js"; -import TabRowWidget from "../widgets/tab_row.js"; import MobileEditorToolbar from "../widgets/type_widgets/text/mobile_editor_toolbar.jsx"; import { applyModals } from "./layout_commons.js"; -const MOBILE_CSS = ` -`; - -const FANCYTREE_CSS = ` -`; - export default class MobileLayout { getRootWidget(appContext: typeof AppContext) { const rootContainer = new RootContainer(true) .setParent(appContext) .class("horizontal-layout") - .cssBlock(MOBILE_CSS) .child(new FlexContainer("column").id("mobile-sidebar-container")) .child( new FlexContainer("row") @@ -136,7 +49,7 @@ export default class MobileLayout { .css("padding-inline-start", "0") .css("padding-inline-end", "0") .css("contain", "content") - .child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget().cssBlock(FANCYTREE_CSS))) + .child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget())) ) .child( new ScreenContainer("detail", "row") @@ -147,30 +60,28 @@ export default class MobileLayout { new NoteWrapperWidget() .child( new FlexContainer("row") + .class("title-row note-split-title") .contentSized() - .css("font-size", "larger") .css("align-items", "center") .child() + .child() .child() + .child() .child() ) - .child() - .child() .child( new ScrollingContainer() .filling() .contentSized() - .child(new ContentHeader() - .child() - .child() - ) + .child() + .child() .child() .child() - .child() .child() .child() ) .child() + .child(new FindWidget()) ) ) ) @@ -179,7 +90,6 @@ export default class MobileLayout { new FlexContainer("column") .contentSized() .id("mobile-bottom-bar") - .child(new TabRowWidget().css("height", "40px")) .child(new FlexContainer("row") .class("horizontal") .css("height", "53px") diff --git a/apps/client/src/menus/context_menu.ts b/apps/client/src/menus/context_menu.ts index 6bd9de9e4c..415c0a2c6a 100644 --- a/apps/client/src/menus/context_menu.ts +++ b/apps/client/src/menus/context_menu.ts @@ -1,8 +1,9 @@ import { KeyboardActionNames } from "@triliumnext/commons"; +import { h, JSX, render } from "preact"; + import keyboardActionService, { getActionSync } from "../services/keyboard_actions.js"; import note_tooltip from "../services/note_tooltip.js"; import utils from "../services/utils.js"; -import { h, JSX, render } from "preact"; export interface ContextMenuOptions { x: number; @@ -62,17 +63,17 @@ export type ContextMenuEvent = PointerEvent | MouseEvent | JQuery.ContextMenuEve class ContextMenu { private $widget: JQuery; - private $cover: JQuery; + private $cover?: JQuery; private options?: ContextMenuOptions; private isMobile: boolean; constructor() { this.$widget = $("#context-menu-container"); - this.$cover = $("#context-menu-cover"); this.$widget.addClass("dropend"); this.isMobile = utils.isMobile(); if (this.isMobile) { + this.$cover = $("#context-menu-cover"); this.$cover.on("click", () => this.hide()); } else { $(document).on("click", (e) => this.hide()); @@ -91,7 +92,7 @@ class ContextMenu { } this.$widget.toggleClass("mobile-bottom-menu", !this.options.forcePositionOnMobile); - this.$cover.addClass("show"); + this.$cover?.addClass("show"); $("body").addClass("context-menu-shown"); this.$widget.empty(); @@ -140,16 +141,14 @@ class ContextMenu { } else { left = this.options.x - contextMenuWidth + CONTEXT_MENU_OFFSET; } + } else if (contextMenuWidth && this.options.x + contextMenuWidth - CONTEXT_MENU_OFFSET > clientWidth - CONTEXT_MENU_PADDING) { + // Overflow: right + left = clientWidth - contextMenuWidth - CONTEXT_MENU_PADDING; + } else if (this.options.x - CONTEXT_MENU_OFFSET < CONTEXT_MENU_PADDING) { + // Overflow: left + left = CONTEXT_MENU_PADDING; } else { - if (contextMenuWidth && this.options.x + contextMenuWidth - CONTEXT_MENU_OFFSET > clientWidth - CONTEXT_MENU_PADDING) { - // Overflow: right - left = clientWidth - contextMenuWidth - CONTEXT_MENU_PADDING; - } else if (this.options.x - CONTEXT_MENU_OFFSET < CONTEXT_MENU_PADDING) { - // Overflow: left - left = CONTEXT_MENU_PADDING; - } else { - left = this.options.x - CONTEXT_MENU_OFFSET; - } + left = this.options.x - CONTEXT_MENU_OFFSET; } this.$widget @@ -249,7 +248,7 @@ class ContextMenu { if ("uiIcon" in item || "checked" in item) { const icon = (item.checked ? "bx bx-check" : item.uiIcon); if (icon) { - $icon.addClass(icon); + $icon.addClass([icon, "tn-icon"]); } else { $icon.append(" "); } @@ -261,7 +260,7 @@ class ContextMenu { .append(item.title); if ("badges" in item && item.badges) { - for (let badge of item.badges) { + for (const badge of item.badges) { const badgeElement = $(``).text(badge.title); if (badge.className) { @@ -352,7 +351,7 @@ class ContextMenu { async hide() { this.options?.onHide?.(); this.$widget.removeClass("show"); - this.$cover.removeClass("show"); + this.$cover?.removeClass("show"); $("body").removeClass("context-menu-shown"); this.$widget.hide(); } diff --git a/apps/client/src/menus/launcher_context_menu.ts b/apps/client/src/menus/launcher_context_menu.ts index 717180690a..f4ae7a148f 100644 --- a/apps/client/src/menus/launcher_context_menu.ts +++ b/apps/client/src/menus/launcher_context_menu.ts @@ -1,12 +1,12 @@ -import treeService from "../services/tree.js"; -import froca from "../services/froca.js"; -import contextMenu, { type MenuCommandItem, type MenuItem } from "./context_menu.js"; -import dialogService from "../services/dialog.js"; -import server from "../services/server.js"; -import { t } from "../services/i18n.js"; +import type { ContextMenuCommandData,FilteredCommandNames } from "../components/app_context.js"; import type { SelectMenuItemEventListener } from "../components/events.js"; +import dialogService from "../services/dialog.js"; +import froca from "../services/froca.js"; +import { t } from "../services/i18n.js"; +import server from "../services/server.js"; +import treeService from "../services/tree.js"; import type NoteTreeWidget from "../widgets/note_tree.js"; -import type { FilteredCommandNames, ContextMenuCommandData } from "../components/app_context.js"; +import contextMenu, { type MenuCommandItem, type MenuItem } from "./context_menu.js"; type LauncherCommandNames = FilteredCommandNames; @@ -32,8 +32,8 @@ export default class LauncherContextMenu implements SelectMenuItemEventListener< const note = this.node.data.noteId ? await froca.getNote(this.node.data.noteId) : null; const parentNoteId = this.node.getParent().data.noteId; - const isVisibleRoot = note?.noteId === "_lbVisibleLaunchers"; - const isAvailableRoot = note?.noteId === "_lbAvailableLaunchers"; + const isVisibleRoot = note?.noteId === "_lbVisibleLaunchers" || note?.noteId === "_lbMobileVisibleLaunchers"; + const isAvailableRoot = note?.noteId === "_lbAvailableLaunchers" || note?.noteId === "_lbMobileAvailableLaunchers"; const isVisibleItem = parentNoteId === "_lbVisibleLaunchers" || parentNoteId === "_lbMobileVisibleLaunchers"; const isAvailableItem = parentNoteId === "_lbAvailableLaunchers" || parentNoteId === "_lbMobileAvailableLaunchers"; const isItem = isVisibleItem || isAvailableItem; diff --git a/apps/client/src/services/content_renderer.css b/apps/client/src/services/content_renderer.css new file mode 100644 index 0000000000..80764486d4 --- /dev/null +++ b/apps/client/src/services/content_renderer.css @@ -0,0 +1,9 @@ +.rendered-content.no-preview > div { + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; + height: 100%; + font-size: 500%; + flex-grow: 1; +} diff --git a/apps/client/src/services/content_renderer.ts b/apps/client/src/services/content_renderer.ts index 4fbf51024c..aca5d3efe3 100644 --- a/apps/client/src/services/content_renderer.ts +++ b/apps/client/src/services/content_renderer.ts @@ -1,3 +1,5 @@ +import "./content_renderer.css"; + import { normalizeMimeTypeForCKEditor } from "@triliumnext/commons"; import WheelZoom from 'vanilla-js-wheel-zoom'; @@ -71,18 +73,9 @@ export async function getRenderedContent(this: {} | { ctx: string }, entity: FNo $renderedContent.append($("
").append("
This note is protected and to access it you need to enter password.
").append("
").append($button)); } else if (entity instanceof FNote) { - $renderedContent - .css("display", "flex") - .css("flex-direction", "column"); + $renderedContent.addClass("no-preview"); $renderedContent.append( - $("
") - .css("display", "flex") - .css("justify-content", "space-around") - .css("align-items", "center") - .css("height", "100%") - .css("font-size", "500%") - .css("flex-grow", "1") - .append($("").addClass(entity.getIcon())) + $("
").append($("").addClass(entity.getIcon())) ); if (entity.type === "webView" && entity.hasLabel("webViewSrc")) { @@ -292,10 +285,11 @@ function getRenderingType(entity: FNote | FAttachment) { } const mime = "mime" in entity && entity.mime; + const isIconPack = entity instanceof FNote && entity.hasLabel("iconPack"); if (type === "file" && mime === "application/pdf") { type = "pdf"; - } else if ((type === "file" || type === "viewConfig") && mime && CODE_MIME_TYPES.has(mime)) { + } else if ((type === "file" || type === "viewConfig") && mime && CODE_MIME_TYPES.has(mime) && !isIconPack) { type = "code"; } else if (type === "file" && mime && mime.startsWith("audio/")) { type = "audio"; diff --git a/apps/client/src/services/css_class_manager.ts b/apps/client/src/services/css_class_manager.ts index de1c98b87d..06ff7b7045 100644 --- a/apps/client/src/services/css_class_manager.ts +++ b/apps/client/src/services/css_class_manager.ts @@ -49,7 +49,7 @@ function createClassForColor(colorString: string | null) { return clsx("use-note-color", className, colorsWithHue.has(className) && "with-hue"); } -function parseColor(color: string) { +export function parseColor(color: string) { try { return Color(color.toLowerCase()); } catch (ex) { @@ -77,7 +77,7 @@ function adjustColorLightness(color: ColorInstance, lightThemeMaxLightness: numb } /** Returns the hue of the specified color, or undefined if the color is grayscale. */ -function getHue(color: ColorInstance) { +export function getHue(color: ColorInstance) { const hslColor = color.hsl(); if (hslColor.saturationl() > 0) { return hslColor.hue(); diff --git a/apps/client/src/services/experimental_features.ts b/apps/client/src/services/experimental_features.ts index 62d4ebb053..8cfbe126e8 100644 --- a/apps/client/src/services/experimental_features.ts +++ b/apps/client/src/services/experimental_features.ts @@ -1,5 +1,6 @@ import { t } from "./i18n"; import options from "./options"; +import { isMobile } from "./utils"; export interface ExperimentalFeature { id: string; @@ -21,7 +22,7 @@ let enabledFeatures: Set | null = null; export function isExperimentalFeatureEnabled(featureId: ExperimentalFeatureId): boolean { if (featureId === "new-layout") { - return options.is("newLayout"); + return (isMobile() || options.is("newLayout")); } return getEnabledFeatures().has(featureId); @@ -29,7 +30,7 @@ export function isExperimentalFeatureEnabled(featureId: ExperimentalFeatureId): export function getEnabledExperimentalFeatureIds() { const values = [ ...getEnabledFeatures().values() ]; - if (options.is("newLayout")) { + if (isMobile() || options.is("newLayout")) { values.push("new-layout"); } return values; diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 17e431e542..acfdf6da40 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -28,7 +28,7 @@ --bs-body-color: var(--main-text-color) !important; --bs-body-bg: var(--main-background-color) !important; --ck-mention-list-max-height: 500px; - --tn-modal-max-height: 90vh; + --tn-modal-max-height: 90svh; --tree-item-light-theme-max-color-lightness: 50; --tree-item-dark-theme-min-color-lightness: 75; @@ -111,6 +111,7 @@ body.mobile #root-widget.virtual-keyboard-opened #mobile-bottom-bar { } #mobile-bottom-bar { + border-top: 1px solid var(--main-border-color); padding-bottom: var(--mobile-bottom-offset); } @@ -224,10 +225,6 @@ body.mobile .modal .modal-dialog { width: 100%; } -body.mobile .modal .modal-content { - border-radius: var(--bs-modal-border-radius) var(--bs-modal-border-radius) 0 0; -} - .component { contain: size; } @@ -413,6 +410,7 @@ body.desktop .tabulator-popup-container, .dropdown-menu.static { box-shadow: unset; + backdrop-filter: unset !important; } .dropend .dropdown-toggle::after { @@ -458,7 +456,7 @@ body.desktop .tabulator-popup-container, visibility: hidden; } -body.desktop .dropdown-menu:not(#context-menu-container) .dropdown-item, +.dropdown-menu:not(#context-menu-container) .dropdown-item, body.desktop .dropdown-menu .dropdown-toggle, body #context-menu-container .dropdown-item > span, body.mobile .dropdown .dropdown-submenu > span { @@ -466,6 +464,15 @@ body.mobile .dropdown .dropdown-submenu > span { align-items: center; } + +body.mobile .dropdown .dropdown-submenu { + flex-wrap: wrap; + + & > span { + flex-grow: 1; + } +} + .dropdown-item span.keyboard-shortcut, .dropdown-item *:not(.keyboard-shortcut) > kbd { flex-grow: 1; @@ -1255,7 +1262,7 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href inset-inline-start: 0; inset-inline-end: 0; bottom: 0; - z-index: 1000; + z-index: 2500; background: rgba(0, 0, 0, 0.1); } @@ -1534,7 +1541,8 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { @media (max-width: 991px) { body.mobile #launcher-pane .dropdown.global-menu > .dropdown-menu.show, - body.mobile #launcher-container .dropdown > .dropdown-menu.show { + body.mobile #launcher-container .dropdown > .dropdown-menu.show, + body.mobile .dropdown-menu.mobile-bottom-menu.show { --dropdown-bottom: calc(var(--mobile-bottom-offset) + var(--launcher-pane-size)); position: fixed !important; bottom: var(--dropdown-bottom) !important; @@ -1546,6 +1554,16 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { max-height: calc(var(--tn-modal-max-height) - var(--dropdown-bottom)); } + body.mobile #launcher-container .dropdown > .dropdown-menu.show { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + } + + body.mobile .dropdown-menu.mobile-bottom-menu.show { + --dropdown-bottom: 0px; + padding-bottom: calc(max(var(--menu-padding-size), env(safe-area-inset-bottom))) !important; + } + #mobile-sidebar-container { position: fixed; top: 0; @@ -1614,6 +1632,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { body.mobile .modal-content { overflow-y: auto; + border-radius: var(--bs-modal-border-radius) var(--bs-modal-border-radius) 0 0; } body.mobile .modal-footer { @@ -1669,39 +1688,16 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { #detail-container { background: var(--main-background-color); } -} -@media (max-width: 991px) { - body.mobile.force-fixed-tree #mobile-sidebar-wrapper { - padding-top: 0; - position: static; - height: 40vh; - width: 100vw; - transform: none !important; - background-color: var(--left-pane-background-color) !important; - border-bottom: 0.5px solid var(--main-border-color); - } + body.mobile { + .modal-dialog { + margin: var(--bs-modal-margin); + max-width: 80%; + } - body.mobile.force-fixed-tree #mobile-sidebar-container { - display: none !important; - } - - body.mobile.force-fixed-tree #mobile-sidebar-wrapper .quick-search { - display: none; - } - - body.mobile.force-fixed-tree .component > button.bx-sidebar { - visibility: hidden; - padding: 0; - width: 6px; - } - - body.mobile.force-fixed-tree #mobile-rest-container { - flex-direction: column !important; - } - - body.mobile.force-fixed-tree #detail-container { - flex-grow: 1; + .modal-content { + height: 100%; + } } } @@ -2617,14 +2613,14 @@ iframe.print-iframe { } } - #root-widget.virtual-keyboard-opened .note-split:not(:focus-within) { + #root-widget.virtual-keyboard-opened .note-split:not(.active) { max-height: 80px; opacity: 0.4; } } } -body.desktop .title-row { +.title-row { height: 50px; min-height: 50px; align-items: center; diff --git a/apps/client/src/stylesheets/theme-next-dark.css b/apps/client/src/stylesheets/theme-next-dark.css index 80acfe2e0a..f8fb305726 100644 --- a/apps/client/src/stylesheets/theme-next-dark.css +++ b/apps/client/src/stylesheets/theme-next-dark.css @@ -134,6 +134,7 @@ --left-pane-collapsed-border-color: #0009; --left-pane-background-color: #1f1f1f; --left-pane-text-color: #aaaaaa; + --left-pane-icon-color: #c5c5c5; --left-pane-item-hover-background: #ffffff0d; --left-pane-item-selected-background: #ffffff25; --left-pane-item-selected-color: #dfdfdf; diff --git a/apps/client/src/stylesheets/theme-next-light.css b/apps/client/src/stylesheets/theme-next-light.css index 1e50200d9a..2d7862ae00 100644 --- a/apps/client/src/stylesheets/theme-next-light.css +++ b/apps/client/src/stylesheets/theme-next-light.css @@ -127,6 +127,7 @@ --left-pane-collapsed-border-color: #0000000d; --left-pane-background-color: #f2f2f2; --left-pane-text-color: #383838; + --left-pane-icon-color: currentColor; --left-pane-item-hover-background: rgba(0, 0, 0, 0.032); --left-pane-item-selected-background: white; --left-pane-item-selected-color: black; diff --git a/apps/client/src/stylesheets/theme-next/notes/text.css b/apps/client/src/stylesheets/theme-next/notes/text.css index dc025bb66d..e025b23fb2 100644 --- a/apps/client/src/stylesheets/theme-next/notes/text.css +++ b/apps/client/src/stylesheets/theme-next/notes/text.css @@ -47,9 +47,14 @@ } /* The toolbar show / hide button for the current text block */ -.ck.ck-block-toolbar-button { +:root .ck.ck-block-toolbar-button { + --ck-color-block-toolbar-button: var(--muted-text-color); --ck-color-button-on-background: transparent; - --ck-color-button-on-color: currentColor; + --ck-color-button-on-color: var(--ck-editor-toolbar-button-on-color); + translate: -40% 0; + min-width: 0; + padding: 0; + z-index: 1600; } :root .ck.ck-toolbar .ck-button:not(.ck-disabled):active, @@ -517,6 +522,10 @@ button.ck.ck-button:is(.ck-button-action, .ck-button-save, .ck-button-cancel).ck * EDITOR'S CONTENT */ +.note-detail-editable-text-editor > .ck-placeholder { + opacity: .5; +} + /* * Code Blocks */ diff --git a/apps/client/src/stylesheets/theme-next/pages.css b/apps/client/src/stylesheets/theme-next/pages.css index f323d00005..a5041cd553 100644 --- a/apps/client/src/stylesheets/theme-next/pages.css +++ b/apps/client/src/stylesheets/theme-next/pages.css @@ -57,12 +57,12 @@ height: 18px; } -/* +/* * SEARCH PAGE */ /* Button bar */ - .search-definition-widget .search-setting-table tbody:last-child div { + .search-definition-widget .search-setting-table .search-actions-container { justify-content: flex-end; gap: 8px; } @@ -143,7 +143,7 @@ /* * OPTIONS PAGES */ - + :root { --options-card-min-width: 500px; --options-card-max-width: 900px; @@ -156,6 +156,10 @@ --preferred-max-content-width: var(--options-card-max-width); } +.note-split.options .collection-properties { + visibility: hidden; +} + /* Create a gap at the top of the option pages */ .note-detail-content-widget-content.options>*:first-child { margin-top: var(--options-first-item-top-margin, 1em); @@ -331,4 +335,4 @@ nav.options-section-tabs + .options-section { .etapi-options-section div { height: auto !important; -} \ No newline at end of file +} diff --git a/apps/client/src/stylesheets/theme-next/shell.css b/apps/client/src/stylesheets/theme-next/shell.css index f81e8fcf72..0df9d6686a 100644 --- a/apps/client/src/stylesheets/theme-next/shell.css +++ b/apps/client/src/stylesheets/theme-next/shell.css @@ -40,13 +40,30 @@ body.mobile { /* #region Mica */ +/* Quirk: --background-material is read before "theme-supports-background-effects" class + * is applied. Apply the matterial even if the theme doesn't support it. */ body.background-effects.platform-win32 { - /* Quirk: --background-material is read before "theme-supports-background-effects" class - * is applied. Apply the matterial even if the theme doesn't support it. */ - --background-material: tabbed; + &.layout-vertical { + --background-material: mica; + } + + &.layout-horizontal { + --background-material: tabbed; + } } -body.background-effects.theme-supports-background-effects.platform-win32 { +body.background-effects.platform-darwin { + /** Reference: https://developer.apple.com/documentation/appkit/nsvisualeffectview?preferredLanguage=objc **/ + &.layout-vertical { + --background-material: under-window; + } + + &.layout-horizontal { + --background-material: hud; + } +} + +body.background-effects.theme-supports-background-effects { --launcher-pane-horiz-border-color: var(--launcher-pane-horiz-border-color-bgfx); --launcher-pane-horiz-background-color: var(--launcher-pane-horiz-background-color-bgfx); --launcher-pane-vert-background-color: var(--launcher-pane-vert-background-color-bgfx); @@ -56,33 +73,29 @@ body.background-effects.theme-supports-background-effects.platform-win32 { --root-background: transparent; } -body.background-effects.platform-win32.layout-vertical { - --background-material: mica; -} - -body.background-effects.theme-supports-background-effects.platform-win32.layout-vertical { +body.background-effects.theme-supports-background-effects.layout-vertical { --left-pane-background-color: var(--window-background-color-bgfx); --center-pane-background-color-bgfx: var(--center-pane-vert-layout-background-color-bgfx); --right-pane-background-color: var(--right-pane-background-color-bgfx); } -body.background-effects.theme-supports-background-effects.platform-win32.layout-horizontal { +body.background-effects.theme-supports-background-effects.layout-horizontal { --center-pane-background-color-bgfx: var(--center-pane-horiz-layout-background-color-bgfx); --gutter-color: var(--left-pane-background-color); } -body.background-effects.theme-supports-background-effects.platform-win32, -body.background-effects.theme-supports-background-effects.platform-win32 #root-widget { +body.background-effects.theme-supports-background-effects, +body.background-effects.theme-supports-background-effects #root-widget { background: var(--window-background-color-bgfx) !important; } -body.background-effects.theme-supports-background-effects.platform-win32.layout-horizontal #horizontal-main-container, -body.background-effects.theme-supports-background-effects.platform-win32.layout-vertical #vertical-main-container { +body.background-effects.theme-supports-background-effects.layout-horizontal #horizontal-main-container, +body.background-effects.theme-supports-background-effects.layout-vertical #vertical-main-container { background-color: var(--root-background); } /* Note split with background effects */ -body.background-effects.theme-supports-background-effects.platform-win32 #center-pane .note-split.bgfx { +body.background-effects.theme-supports-background-effects #center-pane .note-split.bgfx { --note-split-background-color: var(--center-pane-background-color-bgfx); } @@ -726,18 +739,12 @@ body[dir=rtl] #left-pane span.fancytree-node.protected > span.fancytree-custom-i transform: translateX(-25%); } -body.mobile .fancytree-expander::before, -body.mobile .fancytree-title, -body.mobile .fancytree-node > span { - font-size: 1rem !important; -} - @media (max-width: 991px) { body.mobile #mobile-sidebar-container { background-color: rgba(0, 0, 0, 0.5); } - body.mobile:not(.force-fixed-tree) #mobile-sidebar-wrapper { + body.mobile #mobile-sidebar-wrapper { border-top-right-radius: 12px; border-bottom-right-radius: 12px; border-inline-end: 1px solid var(--subtle-border-color); @@ -756,9 +763,9 @@ body.mobile .fancytree-node > span { #left-pane .fancytree-custom-icon { margin-top: 0; /* Use this to align the icon with the tree view item's caption */ + color: var(--custom-color, var(--left-pane-icon-color)); } - #left-pane span.fancytree-active .fancytree-title { font-weight: normal; } @@ -1054,7 +1061,7 @@ body.layout-horizontal .tab-row-widget-container { overflow: hidden; } -body.desktop:not(.background-effects.platform-win32) #root-widget.horizontal-layout { +body.desktop:not(.background-effects) #root-widget.horizontal-layout { background-color: var(--root-background) !important; } @@ -1259,7 +1266,7 @@ body.layout-horizontal #rest-pane > .classic-toolbar-widget { #center-pane .note-split { padding-top: 2px; background-color: var(--note-split-background-color, var(--main-background-color)); - transition: border-color 250ms ease-in; + transition: border-color 150ms ease-out; border: 2px solid transparent; } @@ -1309,7 +1316,7 @@ body.mobile .note-title { margin-inline-start: 0; } -.title-row { +body.desktop .title-row { /* Aligns the "Create new split" button with the note menu button (the three dots button) */ padding-inline-end: 3px; } diff --git a/apps/client/src/stylesheets/tree.css b/apps/client/src/stylesheets/tree.css index 7131f6ab04..8ed03215b1 100644 --- a/apps/client/src/stylesheets/tree.css +++ b/apps/client/src/stylesheets/tree.css @@ -206,6 +206,7 @@ span.fancytree-selected .fancytree-title { } span.fancytree-selected .fancytree-custom-icon::before { + font-family: "boxicons"; content: "\eb43"; border: 1px solid var(--main-border-color); border-radius: 3px; diff --git a/apps/client/src/translations/ar/translation.json b/apps/client/src/translations/ar/translation.json index 296a0fdc86..a4a83179e9 100644 --- a/apps/client/src/translations/ar/translation.json +++ b/apps/client/src/translations/ar/translation.json @@ -29,7 +29,9 @@ "widget-render-error": { "title": "فشل عرض عنصر واجهة مستخدم React مخصص" }, - "widget-missing-parent": "لا تحتوي الأداة المخصصة على خاصية إلزامية '{{property}}'.\n\nإذا كان من المفترض تشغيل هذا البرنامج النصي بدون عنصر واجهة مستخدم، فاستخدم '#run=frontendStartup' بدلاً من ذلك." + "widget-missing-parent": "لا تحتوي الأداة المخصصة على خاصية إلزامية '{{property}}'.\n\nإذا كان من المفترض تشغيل هذا البرنامج النصي بدون عنصر واجهة مستخدم، فاستخدم '#run=frontendStartup' بدلاً من ذلك.", + "open-script-note": "فتح ملاحظة برمجية", + "scripting-error": "خطأ في النص البرمجي المخصص: {{title}}" }, "add_link": { "add_link": "أضافة رابط", @@ -37,14 +39,19 @@ "search_note": "البحث عن الملاحظة بالاسم", "link_title": "عنوان الرابط", "button_add_link": "اضافة رابط", - "help_on_links": "مساعدة حول الارتباطات التشعبية" + "help_on_links": "مساعدة حول الارتباطات التشعبية", + "link_title_mirrors": "عنوان الرابط يعكس العنوان الحالي للملاحظة", + "link_title_arbitrary": "يمكن تغيير عنوان الرابط حسب الرغبة" }, "branch_prefix": { "edit_branch_prefix": "تعديل بادئة الفرع", "prefix": "البادئة: ", "save": "حفظ", "help_on_tree_prefix": "مساعدة حول بادئة الشجرة", - "branch_prefix_saved": "تم حفظ بادئة الفرع." + "branch_prefix_saved": "تم حفظ بادئة الفرع.", + "edit_branch_prefix_multiple": "تعديل البادئة لـ {{count}} من تفرعات الملاحظات", + "branch_prefix_saved_multiple": "تم حفظ بادئة التفرع لـ {{count}} من التفرعات.", + "affected_branches": "الفروع المتأثرة ({{count}}):" }, "bulk_actions": { "bulk_actions": "اجراءات جماعية", diff --git a/apps/client/src/translations/cn/translation.json b/apps/client/src/translations/cn/translation.json index 9dd25e5984..25012a366f 100644 --- a/apps/client/src/translations/cn/translation.json +++ b/apps/client/src/translations/cn/translation.json @@ -662,7 +662,8 @@ "show-cheatsheet": "显示快捷帮助", "toggle-zen-mode": "禅模式", "new-version-available": "新更新可用", - "download-update": "取得版本 {{latestVersion}}" + "download-update": "取得版本 {{latestVersion}}", + "search_notes": "搜索笔记" }, "zen_mode": { "button_exit": "退出禅模式" @@ -745,7 +746,7 @@ "button_title": "导出SVG格式图片" }, "relation_map_buttons": { - "create_child_note_title": "创建新的子笔记并添加到关系图", + "create_child_note_title": "创建子笔记并添加到图", "reset_pan_zoom_title": "重置平移和缩放到初始坐标和放大倍率", "zoom_in_title": "放大", "zoom_out_title": "缩小" @@ -759,7 +760,9 @@ "delete_this_note": "删除此笔记", "error_cannot_get_branch_id": "无法获取 notePath '{{notePath}}' 的 branchId", "error_unrecognized_command": "无法识别的命令 {{command}}", - "note_revisions": "笔记历史版本" + "note_revisions": "笔记历史版本", + "backlinks": "反链", + "content_language_switcher": "内容语言: {{language}}" }, "note_icon": { "change_note_icon": "更改笔记图标", @@ -910,7 +913,8 @@ "unknown_search_option": "未知的搜索选项 {{searchOptionName}}", "search_note_saved": "搜索笔记已保存到 {{- notePathTitle}}", "actions_executed": "操作已执行。", - "view_options": "查看选项:" + "view_options": "查看选项:", + "option": "选项" }, "similar_notes": { "title": "相似笔记", @@ -1782,8 +1786,8 @@ "desktop-application": "桌面应用程序", "native-title-bar": "原生标题栏", "native-title-bar-description": "对于 Windows 和 macOS,关闭原生标题栏可使应用程序看起来更紧凑。在 Linux 上,保留原生标题栏可以更好地与系统集成。", - "background-effects": "启用背景效果(仅适用于 Windows 11)", - "background-effects-description": "Mica 效果为应用窗口添加模糊且时尚的背景,营造出深度感和现代外观。「原生标题栏」必須被禁用。", + "background-effects": "启用背景效果", + "background-effects-description": "为应用窗口添加模糊且时尚的背景,营造出深度感和现代外观。「原生标题栏」必須被禁用。", "restart-app-button": "重启应用程序以查看更改", "zoom-factor": "缩放系数" }, @@ -1802,7 +1806,8 @@ "geo-map": { "create-child-note-title": "创建一个新的子笔记并将其添加到地图中", "create-child-note-instruction": "单击地图以在该位置创建新笔记,或按 Escape 以取消。", - "unable-to-load-map": "无法加载地图。" + "unable-to-load-map": "无法加载地图。", + "create-child-note-text": "添加标记" }, "geo-map-context": { "open-location": "打开位置", @@ -2117,7 +2122,7 @@ }, "call_to_action": { "background_effects_title": "背景效果现已推出稳定版本", - "background_effects_message": "在 Windows 装置上,背景效果现在已完全稳定。背景效果通过模糊背后的背景,为使用者界面增添一抹色彩。此技术也用于其他应用程序,例如 Windows 资源管理器。", + "background_effects_message": "在 Windows 和 macOS 设备上,背景效果现在已稳定。背景效果通过模糊背后的背景,为使用者界面增添一抹色彩。", "background_effects_button": "启用背景效果", "next_theme_title": "试用新 Trilium 主题", "next_theme_message": "当前使用旧版主题,要试用新主题吗?", @@ -2253,5 +2258,15 @@ "pages_alt": "第{{pageNumber}}页", "pages_loading": "加载中...", "layers_other": "{{count}} 层" + }, + "platform_indicator": { + "available_on": "在 {{platform}} 上可用" + }, + "mobile_tab_switcher": { + "title_other": "{{count}} 选项卡", + "more_options": "更多选项" + }, + "bookmark_buttons": { + "bookmarks": "书签" } } diff --git a/apps/client/src/translations/de/translation.json b/apps/client/src/translations/de/translation.json index 9e249fc412..e83d1076fe 100644 --- a/apps/client/src/translations/de/translation.json +++ b/apps/client/src/translations/de/translation.json @@ -1,6 +1,6 @@ { "about": { - "title": "Über Trilium Notizen", + "title": "Über Trilium Notes", "homepage": "Startseite:", "app_version": "App-Version:", "db_version": "DB-Version:", @@ -662,7 +662,8 @@ "show-cheatsheet": "Cheatsheet anzeigen", "toggle-zen-mode": "Zen Modus", "new-version-available": "Neues Update verfügbar", - "download-update": "Version {{latestVersion}} herunterladen" + "download-update": "Version {{latestVersion}} herunterladen", + "search_notes": "Notizen durchsuchen" }, "sync_status": { "unknown": "

Der Synchronisations-Status wird bekannt, sobald der nächste Synchronisierungsversuch gestartet wird.

Klicke, um eine Synchronisierung jetzt auszulösen.

", @@ -742,7 +743,7 @@ "button_title": "Diagramm als SVG exportieren" }, "relation_map_buttons": { - "create_child_note_title": "Erstelle eine neue untergeordnete Notiz und füge sie dieser Beziehungskarte hinzu", + "create_child_note_title": "Erstelle eine untergeordnete Notiz und füge sie dieser Karte hinzu", "reset_pan_zoom_title": "Schwenken und Zoomen auf die ursprünglichen Koordinaten und Vergrößerung zurücksetzen", "zoom_in_title": "Hineinzoom", "zoom_out_title": "Herauszoomen" @@ -757,7 +758,9 @@ "delete_this_note": "Diese Notiz löschen", "error_cannot_get_branch_id": "BranchId für notePath „{{notePath}}“ kann nicht abgerufen werden", "error_unrecognized_command": "Unbekannter Befehl {{command}}", - "note_revisions": "Notiz Revisionen" + "note_revisions": "Notiz Revisionen", + "backlinks": "Rücklinks", + "content_language_switcher": "Inhaltssprache: {{language}}" }, "note_icon": { "change_note_icon": "Notiz-Icon ändern", @@ -909,7 +912,8 @@ "unknown_search_option": "Unbekannte Suchoption {{searchOptionName}}", "search_note_saved": "Suchnotiz wurde in {{-notePathTitle}} gespeichert", "actions_executed": "Aktionen wurden ausgeführt.", - "view_options": "Optionen anzeigen:" + "view_options": "Optionen anzeigen:", + "option": "Option" }, "similar_notes": { "title": "Ähnliche Notizen", @@ -1751,8 +1755,8 @@ "desktop-application": "Desktop Anwendung", "native-title-bar": "Native Anwendungsleiste", "native-title-bar-description": "In Windows und macOS, sorgt das Deaktivieren der nativen Anwendungsleiste für ein kompakteres Aussehen. Unter Linux, sorgt das Aktivieren der nativen Anwendungsleiste für eine bessere Integration mit anderen Teilen des Systems.", - "background-effects": "Hintergrundeffekte aktivieren (nur Windows 11)", - "background-effects-description": "Der Mica Effekt fügt einen unscharfen, stylischen Hintergrund in Anwendungsfenstern ein. Dieser erzeugt Tiefe und ein modernes Auftreten. \"Native Titelleiste\" muss deaktiviert sein.", + "background-effects": "Hintergrundeffekte aktivieren", + "background-effects-description": "Fügt einen unscharfen, stylischen Hintergrund in das Anwendungsfenstern ein. Dies erzeugt Tiefe und ein modernes Auftreten. \"Native Titelleiste\" muss deaktiviert sein.", "restart-app-button": "Anwendung neustarten um Änderungen anzuwenden", "zoom-factor": "Zoomfaktor" }, @@ -1771,7 +1775,8 @@ "geo-map": { "create-child-note-title": "Neue Unternotiz anlegen und zur Karte hinzufügen", "create-child-note-instruction": "Auf die Karte klicken, um eine neue Notiz an der Stelle zu erstellen oder Escape drücken um abzubrechen.", - "unable-to-load-map": "Karte konnte nicht geladen werden." + "unable-to-load-map": "Karte konnte nicht geladen werden.", + "create-child-note-text": "Marker hinzufügen" }, "geo-map-context": { "open-location": "Ort öffnen", @@ -2133,7 +2138,7 @@ "next_theme_message": "Es wird aktuell das alte Design verwendet. Möchten Sie das neue Design ausprobieren?", "next_theme_button": "Teste das neue Design", "background_effects_title": "Hintergrundeffekte sind jetzt zuverlässig nutzbar", - "background_effects_message": "Auf Windows-Geräten sind die Hintergrundeffekte nun vollständig stabil. Die Hintergrundeffekte verleihen der Benutzeroberfläche einen Farbakzent, indem der Hintergrund dahinter weichgezeichnet wird. Diese Technik wird auch in anderen Anwendungen wie dem Windows-Explorer eingesetzt.", + "background_effects_message": "Auf Windows- und macOS-Geräten sind die Hintergrundeffekte nun stabil. Die Hintergrundeffekte verleihen der Benutzeroberfläche einen Farbakzent, indem der Hintergrund dahinter weichgezeichnet wird.", "background_effects_button": "Aktiviere Hintergrundeffekte", "dismiss": "Ablehnen", "new_layout_title": "Neues Layout", @@ -2267,5 +2272,16 @@ "pages_other": "{{count}} Seiten", "pages_alt": "Seite {{pageNumber}}", "pages_loading": "Lädt..." + }, + "platform_indicator": { + "available_on": "Verfügbar auf {{platform}}" + }, + "mobile_tab_switcher": { + "title_one": "{{count}} Tab", + "title_other": "{{count}} Tabs", + "more_options": "Weitere Optionen" + }, + "bookmark_buttons": { + "bookmarks": "Lesezeichen" } } diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index f112508c1e..9f33fd8c35 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -662,7 +662,8 @@ "show-cheatsheet": "Show Cheatsheet", "toggle-zen-mode": "Zen Mode", "new-version-available": "New Update Available", - "download-update": "Get Version {{latestVersion}}" + "download-update": "Get Version {{latestVersion}}", + "search_notes": "Search notes" }, "zen_mode": { "button_exit": "Exit Zen Mode" @@ -745,7 +746,7 @@ "button_title": "Export diagram as SVG" }, "relation_map_buttons": { - "create_child_note_title": "Create new child note and add it into this relation map", + "create_child_note_title": "Create child note and add it to map", "reset_pan_zoom_title": "Reset pan & zoom to initial coordinates and magnification", "zoom_in_title": "Zoom In", "zoom_out_title": "Zoom Out" @@ -760,7 +761,9 @@ "delete_this_note": "Delete this note", "note_revisions": "Note revisions", "error_cannot_get_branch_id": "Cannot get branchId for notePath '{{notePath}}'", - "error_unrecognized_command": "Unrecognized command {{command}}" + "error_unrecognized_command": "Unrecognized command {{command}}", + "backlinks": "Backlinks", + "content_language_switcher": "Content language: {{language}}" }, "note_icon": { "change_note_icon": "Change note icon", @@ -905,6 +908,7 @@ "debug": "debug", "debug_description": "Debug will print extra debugging information into the console to aid in debugging complex queries", "action": "action", + "option": "option", "search_button": "Search", "search_execute": "Search & Execute actions", "save_to_note": "Save to note", @@ -1958,8 +1962,8 @@ "desktop-application": "Desktop Application", "native-title-bar": "Native title bar", "native-title-bar-description": "For Windows and macOS, keeping the native title bar off makes the application look more compact. On Linux, keeping the native title bar on integrates better with the rest of the system.", - "background-effects": "Enable background effects (Windows 11 only)", - "background-effects-description": "The Mica effect adds a blurred, stylish background to app windows, creating depth and a modern look. \"Native title bar\" must be disabled.", + "background-effects": "Enable background effects", + "background-effects-description": "Adds a blurred, stylish background to app windows, creating depth and a modern look. \"Native title bar\" must be disabled.", "restart-app-button": "Restart the application to view the changes", "zoom-factor": "Zoom factor" }, @@ -1977,6 +1981,7 @@ }, "geo-map": { "create-child-note-title": "Create a new child note and add it to the map", + "create-child-note-text": "Add marker", "create-child-note-instruction": "Click on the map to create a new note at that location or press Escape to dismiss.", "unable-to-load-map": "Unable to load map." }, @@ -2152,7 +2157,7 @@ "next_theme_message": "You are currently using the legacy theme, would you like to try the new theme?", "next_theme_button": "Try the new theme", "background_effects_title": "Background effects are now stable", - "background_effects_message": "On Windows devices, background effects are now fully stable. The background effects adds a touch of color to the user interface by blurring the background behind it. This technique is also used in other applications such as Windows Explorer.", + "background_effects_message": "On Windows and macOS devices, background effects are now stable. The background effects adds a touch of color to the user interface by blurring the background behind it.", "background_effects_button": "Enable background effects", "new_layout_title": "New layout", "new_layout_message": "We’ve introduced a modernized layout for Trilium. The ribbon has been removed and seamlessly integrated into the main interface, with a new status bar and expandable sections (such as promoted attributes) taking over key functions.\n\nThe new layout is enabled by default, and can be temporarily disabled via Options → Appearance.", @@ -2267,5 +2272,16 @@ "pages_other": "{{count}} pages", "pages_alt": "Page {{pageNumber}}", "pages_loading": "Loading..." + }, + "platform_indicator": { + "available_on": "Available on {{platform}}" + }, + "mobile_tab_switcher": { + "title_one": "{{count}} tab", + "title_other": "{{count}} tabs", + "more_options": "More options" + }, + "bookmark_buttons": { + "bookmarks": "Bookmarks" } } diff --git a/apps/client/src/translations/es/translation.json b/apps/client/src/translations/es/translation.json index 68ab070122..f6efb54818 100644 --- a/apps/client/src/translations/es/translation.json +++ b/apps/client/src/translations/es/translation.json @@ -662,7 +662,8 @@ "show-cheatsheet": "Mostrar hoja de trucos", "toggle-zen-mode": "Modo Zen", "new-version-available": "Nueva actualización disponible", - "download-update": "Obtener versión {{latestVersion}}" + "download-update": "Obtener versión {{latestVersion}}", + "search_notes": "Buscar notas" }, "zen_mode": { "button_exit": "Salir del modo Zen" @@ -745,7 +746,7 @@ "button_title": "Exportar diagrama como SVG" }, "relation_map_buttons": { - "create_child_note_title": "Crear una nueva subnota y agregarla a este mapa de relaciones", + "create_child_note_title": "Crear una subnota y agregarla al mapa", "reset_pan_zoom_title": "Restablecer la panorámica y el zoom a las coordenadas y ampliación iniciales", "zoom_in_title": "Acercar", "zoom_out_title": "Alejar" @@ -754,14 +755,16 @@ "relation": "relación", "backlink_one": "{{count}} Vínculo de retroceso", "backlink_many": "{{count}} Vínculos de retroceso", - "backlink_other": "{{count}} vínculos de retroceso" + "backlink_other": "{{count}} Vínculos de retroceso" }, "mobile_detail_menu": { "insert_child_note": "Insertar subnota", "delete_this_note": "Eliminar esta nota", "error_cannot_get_branch_id": "No se puede obtener el branchID del notePath '{{notePath}}'", "error_unrecognized_command": "Comando no reconocido {{command}}", - "note_revisions": "Revisiones de notas" + "note_revisions": "Revisiones de notas", + "backlinks": "Vínculos de retroceso", + "content_language_switcher": "Idioma de contenido: {{language}}" }, "note_icon": { "change_note_icon": "Cambiar icono de nota", @@ -914,7 +917,8 @@ "unknown_search_option": "Opción de búsqueda desconocida {{searchOptionName}}", "search_note_saved": "La nota de búsqueda se ha guardado en {{- notePathTitle}}", "actions_executed": "Las acciones han sido ejecutadas.", - "view_options": "Ver opciones:" + "view_options": "Ver opciones:", + "option": "opción" }, "similar_notes": { "title": "Notas similares", @@ -1614,7 +1618,7 @@ }, "bookmark_switch": { "bookmark": "Marcador", - "bookmark_this_note": "Añadir esta nota a marcadores en el panel lateral izquierdo", + "bookmark_this_note": "Agregar esta nota a marcadores en el panel lateral izquierdo", "remove_bookmark": "Eliminar marcador" }, "editability_select": { @@ -1944,8 +1948,8 @@ "desktop-application": "Aplicación de escritorio", "native-title-bar": "Barra de título nativa", "native-title-bar-description": "Para Windows y macOS, quitar la barra de título nativa hace que la aplicación se vea más compacta. En Linux, mantener la barra de título nativa hace que se integre mejor con el resto del sistema.", - "background-effects": "Habilitar efectos de fondo (sólo en Windows 11)", - "background-effects-description": "El efecto Mica agrega un fondo borroso y elegante a las ventanas de la aplicación, creando profundidad y un aspecto moderno. \"Título nativo de la barra\" debe deshabilitarse.", + "background-effects": "Habilitar efectos de fondo", + "background-effects-description": "Agrega un fondo borroso y elegante a las ventanas de la aplicación, creando profundidad y un aspecto moderno. \"Título nativo de la barra\" debe deshabilitarse.", "restart-app-button": "Reiniciar la aplicación para ver los cambios", "zoom-factor": "Factor de zoom" }, @@ -1964,7 +1968,8 @@ "geo-map": { "create-child-note-title": "Crear una nueva subnota y agregarla al mapa", "create-child-note-instruction": "Dé clic en el mapa para crear una nueva nota en esa ubicación o presione Escape para cancelar.", - "unable-to-load-map": "No se puede cargar el mapa." + "unable-to-load-map": "No se puede cargar el mapa.", + "create-child-note-text": "Agregar marcador" }, "geo-map-context": { "open-location": "Abrir ubicación", @@ -2130,7 +2135,7 @@ "next_theme_message": "Estás usando actualmente el tema heredado. ¿Te gustaría probar el nuevo tema?", "next_theme_button": "Prueba el nuevo tema", "background_effects_title": "Los efectos de fondo son ahora estables", - "background_effects_message": "En los dispositivos Windows, los efectos de fondo ya son totalmente estables. Los efectos de fondo añaden un toque de color a la interfaz de usuario difuminando el fondo que hay detrás. Esta técnica también se utiliza en otras aplicaciones como el Explorador de Windows.", + "background_effects_message": "En los dispositivos Windows y macOS, los efectos de fondo ya son estables. Los efectos de fondo añaden un toque de color a la interfaz de usuario difuminando el fondo que hay detrás.", "background_effects_button": "Activar efectos de fondo", "dismiss": "Desestimar", "new_layout_title": "Nuevo diseño", @@ -2281,5 +2286,17 @@ "empty_button": "Ocultar el panel", "toggle": "Alternar panel derecho", "custom_widget_go_to_source": "Ir al código fuente" + }, + "platform_indicator": { + "available_on": "Disponible en {{platform}}" + }, + "mobile_tab_switcher": { + "title_one": "{{count}} pestaña", + "title_many": "{{count}} pestañas", + "title_other": "{{count}} pestañas", + "more_options": "Más opciones" + }, + "bookmark_buttons": { + "bookmarks": "Marcadores" } } diff --git a/apps/client/src/translations/ga/translation.json b/apps/client/src/translations/ga/translation.json new file mode 100644 index 0000000000..470c586226 --- /dev/null +++ b/apps/client/src/translations/ga/translation.json @@ -0,0 +1,2332 @@ +{ + "global_menu": { + "about": "Maidir le Trilium Notes", + "menu": "Roghchlár", + "options": "Roghanna", + "open_new_window": "Oscail Fuinneog Nua", + "switch_to_mobile_version": "Athraigh go Leagan Soghluaiste", + "switch_to_desktop_version": "Athraigh go Leagan Deisce", + "zoom": "Zúmáil", + "toggle_fullscreen": "Lánscáileán a Athsholáthar", + "zoom_out": "Zúmáil Amach", + "reset_zoom_level": "Athshocraigh Leibhéal Súmála", + "zoom_in": "Zúmáil Isteach", + "configure_launchbar": "Cumraigh an Barra Seoladh", + "show_shared_notes_subtree": "Taispeáin Fo-chrann Nótaí Comhroinnte", + "advanced": "Ardleibhéil", + "open_dev_tools": "Oscail Uirlisí Forbróra", + "open_sql_console": "Oscail Consól SQL", + "open_sql_console_history": "Oscail Stair Chonsól SQL", + "open_search_history": "Oscail Stair Chuardaigh", + "show_backend_log": "Taispeáin Logáil an Chúil", + "reload_hint": "Is féidir le hathlódáil cabhrú le roinnt fabhtanna amhairc gan an aip ar fad a atosú.", + "reload_frontend": "Athlódáil an Tosaigh", + "show_hidden_subtree": "Taispeáin Fo-chrann Folaithe", + "show_help": "Taispeáin Cabhair", + "logout": "Logáil Amach", + "show-cheatsheet": "Taispeáin Bileog leideanna", + "toggle-zen-mode": "Mód Zen", + "new-version-available": "Nuashonrú Nua ar Fáil", + "download-update": "Faigh Leagan {{latestVersion}}", + "search_notes": "Cuardaigh nótaí" + }, + "about": { + "title": "Maidir le Trilium Notes", + "homepage": "Leathanach baile:", + "app_version": "Leagan an aip:", + "db_version": "Leagan DB:", + "sync_version": "Leagan sioncrónaithe:", + "build_date": "Dáta tógála:", + "build_revision": "Athbhreithniú tógála:", + "data_directory": "Eolaire sonraí:" + }, + "toast": { + "critical-error": { + "title": "Earráid chriticiúil", + "message": "Tharla earráid chriticiúil a chuireann cosc ar an bhfeidhmchlár cliant tosú:\n\n{{message}}\n\nIs dóichí gur teip gan choinne ar script is cúis leis seo. Bain triail as an bhfeidhmchlár a thosú i mód sábháilte agus an fhadhb a réiteach." + }, + "widget-error": { + "title": "Theip ar ghiuirléid a thosú", + "message-custom": "Níorbh fhéidir giuirléid saincheaptha ó nóta leis an ID \"{{id}}\", dar teideal \"{{title}}\" a thosú mar gheall ar:\n\n{{message}}", + "message-unknown": "Níorbh fhéidir giuirléid anaithnid a thosú mar gheall ar:\n\n{{message}}" + }, + "bundle-error": { + "title": "Theip ar script saincheaptha a luchtú", + "message": "Níorbh fhéidir an script a fhorghníomhú mar gheall ar:\n\n{{message}}" + }, + "widget-list-error": { + "title": "Theip ar an liosta giuirléidí a fháil ón bhfreastalaí" + }, + "widget-render-error": { + "title": "Theip ar ghiuirléid React saincheaptha a rindreáil" + }, + "widget-missing-parent": "Níl an mhaoin éigeantach '{{property}}' sainmhínithe ag an ngiuirléid saincheaptha.\n\nMás é an aidhm atá leis an script seo a rith gan eilimint Chomhéadain Úsáideora, bain úsáid as '#run=frontendStartup' ina ionad.", + "open-script-note": "Nóta scripte oscailte", + "scripting-error": "Earráid scripte saincheaptha: {{title}}" + }, + "add_link": { + "add_link": "Cuir nasc leis", + "help_on_links": "Cabhair le naisc", + "note": "Nóta", + "search_note": "cuardach nóta de réir a ainm", + "link_title_mirrors": "Léiríonn teideal an naisc teideal reatha an nóta", + "link_title_arbitrary": "is féidir teideal an naisc a athrú go treallach", + "link_title": "Teideal an naisc", + "button_add_link": "Cuir nasc leis" + }, + "branch_prefix": { + "edit_branch_prefix": "Cuir réimír na brainse in eagar", + "edit_branch_prefix_multiple": "Cuir réimír brainse in eagar do bhrainse {{count}}", + "help_on_tree_prefix": "Cabhair maidir le réimír Crann", + "prefix": "Réimír: ", + "save": "Sábháil", + "branch_prefix_saved": "Tá réimír na brainse sábháilte.", + "branch_prefix_saved_multiple": "Tá réimír brainse sábháilte do {{count}} brainse.", + "affected_branches": "Brainsí atá buailte ({{count}}):" + }, + "bulk_actions": { + "bulk_actions": "Gníomhartha mórchóir", + "affected_notes": "Nótaí a ndearnadh difear dóibh", + "include_descendants": "Cuir sliocht na nótaí roghnaithe san áireamh", + "available_actions": "Gníomhartha atá ar fáil", + "chosen_actions": "Gníomhartha roghnaithe", + "execute_bulk_actions": "Gníomhartha mórchóir a fhorghníomhú", + "bulk_actions_executed": "Tá gníomhartha mórchóir curtha i gcrích go rathúil.", + "none_yet": "Gan aon cheann fós... cuir gníomh leis trí chliceáil ar cheann de na cinn atá ar fáil thuas.", + "labels": "Lipéid", + "relations": "Caidreamh", + "notes": "Nótaí", + "other": "Eile" + }, + "clone_to": { + "clone_notes_to": "Nótaí clónála chuig...", + "help_on_links": "Cabhair le naisc", + "notes_to_clone": "Nótaí le clónáil", + "target_parent_note": "Nóta tuismitheora spriocdhírithe", + "search_for_note_by_its_name": "cuardach nóta de réir a ainm", + "cloned_note_prefix_title": "Taispeánfar nóta clónáilte sa chrann nótaí leis an réimír tugtha", + "prefix_optional": "Réimír (roghnach)", + "clone_to_selected_note": "Clónáil chuig an nóta roghnaithe", + "no_path_to_clone_to": "Gan aon chonair le clónáil chuige.", + "note_cloned": "Tabhair faoi deara gur clónáladh \"{{clonedTitle}}\" isteach i \"{{targetTitle}}\"" + }, + "confirm": { + "confirmation": "Deimhniú", + "cancel": "Cealaigh", + "ok": "Ceart go leor", + "are_you_sure_remove_note": "An bhfuil tú cinnte gur mian leat an nóta \"{{title}}\" a bhaint den léarscáil caidrimh? ", + "if_you_dont_check": "Mura seiceálann tú é seo, ní bhainfear an nóta ach den léarscáil chaidrimh.", + "also_delete_note": "Scrios an nóta freisin" + }, + "delete_notes": { + "delete_notes_preview": "Réamhamharc ar scriosadh nótaí", + "close": "Dún", + "delete_all_clones_description": "Scrios gach clón freisin (is féidir é seo a chealú in athruithe le déanaí)", + "erase_notes_description": "Ní mharcálann scriosadh gnáth (bog) ach na nótaí mar scriosta agus is féidir iad a dhíscriosadh (sa dialóg athruithe le déanaí) laistigh de thréimhse ama. Scriosfar na nótaí láithreach má sheiceálann tú an rogha seo agus ní bheidh sé indéanta na nótaí a dhíscriosadh.", + "erase_notes_warning": "Scrios nótaí go buan (ní féidir é seo a chealú), lena n-áirítear na clónanna go léir. Cuirfidh sé seo iallach ar an bhfeidhmchlár athlódáil.", + "notes_to_be_deleted": "Scriosfar na nótaí seo a leanas ({{notesCount}})", + "no_note_to_delete": "Ní scriosfar aon nóta (clóin amháin).", + "broken_relations_to_be_deleted": "Brisfear agus scriosfar na caidrimh seo a leanas ({{ relationCount}})", + "cancel": "Cealaigh", + "ok": "Ceart go leor", + "deleted_relation_text": "Tá tagairt don nóta {{- note}} (le scriosadh) le gaol {{- relation}} a thagann ó {{- source}}." + }, + "export": { + "export_note_title": "Nóta easpórtála", + "close": "Dún", + "export_type_subtree": "An nóta seo agus a shliocht uile", + "format_html": "HTML - molta mar go gcoinníonn sé an fhormáid go léir", + "format_html_zip": "HTML i gcartlann ZIP - moltar é seo ós rud é go gcoimeádann sé seo an fhormáidiú go léir.", + "format_markdown": "Markdown - caomhnaíonn sé seo an chuid is mó den fhormáidiú.", + "format_opml": "OPML - formáid idirmhalartaithe imlíneach le haghaidh téacs amháin. Níl formáidiú, íomhánna agus comhaid san áireamh.", + "opml_version_1": "OPML v1.0 - téacs simplí amháin", + "opml_version_2": "OPML v2.0 - ceadaíonn HTML freisin", + "export_type_single": "An nóta seo amháin gan a shliocht", + "export": "Easpórtáil", + "choose_export_type": "Roghnaigh cineál onnmhairithe ar dtús le do thoil", + "export_status": "Stádas onnmhairithe", + "export_in_progress": "Easpórtáil ar siúl: {{progressCount}}", + "export_finished_successfully": "Críochnaíodh an easpórtáil go rathúil.", + "format_pdf": "PDF - le haghaidh priontála nó comhroinnte.", + "share-format": "HTML le haghaidh foilsitheoireachta gréasáin - úsáideann sé an téama céanna a úsáidtear le haghaidh nótaí comhroinnte, ach is féidir é a fhoilsiú mar shuíomh gréasáin statach." + }, + "help": { + "title": "Bileog leideanna", + "editShortcuts": "Cuir aicearraí méarchláir in eagar", + "noteNavigation": "Nascleanúint nótaí", + "goUpDown": "téigh suas/síos sa liosta nótaí", + "collapseExpand": "nód a chomhdhlúthú/a leathnú", + "notSet": "gan socrú", + "goBackForwards": "dul ar ais/ar aghaidh sa stair", + "showJumpToNoteDialog": "taispeáin an dialóg \"Léim go\"", + "scrollToActiveNote": "scrollaigh go dtí an nóta gníomhach", + "jumpToParentNote": "léim go dtí an nóta tuismitheora", + "collapseWholeTree": "crann nótaí iomlán a fhilleadh", + "collapseSubTree": "fo-chrann a chomhdhlúthú", + "tabShortcuts": "Aicearraí cluaisíní", + "newTabNoteLink": "ar nasc nóta osclaíonn nóta i gcluaisín nua", + "newTabWithActivationNoteLink": "osclaítear an nasc ar nóta agus gníomhaíonn sé an nóta i gcluaisín nua", + "onlyInDesktop": "I ríomhairí deisce amháin (tógáil Electron)", + "openEmptyTab": "oscail cluaisín folamh", + "closeActiveTab": "dún an cluaisín gníomhach", + "activateNextTab": "gníomhachtaigh an chéad chluaisín eile", + "activatePreviousTab": "gníomhachtaigh an cluaisín roimhe seo", + "creatingNotes": "Nótaí á gcruthú", + "createNoteAfter": "cruthaigh nóta nua i ndiaidh an nóta ghníomhaigh", + "createNoteInto": "cruthaigh fo-nóta nua i nóta gníomhach", + "editBranchPrefix": "cuir réimír in eagar den chlón nóta gníomhach", + "movingCloningNotes": "Nótaí a bhogadh / a chlónáil", + "moveNoteUpDown": "bog nóta suas/síos sa liosta nótaí", + "moveNoteUpHierarchy": "bog nóta suas san ordlathas", + "multiSelectNote": "nóta ilroghnaithe thuas/thíos", + "selectAllNotes": "roghnaigh na nótaí go léir sa leibhéal reatha", + "selectNote": "roghnaigh nóta", + "copyNotes": "cóipeáil an nóta gníomhach (nó an rogha reatha) isteach sa ghearrthaisce (a úsáidtear le haghaidh clónála)", + "cutNotes": "gearr an nóta reatha (nó an rogha reatha) isteach sa ghearrthaisce (a úsáidtear chun nótaí a bhogadh)", + "pasteNotes": "greamaigh nóta(í) mar fho-nóta isteach sa nóta gníomhach (is é sin bogadh nó clónáil ag brath ar an cóipeáladh nó ar gearradh isteach sa ghearrthaisce é)", + "deleteNotes": "scrios nóta / fo-chrann", + "editingNotes": "Nótaí á n-eagarthóireacht", + "editNoteTitle": "Sa phána crainn, aistreofar ón bpána crainn go teideal an nóta. Má iontráiltear ó theideal an nóta, aistreofar an fócas go dtí an t-eagarthóir téacs. Aistreofar Ctrl+. ar ais ón eagarthóir go dtí an phána crainn.", + "createEditLink": "cruthaigh / cuir in eagar nasc seachtrach", + "createInternalLink": "nasc inmheánach a chruthú", + "followLink": "lean an nasc faoin gcúrsóir", + "insertDateTime": "cuir isteach an dáta agus an t-am reatha ag suíomh an charet", + "jumpToTreePane": "léim ar shiúl go dtí an painéal crainn agus scrollaigh go dtí an nóta gníomhach", + "markdownAutoformat": "Uathfhormáidiú cosúil le Markdown", + "headings": "##, ###, #### etc. agus spás ina dhiaidh sin do cheannteidil", + "bulletList": "*- agus spás ina dhiaidh sin le haghaidh liosta urchair", + "numberedList": "1.1) agus spás ina dhiaidh sin le haghaidh liosta uimhrithe", + "blockQuote": "tosaigh líne le > agus ina dhiaidh sin spás le haghaidh athfhriotail bhloc", + "troubleshooting": "Fabhtcheartú", + "reloadFrontend": "athlódáil tosaigh Trilium", + "showDevTools": "taispeáin uirlisí forbróra", + "showSQLConsole": "taispeáin consól SQL", + "other": "Eile", + "quickSearch": "díriú ar ionchur cuardaigh thapa", + "inPageSearch": "cuardach in-leathanaigh" + }, + "import": { + "importIntoNote": "Iompórtáil isteach i nóta", + "chooseImportFile": "Roghnaigh comhad allmhairithe", + "importDescription": "Déanfar ábhar an chomhaid/na gcomhad roghnaithe a allmhairiú mar nóta/nótaí linbh isteach", + "importZipRecommendation": "Agus comhad ZIP á iompórtáil, léireoidh ordlathas na nótaí struchtúr an fho-eolaire laistigh den chartlann.", + "options": "Roghanna", + "safeImportTooltip": "Is féidir go mbeadh scripteanna inrite a d'fhéadfadh iompar díobhálach a bheith iontu i gcomhaid easpórtála Trilium .zip. Díghníomhachtóidh allmhairiú sábháilte forghníomhú uathoibríoch na scripteanna allmhairithe go léir. Díthiceáil \"Allmhairiú sábháilte\" ach amháin má tá sé i gceist go mbeadh scripteanna inrite sa chartlann allmhairithe agus má tá muinín iomlán agat as ábhar an chomhaid allmhairithe.", + "safeImport": "Allmhairiú sábháilte", + "explodeArchivesTooltip": "Má tá tic sa bhosca seo léifidh Trilium comhaid .zip, .enex agus .opml agus cruthóidh sé nótaí ó chomhaid laistigh de na cartlanna sin. Mura bhfuil an tic sa bhosca seo, ceanglóidh Trilium na cartlanna féin leis an nóta.", + "explodeArchives": "Léigh ábhar na gcartlann .zip, .enex agus .opml.", + "shrinkImagesTooltip": "

Má roghnaíonn tú an rogha seo, déanfaidh Trilium iarracht na híomhánna allmhairithe a chrapadh trí scálú agus uasmhéadú a d'fhéadfadh difear a dhéanamh don cháilíocht íomhá a bhraitear. Mura roghnaítear é, allmhaireofar íomhánna gan athruithe.

Ní bhaineann sé seo le hallmhairí .zip le meiteashonraí ós rud é go nglactar leis go bhfuil na comhaid seo uasmhéadaithe cheana féin.

", + "shrinkImages": "Laghdaigh íomhánna", + "textImportedAsText": "Iompórtáil HTML, Markdown agus TXT mar nótaí téacs mura bhfuil sé soiléir ó na meiteashonraí", + "codeImportedAsCode": "Iompórtáil comhaid chód aitheanta (m.sh. .json) mar nótaí cóid mura bhfuil sé soiléir ó na meiteashonraí", + "replaceUnderscoresWithSpaces": "Cuir spásanna in ionad fo-línte in ainmneacha nótaí allmhairithe", + "import": "Iompórtáil", + "failed": "Theip ar an allmhairiú: {{message}}.", + "html_import_tags": { + "title": "Clibeanna Iompórtála HTML", + "description": "Cumraigh cé na clibeanna HTML ba chóir a chaomhnú agus nótaí á n-allmhairiú. Bainfear clibeanna nach bhfuil sa liosta seo le linn allmhairithe. Baintear roinnt clibeanna (cosúil le 'script') i gcónaí ar mhaithe le slándáil.", + "placeholder": "Cuir isteach clibeanna HTML, ceann amháin in aghaidh na líne", + "reset_button": "Athshocraigh go dtí an Liosta Réamhshocraithe" + }, + "import-status": "Stádas allmhairithe", + "in-progress": "Iompórtáil ar siúl: {{progress}}", + "successful": "Críochnaíodh an t-allmhairiú go rathúil." + }, + "include_note": { + "dialog_title": "Cuir nóta san áireamh", + "label_note": "Nóta", + "placeholder_search": "cuardach nóta de réir a ainm", + "box_size_prompt": "Méid an bhosca den nóta atá san áireamh:", + "box_size_small": "beag (~ 10 líne)", + "box_size_medium": "meánach (~ 30 líne)", + "box_size_full": "lán (taispeánann an bosca an téacs iomlán)", + "button_include": "Cuir nóta san áireamh" + }, + "info": { + "modalTitle": "Teachtaireacht eolais", + "closeButton": "Dún", + "okButton": "Ceart go leor", + "copy_to_clipboard": "Cóipeáil chuig an ghearrthaisce" + }, + "jump_to_note": { + "search_placeholder": "Cuardaigh nóta de réir a ainm nó a chineáil > le haghaidh orduithe...", + "search_button": "Cuardaigh sa téacs iomlán" + }, + "markdown_import": { + "dialog_title": "Allmhairiú marcála síos", + "modal_body_text": "Mar gheall ar bhosca gainimh an bhrabhsálaí ní féidir an ghearrthaisce a léamh go díreach ó JavaScript. Greamaigh an Markdown le hiompórtáil chuig an limistéar téacs thíos agus cliceáil ar an gcnaipe Iompórtáil", + "import_button": "Iompórtáil", + "import_success": "Tá ábhar marcála síos allmhairithe isteach sa doiciméad." + }, + "move_to": { + "dialog_title": "Bog nótaí chuig ...", + "notes_to_move": "Nótaí le bogadh", + "target_parent_note": "Nóta tuismitheora spriocdhírithe", + "search_placeholder": "cuardach nóta de réir a ainm", + "move_button": "Bog go dtí an nóta roghnaithe", + "error_no_path": "Gan aon chosán le bogadh chuige.", + "move_success_message": "Tá nótaí roghnaithe bogtha isteach " + }, + "note_type_chooser": { + "change_path_prompt": "Athraigh cá háit le nóta nua a chruthú:", + "search_placeholder": "cuardaigh cosán de réir ainm (réamhshocraithe má tá sé folamh)", + "modal_title": "Roghnaigh cineál nóta", + "modal_body": "Roghnaigh cineál nóta / teimpléad don nóta nua:", + "templates": "Teimpléid", + "builtin_templates": "Teimpléid Tógtha isteach" + }, + "password_not_set": { + "title": "Níl an focal faire socraithe", + "body1": "Déantar nótaí faoi chosaint a chriptiú ag baint úsáide as pasfhocal úsáideora, ach níl an pasfhocal socraithe fós.", + "body2": "Chun nótaí a chosaint, cliceáil an cnaipe thíos chun an dialóg Roghanna a oscailt agus do phasfhocal a shocrú.", + "go_to_password_options": "Téigh go dtí roghanna Pasfhocal" + }, + "prompt": { + "title": "Spreag", + "ok": "Ceart go leor", + "defaultTitle": "Spreag" + }, + "protected_session_password": { + "modal_title": "Seisiún faoi chosaint", + "help_title": "Cabhair maidir le nótaí faoi chosaint", + "close_label": "Dún", + "form_label": "Chun dul ar aghaidh leis an ngníomh iarrtha ní mór duit seisiún faoi chosaint a thosú trí phasfhocal a iontráil:", + "start_button": "Tosaigh seisiún faoi chosaint" + }, + "recent_changes": { + "title": "Athruithe le déanaí", + "erase_notes_button": "Scrios nótaí scriosta anois", + "deleted_notes_message": "Tá nótaí scriosta scriosta.", + "no_changes_message": "Gan aon athruithe fós...", + "undelete_link": "díscriosadh", + "confirm_undelete": "Ar mhaith leat an nóta seo agus a fho-nótaí a athscriosadh?" + }, + "revisions": { + "note_revisions": "Athbhreithnithe Nótaí", + "delete_all_revisions": "Scrios gach athbhreithniú ar an nóta seo", + "delete_all_button": "Scrios gach athbhreithniú", + "help_title": "Cabhair le hathbhreithnithe nótaí", + "confirm_delete_all": "Ar mhaith leat gach athbhreithniú ar an nóta seo a scriosadh?", + "no_revisions": "Gan aon athbhreithnithe don nóta seo go fóill...", + "restore_button": "Athchóirigh", + "diff_on": "Taispeáin an difríocht", + "diff_off": "Taispeáin ábhar", + "diff_on_hint": "Cliceáil chun difríocht foinse an nóta a thaispeáint", + "diff_off_hint": "Cliceáil chun ábhar an nóta a thaispeáint", + "diff_not_available": "Níl an difríocht ar fáil.", + "confirm_restore": "Ar mhaith leat an t-athbhreithniú seo a athbhunú? Scríobhfaidh sé seo teideal agus ábhar reatha an nóta leis an athbhreithniú seo.", + "delete_button": "Delete", + "confirm_delete": "Ar mhaith leat an t-athbhreithniú seo a scriosadh?", + "revisions_deleted": "Scriosadh athbhreithnithe nótaí.", + "revision_restored": "Tá athbhreithniú an nóta athchóirithe.", + "revision_deleted": "Scriosadh athbhreithniú an nóta.", + "snapshot_interval": "Eatramh Léirmheasa ar Nóta: {{seconds}}s.", + "maximum_revisions": "Teorainn maidir le hathbhreithniú nóta: {{number}}.", + "settings": "Socruithe Athbhreithnithe Nóta", + "download_button": "Íoslódáil", + "mime": "MIME: ", + "file_size": "Méid comhaid:", + "preview_not_available": "Níl réamhamharc ar fáil don chineál nóta seo." + }, + "sort_child_notes": { + "sort_children_by": "Sórtáil páistí de réir...", + "sorting_criteria": "Critéir sórtála", + "title": "teideal", + "date_created": "dáta cruthaithe", + "date_modified": "dáta modhnaithe", + "sorting_direction": "Treo sórtála", + "ascending": "ag dul suas", + "descending": "ag dul síos", + "folders": "Fillteáin", + "sort_folders_at_top": "sórtáil fillteáin ag an mbarr", + "natural_sort": "Sórtáil Nádúrtha", + "sort_with_respect_to_different_character_sorting": "sórtáil i ndáil le rialacha éagsúla sórtála agus cóimheasa carachtar i dteangacha nó i réigiúin éagsúla.", + "natural_sort_language": "Teanga sórtála nádúrtha", + "the_language_code_for_natural_sort": "An cód teanga le haghaidh sórtáil nádúrtha, e.g. \"zh-CN\" don tSínis.", + "sort": "Sórtáil" + }, + "upload_attachments": { + "upload_attachments_to_note": "Uaslódáil ceangaltáin chuig nóta", + "choose_files": "Roghnaigh comhaid", + "files_will_be_uploaded": "Uaslódálfar comhaid mar cheangaltáin isteach i {{noteTitle}}", + "options": "Roghanna", + "shrink_images": "Laghdaigh íomhánna", + "upload": "Uaslódáil", + "tooltip": "Má roghnaíonn tú an rogha seo, déanfaidh Trilium iarracht na híomhánna uaslódáilte a chrapadh trí scálú agus uasmhéadú a d'fhéadfadh difear a dhéanamh don cháilíocht íomhá a bhraitear. Mura roghnaítear é, uaslódáilfear na híomhánna gan aon athruithe." + }, + "attribute_detail": { + "attr_detail_title": "Teideal Sonraí Tréithe", + "close_button_title": "Cealaigh athruithe agus dún", + "attr_is_owned_by": "Is leis an tréith", + "attr_name_title": "Ní féidir ach carachtair alfa-uimhriúla, colon agus fo-líne a úsáid in ainm na tréithe", + "name": "Ainm", + "value": "Luach", + "target_note_title": "Is nasc ainmnithe idir nóta foinse agus nóta sprice é gaol.", + "target_note": "Nóta sprice", + "promoted_title": "Taispeántar an tréith chun cinn go feiceálach ar an nóta.", + "promoted": "Curtha chun cinn", + "promoted_alias_title": "An t-ainm atá le taispeáint i gcomhéadan úsáideora na dtréithe cur chun cinn.", + "promoted_alias": "Leasainm", + "multiplicity_title": "Sainmhíníonn iolracht cé mhéad tréith den ainm céanna is féidir a chruthú - uasmhéid 1 nó níos mó ná 1.", + "multiplicity": "Ilghnéitheacht", + "single_value": "Luach aonair", + "multi_value": "Illuach", + "label_type_title": "Cabhróidh cineál an lipéid le Trilium comhéadan oiriúnach a roghnú chun luach an lipéid a iontráil.", + "label_type": "Cineál", + "text": "Téacs", + "number": "Uimhir", + "boolean": "Booleánach", + "date": "Date", + "date_time": "Dáta & Am", + "time": "Am", + "url": "URL", + "precision_title": "Cén líon digití i ndiaidh snámhphointe ba chóir a bheith ar fáil sa chomhéadan socraithe luachanna.", + "precision": "Beachtas", + "digits": "digití", + "inverse_relation_title": "Socrú roghnach chun a shainiú cén gaol atá os coinne an ceann seo. Sampla: Is gaolta inbhéartacha iad Athair - Mac lena chéile.", + "inverse_relation": "Gaol inbhéartach", + "inheritable_title": "Déanfar tréith oidhreachtúil a oidhreachtú chuig gach sliocht faoin gcrann seo.", + "inheritable": "Oidhreachtúil", + "save_and_close": "Sábháil & dún Ctrl+Enter", + "delete": "Scrios", + "related_notes_title": "Nótaí eile leis an lipéad seo", + "more_notes": "Tuilleadh nótaí", + "label": "Sonraí lipéid", + "label_definition": "Mionsonraí sainmhínithe lipéid", + "relation": "Sonraí an chaidrimh", + "relation_definition": "Mionsonraí sainmhínithe caidrimh", + "disable_versioning": "díchumasaíonn sé uathleaganú. Úsáideach le haghaidh nótaí móra ach neamhthábhachtacha mar shampla - mar shampla leabharlanna móra JS a úsáidtear le haghaidh scriptithe", + "calendar_root": "nóta marcáilte ar cheart a úsáid mar fhréamh do nótaí lae. Níor cheart ach ceann amháin a mharcáil mar sin.", + "archived": "Ní bheidh nótaí leis an lipéad seo le feiceáil de réir réamhshocraithe i dtorthaí cuardaigh (i ndialóga Léim Chuig, Cuir Nasc Leis srl. chomh maith).", + "exclude_from_export": "ní chuirfear nótaí (lena bhfo-chrann) san áireamh in aon onnmhairiú nótaí", + "run": "Sainmhíníonn sé seo cé na himeachtaí ar cheart don script rith orthu. Is iad seo a leanas na luachanna féideartha:\n
    \n
  • frontendStartup - nuair a thosaíonn (nó a athnuachan) tosaigh Trilium, ach ní ar fhóin phóca.
  • \n
  • mobileStartup - nuair a thosaíonn (nó a athnuachan) tosaigh Trilium, ar fhóin phóca.
  • \n
  • backendStartup - nuair a thosaíonn cúltaca Trilium
  • \n
  • uair an chloig - rith uair san uair. Is féidir leat lipéad breise runAtHour a úsáid chun a shonrú cén uair a ritheann sé.
  • \n
  • daily - rith uair sa lá
  • \n
", + "run_on_instance": "Sainmhínigh cén sampla de Trilium ba chóir é seo a rith air. Réamhshocrú do gach sampla.", + "run_at_hour": "Cén uair ar cheart é seo a rith? Ba cheart é a úsáid i dteannta #run=hourly. Is féidir é seo a shainiú arís agus arís eile le haghaidh níos mó ritheanna i rith an lae.", + "disable_inclusion": "Ní chuirfear scripteanna leis an lipéad seo san áireamh i bhforghníomhú an scripte tuismitheora.", + "sorted": "coinníonn nótaí leanaí sórtáilte de réir teidil in ord aibítre", + "sort_direction": "ASC (an réamhshocrú) nó DESC", + "sort_folders_first": "Ba chóir fillteáin (nótaí le páistí) a shórtáil ar bharr", + "top": "coinnigh an nóta tugtha ag barr a thuismitheora (baineann sé seo le tuismitheoirí sórtáilte amháin)", + "hide_promoted_attributes": "Folaigh tréithe cur chun cinn ar an nóta seo", + "read_only": "Tá an t-eagarthóir i mód léite amháin. Ní oibríonn sé ach le haghaidh téacs agus nótaí cóid.", + "auto_read_only_disabled": "Is féidir nótaí téacs/cód a shocrú go huathoibríoch i mód léite nuair a bhíonn siad rómhór. Is féidir leat an t-iompar seo a dhíchumasú ar bhonn gach nóta tríd an lipéad seo a chur leis an nóta", + "app_css": "marcálann sé nótaí CSS a lódáiltear isteach san fheidhmchlár Trilium agus is féidir iad a úsáid dá bhrí sin chun cuma Trilium a mhodhnú.", + "app_theme": "marcálann sé nótaí CSS ar téamaí iomlána Trilium iad agus atá ar fáil dá bhrí sin i roghanna Trilium.", + "app_theme_base": "socraigh go \"next\", \"next-light\", nó \"next-dark\" chun an téama TriliumNext comhfhreagrach (uathoibríoch, geal nó dorcha) a úsáid mar bhunús do théama saincheaptha, in ionad an cheann oidhreachta.", + "css_class": "Cuirtear luach an lipéid seo leis an nód mar rang CSS ansin, a léiríonn an nóta tugtha sa chrann. Is féidir é seo a bheith úsáideach le haghaidh téamaithe ardleibhéil. Is féidir é a úsáid i nótaí teimpléid.", + "icon_class": "Cuirtear luach an lipéid seo leis an deilbhín ar an gcrann mar rang CSS, rud a chabhróidh le hidirdhealú amhairc a dhéanamh idir na nótaí sa chrann. D’fhéadfadh sampla a bheith ann de bx bx-home - tógtar deilbhíní ó boxicons. Is féidir iad a úsáid i nótaí teimpléid.", + "page_size": "líon na míreanna in aghaidh an leathanaigh i liostú nótaí", + "custom_request_handler": "féach láimhseálaí iarratais saincheaptha", + "custom_resource_provider": "féach láimhseálaí iarratais saincheaptha", + "widget": "marcálann an nóta seo mar ghiuirléid saincheaptha a chuirfear leis an gcrann comhpháirte Trilium", + "workspace": "marcálann an nóta seo mar spás oibre a ligeann d’ardú go héasca", + "workspace_icon_class": "sainmhíníonn sé rang CSS deilbhín bosca a úsáidfear sa chluaisín nuair a ardófar chuig an nóta seo é", + "workspace_tab_background_color": "Dath CSS a úsáidtear sa chluaisín nótaí nuair a ardaítear chuig an nóta seo é", + "workspace_calendar_root": "Sainmhíníonn fréamh féilire in aghaidh an spáis oibre", + "workspace_template": "Beidh an nóta seo le feiceáil i roghnú na dteimpléad atá ar fáil agus nóta nua á chruthú, ach amháin nuair a ardófar isteach i spás oibre ina bhfuil an teimpléad seo é", + "search_home": "Cruthófar nótaí cuardaigh nua mar leanaí den nóta seo", + "workspace_search_home": "Cruthófar nótaí cuardaigh nua mar leanaí den nóta seo nuair a ardófar chuig sinsear éigin den nóta spás oibre seo iad", + "inbox": "Suíomh réamhshocraithe sa bhosca isteach le haghaidh nótaí nua - nuair a chruthaíonn tú nóta ag baint úsáide as an gcnaipe \"nóta nua\" sa bharra taoibh, cruthófar nótaí mar nótaí linbh sa nóta atá marcáilte leis an lipéad #inbox.", + "workspace_inbox": "Suíomh réamhshocraithe sa bhosca isteach le haghaidh nótaí nua nuair a ardaítear chuig sinsear éigin den nóta spás oibre seo iad", + "sql_console_home": "suíomh réamhshocraithe nótaí consól SQL", + "bookmark_folder": "Beidh nóta leis an lipéad seo le feiceáil i leabharmharcanna mar fhillteán (ag tabhairt rochtain ar a leanaí)", + "share_hidden_from_tree": "Tá an nóta seo i bhfolach ón gcrann nascleanúna ar chlé, ach tá sé fós inrochtana lena URL", + "share_external_link": "Feidhmeoidh an nóta mar nasc chuig suíomh Gréasáin seachtrach sa chrann comhroinnte", + "share_alias": "sainigh leasainm trína mbeidh an nóta ar fáil faoi https://your_trilium_host/share/[your_alias]", + "share_omit_default_css": "Fágfar an CSS réamhshocraithe don leathanach comhroinnte ar lár. Bain úsáid as nuair a dhéanann tú athruithe móra ar stíl.", + "share_root": "nóta marcanna a sheirbheáiltear ar /share root.", + "share_description": "sainmhínigh an téacs atá le cur leis an meitea-chlib HTML le haghaidh cur síos", + "share_raw": "Seirbheálfar an nóta ina fhormáid amh, gan fillteán HTML", + "share_disallow_robot_indexing": "cuirfidh sé cosc ar innéacsú róbat an nóta seo tríd an gceannteideal X-Robots-Tag: noindex", + "share_credentials": "Teastaíonn dintiúir chun rochtain a fháil ar an nóta comhroinnte seo. Táthar ag súil go mbeidh an luach san fhormáid 'ainm úsáideora:pasfhocal'. Ná déan dearmad é seo a dhéanamh inoidhreachtúil le cur i bhfeidhm ar nótaí/íomhánna linbh.", + "share_index": "liostálfaidh nóta leis an lipéad seo fréamhacha uile nótaí comhroinnte", + "display_relations": "Ainmneacha caidrimh scartha le camóga ar cheart iad a thaispeáint. Beidh na cinn eile go léir i bhfolach.", + "hide_relations": "Ainmneacha caidrimh scartha le camóga ar cheart iad a cheilt. Taispeánfar na cinn eile go léir.", + "title_template": "Teideal réamhshocraithe nótaí a cruthaíodh mar leanaí den nóta seo. Déantar an luach a mheas mar theaghrán JavaScript\n agus dá bhrí sin is féidir é a shaibhriú le hábhar dinimiciúil trí na hathróga now agus parentNote insteallta. Samplaí:\n\n
    \n
  • Saothair liteartha ${parentNote.getLabelValue('authorName')}
  • \n
  • Log le haghaidh ${now.format('YYYY-MM-DD HH:mm:ss')}
  • \n
\n\nFéach vicí le sonraí, doiciméid API le haghaidh parentNote agus now le haghaidh sonraí.", + "template": "Beidh an nóta seo le feiceáil i roghnú na dteimpléad atá ar fáil agus nóta nua á chruthú", + "toc": "Cuirfidh #toc#toc=show iallach ar an gClár Ábhair a bheith le feiceáil, cuirfidh #toc=hide iallach air é a cheilt. Mura bhfuil an lipéad ann, breathnaítear ar an socrú domhanda", + "color": "sainmhíníonn dath an nóta sa chrann nótaí, snaisc srl. Úsáid aon luach datha CSS bailí cosúil le 'dearg' nó #a13d5f", + "keyboard_shortcut": "Sainmhíníonn sé seo aicearra méarchláir a léimfidh láithreach chuig an nóta seo. Sampla: 'ctrl+alt+e'. Éilítear athlódáil an tosaigh chun go dtiocfaidh an t-athrú i bhfeidhm.", + "keep_current_hoisting": "Ní athróidh oscailt an naisc seo an t-ardú fiú mura bhfuil an nóta inléite sa fho-chrann ardaithe reatha.", + "execute_button": "Teideal an chnaipe a fhorghníomhóidh an nóta cóid reatha", + "execute_description": "Cur síos níos faide ar an nóta cóid reatha a thaispeántar in éineacht leis an gcnaipe forghníomhaithe", + "exclude_from_note_map": "Beidh nótaí leis an lipéad seo i bhfolach ón Léarscáil Nótaí", + "new_notes_on_top": "Cruthófar nótaí nua ag barr an nóta tuismitheora, ní ag an mbun.", + "hide_highlight_widget": "Folaigh an giuirléid Liosta Aibhsithe", + "run_on_note_creation": "ritheann nuair a chruthaítear nóta ar an gcúl-deireadh. Úsáid an gaol seo más mian leat an script a rith do gach nóta a cruthaíodh faoi fho-chrann ar leith. Sa chás sin, cruthaigh é ar fhréamhnóta an fho-chrainn agus déan é inoidhreachta. Cuirfidh nóta nua a chruthaítear laistigh den fho-chrann (aon doimhneacht) an script i ngníomh.", + "run_on_child_note_creation": "ritheann sé nuair a chruthaítear nóta nua faoin nóta ina bhfuil an gaol seo sainmhínithe", + "run_on_note_title_change": "forghníomhaítear nuair a athraítear teideal an nóta (lena n-áirítear cruthú nótaí chomh maith)", + "run_on_note_content_change": "forghníomhaítear nuair a athraítear ábhar nótaí (lena n-áirítear cruthú nótaí chomh maith).", + "run_on_note_change": "ritheann nuair a athraítear nóta (áirítear cruthú nótaí leis). Ní áirítear athruithe ar an ábhar", + "run_on_note_deletion": "ritheann sé nuair a scriostar nóta", + "run_on_branch_creation": "ritheann nuair a chruthaítear brainse. Is nasc é brainse idir nóta tuismitheora agus nóta linbh agus cruthaítear é m.sh. nuair a bhíonn nóta á chlónáil nó á bhogadh.", + "run_on_branch_change": "ritheann nuair a dhéantar brainse a nuashonrú.", + "run_on_branch_deletion": "forghníomhaítear nuair a scriostar brainse. Is nasc idir nóta tuismitheora agus nóta linbh í an brainse agus scriostar í m.sh. nuair a bhogtar nóta (scriostar seanbhrainse/nasc).", + "run_on_attribute_creation": "ritheann nuair a chruthaítear tréith nua don nóta a shainmhíníonn an gaol seo", + "run_on_attribute_change": " ritheann nuair a athraítear tréith nóta a shainmhíníonn an gaol seo. Cuirtear i ngníomh é seo freisin nuair a scriostar an tréith", + "relation_template": "Gheobhaidh tréithe an nóta oidhreacht fiú gan caidreamh tuismitheora-linbh, cuirfear ábhar agus fo-chrann an nóta le nótaí sampla má tá siad folamh. Féach ar an doiciméadú le haghaidh sonraí.", + "inherit": "Gheobhaidh tréithe an nóta oidhreacht fiú mura bhfuil caidreamh tuismitheora-linbh ann. Féach caidreamh teimpléid le haghaidh coincheap cosúil leis. Féach oidhreacht tréithe sa doiciméadú.", + "render_note": "Déanfar nótaí den chineál \"render HTML note\" a rindreáil ag baint úsáide as nóta cóid (HTML nó script) agus is gá a léiriú ag baint úsáide as an ngaol seo cén nóta ba chóir a rindreáil", + "widget_relation": "Déanfar sprioc an chaidrimh seo a fhorghníomhú agus a léiriú mar ghiuirléid sa bharra taoibh", + "share_css": "Nóta CSS a chuirfear isteach sa leathanach comhroinnte. Caithfidh nóta CSS a bheith sa fho-chrann comhroinnte chomh maith. Smaoinigh ar 'share_hidden_from_tree' agus 'share_omit_default_css' a úsáid chomh maith.", + "share_js": "Nóta JavaScript a chuirfear isteach sa leathanach comhroinnte. Caithfidh nóta JS a bheith sa fho-chrann comhroinnte chomh maith. Smaoinigh ar 'share_hidden_from_tree' a úsáid.", + "share_template": "Nóta JavaScript leabaithe a úsáidfear mar theimpléad chun an nóta comhroinnte a thaispeáint. Téann sé ar ais go dtí an teimpléad réamhshocraithe. Smaoinigh ar 'share_hidden_from_tree' a úsáid.", + "share_favicon": "Nóta favicon le socrú sa leathanach comhroinnte. De ghnáth ba mhaith leat é a shocrú mar fhréamh comhroinnte agus é a dhéanamh oidhreachtúil. Caithfidh nóta favicon a bheith sa fho-chrann comhroinnte chomh maith. Smaoinigh ar 'share_hidden_from_tree' a úsáid.", + "is_owned_by_note": "is leis an nóta", + "other_notes_with_name": "Nótaí eile leis an ainm \"{{attributeName}}\" ar {{attributeType}}", + "and_more": "... agus {{count}} eile.", + "print_landscape": "Agus é á onnmhairiú go PDF, athraítear treoshuíomh an leathanaigh go tírdhreach seachas portráid.", + "print_page_size": "Agus é á easpórtáil go PDF, athraítear méid an leathanaigh. Luachanna tacaithe: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.", + "color_type": "Dath" + }, + "attribute_editor": { + "help_text_body1": "Chun lipéad a chur leis, clóscríobh m.sh. #rock nó más mian leat luach a chur leis freisin ansin m.sh. #year = 2020", + "help_text_body2": "I gcás gaol, clóscríobh ~author = @ rud a thabharfaidh uathchríochnú aníos inar féidir leat an nóta atá uait a chuardach.", + "help_text_body3": "Nó is féidir leat lipéad agus gaol a chur leis trí úsáid a bhaint as an gcnaipe + ar an taobh deas.", + "save_attributes": "Sábháil tréithe ", + "add_a_new_attribute": "Cuir tréith nua leis", + "add_new_label": "Cuir lipéad nua leis ", + "add_new_relation": "Cuir gaol nua leis ", + "add_new_label_definition": "Cuir sainmhíniú lipéid nua leis", + "add_new_relation_definition": "Cuir sainmhíniú caidrimh nua leis", + "placeholder": "Clóscríobh na lipéid agus na caidrimh anseo" + }, + "abstract_bulk_action": { + "remove_this_search_action": "Bain an gníomh cuardaigh seo" + }, + "execute_script": { + "execute_script": "Forghníomhaigh script", + "help_text": "Is féidir leat scripteanna simplí a fhorghníomhú ar na nótaí meaitseáilte.", + "example_1": "Mar shampla, chun teaghrán a chur le teideal nóta, bain úsáid as an script beag seo:", + "example_2": "Sampla níos casta ná tréithe uile an nóta mheaitseáilte a scriosadh:" + }, + "add_label": { + "add_label": "Cuir lipéad leis", + "label_name_placeholder": "ainm lipéid", + "label_name_title": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon.", + "to_value": "luach a chur", + "new_value_placeholder": "luach nua", + "help_text": "Ar na nótaí uile a mheaitseálann:", + "help_text_item1": "cruthaigh lipéad tugtha mura bhfuil ceann ag an nóta fós", + "help_text_item2": "nó luach an lipéid atá ann cheana a athrú", + "help_text_note": "Is féidir leat an modh seo a ghlaoch gan luach freisin, sa chás sin sanntar lipéad don nóta gan luach." + }, + "delete_label": { + "delete_label": "Scrios lipéad", + "label_name_placeholder": "ainm lipéid", + "label_name_title": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon." + }, + "rename_label": { + "rename_label": "Athainmnigh an lipéad", + "rename_label_from": "Athainmnigh an lipéad ó", + "old_name_placeholder": "seanainm", + "to": "Chuig", + "new_name_placeholder": "ainm nua", + "name_title": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon." + }, + "update_label_value": { + "update_label_value": "Nuashonraigh luach an lipéid", + "label_name_placeholder": "ainm lipéid", + "label_name_title": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon.", + "to_value": "luach a chur", + "new_value_placeholder": "luach nua", + "help_text": "Ar na nótaí uile a mheaitseálann, athraigh luach an lipéid atá ann cheana féin.", + "help_text_note": "Is féidir leat an modh seo a ghlaoch gan luach freisin, sa chás sin sanntar lipéad don nóta gan luach." + }, + "delete_note": { + "delete_note": "Scrios nóta", + "delete_matched_notes": "Scrios nótaí comhoiriúnacha", + "delete_matched_notes_description": "Scriosfaidh sé seo nótaí comhoiriúnacha.", + "undelete_notes_instruction": "Tar éis an scriosta, is féidir iad a athscriosadh ón dialóg Athruithe Le Déanaí.", + "erase_notes_instruction": "Chun nótaí a scriosadh go buan, is féidir leat dul i ndiaidh an scriosta chuig Rogha -> Eile agus cliceáil ar an gcnaipe \"Scrios nótaí scriosta anois\"." + }, + "delete_revisions": { + "delete_note_revisions": "Scrios athbhreithnithe nótaí", + "all_past_note_revisions": "Scriosfar gach athbhreithniú nóta roimhe seo ar nótaí meaitseáilte. Caomhnófar an nóta féin go hiomlán. I dtéarmaí eile, bainfear stair an nóta." + }, + "move_note": { + "move_note": "Bog nóta", + "to": "chuig", + "target_parent_note": "nóta tuismitheora sprice", + "on_all_matched_notes": "Ar na nótaí uile a mheaitseálann", + "move_note_new_parent": "bog nóta chuig an tuismitheoir nua mura bhfuil ach tuismitheoir amháin ag an nóta (i.e. baintear an seanbhrainse agus cruthaítear brainse nua isteach sa tuismitheoir nua)", + "clone_note_new_parent": "nóta clónála chuig an tuismitheoir nua má tá ilchlónanna/brainsí sa nóta (níl sé soiléir cén brainse ba chóir a bhaint)", + "nothing_will_happen": "ní tharlóidh aon rud mura féidir an nóta a bhogadh chuig an nóta sprice (i.e. chruthódh sé seo timthriall crainn)" + }, + "rename_note": { + "rename_note": "Athainmnigh an nóta", + "rename_note_title_to": "Athainmnigh teideal an nóta go", + "new_note_title": "teideal nóta nua", + "click_help_icon": "Cliceáil ar an deilbhín cabhrach ar dheis chun na roghanna go léir a fheiceáil", + "evaluated_as_js_string": "Déantar an luach tugtha a mheas mar theaghrán JavaScript agus dá bhrí sin is féidir é a shaibhriú le hábhar dinimiciúil tríd an athróg note insteallta (nóta á athainmniú). Samplaí:", + "example_note": "Nóta - athainmnítear na nótaí uile a mheaitseálann go 'Nóta'", + "example_new_title": "NUA: ${note.title} - cuirtear 'NUA:' roimh theidil nótaí meaitseáilte", + "example_date_prefix": "${note.dateCreatedObj.format('MM-DD:')}: ${note.title} - cuirtear réimír mhí-dháta cruthaithe an nóta leis na nótaí meaitseáilte", + "api_docs": "Féach ar dhoiciméid API le haghaidh nóta agus a airíonna dateCreatedObj / utcDateCreatedObj le haghaidh tuilleadh sonraí." + }, + "add_relation": { + "add_relation": "Cuir gaol leis", + "relation_name": "ainm an chaidrimh", + "allowed_characters": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon.", + "to": "chuig", + "target_note": "nóta sprice", + "create_relation_on_all_matched_notes": "Ar na nótaí meaitseáilte uile, cruthaigh gaol tugtha." + }, + "delete_relation": { + "delete_relation": "Scrios an gaol", + "relation_name": "ainm an chaidrimh", + "allowed_characters": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon." + }, + "rename_relation": { + "rename_relation": "Athainmnigh an gaol", + "rename_relation_from": "Athainmnigh an gaol ó", + "old_name": "seanainm", + "to": "Chuig", + "new_name": "ainm nua", + "allowed_characters": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon." + }, + "update_relation_target": { + "update_relation": "Nuashonraigh an gaol", + "relation_name": "ainm an chaidrimh", + "allowed_characters": "Is carachtair cheadaithe iad carachtair alfa-uimhriúla, fo-strait agus colon.", + "to": "chuig", + "target_note": "nóta sprice", + "on_all_matched_notes": "Ar na nótaí uile a mheaitseálann", + "change_target_note": "athrú nóta sprice an chaidrimh atá ann cheana", + "update_relation_target": "Nuashonraigh sprioc an chaidrimh" + }, + "attachments_actions": { + "open_externally": "Oscail go seachtrach", + "open_externally_title": "Osclófar an comhad in feidhmchlár seachtrach agus beidh súil ghéar air le haghaidh athruithe. Beidh tú in ann an leagan modhnaithe a uaslódáil ar ais chuig Trilium ansin.", + "open_custom": "Oscail saincheaptha", + "open_custom_title": "Osclófar an comhad in feidhmchlár seachtrach agus beidh súil ghéar air le haghaidh athruithe. Beidh tú in ann an leagan modhnaithe a uaslódáil ar ais chuig Trilium ansin.", + "download": "Íoslódáil", + "rename_attachment": "Athainmnigh an ceangaltán", + "upload_new_revision": "Uaslódáil athbhreithniú nua", + "copy_link_to_clipboard": "Cóipeáil nasc chuig an ghearrthaisce", + "convert_attachment_into_note": "Tiontaigh an ceangaltán ina nóta", + "delete_attachment": "Scrios an ceangaltán", + "upload_success": "Tá athbhreithniú nua ar an gceangaltán uaslódáilte.", + "upload_failed": "Theip ar uaslódáil athbhreithniú nua ar cheangaltán.", + "open_externally_detail_page": "Ní féidir ceangaltán a oscailt go seachtrach ach ón leathanach sonraí, cliceáil ar shonraí an cheangaltáin ar dtús agus déan an gníomh arís.", + "open_custom_client_only": "Ní féidir ceangaltáin a oscailt go saincheaptha ach amháin ón gcliant deisce.", + "delete_confirm": "An bhfuil tú cinnte gur mian leat an ceangaltán '{{title}}' a scriosadh?", + "delete_success": "Scriosadh an ceangaltán '{{title}}'.", + "convert_confirm": "An bhfuil tú cinnte gur mian leat an ceangaltán '{{title}}' a thiontú ina nóta ar leith?", + "convert_success": "Tá an ceangaltán '{{title}}' tiontaithe go nóta.", + "enter_new_name": "Cuir isteach ainm an cheangaltáin nua le do thoil" + }, + "calendar": { + "mon": "Lua", + "tue": "Mai", + "wed": "Céa", + "thu": "Déa", + "fri": "Aoi", + "sat": "Sat", + "sun": "Dom", + "cannot_find_day_note": "Ní féidir nóta lae a aimsiú", + "cannot_find_week_note": "Ní féidir nóta seachtaine a aimsiú", + "january": "Eanáir", + "february": "Feabhra", + "march": "Márta", + "april": "Aibreán", + "may": "Bealtaine", + "june": "Meitheamh", + "july": "Iúil", + "august": "Lúnasa", + "september": "Meán Fómhair", + "october": "Deireadh Fómhair", + "november": "Samhain", + "december": "Nollaig", + "week": "Seachtain", + "week_previous": "An tseachtain roimhe sin", + "week_next": "An tseachtain seo chugainn", + "month": "Mí", + "month_previous": "An mhí roimhe sin", + "month_next": "An mhí seo chugainn", + "year": "Bliain", + "year_previous": "An bhliain roimhe sin", + "year_next": "An bhliain seo chugainn", + "list": "Liosta", + "today": "Inniu" + }, + "close_pane_button": { + "close_this_pane": "Dún an phainéal seo" + }, + "create_pane_button": { + "create_new_split": "Cruthaigh scoilt nua" + }, + "edit_button": { + "edit_this_note": "Cuir an nóta seo in eagar" + }, + "show_toc_widget_button": { + "show_toc": "Taispeáin Clár Ábhair" + }, + "show_highlights_list_widget_button": { + "show_highlights_list": "Taispeáin Liosta Buaicphointí" + }, + "zen_mode": { + "button_exit": "Scoir Mód Zen" + }, + "sync_status": { + "unknown": "

Beidh stádas an sioncrónaithe ar eolas a luaithe a thosóidh an chéad iarracht sioncrónaithe eile.

Cliceáil chun sioncrónú a spreagadh anois.

", + "connected_with_changes": "

Ceangailte leis an bhfreastalaí sioncrónaithe.
Tá roinnt athruithe le sioncrónú fós.

Cliceáil chun sioncrónú a spreagadh.

", + "connected_no_changes": "

Ceangailte leis an bhfreastalaí sioncrónaithe.
Tá na hathruithe go léir sioncrónaithe cheana féin.

Cliceáil chun sioncrónú a spreagadh.

", + "disconnected_with_changes": "

Níor éirigh leis an nasc leis an bhfreastalaí sioncrónaithe a bhunú.
Tá roinnt athruithe le sioncrónú fós.

Cliceáil chun sioncrónú a ghníomhachtú.

", + "disconnected_no_changes": "

Níor éirigh leis an nasc leis an bhfreastalaí sioncrónaithe a bhunú.
Tá na hathruithe ar fad aitheanta sioncrónaithe.

Cliceáil chun sioncrónú a spreagadh.

", + "in_progress": "Tá sioncrónú leis an bhfreastalaí ar siúl." + }, + "left_pane_toggle": { + "show_panel": "Taispeáin an painéal", + "hide_panel": "Folaigh an painéal" + }, + "move_pane_button": { + "move_left": "Bog ar chlé", + "move_right": "Bog ar dheis" + }, + "note_actions": { + "convert_into_attachment": "Tiontaigh ina cheangaltán", + "re_render_note": "Ath-rindreáil nóta", + "search_in_note": "Cuardaigh sa nóta", + "note_source": "Foinse nóta", + "note_attachments": "Ceangaltáin nótaí", + "open_note_externally": "Oscail nóta go seachtrach", + "open_note_externally_title": "Osclófar an comhad in feidhmchlár seachtrach agus beidh súil ghéar air le haghaidh athruithe. Beidh tú in ann an leagan modhnaithe a uaslódáil ar ais chuig Trilium ansin.", + "open_note_custom": "Oscail nóta saincheaptha", + "open_note_on_server": "Oscail nóta ar an bhfreastalaí", + "import_files": "Iompórtáil comhaid", + "export_note": "Nóta easpórtála", + "delete_note": "Scrios nóta", + "print_note": "Priontáil nóta", + "view_revisions": "Tabhair faoi deara athbhreithnithe...", + "save_revision": "Sábháil athbhreithniú", + "advanced": "Ardleibhéil", + "convert_into_attachment_failed": "Theip ar nóta '{{title}}' a thiontú.", + "convert_into_attachment_successful": "Tá an nóta '{{title}}' tiontaithe go ceangaltán.", + "convert_into_attachment_prompt": "An bhfuil tú cinnte gur mian leat an nóta '{{title}}' a thiontú ina cheangaltán den nóta tuismitheora?", + "print_pdf": "Easpórtáil mar PDF...", + "export_as_image": "Easpórtáil mar íomhá", + "export_as_image_png": "PNG (rastar)", + "export_as_image_svg": "SVG (veicteoir)", + "note_map": "Léarscáil nótaí" + }, + "onclick_button": { + "no_click_handler": "Níl aon láimhseálaí cliceáil sainithe ag an ngiuirléid cnaipe '{{componentId}}'" + }, + "protected_session_status": { + "active": "Tá an seisiún cosanta gníomhach. Cliceáil chun an seisiún cosanta a fhágáil.", + "inactive": "Cliceáil chun dul isteach i seisiún faoi chosaint" + }, + "revisions_button": { + "note_revisions": "Athbhreithnithe Nótaí" + }, + "update_available": { + "update_available": "Nuashonrú ar fáil" + }, + "note_launcher": { + "this_launcher_doesnt_define_target_note": "Ní shainíonn an lainseálaí seo nóta sprice." + }, + "code_buttons": { + "execute_button_title": "Rith an script", + "trilium_api_docs_button_title": "Oscail doiciméid API Trilium", + "save_to_note_button_title": "Sábháil chuig nóta", + "opening_api_docs_message": "Ag oscailt doiciméid API...", + "sql_console_saved_message": "Tá nóta Consól SQL sábháilte i {{note_path}}" + }, + "copy_image_reference_button": { + "button_title": "Cóipeáil tagairt íomhá chuig an ghearrthaisce, is féidir é a ghreamú i nóta téacs." + }, + "hide_floating_buttons_button": { + "button_title": "Folaigh cnaipí" + }, + "show_floating_buttons_button": { + "button_title": "Taispeáin cnaipí" + }, + "svg_export_button": { + "button_title": "Easpórtáil léaráid mar SVG" + }, + "relation_map_buttons": { + "reset_pan_zoom_title": "Athshocraigh panáil agus súmáil go dtí na comhordanáidí agus an formhéadú tosaigh", + "zoom_in_title": "Zúmáil Isteach", + "zoom_out_title": "Zúmáil Amach", + "create_child_note_title": "Cruthaigh nóta linbh agus cuir leis an léarscáil é" + }, + "zpetne_odkazy": { + "backlink_one": "{{count}} Nasc siar", + "backlink_two": "{{count}} Naisc siar", + "backlink_few": "{{count}} Naisc siar", + "backlink_many": "{{count}} Naisc siar", + "backlink_other": "{{count}} Naisc siar", + "relation": "gaol" + }, + "mobile_detail_menu": { + "insert_child_note": "Cuir nóta linbh isteach", + "delete_this_note": "Scrios an nóta seo", + "note_revisions": "Athbhreithnithe nóta", + "error_cannot_get_branch_id": "Ní féidir aitheantas brainse a fháil do NotePad '{{notePath}}'", + "error_unrecognized_command": "Ordú gan aitheantas {{command}}", + "backlinks": "Naisc ar ais", + "content_language_switcher": "Teanga an ábhair: {{language}}" + }, + "note_icon": { + "change_note_icon": "Deilbhín nóta athraithe", + "search": "Cuardaigh:", + "search_placeholder_one": "Cuardaigh deilbhíní {{number}} ar fud pacáistí {{count}}", + "search_placeholder_two": "Cuardaigh deilbhíní {{number}} ar fud pacáistí {{count}}", + "search_placeholder_few": "Cuardaigh deilbhíní {{number}} ar fud pacáistí {{count}}", + "search_placeholder_many": "Cuardaigh deilbhíní {{number}} ar fud pacáistí {{count}}", + "search_placeholder_other": "Cuardaigh deilbhíní {{number}} ar fud pacáistí {{count}}", + "search_placeholder_filtered": "Cuardaigh deilbhíní {{number}} i {{name}}", + "reset-default": "Athshocraigh go dtí an deilbhín réamhshocraithe", + "filter": "Scagaire", + "filter-none": "Gach deilbhín", + "filter-default": "Deilbhíní réamhshocraithe", + "icon_tooltip": "{{name}}\nPacáiste deilbhín: {{iconPack}}", + "no_results": "Níor aimsíodh aon deilbhíní." + }, + "basic_properties": { + "note_type": "Cineál nóta", + "editable": "In-eagarthóireacht", + "basic_properties": "Airíonna Bunúsacha", + "language": "Teanga", + "configure_code_notes": "Cumraigh nótaí cóid..." + }, + "book_properties": { + "view_type": "Cineál radhairc", + "grid": "Eangach", + "list": "Liosta", + "collapse_all_notes": "Laghdaigh na nótaí go léir", + "expand_tooltip": "Leathnaíonn sé seo na páistí díreacha den bhailiúchán seo (leibhéal amháin domhain). Chun níos mó roghanna a fháil, brúigh an tsaighead ar dheis.", + "collapse": "Laghdaigh", + "expand": "Leathnaigh", + "expand_first_level": "Leathnaigh leanaí díreacha", + "expand_nth_level": "Leathnaigh leibhéil {{depth}}", + "expand_all_levels": "Leathnaigh gach leibhéal", + "book_properties": "Airíonna an Bhailiúcháin", + "invalid_view_type": "Cineál radhairc neamhbhailí '{{type}}'", + "calendar": "Féilire", + "table": "Tábla", + "geo-map": "Léarscáil Gheografach", + "board": "Bord", + "presentation": "Cur i Láthair", + "include_archived_notes": "Taispeáin nótaí cartlannaithe", + "hide_child_notes": "Folaigh nótaí leanaí sa chrann" + }, + "edited_notes": { + "no_edited_notes_found": "Gan aon nótaí eagarthóireachta ar an lá seo go fóill...", + "title": "Nótaí Eagarthóireachta", + "deleted": "(scriosta)" + }, + "file_properties": { + "note_id": "Aitheantas Nóta", + "original_file_name": "Ainm comhaid bunaidh", + "file_type": "Cineál comhaid", + "file_size": "Méid comhaid", + "download": "Íoslódáil", + "open": "Oscail go seachtrach", + "upload_new_revision": "Uaslódáil athbhreithniú nua", + "upload_success": "Tá athbhreithniú comhaid nua uaslódáilte.", + "upload_failed": "Theip ar uaslódáil athbhreithniú comhaid nua.", + "title": "Comhad" + }, + "image_properties": { + "original_file_name": "Ainm comhaid bunaidh", + "file_type": "Cineál comhaid", + "file_size": "Méid comhaid", + "download": "Íoslódáil", + "open": "Oscail", + "copy_reference_to_clipboard": "Cóipeáil tagairt chuig an ghearrthaisce", + "upload_new_revision": "Uaslódáil athbhreithniú nua", + "upload_success": "Tá athbhreithniú nua íomhá uaslódáilte.", + "upload_failed": "Theip ar uaslódáil athbhreithniú íomhá nua: {{message}}", + "title": "Íomhá" + }, + "inherited_attribute_list": { + "title": "Tréithe Oidhreachta", + "no_inherited_attributes": "Gan aon tréithe oidhreachta.", + "none": "aon cheann" + }, + "note_info_widget": { + "note_id": "Aitheantas Nóta", + "created": "Cruthaithe", + "modified": "Modhnaithe", + "type": "Cineál", + "mime": "Cineál MIME", + "note_size": "Méid nóta", + "note_size_info": "Tugann méid an nóta meastachán garbh ar riachtanais stórála don nóta seo. Cuirtear ábhar an nóta agus ábhar a athbhreithnithe nótaí san áireamh ann.", + "calculate": "ríomh", + "subtree_size": "(méid fo-chrainn: {{size}} i nótaí {{count}})", + "title": "Eolas Nóta", + "show_similar_notes": "Taispeáin nótaí comhchosúla" + }, + "note_map": { + "open_full": "Leathnaigh go hiomlán", + "collapse": "Laghdaigh go dtí an gnáthmhéid", + "title": "Léarscáil Nótaí", + "fix-nodes": "Deisigh nóid", + "link-distance": "Fad naisc" + }, + "note_paths": { + "title": "Cosáin Nótaí", + "clone_button": "Nóta clónáilte chuig suíomh nua...", + "intro_placed": "Cuirtear an nóta seo sna cosáin seo a leanas:", + "intro_not_placed": "Níl an nóta seo curtha sa chrann nótaí go fóill.", + "outside_hoisted": "Tá an cosán seo lasmuigh den nóta ardaithe agus bheadh ort é a dhíardú.", + "archived": "Cartlannaithe", + "search": "Cuardaigh" + }, + "note_properties": { + "this_note_was_originally_taken_from": "Tógadh an nóta seo ar dtús ó:", + "info": "Eolas" + }, + "owned_attribute_list": { + "owned_attributes": "Tréithe faoi Úinéireacht" + }, + "promoted_attributes": { + "promoted_attributes": "Tréithe Curtha Chun Cinn", + "unset-field-placeholder": "gan socrú", + "url_placeholder": "http://suíomh gréasáin...", + "open_external_link": "Oscail nasc seachtrach", + "unknown_label_type": "Cineál lipéid anaithnid '{{type}}'", + "unknown_attribute_type": "Cineál tréith anaithnid '{{type}}'", + "add_new_attribute": "Cuir tréith nua leis", + "remove_this_attribute": "Bain an tréith seo", + "remove_color": "Bain an lipéad datha" + }, + "script_executor": { + "query": "Iarratas", + "script": "Script", + "execute_query": "Cuir Iarratas i bhFeidhm", + "execute_script": "Rith an Script" + }, + "search_definition": { + "add_search_option": "Cuir rogha cuardaigh leis:", + "search_string": "teaghrán cuardaigh", + "search_script": "script cuardaigh", + "ancestor": "sinsear", + "fast_search": "cuardach tapa", + "fast_search_description": "Díchumasaíonn an rogha cuardaigh thapa cuardach iomlán ar ábhar nótaí rud a d’fhéadfadh luas a chur le cuardach i mbunachair shonraí móra.", + "include_archived": "cuir cartlannaithe san áireamh", + "include_archived_notes_description": "De réir réamhshocraithe, eisiatar nótaí cartlannaithe ó thorthaí cuardaigh, agus leis an rogha seo cuirfear san áireamh iad.", + "order_by": "ordú de réir", + "limit": "teorainn", + "limit_description": "Teorainn a chur le líon na dtorthaí", + "debug": "dífhabhtú", + "debug_description": "Priontálfaidh Debug faisnéis bhreise dífhabhtaithe isteach sa chonsól chun cabhrú le fiosrúcháin chasta a dhífhabhtú", + "action": "gníomh", + "search_button": "Cuardaigh", + "search_execute": "Gníomhartha Cuardaigh & Forghníomhaithe", + "save_to_note": "Sábháil chuig nóta", + "search_parameters": "Paraiméadair Chuardaigh", + "unknown_search_option": "Rogha cuardaigh anaithnid {{searchOptionName}}", + "search_note_saved": "Tá an nóta cuardaigh sábháilte i {{- notePathTitle}}", + "actions_executed": "Tá gníomhartha curtha i gcrích.", + "view_options": "Roghanna féachana:", + "option": "rogha" + }, + "similar_notes": { + "title": "Nótaí Comhchosúla", + "no_similar_notes_found": "Níor aimsíodh aon nótaí comhchosúla." + }, + "abstract_search_option": { + "remove_this_search_option": "Bain an rogha cuardaigh seo", + "failed_rendering": "Theip ar an rogha cuardaigh rindreála: {{dto}} le hearráid: {{error}} {{stack}}" + }, + "ancestor": { + "label": "Sinsear", + "placeholder": "cuardach nóta de réir a ainm", + "depth_label": "doimhneacht", + "depth_doesnt_matter": "níl aon tábhacht leis", + "depth_eq": "is é {{count}} go díreach", + "direct_children": "páistí díreacha", + "depth_gt": "níos mó ná {{count}}", + "depth_lt": "is lú ná {{count}}" + }, + "debug": { + "debug": "Dífhabhtú", + "debug_info": "Priontálfaidh Debug faisnéis bhreise dífhabhtaithe isteach sa chonsól chun cabhrú le fiosrúcháin chasta a dhífhabhtú.", + "access_info": "Chun rochtain a fháil ar an bhfaisnéis dífhabhtaithe, cuir an fiosrúchán i gcrích agus cliceáil ar \"Taispeáin log an chúltaca\" sa chúinne uachtarach ar chlé." + }, + "fast_search": { + "fast_search": "Cuardach tapa", + "description": "Díchumasaíonn an rogha cuardaigh thapa cuardach iomlán ar ábhar nótaí rud a d’fhéadfadh luas a chur le cuardach i mbunachair shonraí móra." + }, + "include_archived_notes": { + "include_archived_notes": "Cuir nótaí cartlannaithe san áireamh" + }, + "limit": { + "limit": "Teorainn", + "take_first_x_results": "Glac na chéad X torthaí sonraithe amháin." + }, + "order_by": { + "order_by": "Ordú de réir", + "relevancy": "Ábharthacht (réamhshocraithe)", + "title": "Teideal", + "date_created": "Dáta cruthaithe", + "date_modified": "Dáta an mhodhnaithe dheireanaigh", + "content_size": "Méid ábhar nóta", + "content_and_attachments_size": "Méid ábhar nótaí lena n-áirítear ceangaltáin", + "content_and_attachments_and_revisions_size": "Tabhair faoi deara méid an ábhair lena n-áirítear ceangaltáin agus athbhreithnithe", + "revision_count": "Líon na n-athbhreithnithe", + "children_count": "Líon na nótaí leanaí", + "parent_count": "Líon na gclón", + "owned_label_count": "Líon na lipéid", + "owned_relation_count": "Líon na gcaidreamh", + "target_relation_count": "Líon na gcaidreamh atá dírithe ar an nóta", + "random": "Ord randamach", + "asc": "Ag dul suas (réamhshocraithe)", + "desc": "Ag dul síos" + }, + "search_script": { + "title": "Script cuardaigh:", + "placeholder": "cuardach nóta de réir a ainm", + "description1": "Ligeann script cuardaigh torthaí cuardaigh a shainiú trí script a rith. Soláthraíonn sé seo an tsolúbthacht uasta nuair nach leor cuardach caighdeánach.", + "description2": "Ní mór don script cuardaigh a bheith den chineál \"cód\" agus den fhochineál \"JavaScript backend\". Caithfidh an script sraith de nótaí aitheantóirí nó nótaí a thabhairt ar ais.", + "example_title": "Féach ar an sampla seo:", + "example_code": "// 1. réamh-scagadh ag baint úsáide as cuardach caighdeánach\nconst candidateNotes = api.searchForNotes(\"#iris\");\n\n// 2. critéir chuardaigh saincheaptha a chur i bhfeidhm\nconst matchedNotes = candidateNotes\n.filter(note => note.title.match(/[0-9]{1,2}\\. ?[0-9]{1,2}\\. ?[0-9]{4}/));\n\nreturn matchedNotes;", + "note": "Tabhair faoi deara nach féidir an script cuardaigh agus an teaghrán cuardaigh a chomhcheangal le chéile." + }, + "search_string": { + "title_column": "Teaghrán cuardaigh:", + "placeholder": "eochairfhocail lántéacs, #tag = luach...", + "search_syntax": "Comhréir cuardaigh", + "also_see": "féach freisin", + "complete_help": "cabhair iomlán ar chomhréir chuardaigh", + "full_text_search": "Níl le déanamh ach aon téacs a iontráil le haghaidh cuardach téacs iomlán", + "label_abc": "nótaí ar ais leis an lipéad abc", + "label_year": "nótaí a mheaitseálann le bliain lipéid a bhfuil luach 2019 acu", + "label_rock_pop": "nótaí a bhfuil lipéid rac-cheoil agus pop orthu araon", + "label_rock_or_pop": "ní mór ach ceann amháin de na lipéid a bheith i láthair", + "label_year_comparison": "comparáid uimhriúil (chomh maith >, >=, <).", + "label_date_created": "nótaí a cruthaíodh sa mhí seo caite", + "error": "Earráid chuardaigh: {{error}}", + "search_prefix": "Cuardaigh:" + }, + "attachment_detail": { + "open_help_page": "Oscail leathanach cabhrach ar cheangaltáin", + "owning_note": "Nóta úinéireachta: ", + "you_can_also_open": ", is féidir leat an oscailt freisin ", + "list_of_all_attachments": "Liosta de na ceangaltáin uile", + "attachment_deleted": "Scriosadh an ceangaltán seo." + }, + "attachment_list": { + "open_help_page": "Oscail leathanach cabhrach ar cheangaltáin", + "owning_note": "Nóta úinéireachta: ", + "upload_attachments": "Uaslódáil ceangaltáin", + "no_attachments": "Níl aon cheangaltáin leis an nóta seo." + }, + "book": { + "no_children_help": "Níl aon nótaí faoi mhíbhuntáiste sa bhailiúchán seo mar sin níl aon rud le taispeáint. Féach ar an vicí le haghaidh tuilleadh sonraí.", + "drag_locked_title": "Glasáilte le haghaidh eagarthóireachta", + "drag_locked_message": "Ní cheadaítear tarraingt ós rud é go bhfuil an bailiúchán faoi ghlas le haghaidh eagarthóireachta." + }, + "editable_code": { + "placeholder": "Clóscríobh ábhar do nóta cóid anseo..." + }, + "editable_text": { + "placeholder": "Clóscríobh ábhar do nóta anseo...", + "editor_crashed_title": "Thuairteáil an t-eagarthóir téacs", + "editor_crashed_content": "Aisghabhadh d’ábhar go rathúil, ach b’fhéidir nár sábháladh cuid de do chuid athruithe is déanaí.", + "editor_crashed_details_button": "Féach tuilleadh sonraí...", + "editor_crashed_details_intro": "Má bhíonn an earráid seo agat arís agus arís eile, smaoinigh ar í a thuairisciú ar GitHub tríd an bhfaisnéis thíos a ghreamú.", + "editor_crashed_details_title": "Faisnéis theicniúil", + "auto-detect-language": "Braite go huathoibríoch", + "keeps-crashing": "Tá an chomhpháirt eagarthóireachta ag tuairteáil i gcónaí. Déan iarracht Trilium a atosú. Má leanann an fhadhb, smaoinigh ar thuairisc fabht a chruthú." + }, + "empty": { + "open_note_instruction": "Oscail nóta trí theideal an nóta a chlóscríobh sa bhosca ionchuir thíos nó roghnaigh nóta sa chrann.", + "search_placeholder": "cuardach a dhéanamh ar nóta de réir a ainm", + "enter_workspace": "Cuir isteach spás oibre {{title}}" + }, + "file": { + "file_preview_not_available": "Níl réamhamharc comhaid ar fáil don fhormáid comhaid seo.", + "too_big": "Ní thaispeánann an réamhamharc ach na chéad {{maxNumChars}} carachtar den chomhad ar chúiseanna feidhmíochta. Íoslódáil an comhad agus oscail go seachtrach é le go mbeidh tú in ann an t-ábhar iomlán a fheiceáil." + }, + "protected_session": { + "enter_password_instruction": "Éilíonn tú do phasfhocal a iontráil chun nóta faoi chosaint a thaispeáint:", + "start_session_button": "Tosaigh seisiún faoi chosaint", + "started": "Tá seisiún faoi chosaint tosaithe.", + "wrong_password": "Pasfhocal mícheart.", + "protecting-finished-successfully": "Críochnaíodh an chosaint go rathúil.", + "unprotecting-finished-successfully": "Críochnaíodh an díchosaint go rathúil.", + "protecting-in-progress": "Cosaint ar siúl: {{count}}", + "unprotecting-in-progress-count": "Díchosaint ar siúl: {{count}}", + "protecting-title": "Stádas cosanta", + "unprotecting-title": "Stádas díchosanta" + }, + "relation_map": { + "open_in_new_tab": "Oscail i gcluaisín nua", + "remove_note": "Bain nóta", + "edit_title": "Cuir an teideal in eagar", + "rename_note": "Athainmnigh an nóta", + "enter_new_title": "Cuir isteach teideal nua an nóta:", + "remove_relation": "Bain an gaol", + "confirm_remove_relation": "An bhfuil tú cinnte gur mian leat an gaol a bhaint?", + "specify_new_relation_name": "Sonraigh ainm an chaidrimh nua (carachtair cheadaithe: alfa-uimhriúla, colon agus fo-líne):", + "connection_exists": "Tá nasc '{{name}}' idir na nótaí seo ann cheana féin.", + "start_dragging_relations": "Tosaigh ag tarraingt caidrimh as seo agus scaoil iad ar nóta eile.", + "note_not_found": "Nóta {{noteId}} gan aimsiú!", + "cannot_match_transform": "Ní féidir an claochlú a mheaitseáil: {{transform}}", + "note_already_in_diagram": "Tabhair faoi deara go bhfuil \"{{title}}\" sa léaráid cheana féin.", + "enter_title_of_new_note": "Cuir isteach teideal an nóta nua", + "default_new_note_title": "nóta nua", + "click_on_canvas_to_place_new_note": "Cliceáil ar chanbhás chun nóta nua a chur" + }, + "render": { + "note_detail_render_help_1": "Taispeántar an nóta cabhrach seo mar nach bhfuil aon ghaol riachtanach ag an nóta seo den chineál Render HTML le go bhfeidhmeoidh sé i gceart.", + "note_detail_render_help_2": "Úsáidtear cineál nóta HTML rindreála le haghaidh scriptithe. Go hachomair, tá nóta cóid HTML agat (le roinnt JavaScript más féidir) agus déanfaidh an nóta seo é a rindreáil. Chun go n-oibreoidh sé, ní mór duit gaol ar a dtugtar \"renderNote\" a shainiú ag pointeáil chuig an nóta HTML atá le rindreáil." + }, + "web_view": { + "web_view": "Radharc Gréasáin", + "embed_websites": "Nóta den chineál Gréasáin a ligeann duit suíomhanna gréasáin a leabú i Trilium.", + "create_label": "Chun tús a chur leis, cruthaigh lipéad le seoladh URL ar mhaith leat a leabú, m.sh. #webViewSrc=\"https://www.google.com\"" + }, + "backend_log": { + "refresh": "Athnuachan" + }, + "consistency_checks": { + "title": "Seiceálacha Comhsheasmhachta", + "find_and_fix_button": "Fadhbanna comhsheasmhachta a aimsiú agus a shocrú", + "finding_and_fixing_message": "Fadhbanna comhsheasmhachta a aimsiú agus a shocrú...", + "issues_fixed_message": "Tá aon fhadhb chomhsheasmhachta a d'fhéadfadh a bheith aimsithe socraithe anois." + }, + "database_anonymization": { + "title": "Anaithnidiú Bunachar Sonraí", + "full_anonymization": "Anaithnidiú Iomlán", + "full_anonymization_description": "Cruthóidh an gníomh seo cóip nua den bhunachar sonraí agus déanfaidh sé anaithnidiú air (bainfear gach ábhar nótaí agus fágfar struchtúr agus roinnt meiteashonraí neamhíogaire amháin) le go mbeidh sé in ann é a roinnt ar líne chun críocha dífhabhtaithe gan eagla go sceithfidh tú do shonraí pearsanta.", + "save_fully_anonymized_database": "Sábháil bunachar sonraí lán-anaithnid", + "light_anonymization": "Anaithnidiú Éadrom", + "light_anonymization_description": "Cruthóidh an gníomh seo cóip nua den bhunachar sonraí agus déanfaidh sé beagán anaithnidithe air — go sonrach ní bhainfear ach ábhar na nótaí go léir, ach fanfaidh teidil agus tréithe. Ina theannta sin, fanfaidh nótaí scripte tosaigh/cúil JS saincheaptha agus giuirléidí saincheaptha. Soláthraíonn sé seo níos mó comhthéacs chun na fadhbanna a dhífhabhtú.", + "choose_anonymization": "Is féidir leat cinneadh a dhéanamh duit féin an mian leat bunachar sonraí atá anaithnid go hiomlán nó beagán gan ainm a sholáthar. Tá fiú bunachar sonraí atá anaithnid go hiomlán an-úsáideach, ach i gcásanna áirithe is féidir le bunachar sonraí atá anaithnid go héadrom an próiseas chun fabhtanna a aithint agus a shocrú a bhrostú.", + "save_lightly_anonymized_database": "Sábháil bunachar sonraí atá anaithnidithe go héadrom", + "existing_anonymized_databases": "Bunachair shonraí gan ainm atá ann cheana féin", + "creating_fully_anonymized_database": "Ag cruthú bunachar sonraí lán-anaithnidithe...", + "creating_lightly_anonymized_database": "Ag cruthú bunachar sonraí atá beagán anaithnidithe...", + "error_creating_anonymized_database": "Níorbh fhéidir bunachar sonraí gan ainm a chruthú, seiceáil logaí an chúltaca le haghaidh sonraí", + "successfully_created_fully_anonymized_database": "Cruthaíodh bunachar sonraí lán-anaithnid i {{anonymizedFilePath}}", + "successfully_created_lightly_anonymized_database": "Cruthaíodh bunachar sonraí atá beagán anaithnid i {{anonymizedFilePath}}", + "no_anonymized_database_yet": "Gan aon bhunachar sonraí anaithnidithe go fóill." + }, + "database_integrity_check": { + "title": "Seiceáil Ionracais Bunachar Sonraí", + "description": "Déanfaidh sé seo seiceáil nach bhfuil an bunachar sonraí truaillithe ar leibhéal SQLite. D’fhéadfadh sé go dtógfadh sé tamall, ag brath ar mhéid an bhunachair shonraí.", + "check_button": "Seiceáil sláine an bhunachair shonraí", + "checking_integrity": "Ag seiceáil sláine an bhunachair shonraí...", + "integrity_check_succeeded": "D’éirigh leis an tseiceáil ionracais - níor aimsíodh aon fhadhbanna.", + "integrity_check_failed": "Theip ar an tseiceáil ionracais: {{results}}" + }, + "sync": { + "title": "Sioncrónaigh", + "force_full_sync_button": "Fórsaigh sioncrónú iomlán", + "fill_entity_changes_button": "Líon taifid athruithe eintitis", + "full_sync_triggered": "Sioncrónú iomlán curtha i ngníomh", + "filling_entity_changes": "Líonadh sraitheanna athruithe eintiteas...", + "sync_rows_filled_successfully": "Líontar na sraitheanna sioncrónaithe go rathúil", + "finished-successfully": "Críochnaíodh an sioncrónú go rathúil.", + "failed": "Theip ar an sioncrónú: {{message}}" + }, + "vacuum_database": { + "title": "Bunachar Sonraí Folúis", + "description": "Déanfaidh sé seo an bunachar sonraí a atógáil agus de ghnáth beidh comhad bunachar sonraí níos lú mar thoradh air. Ní athrófar aon sonraí i ndáiríre.", + "button_text": "Bunachar sonraí folúis", + "vacuuming_database": "Bunachar sonraí folúsghlanadh...", + "database_vacuumed": "Tá an bunachar sonraí folúsghlanaithe" + }, + "experimental_features": { + "title": "Roghanna Turgnamhacha", + "disclaimer": "Is roghanna turgnamhacha iad seo agus d’fhéadfadh éagobhsaíocht a bheith mar thoradh orthu. Bain úsáid astu go cúramach.", + "new_layout_name": "Leagan Amach Nua", + "new_layout_description": "Bain triail as an leagan amach nua le haghaidh cuma níos nua-aimseartha agus inúsáidteachta feabhsaithe. Tá sé faoi réir athruithe móra sna heisiúintí atá le teacht." + }, + "fonts": { + "theme_defined": "Téama sainmhínithe", + "fonts": "Clónna", + "main_font": "Príomhchló", + "font_family": "Teaghlach clónna", + "size": "Méid", + "note_tree_font": "Cló Crann Nótaí", + "note_detail_font": "Cló Sonraí Nóta", + "monospace_font": "Cló Aonspáis (cód)", + "note_tree_and_detail_font_sizing": "Tabhair faoi deara go bhfuil méid an chló crainn agus mionsonraí i gcoibhneas leis an bpríomhshocrú méid cló.", + "not_all_fonts_available": "B’fhéidir nach bhfuil na clónna uile atá liostaithe ar fáil ar do chóras.", + "apply_font_changes": "Chun athruithe cló a chur i bhfeidhm, cliceáil ar", + "reload_frontend": "athlódáil tosaigh", + "generic-fonts": "Clónna ginearálta", + "sans-serif-system-fonts": "Clónna córais Sans-serif", + "serif-system-fonts": "Clónna córais Serif", + "monospace-system-fonts": "Clónna córais aonspáis", + "handwriting-system-fonts": "Clónna córais lámhscríbhneoireachta", + "serif": "Serif", + "sans-serif": "Sans Serif", + "monospace": "Aonspás", + "system-default": "Réamhshocrú an chórais" + }, + "max_content_width": { + "title": "Leithead an Ábhair", + "default_description": "De réir réamhshocraithe, cuireann Trilium teorainn le huasleithead an ábhair chun inléiteacht a fheabhsú le haghaidh scáileáin uasmhéadaithe ar scáileáin leathana.", + "max_width_label": "Leithead uasta an ábhair", + "max_width_unit": "picteilíní", + "centerContent": "Coinnigh an t-ábhar i lár an aonaigh" + }, + "native_title_bar": { + "title": "Barra Teidil Dúchasach (éilíonn atosú an aip)", + "enabled": "cumasaithe", + "disabled": "díchumasaithe" + }, + "ribbon": { + "widgets": "Giuirléidí ribín", + "promoted_attributes_message": "Osclófar an cluaisín ribín Tréithe Ardaithe go huathoibríoch má tá tréithe ardaithe i láthair ar an nóta", + "edited_notes_message": "Osclófar an cluaisín ribín Nótaí Eagarthóireachta go huathoibríoch ar nótaí lae" + }, + "theme": { + "title": "Téama an Iarratais", + "theme_label": "Téama", + "override_theme_fonts_label": "Sáraigh clónna téama", + "auto_theme": "Seanchóras (Lean scéim dathanna an chórais)", + "light_theme": "Oidhreacht (Éadrom)", + "dark_theme": "Oidhreacht (Dorcha)", + "triliumnext": "Trilium (Lean scéim dathanna an chórais)", + "triliumnext-light": "Trilium (Éadrom)", + "triliumnext-dark": "Trilium (Dorcha)", + "layout": "Leagan Amach", + "layout-vertical-title": "Ingearach", + "layout-horizontal-title": "Cothrománach", + "layout-vertical-description": "tá barra lainseála ar chlé (réamhshocraithe)", + "layout-horizontal-description": "Tá barra an lainseálaí faoin mbarra cluaisín, tá an barra cluaisín lánleithead anois." + }, + "ui-performance": { + "title": "Feidhmíocht", + "enable-motion": "Cumasaigh aistrithe agus beochana", + "enable-shadows": "Cumasaigh scáthanna", + "enable-backdrop-effects": "Cumasaigh éifeachtaí cúlra do bhiachláir, fuinneoga aníos agus painéil", + "enable-smooth-scroll": "Cumasaigh scrollú réidh", + "app-restart-required": "(tá atosú an fheidhmchláir ag teastáil chun an t-athrú a chur i bhfeidhm)" + }, + "ai_llm": { + "not_started": "Níor tosaíodh", + "title": "Socruithe AI", + "processed_notes": "Nótaí Próiseáilte", + "total_notes": "Nótaí Iomlána", + "progress": "Dul Chun Cinn", + "queued_notes": "Nótaí i gCiú", + "failed_notes": "Nótaí Theipthe", + "last_processed": "Próiseáilte Deiridh", + "refresh_stats": "Athnuachan Staitisticí", + "enable_ai_features": "Cumasaigh gnéithe AI/LLM", + "enable_ai_description": "Cumasaigh gnéithe AI cosúil le achoimre nótaí, giniúint ábhair, agus cumais LLM eile", + "openai_tab": "OpenAI", + "anthropic_tab": "Anthropic", + "voyage_tab": "Voyage AI", + "ollama_tab": "Ollama", + "enable_ai": "Cumasaigh gnéithe AI/LLM", + "enable_ai_desc": "Cumasaigh gnéithe AI cosúil le achoimre nótaí, giniúint ábhair, agus cumais LLM eile", + "provider_configuration": "Cumraíocht Soláthraí AI", + "provider_precedence": "Tosaíocht Soláthraí", + "provider_precedence_description": "Liosta soláthraithe scartha le camóga in ord tosaíochta (m.sh., 'openai, anthropic, ollama')", + "temperature": "Teocht", + "temperature_description": "Rialaíonn randamacht i bhfreagraí (0 = cinntitheach, 2 = uasmhéid randamachta)", + "system_prompt": "Pras Córais", + "system_prompt_description": "Leid réamhshocraithe an chórais a úsáidtear le haghaidh gach idirghníomhaíocht AI", + "openai_configuration": "Cumraíocht OpenAI", + "openai_settings": "Socruithe OpenAI", + "api_key": "Eochair API", + "url": "Bun-URL", + "model": "Samhail", + "openai_api_key_description": "D'eochair API OpenAI chun rochtain a fháil ar a gcuid seirbhísí AI", + "anthropic_api_key_description": "D'eochair API Anthropic chun rochtain a fháil ar mhúnlaí Claude", + "default_model": "Samhail Réamhshocraithe", + "openai_model_description": "Samplaí: gpt-4o, gpt-4-turbo, gpt-3.5-turbo", + "base_url": "Bun-URL", + "openai_url_description": "Réamhshocrú: https://api.openai.com/v1", + "anthropic_settings": "Socruithe Anthropic", + "anthropic_url_description": "Bun-URL don Anthropic API (réamhshocraithe: https://api.anthropic.com)", + "anthropic_model_description": "Samhlacha Anthropic Claude le haghaidh comhlánú comhrá", + "voyage_settings": "Socruithe Voyage AI", + "ollama_settings": "Socruithe Ollama", + "ollama_url_description": "URL don Ollama API (réamhshocrú: http://localhost:11434)", + "ollama_model_description": "Samhail Ollama le húsáid le haghaidh comhrá a chríochnú", + "anthropic_configuration": "Cumraíocht Anthropic", + "voyage_configuration": "Cumraíocht AI Voyage", + "voyage_url_description": "Réamhshocrú: https://api.voyageai.com/v1", + "ollama_configuration": "Cumraíocht Ollama", + "enable_ollama": "Cumasaigh Ollama", + "enable_ollama_description": "Cumasaigh Ollama le haghaidh úsáide áitiúla samhail AI", + "ollama_url": "URL Ollama", + "ollama_model": "Samhail Ollama", + "refresh_models": "Athnuachan Samhlacha", + "refreshing_models": "Ag athnuachan...", + "enable_automatic_indexing": "Cumasaigh Innéacsú Uathoibríoch", + "rebuild_index": "Innéacs Athchóirithe", + "rebuild_index_error": "Earráid ag tosú atógáil an innéacs. Seiceáil na logaí le haghaidh sonraí.", + "note_title": "Teideal an Nóta", + "error": "Earráid", + "last_attempt": "Iarracht Dheiridh", + "actions": "Gníomhartha", + "retry": "Déan iarracht eile", + "partial": "{{ percentage }}% críochnaithe", + "retry_queued": "Nóta curtha i scuaine le haghaidh athiarrachta", + "retry_failed": "Theip ar an nóta a chur sa scuaine le haghaidh athiarrachta", + "max_notes_per_llm_query": "Uasmhéid Nótaí In Aghaidh an Fhiosrúcháin", + "max_notes_per_llm_query_description": "Uasmhéid nótaí comhchosúla le cur san áireamh i gcomhthéacs na hintleachta saorga", + "active_providers": "Soláthraithe Gníomhacha", + "disabled_providers": "Soláthraithe faoi Mhíchumas", + "remove_provider": "Bain an soláthraí as an gcuardach", + "restore_provider": "Athchóirigh soláthraí chuig an gcuardach", + "similarity_threshold": "Tairseach Cosúlachta", + "similarity_threshold_description": "Scór cosúlachta íosta (0-1) le go n-áireofar nótaí i gcomhthéacs fiosrúcháin LLM", + "reprocess_index": "Athchruthaigh Innéacs Cuardaigh", + "reprocessing_index": "Atógáil...", + "reprocess_index_started": "Cuireadh tús le hoptamú innéacs cuardaigh sa chúlra", + "reprocess_index_error": "Earráid ag atógáil innéacs cuardaigh", + "index_rebuild_progress": "Dul Chun Cinn Athchóirithe Innéacs", + "index_rebuilding": "Innéacs optamaithe ({{percentage}}%)", + "index_rebuild_complete": "Uasmhéadú innéacs críochnaithe", + "index_rebuild_status_error": "Earráid ag seiceáil stádas athchóirithe innéacs", + "never": "Choíche", + "processing": "Próiseáil ({{percentage}}%)", + "incomplete": "Neamhchríochnaithe ({{percentage}}%)", + "complete": "Críochnaithe (100%)", + "refreshing": "Ag athnuachan...", + "auto_refresh_notice": "Athnuachan uathoibríoch gach {{seconds}} soicind", + "note_queued_for_retry": "Nóta curtha i scuaine le haghaidh athiarrachta", + "failed_to_retry_note": "Theip ar an nóta a athdhéanamh", + "all_notes_queued_for_retry": "Gach nóta nár éirigh leo curtha i scuaine le haghaidh athiarrachta", + "failed_to_retry_all": "Theip ar athiarracht nótaí", + "ai_settings": "Socruithe AI", + "api_key_tooltip": "Eochair API chun rochtain a fháil ar an tseirbhís", + "empty_key_warning": { + "anthropic": "Tá eochair API Anthropic folamh. Cuir isteach eochair API bhailí le do thoil.", + "openai": "Tá eochair API OpenAI folamh. Cuir isteach eochair API bhailí le do thoil.", + "voyage": "Tá eochair API Voyage folamh. Cuir isteach eochair API bhailí le do thoil.", + "ollama": "Tá eochair API Ollama folamh. Cuir isteach eochair API bhailí le do thoil." + }, + "agent": { + "processing": "Ag próiseáil...", + "thinking": "Ag smaoineamh...", + "loading": "Ag lódáil...", + "generating": "Ag giniúint..." + }, + "name": "Intleacht Shaorga", + "openai": "OpenAI", + "use_enhanced_context": "Úsáid comhthéacs feabhsaithe", + "enhanced_context_description": "Tugann sé níos mó comhthéacs don AI ón nóta agus a nótaí gaolmhara le haghaidh freagraí níos fearr", + "show_thinking": "Taispeáin smaointeoireacht", + "show_thinking_description": "Taispeáin slabhra phróiseas smaointeoireachta na hintleachta saorga", + "enter_message": "Cuir isteach do theachtaireacht...", + "error_contacting_provider": "Earráid ag teacht i dteagmháil leis an soláthraí AI. Seiceáil do shocruithe agus do nasc idirlín le do thoil.", + "error_generating_response": "Earráid ag giniúint freagra AI", + "index_all_notes": "Innéacs na Nótaí Uile", + "index_status": "Stádas Innéacs", + "indexed_notes": "Nótaí Innéacsaithe", + "indexing_stopped": "Stopadh an innéacsú", + "indexing_in_progress": "Innéacsú ar siúl...", + "last_indexed": "Innéacsaithe Deiridh", + "note_chat": "Comhrá Nótaí", + "sources": "Foinsí", + "start_indexing": "Tosaigh ag Innéacsú", + "use_advanced_context": "Úsáid Comhthéacs Ardleibhéil", + "ollama_no_url": "Níl Ollama cumraithe. Cuir isteach URL bailí le do thoil.", + "chat": { + "root_note_title": "Comhráite AI", + "root_note_content": "Tá do chomhráite comhrá AI sábháilte sa nóta seo.", + "new_chat_title": "Comhrá Nua", + "create_new_ai_chat": "Cruthaigh Comhrá AI nua" + }, + "create_new_ai_chat": "Cruthaigh Comhrá AI nua", + "configuration_warnings": "Tá roinnt fadhbanna le do chumraíocht AI. Seiceáil do shocruithe le do thoil.", + "experimental_warning": "Tá an ghné LLM turgnamhach faoi láthair - tugadh rabhadh duit.", + "selected_provider": "Soláthraí Roghnaithe", + "selected_provider_description": "Roghnaigh an soláthraí AI le haghaidh gnéithe comhrá agus comhlánaithe", + "select_model": "Roghnaigh samhail...", + "select_provider": "Roghnaigh soláthraí...", + "ai_enabled": "Gnéithe AI cumasaithe", + "ai_disabled": "Gnéithe AI díchumasaithe", + "no_models_found_online": "Níor aimsíodh aon mhúnlaí. Seiceáil d’eochair API agus do shocruithe le do thoil.", + "no_models_found_ollama": "Níor aimsíodh aon mhúnlaí Ollama. Seiceáil le do thoil an bhfuil Ollama ag rith.", + "error_fetching": "Earráid ag fáil samhlacha: {{error}}" + }, + "zoom_factor": { + "title": "Fachtóir Súmáil (leagan deisce amháin)", + "description": "Is féidir súmáil a rialú le haicearraí CTRL+- agus CTRL+= chomh maith." + }, + "code_auto_read_only_size": { + "title": "Méid Uathoibríoch Léite Amháin", + "description": "Is é méid uathoibríoch nótaí inléite amháin an méid tar éis a dtaispeánfar nótaí i mód inléite amháin (ar chúiseanna feidhmíochta).", + "label": "Méid inléite amháin uathoibríoch (nótaí cóid)", + "unit": "carachtair" + }, + "code-editor-options": { + "title": "Eagarthóir" + }, + "code_mime_types": { + "title": "Cineálacha MIME atá ar fáil sa roghchlár anuas", + "tooltip_syntax_highlighting": "Aibhsiú comhréire", + "tooltip_code_block_syntax": "Bloic chóid i nótaí Téacs", + "tooltip_code_note_syntax": "Nótaí cóid" + }, + "vim_key_bindings": { + "use_vim_keybindings_in_code_notes": "Ceangail eochracha Vim", + "enable_vim_keybindings": "Cumasaigh ceangail eochracha Vim i nótaí cóid (gan mód ex)" + }, + "wrap_lines": { + "wrap_lines_in_code_notes": "Fill línte i nótaí cóid", + "enable_line_wrap": "Cumasaigh Fillteán Líne (b’fhéidir go mbeadh athlódáil tosaigh ag teastáil chun go dtiocfadh an t-athrú i bhfeidhm)" + }, + "images": { + "images_section_title": "Íomhánna", + "download_images_automatically": "Íoslódáil íomhánna go huathoibríoch le húsáid as líne.", + "download_images_description": "Is féidir tagairtí d’íomhánna ar líne a bheith i HTML greamaithe, aimseoidh Trilium na tagairtí sin agus íoslódálfaidh sé na híomhánna ionas go mbeidh siad ar fáil as líne.", + "enable_image_compression": "Cumasaigh comhbhrú íomhá", + "max_image_dimensions": "Uasleithead/airde íomhá (athrófar méid na híomhá má sháraíonn sí an socrú seo).", + "max_image_dimensions_unit": "picteilíní", + "jpeg_quality_description": "Cáilíocht JPEG (10 - an caighdeán is measa, 100 - an caighdeán is fearr, moltar 50 - 85)" + }, + "attachment_erasure_timeout": { + "attachment_erasure_timeout": "Am Teorann Scriosadh Ceangaltáin", + "attachment_auto_deletion_description": "Scriostar ceangaltáin go huathoibríoch (agus scriostar iad) mura ndéantar tagairt dóibh ina nóta a thuilleadh tar éis tréimhse ama socraithe.", + "erase_attachments_after": "Scrios ceangaltáin neamhúsáidte tar éis:", + "manual_erasing_description": "Is féidir leat scriosadh a spreagadh de láimh freisin (gan an t-am críochnaithe a shainmhínítear thuas a chur san áireamh):", + "erase_unused_attachments_now": "Scrios nótaí ceangaltáin neamhúsáidte anois", + "unused_attachments_erased": "Scriosadh ceangaltáin neamhúsáidte." + }, + "network_connections": { + "network_connections_title": "Naisc Líonra", + "check_for_updates": "Seiceáil le haghaidh nuashonruithe go huathoibríoch" + }, + "note_erasure_timeout": { + "note_erasure_timeout_title": "Am Scriosadh Nótaí", + "note_erasure_description": "Ní dhéantar nótaí scriosta (agus tréithe, athbhreithnithe...) a mharcáil ach mar scriosta ar dtús agus is féidir iad a aisghabháil ón dialóg Nótaí Le Déanaí. Tar éis tamaill, déantar nótaí scriosta a \"scriosadh\" rud a chiallaíonn nach féidir a n-ábhar a aisghabháil a thuilleadh. Ligeann an socrú seo duit fad na tréimhse idir an nóta a scriosadh agus a scriosadh a chumrú.", + "erase_notes_after": "Scrios nótaí tar éis:", + "manual_erasing_description": "Is féidir leat scriosadh a spreagadh de láimh freisin (gan an t-am críochnaithe a shainmhínítear thuas a chur san áireamh):", + "erase_deleted_notes_now": "Scrios nótaí scriosta anois", + "deleted_notes_erased": "Tá nótaí scriosta scriosta." + }, + "revisions_snapshot_interval": { + "note_revisions_snapshot_interval_title": "Eatramh Léirmheasa ar Nóta", + "note_revisions_snapshot_description": "Is é an t-eatramh pictiúr athbhreithnithe nóta an t-am ina dhiaidh a chruthófar athbhreithniú nóta nua don nóta. Féach vicí le haghaidh tuilleadh eolais.", + "snapshot_time_interval_label": "Eatramh ama pictiúr athbhreithnithe nóta:" + }, + "revisions_snapshot_limit": { + "note_revisions_snapshot_limit_title": "Teorainn ar Ghrianghraf Athbhreithnithe Nóta", + "note_revisions_snapshot_limit_description": "Tagraíonn an teorainn ar líon na n-athbhreithnithe nótaí don líon uasta athbhreithnithe is féidir a shábháil do gach nóta. Ciallaíonn -1 gan aon teorainn, ciallaíonn 0 scriosadh na hathbhreithnithe go léir. Is féidir leat an líon uasta athbhreithnithe a shocrú do nóta aonair tríd an lipéad #versioningLimit.", + "snapshot_number_limit_label": "Teorainn líon na n-íomhánna athbhreithnithe nóta:", + "snapshot_number_limit_unit": "léargais", + "erase_excess_revision_snapshots": "Scrios na léargais athbhreithnithe breise anois", + "erase_excess_revision_snapshots_prompt": "Scriosadh na léargais bhreise athbhreithnithe." + }, + "search_engine": { + "title": "Inneall Cuardaigh", + "custom_search_engine_info": "Éilíonn inneall cuardaigh saincheaptha go socrófar ainm agus URL araon. Mura socraítear ceachtar acu seo, úsáidfear DuckDuckGo mar an t-inneall cuardaigh réamhshocraithe.", + "predefined_templates_label": "Teimpléid inneall cuardaigh réamhshainithe", + "bing": "Bing", + "baidu": "Baidu", + "duckduckgo": "DuckDuckGo", + "google": "Google", + "custom_name_label": "Ainm innill chuardaigh saincheaptha", + "custom_name_placeholder": "Saincheap ainm an innill chuardaigh", + "custom_url_label": "Ba chóir go mbeadh {keyword} san áireamh mar áitchoinneálaí don téarma cuardaigh i URL inneall cuardaigh saincheaptha.", + "custom_url_placeholder": "Saincheap url an innill chuardaigh", + "save_button": "Sábháil" + }, + "tray": { + "title": "Tráidire an Chórais", + "enable_tray": "Cumasaigh an tráidire (ní mór Trilium a atosú le go dtiocfaidh an t-athrú seo i bhfeidhm)" + }, + "heading_style": { + "title": "Stíl Ceannteidil", + "plain": "Simplí", + "underline": "Folínigh", + "markdown": "Stíl marcála síos" + }, + "highlights_list": { + "title": "Liosta Buaicphointí", + "description": "Is féidir leat an liosta buaicphointí a thaispeántar sa phainéal ar dheis a shaincheapadh:", + "bold": "Téacs trom", + "italic": "Téacs iodálach", + "underline": "Téacs faoi líne", + "color": "Téacs daite", + "bg_color": "Téacs le dath cúlra", + "visibility_title": "Infheictheacht an Liosta Buaicphointí", + "visibility_description": "Is féidir leat an giuirléid buaicphointí a cheilt in aghaidh an nóta trí lipéad #hideHighlightWidget a chur leis.", + "shortcut_info": "Is féidir leat aicearra méarchláir a chumrú chun an painéal ar dheis (lena n-áirítear Buaicphointí) a athrú go tapa sna Roghanna -> Aicearraí (ainm 'toggleRightPane')." + }, + "table_of_contents": { + "title": "Clár Ábhair", + "description": "Beidh clár ábhair le feiceáil i nótaí téacs nuair a bhíonn níos mó ná líon sainithe ceannteidil sa nóta. Is féidir leat an líon seo a shaincheapadh:", + "unit": "ceannteidil", + "disable_info": "Is féidir leat an rogha seo a úsáid freisin chun TOC a dhíchumasú go héifeachtach trí uimhir an-ard a shocrú.", + "shortcut_info": "Is féidir leat aicearra méarchláir a chumrú chun an painéal ar dheis (lena n-áirítear an tÁbhar Ábhar) a athrú go tapa sna Roghanna -> Aicearraí (ainm 'toggleRightPane')." + }, + "text_auto_read_only_size": { + "title": "Méid Uathoibríoch Léite Amháin", + "description": "Is é méid uathoibríoch nótaí inléite amháin an méid tar éis a dtaispeánfar nótaí i mód inléite amháin (ar chúiseanna feidhmíochta).", + "label": "Méid inléite amháin uathoibríoch (nótaí téacs)", + "unit": "carachtair" + }, + "custom_date_time_format": { + "title": "Formáid Dáta/Am Saincheaptha", + "description": "Saincheap formáid an dáta agus an ama a chuirtear isteach trí nó an barra uirlisí. Féach ar doiciméid Day.js le haghaidh na gcomharthaí formáide atá ar fáil.", + "format_string": "Formáid teaghrán:", + "formatted_time": "Dáta/am formáidithe:" + }, + "i18n": { + "title": "Logánú", + "language": "Teanga", + "first-day-of-the-week": "An chéad lá den tseachtain", + "monday": "Dé Luain", + "tuesday": "Dé Máirt", + "wednesday": "Dé Céadaoin", + "thursday": "Déardaoin", + "friday": "Dé hAoine", + "saturday": "Dé Sathairn", + "sunday": "Dé Domhnaigh", + "first-week-of-the-year": "An chéad seachtain den bhliain", + "first-week-contains-first-day": "Tá an chéad lá den bhliain sa chéad seachtain", + "first-week-contains-first-thursday": "Tá an chéad Déardaoin den bhliain sa chéad seachtain", + "first-week-has-minimum-days": "Tá an chéad seachtain ag an íosmhéid laethanta", + "min-days-in-first-week": "Íosmhéid laethanta sa chéad seachtain", + "first-week-info": "Tá an chéad seachtain ina bhfuil an chéad Déardaoin den bhliain bunaithe ar chaighdeán ISO 8601.", + "first-week-warning": "D’fhéadfadh sé go mbeadh dúblach le Nótaí Seachtaine atá ann cheana féin mar thoradh ar athrú roghanna na chéad seachtaine agus ní dhéanfar na Nótaí Seachtaine atá ann cheana a nuashonrú dá réir.", + "formatting-locale": "Formáid dáta agus uimhreach", + "formatting-locale-auto": "Bunaithe ar theanga an fheidhmchláir" + }, + "backup": { + "automatic_backup": "Cúltaca uathoibríoch", + "automatic_backup_description": "Is féidir le Trilium cúltaca den bhunachar sonraí a dhéanamh go huathoibríoch:", + "enable_daily_backup": "Cumasaigh cúltaca laethúil", + "enable_weekly_backup": "Cumasaigh cúltaca seachtainiúil", + "enable_monthly_backup": "Cumasaigh cúltaca míosúil", + "backup_recommendation": "Moltar an cúltaca a choinneáil casta air, ach is féidir leis seo moill a chur ar thosú feidhmchlár le bunachair shonraí móra agus/nó gléasanna stórála mall.", + "backup_now": "Cúltaca anois", + "backup_database_now": "Cúltaca bunachar sonraí anois", + "existing_backups": "Cúltacaí atá ann cheana féin", + "date-and-time": "Dáta & am", + "path": "Cosán", + "database_backed_up_to": "Tá cúltaca déanta den bhunachar sonraí chuig {{backupFilePath}}", + "no_backup_yet": "gan aon chúltaca fós" + }, + "etapi": { + "title": "ETAPI", + "description": "Is API REST é ETAPI a úsáidtear chun rochtain a fháil ar shampla Trilium go ríomhchláraitheach, gan chomhéadan úsáideora.", + "create_token": "Cruthaigh comhartha ETAPI nua", + "existing_tokens": "Comharthaí atá ann cheana féin", + "no_tokens_yet": "Níl aon chomharthaí ann fós. Cliceáil ar an gcnaipe thuas chun ceann a chruthú.", + "token_name": "Ainm an chomhartha", + "created": "Cruthaithe", + "actions": "Gníomhartha", + "new_token_title": "Comhartha ETAPI nua", + "new_token_message": "Cuir isteach ainm an chomhartha nua le do thoil", + "default_token_name": "comhartha nua", + "error_empty_name": "Ní féidir ainm an chomhartha a fhágáil folamh", + "token_created_title": "Cruthaíodh comhartha ETAPI", + "token_created_message": "Cóipeáil an comhartha cruthaithe isteach sa ghearrthaisce. Stórálann Trilium an comhartha haisithe agus seo an uair dheireanach a fheiceann tú é.", + "rename_token": "Athainmnigh an comhartha seo", + "delete_token": "Scrios / díghníomhachtaigh an comhartha seo", + "rename_token_title": "Athainmnigh an comhartha", + "rename_token_message": "Cuir isteach ainm an chomhartha nua le do thoil", + "delete_token_confirmation": "An bhfuil tú cinnte gur mian leat comhartha ETAPI \"{{name}}\" a scriosadh?" + }, + "options_widget": { + "options_status": "Stádas na roghanna", + "options_change_saved": "Tá na hathruithe roghanna sábháilte." + }, + "password": { + "heading": "Pasfhocal", + "alert_message": "Cuimhnigh ar do phasfhocal nua, le do thoil. Úsáidtear an pasfhocal chun logáil isteach sa chomhéadan gréasáin agus chun nótaí faoi chosaint a chriptiú. Má dhéanann tú dearmad ar do phasfhocal, cailltear do nótaí faoi chosaint go deo.", + "reset_link": "Cliceáil anseo chun é a athshocrú.", + "old_password": "Seanfhocal faire", + "new_password": "Pasfhocal nua", + "new_password_confirmation": "Deimhniú pasfhocail nua", + "change_password": "Athraigh an focal faire", + "protected_session_timeout": "Am Teorann Seisiúin Chosanta", + "protected_session_timeout_description": "Is tréimhse ama í an t-am scoir seisiúin chosanta a scriostar an seisiún cosanta ó chuimhne an bhrabhsálaí ina dhiaidh. Déantar é seo a thomhas ón idirghníomhaíocht dheireanach le nótaí cosanta. Féach", + "wiki": "vicí", + "for_more_info": "le haghaidh tuilleadh eolais.", + "protected_session_timeout_label": "Am scoir seisiúin faoi chosaint:", + "reset_confirmation": "Trí an focal faire a athshocrú caillfidh tú rochtain go deo ar do nótaí cosanta go léir atá ann cheana féin. An bhfuil tú cinnte gur mhaith leat an focal faire a athshocrú?", + "reset_success_message": "Athshocraíodh an focal faire. Socraigh focal faire nua le do thoil", + "change_password_heading": "Athraigh Pasfhocal", + "set_password_heading": "Socraigh Pasfhocal", + "set_password": "Socraigh Pasfhocal", + "password_mismatch": "Ní hionann pasfhocail nua.", + "password_changed_success": "Athraíodh an focal faire. Athlódálfar Trilium tar éis duit brúigh OK." + }, + "multi_factor_authentication": { + "title": "Fíordheimhniú Ilfhachtóireach", + "description": "Cuireann Fíordheimhniú Ilfhachtóireach (FFA) ciseal breise slándála le do chuntas. In ionad pasfhocal a iontráil le logáil isteach, éilíonn FFA ort píosa fianaise amháin nó níos mó a sholáthar chun d’aitheantas a fhíorú. Ar an mbealach seo, fiú má fhaigheann duine éigin do phasfhocal, ní féidir leo rochtain a fháil ar do chuntas gan an dara píosa faisnéise. Tá sé cosúil le glas breise a chur le do dhoras, rud a fhágann go bhfuil sé i bhfad níos deacra d’aon duine eile briseadh isteach.

Lean na treoracha thíos le do thoil chun FFA a chumasú. Mura ndéanann tú an chumraíocht i gceart, ní bheidh ach pasfhocal ag teastáil chun logáil isteach.", + "mfa_enabled": "Cumasaigh Fíordheimhniú Ilfhachtóireach", + "mfa_method": "Modh MFA", + "electron_disabled": "Ní thacaítear le Fíordheimhniú Ilfhachtóireach sa leagan deisce faoi láthair.", + "totp_title": "Pasfhocal Aonuaire Bunaithe ar Am (TOTP)", + "totp_description": "Is gné slándála é TOTP (Pasfhocal Aonuaire Bunaithe ar Am) a ghineann cód uathúil, sealadach a athraíonn gach 30 soicind. Úsáideann tú an cód seo, mar aon le do phasfhocal, chun logáil isteach i do chuntas, rud a fhágann go bhfuil sé i bhfad níos deacra d’aon duine eile rochtain a fháil air.", + "totp_secret_title": "Gin Rún TOTP", + "totp_secret_generate": "Gin Rún TOTP", + "totp_secret_regenerate": "Athghinigh Rún TOTP", + "no_totp_secret_warning": "Chun TOTP a chumasú, ní mór duit rún TOTP a ghiniúint ar dtús.", + "totp_secret_description_warning": "Tar éis rún TOTP nua a ghiniúint, beidh ort logáil isteach arís leis an rún TOTP nua.", + "totp_secret_generated": "Rún TOTP Gineadh", + "totp_secret_warning": "Sábháil an rún a gineadh in áit shábháilte. Ní thaispeánfar arís é.", + "totp_secret_regenerate_confirm": "An bhfuil tú cinnte gur mian leat an rún TOTP a athghiniúint? Cuirfidh sé seo an rún TOTP roimhe seo agus na cód aisghabhála atá ann cheana ar neamhní.", + "recovery_keys_title": "Eochracha Aisghabhála Síniúcháin Aonair", + "recovery_keys_description": "Úsáidtear eochracha aisghabhála sínithe isteach aonair chun logáil isteach fiú mura féidir leat rochtain a fháil ar do chóid Authenticator.", + "recovery_keys_description_warning": "Ní thaispeánfar eochracha aisghabhála arís tar éis duit an leathanach a fhágáil, coinnigh iad in áit shábháilte agus slán.
Ní féidir eochair aisghabhála a úsáid arís tar éis í a úsáid.", + "recovery_keys_error": "Earráid ag giniúint cóid aisghabhála", + "recovery_keys_no_key_set": "Níl aon chóid aisghabhála socraithe", + "recovery_keys_generate": "Gin Cóid Aisghabhála", + "recovery_keys_regenerate": "Athghinigh Cóid Aisghabhála", + "recovery_keys_used": "Úsáidte: {{date}}", + "recovery_keys_unused": "Níl an cód aisghabhála {{index}} in úsáid", + "oauth_title": "OAuth/OpenID", + "oauth_description": "Is bealach caighdeánaithe é OpenID a ligeann duit logáil isteach i suíomhanna gréasáin ag baint úsáide as cuntas ó sheirbhís eile, cosúil le Google, chun d’aitheantas a fhíorú. Is é Google an t-eisitheoir réamhshocraithe, ach is féidir leat é a athrú go haon soláthraí OpenID eile. Seiceáil anseo le haghaidh tuilleadh eolais. Lean na treoracha seo chun seirbhís OpenID a bhunú trí Google.", + "oauth_description_warning": "Chun OAuth/OpenID a chumasú, ní mór duit an URL bonn OAuth/OpenID, an ID cliaint agus an rún cliaint a shocrú sa chomhad config.ini agus an feidhmchlár a atosú. Más mian leat socruithe a dhéanamh ó athróga timpeallachta, socraigh TRILIUM_OAUTH_BASE_URL, TRILIUM_OAUTH_CLIENT_ID agus TRILIUM_OAUTH_CLIENT_SECRET le do thoil.", + "oauth_missing_vars": "Socruithe ar iarraidh: {{-variables}}", + "oauth_user_account": "Cuntas Úsáideora: ", + "oauth_user_email": "Ríomhphost an Úsáideora: ", + "oauth_user_not_logged_in": "Níl mé logáilte isteach!" + }, + "shortcuts": { + "keyboard_shortcuts": "Aicearraí Méarchláir", + "multiple_shortcuts": "Is féidir camóg a úsáid chun aicearraí iolracha don ghníomh céanna a dheighilt.", + "electron_documentation": "Féach ar dhoiciméadacht Electron le haghaidh modhnóirí agus cóid eochracha atá ar fáil.", + "type_text_to_filter": "Clóscríobh téacs chun aicearraí a scagadh...", + "action_name": "Ainm an ghnímh", + "shortcuts": "Aicearraí", + "default_shortcuts": "Aicearraí réamhshocraithe", + "description": "Cur síos", + "reload_app": "Athlódáil an aip chun na hathruithe a chur i bhfeidhm", + "set_all_to_default": "Socraigh gach aicearra go dtí an réamhshocrú", + "confirm_reset": "An bhfuil tú cinnte gur mhaith leat na haicearraí méarchláir go léir a athshocrú go dtí an rogha réamhshocraithe?" + }, + "spellcheck": { + "title": "Seiceáil Litrithe", + "description": "Ní bhaineann na roghanna seo ach le leaganacha deisce, úsáidfidh brabhsálaithe a seiceáil litrithe dúchasach féin.", + "enable": "Cumasaigh seiceáil litrithe", + "language_code_label": "Cód(anna) teanga", + "language_code_placeholder": "mar shampla \"en-US\", \"de-AT\"", + "multiple_languages_info": "Is féidir camóg a úsáid chun teangacha iolracha a dheighilt óna chéile, m.sh. \"en-US, de-DE, cs\". ", + "available_language_codes_label": "Cóid teanga atá ar fáil:", + "restart-required": "Tiocfaidh athruithe ar na roghanna seiceála litrithe i bhfeidhm tar éis atosú an fheidhmchláir." + }, + "sync_2": { + "config_title": "Cumraíocht Sioncrónaithe", + "server_address": "Seoladh sampla an fhreastalaí", + "timeout": "Am scoir sioncrónaithe", + "timeout_unit": "milleasoicindí", + "proxy_label": "Sioncrónaigh freastalaí seachfhreastalaí (roghnach)", + "note": "Nóta", + "note_description": "Má fhágann tú an socrú seachfhreastalaí bán, úsáidfear seachfhreastalaí an chórais (baineann sé le tógáil deisce/leictreon amháin).", + "special_value_description": "Luach speisialta eile is ea noproxy a chuireann iallach neamhaird a dhéanamh fiú ar an seachfhreastalaí córais agus a thugann meas ar NODE_TLS_REJECT_UNAUTHORIZED.", + "save": "Sábháil", + "help": "Cabhair", + "test_title": "Tástáil Sioncrónaithe", + "test_description": "Déanfaidh sé seo tástáil ar an nasc agus ar an gcroitheadh láimhe leis an bhfreastalaí sioncrónaithe. Mura bhfuil an freastalaí sioncrónaithe tosaithe, socróidh sé seo é chun sioncrónú leis an doiciméad áitiúil.", + "test_button": "Tástáil sioncrónaithe", + "handshake_failed": "Theip ar chroitheadh láimhe an fhreastalaí sioncrónaithe, earráid: {{message}}" + }, + "api_log": { + "close": "Dún" + }, + "attachment_detail_2": { + "will_be_deleted_in": "Scriosfar an ceangaltán seo go huathoibríoch i gceann {{time}}", + "will_be_deleted_soon": "Scriosfar an ceangaltán seo go huathoibríoch go luath", + "deletion_reason": ", mar nach bhfuil an ceangaltán nasctha in ábhar an nóta. Chun scriosadh a chosc, cuir an nasc ceangaltáin ar ais san ábhar nó tiontaigh an ceangaltán ina nóta.", + "role_and_size": "Ról: {{role}}, méid: {{size}}, MIME: {{- mimeType}}", + "link_copied": "Nasc an cheangail cóipeáilte chuig an ghearrthaisce.", + "unrecognized_role": "Ról ceangail neamhaitheanta '{{role}}'." + }, + "bookmark_switch": { + "bookmark": "Leabharmharc", + "bookmark_this_note": "Cuir an nóta seo i leabharmharcanna ar an bpainéal taobh clé", + "remove_bookmark": "Bain leabharmharc" + }, + "editability_select": { + "auto": "Uathoibríoch", + "read_only": "Léamh amháin", + "always_editable": "In-eagarthóireacht i gcónaí", + "note_is_editable": "Is féidir nóta a chur in eagar mura bhfuil sé rófhada.", + "note_is_read_only": "Is nóta inléite amháin é, ach is féidir é a chur in eagar le cliceáil cnaipe.", + "note_is_always_editable": "Is féidir nóta a chur in eagar i gcónaí, beag beann ar a fhad." + }, + "note-map": { + "button-link-map": "Léarscáil Nasc", + "button-tree-map": "Léarscáil crann" + }, + "tree-context-menu": { + "open-in-a-new-tab": "Oscail i gcluaisín nua", + "open-in-a-new-split": "Oscail i scoilt nua", + "open-in-a-new-window": "Oscail i bhfuinneog nua", + "insert-note-after": "Cuir nóta isteach ina dhiaidh", + "insert-child-note": "Cuir nóta linbh isteach", + "archive": "Cartlann", + "unarchive": "Díchartlannaigh", + "delete": "Scrios", + "search-in-subtree": "Cuardaigh i bhfo-chrann", + "hoist-note": "Nóta ardaitheora", + "unhoist-note": "Nóta dí-ardaithe", + "edit-branch-prefix": "Cuir réimír na brainse in eagar", + "advanced": "Ardleibhéil", + "expand-subtree": "Leathnaigh an fo-chrann", + "collapse-subtree": "Laghdaigh fo-chrann", + "hide-subtree": "Folaigh fo-chrann", + "show-subtree": "Taispeáin fo-chrann", + "sort-by": "Sórtáil de réir...", + "recent-changes-in-subtree": "Athruithe le déanaí sa fho-chrann", + "convert-to-attachment": "Tiontaigh go ceangaltán", + "copy-note-path-to-clipboard": "Cóipeáil cosán an nóta chuig an ghearrthaisce", + "protect-subtree": "Fo-chrann a chosaint", + "unprotect-subtree": "Díchosaint fochrann", + "copy-clone": "Cóipeáil / clónáil", + "clone-to": "Clónáil go...", + "cut": "Gearr", + "move-to": "Bog go...", + "paste-into": "Greamaigh isteach", + "paste-after": "Greamaigh ina dhiaidh", + "duplicate": "Dúblach", + "export": "Easpórtáil", + "import-into-note": "Iompórtáil isteach i nóta", + "apply-bulk-actions": "Cuir gníomhartha mórchóir i bhfeidhm", + "converted-to-attachments": "Tá {{count}} nótaí tiontaithe ina gceangaltáin.", + "convert-to-attachment-confirm": "An bhfuil tú cinnte gur mian leat na nótaí roghnaithe a thiontú ina gceangaltáin dá nótaí tuismitheora? Ní bhaineann an oibríocht seo ach le nótaí Íomhá, scipeálfar nótaí eile.", + "open-in-popup": "Eagarthóireacht thapa" + }, + "shared_info": { + "shared_publicly": "Tá an nóta seo roinnte go poiblí ar {{- link}}.", + "shared_locally": "Tá an nóta seo roinnte go háitiúil ar {{- link}}.", + "help_link": "Chun cabhair a fháil, tabhair cuairt ar wiki." + }, + "read-only-info": { + "read-only-note": "Ag féachaint ar nóta inléite amháin faoi láthair.", + "auto-read-only-note": "Taispeántar an nóta seo i mód léite amháin le haghaidh luchtú níos tapúla.", + "edit-note": "Cuir nóta in eagar" + }, + "note_types": { + "text": "Téacs", + "code": "Code", + "saved-search": "Cuardach Sábháilte", + "relation-map": "Léarscáil Gaolmhaireachta", + "note-map": "Léarscáil Nótaí", + "render-note": "Nóta Rindreála", + "book": "Bailiúchán", + "mermaid-diagram": "Léaráid Maighdeann Mhara", + "canvas": "Canbhás", + "web-view": "Radharc Gréasáin", + "mind-map": "Léarscáil Intinne", + "file": "Comhad", + "image": "Íomhá", + "launcher": "Tosaitheoir", + "doc": "Doiciméad", + "widget": "Giuirléid", + "confirm-change": "Ní mholtar cineál nóta a athrú nuair nach bhfuil ábhar an nóta folamh. Ar mhaith leat leanúint ar aghaidh ar aon nós?", + "geo-map": "Léarscáil Gheografach", + "beta-feature": "Béite", + "ai-chat": "Comhrá AI", + "task-list": "Liosta Tascanna", + "new-feature": "Nua", + "collections": "Bailiúcháin" + }, + "protect_note": { + "toggle-on": "Cosain an nóta", + "toggle-off": "Díchosaint an nóta", + "toggle-on-hint": "Níl an nóta cosanta, cliceáil chun é a chosaint", + "toggle-off-hint": "Tá an nóta cosanta, cliceáil chun é a dhéanamh neamhchosanta" + }, + "shared_switch": { + "shared": "Roinnte", + "toggle-on-title": "Roinn an nóta", + "toggle-off-title": "Díroinn an nóta", + "shared-branch": "Níl an nóta seo ann ach mar nóta comhroinnte, scriosfar é má dhíroinntear é. Ar mhaith leat leanúint ar aghaidh agus an nóta seo a scriosadh dá bharr?", + "inherited": "Ní féidir an nóta a dhíroinnt anseo mar go roinntear é trí oidhreacht ó shinsear." + }, + "template_switch": { + "template": "Teimpléad", + "toggle-on-hint": "Déan teimpléad den nóta", + "toggle-off-hint": "Bain an nóta mar theimpléad" + }, + "open-help-page": "Oscail leathanach cabhrach", + "find": { + "case_sensitive": "Cás-íogair", + "match_words": "Meaitseáil focail", + "find_placeholder": "Aimsigh sa téacs...", + "replace_placeholder": "Cuir in ionad le...", + "replace": "Athsholáthair", + "replace_all": "Cuir gach rud in ionad" + }, + "highlights_list_2": { + "title": "Liosta Buaicphointí", + "title_with_count_one": "{{count}} buaicphointe", + "title_with_count_two": "{{count}} buaicphointí", + "title_with_count_few": "{{count}} buaicphointí", + "title_with_count_many": "{{count}} buaicphointí", + "title_with_count_other": "{{count}} buaicphointí", + "options": "Roghanna", + "modal_title": "Cumraigh Liosta Buaicphointí", + "menu_configure": "Cumraigh liosta buaicphointí...", + "no_highlights": "Níor aimsíodh aon bhuaicphointí." + }, + "quick-search": { + "placeholder": "Cuardach tapa", + "searching": "Ag cuardach...", + "no-results": "Níor aimsíodh aon torthaí", + "more-results": "... agus {{number}} torthaí eile.", + "show-in-full-search": "Taispeáin sa chuardach iomlán" + }, + "note_tree": { + "collapse-title": "Laghdaigh crann nótaí", + "scroll-active-title": "Scrollaigh go dtí an nóta gníomhach", + "tree-settings-title": "Socruithe crann", + "hide-archived-notes": "Folaigh nótaí cartlannaithe", + "automatically-collapse-notes": "Nótaí a dhúnadh go huathoibríoch", + "automatically-collapse-notes-title": "Déanfar nótaí a dhúnadh tar éis tréimhse neamhghníomhaíochta chun an crann a dhí-phlódú.", + "save-changes": "Sábháil agus cuir athruithe i bhfeidhm", + "auto-collapsing-notes-after-inactivity": "Nótaí á gcúlú go huathoibríoch tar éis neamhghníomhaíochta...", + "saved-search-note-refreshed": "Nóta cuardaigh sábháilte athnuachan.", + "hoist-this-note-workspace": "Tóg an nóta seo (spás oibre)", + "refresh-saved-search-results": "Athnuaigh torthaí cuardaigh sábháilte", + "create-child-note": "Cruthaigh nóta linbh", + "unhoist": "Dí-ardaigh", + "toggle-sidebar": "Scoránaigh an taobhbharra", + "dropping-not-allowed": "Ní cheadaítear nótaí a fhágáil sa suíomh seo.", + "clone-indicator-tooltip": "Tá {{- count}} tuismitheoir ag an nóta seo: {{- parents}}", + "clone-indicator-tooltip-single": "Tá an nóta seo clónáilte (1 tuismitheoir breise: {{- parent}})", + "shared-indicator-tooltip": "Tá an nóta seo roinnte go poiblí", + "shared-indicator-tooltip-with-url": "Tá an nóta seo roinnte go poiblí ag: {{- url}}", + "subtree-hidden-tooltip_one": "{{count}} nóta linbh atá i bhfolach ón gcrann", + "subtree-hidden-tooltip_two": "{{count}} nótaí linbh atá i bhfolach ón gcrann", + "subtree-hidden-tooltip_few": "{{count}} nótaí linbh atá i bhfolach ón gcrann", + "subtree-hidden-tooltip_many": "{{count}} nótaí linbh atá i bhfolach ón gcrann", + "subtree-hidden-tooltip_other": "{{count}} nótaí linbh atá i bhfolach ón gcrann", + "subtree-hidden-moved-title": "Curtha le {{title}}", + "subtree-hidden-moved-description-collection": "Cuireann an bailiúchán seo a nótaí faoi bhun an tsean-nótaí i bhfolach sa chrann.", + "subtree-hidden-moved-description-other": "Tá nótaí linbh i bhfolach sa chrann don nóta seo." + }, + "title_bar_buttons": { + "window-on-top": "Coinnigh an Fhuinneog ar a Bharr" + }, + "note_detail": { + "could_not_find_typewidget": "Níorbh fhéidir typeWidget a aimsiú don chineál '{{type}}'", + "printing": "Priontáil ar siúl...", + "printing_pdf": "Ag easpórtáil go PDF ar siúl...", + "print_report_title": "Tuarascáil a phriontáil", + "print_report_collection_content_one": "Níorbh fhéidir nóta {{count}} sa bhailiúchán a phriontáil mar nach dtacaítear leo nó mar go bhfuil siad faoi chosaint.", + "print_report_collection_content_two": "Níorbh fhéidir {{count}} nótaí sa bhailiúchán a phriontáil mar nach dtacaítear leo nó mar go bhfuil siad faoi chosaint.", + "print_report_collection_content_few": "Níorbh fhéidir {{count}} nótaí sa bhailiúchán a phriontáil mar nach dtacaítear leo nó mar go bhfuil siad faoi chosaint.", + "print_report_collection_content_many": "Níorbh fhéidir {{count}} nótaí sa bhailiúchán a phriontáil mar nach dtacaítear leo nó mar go bhfuil siad faoi chosaint.", + "print_report_collection_content_other": "Níorbh fhéidir {{count}} nótaí sa bhailiúchán a phriontáil mar nach dtacaítear leo nó mar go bhfuil siad faoi chosaint.", + "print_report_collection_details_button": "Féach sonraí", + "print_report_collection_details_ignored_notes": "Nótaí neamhairdithe" + }, + "note_title": { + "placeholder": "clóscríobh teideal an nóta anseo...", + "created_on": "Cruthaithe ar ", + "last_modified": "Modhnaithe ar ", + "note_type_switcher_label": "Athraigh ó {{type}} go:", + "note_type_switcher_others": "Cineál nóta eile", + "note_type_switcher_templates": "Teimpléad", + "note_type_switcher_collection": "Bailiúchán", + "edited_notes": "Nótaí curtha in eagar ar an lá seo", + "promoted_attributes": "Tréithe curtha chun cinn" + }, + "search_result": { + "no_notes_found": "Ní bhfuarthas aon nótaí do na paraiméadair chuardaigh tugtha.", + "search_not_executed": "Níl an cuardach curtha i gcrích fós. Cliceáil ar an gcnaipe \"Cuardaigh\" thuas chun na torthaí a fheiceáil." + }, + "spacer": { + "configure_launchbar": "Cumraigh an Barra Seoladh" + }, + "sql_result": { + "not_executed": "Níl an fiosrúchán curtha i gcrích fós.", + "no_rows": "Níl aon rónna curtha ar ais don fhiosrúchán seo", + "failed": "Theip ar fhorghníomhú an fhiosrúcháin SQL", + "statement_result": "Toradh ráitis", + "execute_now": "Rith anois" + }, + "sql_table_schemas": { + "tables": "Táblaí" + }, + "tab_row": { + "close_tab": "Dún an cluaisín", + "add_new_tab": "Cuir cluaisín nua leis", + "close": "Dún", + "close_other_tabs": "Dún cluaisíní eile", + "close_right_tabs": "Dún na cluaisíní ar dheis", + "close_all_tabs": "Dún gach cluaisín", + "reopen_last_tab": "Athoscail an cluaisín deireanach a dúnadh", + "move_tab_to_new_window": "Bog an cluaisín seo go fuinneog nua", + "copy_tab_to_new_window": "Cóipeáil an cluaisín seo chuig fuinneog nua", + "new_tab": "Cluaisín nua" + }, + "toc": { + "table_of_contents": "Clár Ábhair", + "options": "Roghanna", + "no_headings": "Gan ceannteidil." + }, + "watched_file_update_status": { + "file_last_modified": "Rinneadh an comhad a mhodhnú go deireanach ar .", + "upload_modified_file": "Uaslódáil comhad modhnaithe", + "ignore_this_change": "Déan neamhaird den athrú seo" + }, + "app_context": { + "please_wait_for_save": "Fan cúpla soicind le go mbeidh an sábháil críochnaithe, ansin is féidir leat iarracht eile a dhéanamh." + }, + "note_create": { + "duplicated": "Nóta: Tá \"{{title}}\" dúblaithe." + }, + "image": { + "copied-to-clipboard": "Tá tagairt don íomhá cóipeáilte chuig an ghearrthaisce. Is féidir é seo a ghreamú in aon nóta téacs.", + "cannot-copy": "Níorbh fhéidir tagairt na híomhá a chóipeáil chuig an ghearrthaisce." + }, + "clipboard": { + "cut": "Gearradh nóta(í) isteach sa ghearrthaisce.", + "copied": "Tá nóta(í) cóipeáilte isteach sa ghearrthaisce.", + "copy_failed": "Ní féidir cóipeáil chuig an ghearrthaisce mar gheall ar fhadhbanna ceadanna.", + "copy_success": "Cóipeáilte chuig an ghearrthaisce." + }, + "entrypoints": { + "note-revision-created": "Cruthaíodh athbhreithniú nóta.", + "note-executed": "Nóta curtha i gcrích.", + "sql-error": "Tharla earráid agus fiosrúchán SQL á fhorghníomhú: {{message}}" + }, + "branches": { + "cannot-move-notes-here": "Ní féidir nótaí a bhogadh anseo.", + "delete-status": "Stádas scriosta", + "delete-notes-in-progress": "Scrios nótaí atá ar siúl: {{count}}", + "delete-finished-successfully": "Scriosadh críochnaithe go rathúil.", + "undeleting-notes-in-progress": "Nótaí á n-athscriosadh ar siúl: {{count}}", + "undeleting-notes-finished-successfully": "Críochnaíodh athscriosadh na nótaí go rathúil." + }, + "frontend_script_api": { + "async_warning": "Tá feidhm neamhshioncrónach á cur agat chuig `api.runOnBackend()` agus is dócha nach n-oibreoidh sé mar a bhí beartaithe agat.\\nDéan an fheidhm sioncrónach (trí an eochairfhocal `async` a bhaint), nó bain úsáid as `api.runAsyncOnBackendWithManualTransactionHandling()`.", + "sync_warning": "Tá feidhm shioncrónach á cur agat chuig `api.runAsyncOnBackendWithManualTransactionHandling()`,\\n ach is dócha gur cheart duit `api.runOnBackend()` a úsáid ina ionad." + }, + "ws": { + "sync-check-failed": "Theip ar an seiceáil sioncrónaithe!", + "consistency-checks-failed": "Theip ar na seiceálacha comhsheasmhachta! Féach ar na logaí le haghaidh sonraí.", + "encountered-error": "Tharla earráid \"{{message}}\", féach ar an gconsól.", + "lost-websocket-connection-title": "Cailleadh an nasc leis an bhfreastalaí", + "lost-websocket-connection-message": "Seiceáil cumraíocht do sheachfhreastalaí droim ar ais (m.sh. nginx nó Apache) chun a chinntiú go bhfuil cead ceart ag naisc WebSocket agus nach bhfuil siad á mbac." + }, + "hoisted_note": { + "confirm_unhoisting": "Tá an nóta iarrtha '{{requestedNote}}' lasmuigh de fhochrann an nóta ardaithe '{{hoistedNote}}' agus ní mór duit é a dhí-ardú chun rochtain a fháil ar an nóta. Ar mhaith leat dul ar aghaidh leis an dí-ardú?" + }, + "launcher_context_menu": { + "reset_launcher_confirm": "An bhfuil tú cinnte gur mhaith leat \"{{title}}\" a athshocrú? Caillfear na sonraí/socruithe go léir sa nóta seo (agus a chlann) agus cuirfear an lainseálaí ar ais ina shuíomh bunaidh.", + "add-note-launcher": "Cuir lainseálaí nótaí leis", + "add-script-launcher": "Cuir lainseálaí scripte leis", + "add-custom-widget": "Cuir giuirléid saincheaptha leis", + "add-spacer": "Cuir spásaire leis", + "delete": "Scrios ", + "reset": "Athshocraigh", + "move-to-visible-launchers": "Bog chuig lainseálaithe infheicthe", + "move-to-available-launchers": "Bog chuig lainseálaithe atá ar fáil", + "duplicate-launcher": "Lainseálaí dúblach " + }, + "highlighting": { + "title": "Bloic Chóid", + "description": "Rialaíonn sé seo an aibhsiú comhréire do bhloic chód laistigh de nótaí téacs, ní bheidh tionchar aige seo ar nótaí cóid.", + "color-scheme": "Scéim Dathanna" + }, + "code_block": { + "word_wrapping": "Timfhilleadh focal", + "theme_none": "Gan aon aibhsiú comhréire", + "theme_group_light": "Téamaí éadroma", + "theme_group_dark": "Téamaí dorcha", + "copy_title": "Cóipeáil chuig an ghearrthaisce" + }, + "classic_editor_toolbar": { + "title": "Formáidiú" + }, + "editor": { + "title": "Eagarthóir" + }, + "editing": { + "editor_type": { + "label": "Barra uirlisí formáidithe", + "floating": { + "title": "Ar snámh", + "description": "feictear uirlisí eagarthóireachta in aice leis an gcúrsóir;" + }, + "fixed": { + "title": "Seasta", + "description": "Feictear uirlisí eagarthóireachta sa chluaisín ribín \"Formáidiú\"." + }, + "multiline-toolbar": "Taispeáin an barra uirlisí ar illínte mura n-oireann sé." + } + }, + "electron_context_menu": { + "add-term-to-dictionary": "Cuir \"{{term}}\" leis an bhfoclóir", + "cut": "Gearr", + "copy": "Cóipeáil", + "copy-link": "Cóipeáil nasc", + "paste": "Greamaigh", + "paste-as-plain-text": "Greamaigh mar théacs simplí", + "search_in_trilium": "Cuardaigh \"{{term}}\" i Trilium", + "search_online": "Cuardaigh \"{{term}}\" le {{search Engine}}" + }, + "image_context_menu": { + "copy_reference_to_clipboard": "Cóipeáil tagairt chuig an ghearrthaisce", + "copy_image_to_clipboard": "Cóipeáil íomhá chuig an ghearrthaisce" + }, + "link_context_menu": { + "open_note_in_new_tab": "Oscail nóta i gcluaisín nua", + "open_note_in_new_split": "Oscail nóta i scoilt nua", + "open_note_in_other_split": "Nóta oscailte sa scoilt eile", + "open_note_in_new_window": "Oscail nóta i bhfuinneog nua", + "open_note_in_popup": "Eagarthóireacht thapa" + }, + "electron_integration": { + "desktop-application": "Feidhmchlár Deisce", + "native-title-bar": "Barra teidil dúchasach", + "native-title-bar-description": "I gcás Windows agus macOS, má choinnítear an barra teidil dúchasach múchta, bíonn cuma níos dlúithe ar an bhfeidhmchlár. Ar Linux, má choinnítear an barra teidil dúchasach air, comhtháthaítear é níos fearr leis an gcuid eile den chóras.", + "background-effects": "Cumasaigh éifeachtaí cúlra", + "background-effects-description": "Cuireann sé cúlra doiléir, stíleach le fuinneoga aipeanna, rud a chruthaíonn doimhneacht agus cuma nua-aimseartha. Ní mór \"Barra teidil dúchasach\" a dhíchumasú.", + "restart-app-button": "Atosaigh an feidhmchlár chun na hathruithe a fheiceáil", + "zoom-factor": "Fachtóir súmála" + }, + "note_autocomplete": { + "search-for": "Cuardaigh \"{{term}}\"", + "create-note": "Cruthaigh agus nasc nóta linbh \"{{term}}\"", + "insert-external-link": "Cuir nasc seachtrach chuig \"{{term}}\" isteach", + "clear-text-field": "Glan réimse téacs", + "show-recent-notes": "Taispeáin nótaí le déanaí", + "full-text-search": "Cuardach téacs iomlán" + }, + "note_tooltip": { + "note-has-been-deleted": "Scriosadh an nóta.", + "quick-edit": "Eagarthóireacht thapa" + }, + "geo-map": { + "create-child-note-title": "Cruthaigh nóta nua do pháistí agus cuir leis an léarscáil é", + "create-child-note-text": "Cuir marcóir leis", + "create-child-note-instruction": "Cliceáil ar an léarscáil chun nóta nua a chruthú ag an suíomh sin nó brúigh Escape chun é a dhíbhe.", + "unable-to-load-map": "Ní féidir an léarscáil a luchtú." + }, + "geo-map-context": { + "open-location": "Oscail suíomh", + "remove-from-map": "Bain den léarscáil", + "add-note": "Cuir marcóir leis an suíomh seo" + }, + "help-button": { + "title": "Oscail an leathanach cabhrach ábhartha" + }, + "duration": { + "seconds": "Soicindí", + "minutes": "Nóiméid", + "hours": "Uaireanta", + "days": "Laethanta" + }, + "share": { + "title": "Socruithe Comhroinnte", + "redirect_bare_domain": "Atreoraigh fearann lom chuig an leathanach Comhroinnte", + "redirect_bare_domain_description": "Atreoraigh úsáideoirí gan ainm chuig an leathanach Comhroinnte in ionad Logáil Isteach a thaispeáint", + "show_login_link": "Taispeáin nasc Logála Isteach sa téama Comhroinnte", + "show_login_link_description": "Cuir nasc logála isteach le bunús an leathanaigh Chomhroinnte", + "check_share_root": "Seiceáil Stádas Fréamh Comhroinnte", + "share_root_found": "Tá an nóta fréimhe '{{noteTitle}}' réidh le roinnt", + "share_root_not_found": "Níor aimsíodh aon nóta leis an lipéad #shareRoot", + "share_root_not_shared": "Tá lipéad #shareRoot ag an nóta '{{noteTitle}}' ach níl sé roinnte" + }, + "time_selector": { + "invalid_input": "Ní uimhir bhailí an luach ama a iontráladh.", + "minimum_input": "Ní mór don luach ama a iontráladh a bheith {{minimumSeconds}} soicind ar a laghad." + }, + "tasks": { + "due": { + "today": "Inniu", + "tomorrow": "Amárach", + "yesterday": "Inné" + } + }, + "content_widget": { + "unknown_widget": "Giuirléid anaithnid do \"{{id}}\"." + }, + "note_language": { + "not_set": "Gan aon teanga socraithe", + "configure-languages": "Cumraigh teangacha...", + "help-on-languages": "Cabhair le teangacha ábhair..." + }, + "content_language": { + "title": "Teangacha ábhair", + "description": "Roghnaigh teanga amháin nó níos mó ar cheart dóibh a bheith le feiceáil sa rogha teanga sa rannán Airíonna Bunúsacha de nóta téacs inléite amháin nó in-eagarthóireachta. Ceadóidh sé seo gnéithe ar nós seiceáil litrithe nó tacaíocht ó dheis go clé." + }, + "switch_layout_button": { + "title_vertical": "Bog an painéal eagarthóireachta go dtí an bun", + "title_horizontal": "Bog an painéal eagarthóireachta ar chlé" + }, + "toggle_read_only_button": { + "unlock-editing": "Díghlasáil eagarthóireacht", + "lock-editing": "Eagarthóireacht glasála" + }, + "png_export_button": { + "button_title": "Easpórtáil léaráid mar PNG" + }, + "svg": { + "export_to_png": "Níorbh fhéidir an léaráid a easpórtáil go PNG.", + "export_to_svg": "Níorbh fhéidir an léaráid a easpórtáil chuig SVG." + }, + "code_theme": { + "title": "Dealramh", + "word_wrapping": "Timfhilleadh focal", + "color-scheme": "Scéim dathanna" + }, + "cpu_arch_warning": { + "title": "Íoslódáil leagan ARM64 le do thoil", + "message_macos": "Tá TriliumNext ag rith faoi aistriúchán Rosetta 2 faoi láthair, rud a chiallaíonn go bhfuil an leagan Intel (x64) á úsáid agat ar Apple Silicon Mac. Beidh tionchar suntasach aige seo ar fheidhmíocht agus ar shaolré na ceallraí.", + "message_windows": "Tá aithris á rith ag TriliumNext faoi láthair, rud a chiallaíonn go bhfuil an leagan Intel (x64) á úsáid agat ar ghléas Windows ar ARM. Beidh tionchar suntasach aige seo ar fheidhmíocht agus ar shaolré na ceallraí.", + "recommendation": "Chun an taithí is fearr a fháil, íoslódáil an leagan dúchasach ARM64 de TriliumNext ónár leathanach eisiúintí.", + "download_link": "Íoslódáil Leagan Dúchasach", + "continue_anyway": "Lean ar aghaidh ar aon nós", + "dont_show_again": "Ná taispeáin an rabhadh seo arís" + }, + "editorfeatures": { + "title": "Gnéithe", + "emoji_completion_enabled": "Cumasaigh uath-chomhlánú Emoji", + "emoji_completion_description": "Más cumasaithe é, is féidir emojis a chur isteach i dtéacs go héasca trí `:` a chlóscríobh, agus ainm emoji ina dhiaidh sin.", + "note_completion_enabled": "Cumasaigh uath-chríochnú nótaí", + "note_completion_description": "Más cumasaithe é, is féidir naisc chuig nótaí a chruthú trí `@` a chlóscríobh agus teideal an nóta ina dhiaidh sin.", + "slash_commands_enabled": "Cumasaigh orduithe slaise", + "slash_commands_description": "Más cumasaithe é, is féidir orduithe eagarthóireachta amhail briseadh líne nó ceannteidil a chur isteach a athrú trí `/` a chlóscríobh." + }, + "table_view": { + "new-row": "Sraith nua", + "new-column": "Colún nua", + "sort-column-by": "Sórtáil de réir \"{{title}}\"", + "sort-column-ascending": "Ag dul suas", + "sort-column-descending": "Ag dul síos", + "sort-column-clear": "Glan sórtáil", + "hide-column": "Folaigh colún \"{{title}}\"", + "show-hide-columns": "Taispeáin/folaigh colúin", + "row-insert-above": "Cuir isteach an tsraith thuas", + "row-insert-below": "Cuir isteach sraith thíos", + "row-insert-child": "Cuir nóta linbh isteach", + "add-column-to-the-left": "Cuir colún leis ar chlé", + "add-column-to-the-right": "Cuir colún leis ar dheis", + "edit-column": "Cuir colún in eagar", + "delete_column_confirmation": "An bhfuil tú cinnte gur mian leat an colún seo a scriosadh? Bainfear an tréith chomhfhreagrach as na nótaí go léir.", + "delete-column": "Scrios colún", + "new-column-label": "Lipéad", + "new-column-relation": "Gaol" + }, + "book_properties_config": { + "hide-weekends": "Folaigh deireadh seachtaine", + "display-week-numbers": "Taispeáin uimhreacha na seachtaine", + "map-style": "Stíl léarscáile", + "max-nesting-depth": "Doimhneacht neadaithe uasta:", + "raster": "Raster", + "vector_light": "Veicteoir (Solas)", + "vector_dark": "Veicteoir (Dorcha)", + "show-scale": "Taispeáin scála" + }, + "table_context_menu": { + "delete_row": "Scrios an tsraith" + }, + "board_view": { + "delete-note": "Scrios nóta...", + "remove-from-board": "Bain den bhord", + "archive-note": "Nóta cartlainne", + "unarchive-note": "Nóta díchartlannaithe", + "move-to": "Bog go", + "insert-above": "Cuir isteach thuas", + "insert-below": "Cuir isteach thíos", + "delete-column": "Scrios colún", + "delete-column-confirmation": "An bhfuil tú cinnte gur mian leat an colún seo a scriosadh? Scriosfar an tréith chomhfhreagrach sna nótaí faoin gcolún seo chomh maith.", + "new-item": "Mír nua", + "new-item-placeholder": "Cuir isteach teideal an nóta...", + "add-column": "Cuir Colún leis", + "add-column-placeholder": "Cuir isteach ainm an cholúin...", + "edit-note-title": "Cliceáil chun teideal an nóta a chur in eagar", + "edit-column-title": "Cliceáil chun teideal an cholúin a chur in eagar", + "column-already-exists": "Tá an colún seo ann cheana féin ar an mbord." + }, + "presentation_view": { + "edit-slide": "Cuir an sleamhnán seo in eagar", + "start-presentation": "Tosaigh an cur i láthair", + "slide-overview": "Forbhreathnú ar na sleamhnáin a athrú" + }, + "calendar_view": { + "delete_note": "Scrios nóta..." + }, + "command_palette": { + "tree-action-name": "Crann: {{name}}", + "export_note_title": "Nóta Easpórtála", + "export_note_description": "Easpórtáil an nóta reatha", + "show_attachments_title": "Taispeáin Ceangaltáin", + "show_attachments_description": "Féach ar cheangaltáin nótaí", + "search_notes_title": "Cuardaigh Nótaí", + "search_notes_description": "Oscail cuardach ardleibhéil", + "search_subtree_title": "Cuardaigh i bhFo-chrann", + "search_subtree_description": "Cuardaigh laistigh den fho-chrann reatha", + "search_history_title": "Taispeáin Stair Chuardaigh", + "search_history_description": "Féach ar chuardaigh roimhe seo", + "configure_launch_bar_title": "Cumraigh an Barra Seolta", + "configure_launch_bar_description": "Oscail cumraíocht an bharra lainseála, chun míreanna a chur leis nó a bhaint." + }, + "content_renderer": { + "open_externally": "Oscail go seachtrach" + }, + "modal": { + "close": "Dún", + "help_title": "Taispeáin tuilleadh eolais faoin scáileán seo" + }, + "call_to_action": { + "next_theme_title": "Bain triail as an téama nua Trilium", + "next_theme_message": "Tá an seantéama in úsáid agat faoi láthair, ar mhaith leat an téama nua a thriail?", + "next_theme_button": "Bain triail as an téama nua", + "background_effects_title": "Tá éifeachtaí cúlra cobhsaí anois", + "background_effects_message": "Ar fheistí Windows agus macOS, tá éifeachtaí cúlra cobhsaí anois. Cuireann na héifeachtaí cúlra teagmháil datha leis an gcomhéadan úsáideora tríd an gcúlra taobh thiar de a dhéanamh doiléir.", + "background_effects_button": "Cumasaigh éifeachtaí cúlra", + "new_layout_title": "Leagan amach nua", + "new_layout_message": "Thugamar leagan amach nuachóirithe isteach do Trilium. Baineadh an ribín agus comhtháthaíodh go gan uaim é sa phríomh-chomhéadan, le barra stádais nua agus rannóga inleathnaithe (amhail tréithe cur chun cinn) ag glacadh seilbhe ar phríomhfheidhmeanna.\n\nTá an leagan amach nua cumasaithe de réir réamhshocraithe, agus is féidir é a dhíchumasú go sealadach trí Roghanna → Dealramh.", + "new_layout_button": "Tuilleadh eolais", + "dismiss": "Díbhe" + }, + "settings": { + "related_settings": "Socruithe gaolmhara" + }, + "settings_appearance": { + "related_code_blocks": "Scéim dathanna do bhloic chóid i nótaí téacs", + "related_code_notes": "Scéim dathanna le haghaidh nótaí cóid", + "ui": "Comhéadan úsáideora", + "ui_old_layout": "Leagan amach sean", + "ui_new_layout": "Leagan amach nua" + }, + "units": { + "percentage": "%" + }, + "pagination": { + "page_title": "Leathanach de {{startIndex}} - {{endIndex}}", + "total_notes": "{{count}} nótaí" + }, + "collections": { + "rendering_error": "Ní féidir ábhar a thaispeáint mar gheall ar earráid." + }, + "note-color": { + "clear-color": "Dath nóta soiléir", + "set-color": "Socraigh dath nóta", + "set-custom-color": "Socraigh dath nóta saincheaptha" + }, + "popup-editor": { + "maximize": "Athraigh go dtí an t-eagarthóir iomlán" + }, + "server": { + "unknown_http_error_title": "Earráid chumarsáide leis an bhfreastalaí", + "unknown_http_error_content": "Cód stádais: {{statusCode}}\nURL: {{method}} {{url}}\nTeachtaireacht: {{message}}", + "traefik_blocks_requests": "Má tá tú ag úsáid seachfhreastalaí droim ar ais Traefik, tugadh isteach athrú briste a théann i bhfeidhm ar an gcumarsáid leis an bhfreastalaí." + }, + "tab_history_navigation_buttons": { + "go-back": "Téigh ar ais go dtí an nóta roimhe seo", + "go-forward": "Téigh ar aghaidh go dtí an chéad nóta eile" + }, + "breadcrumb": { + "hoisted_badge": "Ardaithe", + "hoisted_badge_title": "Dí-ardaigh", + "workspace_badge": "Spás Oibre", + "scroll_to_top_title": "Léim go dtí tús an nóta", + "create_new_note": "Cruthaigh nóta nua do pháistí", + "empty_hide_archived_notes": "Folaigh nótaí cartlannaithe" + }, + "breadcrumb_badges": { + "read_only_explicit": "Léamh amháin", + "read_only_explicit_description": "Socraíodh an nóta seo de láimh go léamh amháin.\nCliceáil chun é a chur in eagar go sealadach.", + "read_only_auto": "Uathoibríoch inléite amháin", + "read_only_auto_description": "Socraíodh an nóta seo go huathoibríoch go mód léite amháin ar chúiseanna feidhmíochta. Is féidir an teorainn uathoibríoch seo a choigeartú ó na socruithe.\n\nCliceáil chun é a chur in eagar go sealadach.", + "read_only_temporarily_disabled": "In-eagarthóireacht shealadach", + "read_only_temporarily_disabled_description": "Is féidir an nóta seo a chur in eagar faoi láthair, ach is gnách go mbíonn sé inléite amháin. A luaithe a théann tú chuig nóta eile, beidh an nóta inléite amháin arís.\n\nCliceáil chun an modh inléite amháin a athchumasú.", + "shared_publicly": "Roinnte go poiblí", + "shared_locally": "Roinnte go háitiúil", + "shared_copy_to_clipboard": "Cóipeáil nasc chuig an ghearrthaisce", + "shared_open_in_browser": "Oscail nasc sa bhrabhsálaí", + "shared_unshare": "Bain an scair", + "clipped_note": "Gearrthóg gréasáin", + "clipped_note_description": "Tógadh an nóta seo ó {{url}} ar dtús.\n\nCliceáil chun nascleanúint a dhéanamh chuig an leathanach gréasáin foinseach.", + "execute_script": "Rith an script", + "execute_script_description": "Is nóta scripte é seo. Cliceáil chun an script a fhorghníomhú.", + "execute_sql": "Rith SQL", + "execute_sql_description": "Is nóta SQL é seo. Cliceáil chun an fiosrúchán SQL a fhorghníomhú.", + "save_status_saved": "Sábháilte", + "save_status_saving": "Ag sábháil...", + "save_status_unsaved": "Gan sábháil", + "save_status_error": "Theip ar shábháil", + "save_status_saving_tooltip": "Tá athruithe á sábháil.", + "save_status_unsaved_tooltip": "Tá athruithe neamhshábháilte ann. Sábhálfar iad go huathoibríoch i gceann nóiméid.", + "save_status_error_tooltip": "Tharla earráid agus an nóta á shábháil. Más féidir, déan iarracht ábhar an nóta a chóipeáil in áit eile agus an feidhmchlár a athlódáil." + }, + "status_bar": { + "language_title": "Athraigh teanga an ábhair", + "note_info_title": "Féach ar fhaisnéis nótaí (m.sh., dátaí, méid nótaí)", + "backlinks_one": "{{count}} nasc siar", + "backlinks_two": "{{count}} naisc siar", + "backlinks_few": "{{count}} naisc siar", + "backlinks_many": "{{count}} naisc siar", + "backlinks_other": "{{count}} naisc siar", + "backlinks_title_one": "Féach ar an nasc siar", + "backlinks_title_two": "Féach ar an naisc siar", + "backlinks_title_few": "Féach ar an naisc siar", + "backlinks_title_many": "Féach ar an naisc siar", + "backlinks_title_other": "Féach ar an naisc siar", + "attachments_one": "{{count}} ceangaltán", + "attachments_two": "{{count}} ceangaltáin", + "attachments_few": "{{count}} ceangaltáin", + "attachments_many": "{{count}} ceangaltáin", + "attachments_other": "{{count}} ceangaltáin", + "attachments_title_one": "Féach ar an gceangaltán i gcluaisín nua", + "attachments_title_two": "Féach ar cheangaltán i gcluaisíní nua", + "attachments_title_few": "Féach ar cheangaltán i gcluaisíní nua", + "attachments_title_many": "Féach ar cheangaltán i gcluaisíní nua", + "attachments_title_other": "Féach ar cheangaltán i gcluaisíní nua", + "attributes_one": "{{count}} tréith", + "attributes_two": "{{count}} tréithe", + "attributes_few": "{{count}} tréithe", + "attributes_many": "{{count}} tréithe", + "attributes_other": "{{count}} tréithe", + "attributes_title": "Tréithe faoi úinéireacht agus tréithe oidhreachta", + "note_paths_one": "{{count}} cosán", + "note_paths_two": "{{count}} cosáin", + "note_paths_few": "{{count}} cosáin", + "note_paths_many": "{{count}} cosáin", + "note_paths_other": "{{count}} cosáin", + "note_paths_title": "Cosáin nótaí", + "code_note_switcher": "Athraigh mód teanga" + }, + "attributes_panel": { + "title": "Tréithe Nóta" + }, + "right_pane": { + "empty_message": "Níl aon rud le taispeáint don nóta seo", + "empty_button": "Folaigh an painéal", + "toggle": "Athraigh an painéal ar dheis", + "custom_widget_go_to_source": "Téigh go dtí an cód foinse" + }, + "pdf": { + "attachments_one": "{{count}} ceangaltán", + "attachments_two": "{{count}} ceangaltáin", + "attachments_few": "{{count}} ceangaltáin", + "attachments_many": "{{count}} ceangaltáin", + "attachments_other": "{{count}} ceangaltáin", + "layers_one": "{{count}} sraith", + "layers_two": "{{count}} sraitheanna", + "layers_few": "{{count}} sraitheanna", + "layers_many": "{{count}} sraitheanna", + "layers_other": "{{count}} sraitheanna", + "pages_one": "{{count}} leathanach", + "pages_two": "{{count}} leathanaigh", + "pages_few": "{{count}} leathanaigh", + "pages_many": "{{count}} leathanaigh", + "pages_other": "{{count}} leathanaigh", + "pages_alt": "Leathanach {{pageNumber}}", + "pages_loading": "Ag lódáil..." + }, + "platform_indicator": { + "available_on": "Ar fáil ar {{platform}}" + }, + "mobile_tab_switcher": { + "title_one": "{{count}} cluaisín", + "title_two": "{{count}} cluaisíní", + "title_few": "{{count}} cluaisíní", + "title_many": "{{count}} cluaisíní", + "title_other": "{{count}} cluaisíní", + "more_options": "Tuilleadh roghanna" + }, + "bookmark_buttons": { + "bookmarks": "Leabharmharcanna" + } +} diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json index 4f3e972dcf..4b8d34b5a5 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -81,7 +81,8 @@ "configure_launchbar": "ランチャーバーの設定", "show_shared_notes_subtree": "共有ノートのサブツリーを表示", "new-version-available": "新しいアップデートが利用可能", - "download-update": "{{latestVersion}} をバージョンを入手" + "download-update": "{{latestVersion}} をバージョンを入手", + "search_notes": "検索ノート" }, "left_pane_toggle": { "show_panel": "パネルを表示", @@ -234,7 +235,8 @@ "search_note_saved": "検索ノートが {{- notePathTitle}} に保存されました", "actions_executed": "アクションが実行されました。", "ancestor": "祖先:", - "view_options": "表示オプション:" + "view_options": "表示オプション:", + "option": "オプション" }, "shortcuts": { "multiple_shortcuts": "同じアクションに対して複数のショートカットを設定する場合、カンマで区切ることができます。", @@ -407,7 +409,7 @@ "relation_map_buttons": { "zoom_out_title": "ズームアウト", "zoom_in_title": "ズームイン", - "create_child_note_title": "新しい子ノートを作成し、関連マップに追加", + "create_child_note_title": "子ノートを作成し、マップに追加", "reset_pan_zoom_title": "パンとズームを初期座標と倍率にリセット" }, "tree-context-menu": { @@ -1648,7 +1650,9 @@ "error_unrecognized_command": "認識されないコマンド {{command}}", "insert_child_note": "子ノートを挿入", "error_cannot_get_branch_id": "ノートパス 「{{notePath}} のbranchIdを取得できません", - "note_revisions": "ノートの変更履歴" + "note_revisions": "ノートの変更履歴", + "backlinks": "バックリンク", + "content_language_switcher": "コンテンツの言語: {{language}}" }, "inherited_attribute_list": { "title": "継承属性", @@ -1757,8 +1761,8 @@ "desktop-application": "デスクトップアプリケーション", "native-title-bar": "ネイティブタイトルバー", "native-title-bar-description": "WindowsとmacOSでは、ネイティブタイトルバーをオフにしておくと、アプリケーションがよりコンパクトに見えます。Linuxでは、ネイティブタイトルバーを表示したままの方が、他のシステムとの統一性が高まります。", - "background-effects": "背景効果を有効化(Windows 11のみ)", - "background-effects-description": "Mica効果は、アプリのウィンドウにぼかされたスタイリッシュな背景を追加し、奥行きとモダンな外観を演出します。「ネイティブタイトルバー」を無効にする必要があります。", + "background-effects": "背景効果を有効化", + "background-effects-description": "アプリウィンドウにぼかしの効いたスタイリッシュな背景を追加し、奥行きとモダンな外観を演出します。「ネイティブタイトルバー」を無効にする必要があります。", "restart-app-button": "アプリケーションを再起動して変更を反映", "zoom-factor": "ズーム倍率" }, @@ -2008,7 +2012,8 @@ "geo-map": { "create-child-note-title": "新しい子ノートを作成し、マップに追加する", "create-child-note-instruction": "地図をクリックしてその場所に新しいノートを作成するか、Esc キーを押して閉じます。", - "unable-to-load-map": "マップを読み込めません。" + "unable-to-load-map": "マップを読み込めません。", + "create-child-note-text": "マーカーを追加" }, "geo-map-context": { "open-location": "現在位置を表示", @@ -2044,7 +2049,7 @@ "next_theme_message": "現在、レガシーテーマを使用しています。新しいテーマを試してみませんか?", "next_theme_button": "新しいテーマを試す", "background_effects_title": "背景効果が安定しました", - "background_effects_message": "Windowsデバイスでは、背景効果が完全に安定しました。背景効果は、背景をぼかすことでユーザーインターフェースに彩りを添えます。この技術は、Windowsエクスプローラーなどの他のアプリケーションでも使用されています。", + "background_effects_message": "WindowsおよびmacOSデバイスで、背景効果が安定しました。背景効果は、背景をぼかすことでユーザーインターフェースに彩りを添えます。", "background_effects_button": "背景効果を有効にする", "dismiss": "却下", "new_layout_title": "新しいレイアウト", @@ -2253,5 +2258,15 @@ "pages_other": "{{count}} ページ", "pages_alt": "ページ {{pageNumber}}", "pages_loading": "読み込み中..." + }, + "platform_indicator": { + "available_on": "{{platform}} で利用可能" + }, + "mobile_tab_switcher": { + "title_other": "{{count}} タブ", + "more_options": "その他のオプション" + }, + "bookmark_buttons": { + "bookmarks": "ブックマーク" } } diff --git a/apps/client/src/translations/pl/translation.json b/apps/client/src/translations/pl/translation.json index 17f32fc602..3ae83d8f2d 100644 --- a/apps/client/src/translations/pl/translation.json +++ b/apps/client/src/translations/pl/translation.json @@ -21,7 +21,7 @@ }, "bundle-error": { "title": "Nie udało się załadować niestandardowego skryptu", - "message": "Skrypt z notatki o ID \"{{id}}\", zatytułowany \"{{title}}\", nie mógł zostać wykonany z powodu:\n\n{{message}}" + "message": "Skrypt nie mógł zostać wykonany z powodu:\n\n{{message}}" }, "widget-list-error": { "title": "Nie udało się pobrać listy widżetów z serwera" @@ -29,8 +29,9 @@ "widget-render-error": { "title": "Nie udało się wyrenderować niestandardowego widżetu React" }, - "widget-missing-parent": "Niestandardowy widżet nie ma zdefiniowanej obowiązkowej właściwości „{{property}}”.", - "open-script-note": "Otwórz notatkę ze skryptem" + "widget-missing-parent": "Niestandardowy widżet nie ma zdefiniowanej obowiązkowej właściwości „{{property}}”.\nJeśli skrypt ma działać bez interfejsu użytkownika (UI) wyłącz go: '#run=frontendStartup'.", + "open-script-note": "Otwórz notatkę ze skryptem", + "scripting-error": "Błąd skryptu użytkownika: {{title}}" }, "add_link": { "add_link": "Dodaj link", @@ -191,7 +192,8 @@ "expand_tooltip": "Rozwija bezpośrednie elementy podrzędne tej kolekcji (o jeden poziom). Aby uzyskać więcej opcji, naciśnij strzałkę po prawej.", "expand_first_level": "Rozwiń bezpośrednie elementy podrzędne", "expand_nth_level": "Rozwiń {{depth}} poziomów", - "expand_all_levels": "Rozwiń wszystkie poziomy" + "expand_all_levels": "Rozwiń wszystkie poziomy", + "hide_child_notes": "Ukryj notatki podrzędne w derzwie" }, "board_view": { "move-to": "Przenieś do", @@ -240,7 +242,7 @@ "background_effects_title": "Efekty tła są teraz stabilne", "dismiss": "Odrzuć", "background_effects_button": "Włącz efekty tła", - "background_effects_message": "Na urządzeniach z systemem Windows efekty tła są teraz w pełni stabilne. Efekty tła dodają odrobinę koloru do interfejsu użytkownika poprzez rozmycie tła za nim. Ta technika jest również stosowana w innych aplikacjach, takich jak Eksplorator Windows.", + "background_effects_message": "Na urządzeniach z systemem Windows i macOS efekty tła są stabilne. Efekty tła dodają odrobinę koloru do interfejsu użytkownika poprzez rozmycie tła za nim.", "new_layout_title": "Nowy układ", "new_layout_message": "Wprowadziliśmy zmodernizowany układ interfejsu dla Trilium. Wstążka została usunięta i płynnie zintegrowana z głównym interfejsem, a jej kluczowe funkcje przejęły nowy pasek stanu i rozwijane sekcje (takie jak promowane atrybuty).\n\nNowy układ jest domyślnie włączony i można go tymczasowo wyłączyć w Ustawienia → Wygląd.", "new_layout_button": "Szczegóły" @@ -520,7 +522,8 @@ "action": "akcja", "search_button": "Szukaj", "search_execute": "Szukaj i wykonaj akcje", - "view_options": "Ustawienia widoku:" + "view_options": "Ustawienia widoku:", + "option": "opcja" }, "similar_notes": { "title": "Podobne notatki", @@ -602,8 +605,8 @@ "desktop-application": "Aplikacja desktopowa", "native-title-bar": "Natywny pasek tytułu", "native-title-bar-description": "Dla Windows i macOS, wyłączenie natywnego paska tytułu sprawia, że aplikacja wygląda bardziej kompaktowo. Na Linuxie, włączenie natywnego paska tytułu lepiej integruje się z resztą systemu.", - "background-effects": "Włącz efekty tła (tylko Windows 11)", - "background-effects-description": "Efekt Mica dodaje rozmyte, stylowe tło do okien aplikacji, tworząc głębię i nowoczesny wygląd. \"Natywny pasek tytułu\" musi być wyłączony.", + "background-effects": "Włącz efekty tła", + "background-effects-description": "Dodaje rozmyte, stylowe tło do okien aplikacji, tworząc głębię i nowoczesny wygląd. \"Natywny pasek tytułu\" musi być wyłączony.", "restart-app-button": "Zrestartuj aplikację, aby zobaczyć zmiany", "zoom-factor": "Współczynnik powiększenia" }, @@ -1182,7 +1185,8 @@ "show-cheatsheet": "Pokaż ściągawkę", "toggle-zen-mode": "Tryb Zen", "new-version-available": "Dostępna nowa aktualizacja", - "download-update": "Pobierz wersję {{latestVersion}}" + "download-update": "Pobierz wersję {{latestVersion}}", + "search_notes": "Przeszukaj notatki" }, "zen_mode": { "button_exit": "Wyjdź z trybu Zen" @@ -1265,7 +1269,7 @@ "button_title": "Eksportuj diagram jako SVG" }, "relation_map_buttons": { - "create_child_note_title": "Utwórz nową notatkę podrzędną i dodaj ją do tej mapy relacji", + "create_child_note_title": "Utwórz notatkę podrzędną i dodaj ją do mapy", "reset_pan_zoom_title": "Zresetuj przesunięcie i powiększenie do początkowych współrzędnych i powiększenia", "zoom_in_title": "Powiększ", "zoom_out_title": "Pomniejsz" @@ -1281,12 +1285,23 @@ "delete_this_note": "Usuń tę notatkę", "note_revisions": "Wersje notatki", "error_cannot_get_branch_id": "Nie można pobrać branchId dla ścieżki notatki '{{notePath}}'", - "error_unrecognized_command": "Nierozpoznane polecenie {{command}}" + "error_unrecognized_command": "Nierozpoznane polecenie {{command}}", + "backlinks": "Linki zwrotne", + "content_language_switcher": "Język treści: {{language}}" }, "note_icon": { "change_note_icon": "Zmień ikonę notatki", "search": "Szukaj:", - "reset-default": "Przywróć domyślną ikonę" + "reset-default": "Przywróć domyślną ikonę", + "search_placeholder_one": "Znaleziono {{number}} ikonę w {{count}} pakietach", + "search_placeholder_few": "Znaleziono {{number}} ikon w {{count}} pakietach", + "search_placeholder_many": "Znaleziono {{number}} ikon w {{count}} pakietach", + "search_placeholder_filtered": "Wyszukaj {{number}} ikon w {{name}}", + "filter": "Filtr", + "filter-none": "Wszystkie ikony", + "filter-default": "Domyślne ikony", + "icon_tooltip": "{{name}}\npakiet ikon: {{iconPack}}", + "no_results": "Nie znaleziono ikon." }, "basic_properties": { "note_type": "Typ notatki", @@ -1826,7 +1841,7 @@ "will_be_deleted_in": "Ten załącznik zostanie automatycznie usunięty za {{time}}", "will_be_deleted_soon": "Ten załącznik zostanie wkrótce automatycznie usunięty", "deletion_reason": ", ponieważ załącznik nie jest podlinkowany w treści notatki. Aby zapobiec usunięciu, dodaj link do załącznika z powrotem do treści lub przekonwertuj załącznik na notatkę.", - "role_and_size": "Rola: {{role}}, Rozmiar: {{size}}", + "role_and_size": "Rola: {{role}}, Rozmiar: {{size}}, MIME: {{- mimeType}}", "link_copied": "Link do załącznika skopiowany do schowka.", "unrecognized_role": "Nierozpoznana rola załącznika '{{role}}'." }, @@ -1880,7 +1895,10 @@ "apply-bulk-actions": "Zastosuj akcje masowe", "converted-to-attachments": "{{count}} notatek zostało przekonwertowanych na załączniki.", "convert-to-attachment-confirm": "Czy na pewno chcesz przekonwertować wybrane notatki na załączniki ich notatek nadrzędnych? Ta operacja dotyczy tylko notatek Obrazów, inne notatki zostaną pominięte.", - "open-in-popup": "Szybka edycja" + "open-in-popup": "Szybka edycja", + "open-in-a-new-window": "Otwórz w nowym oknie", + "hide-subtree": "Ukryj gałąź", + "show-subtree": "Rozwiń gałąź" }, "shared_info": { "shared_publicly": "Ta notatka jest udostępniona publicznie pod adresem {{- link}}.", @@ -1971,7 +1989,17 @@ "create-child-note": "Utwórz notatkę podrzędną", "unhoist": "Cofnij zawężenie", "toggle-sidebar": "Przełącz pasek boczny", - "dropping-not-allowed": "Upuszczanie notatek w tej lokalizacji jest niedozwolone." + "dropping-not-allowed": "Upuszczanie notatek w tej lokalizacji jest niedozwolone.", + "clone-indicator-tooltip": "Ta notatka ma {{- count}} notatek nadrzędnych: {{- parents}}", + "clone-indicator-tooltip-single": "Ta notatka jest sklonowana (1 dodatkowa notatka nadrzędna: {{- parent}})", + "shared-indicator-tooltip": "Ta notatka jest udostępniona publicznie", + "shared-indicator-tooltip-with-url": "Ta notatka jest udostępniana publicznie jako: {{- url}}", + "subtree-hidden-tooltip_one": "{{count}} notatka podrzędna ukryta w drzewie", + "subtree-hidden-tooltip_few": "{{count}} notatek podrzędnych ukrytych w drzewie", + "subtree-hidden-tooltip_many": "{{count}} notatek podrzędnych ukrytych w drzewie", + "subtree-hidden-moved-title": "Dodano do {{title}}", + "subtree-hidden-moved-description-collection": "Ta kolekcja ukrywa swoje notatki podrzędne w drzewie.", + "subtree-hidden-moved-description-other": "Notatki podrzędne są ukryte w drzewie tej notatki." }, "title_bar_buttons": { "window-on-top": "Utrzymuj okno na wierzchu" @@ -1979,7 +2007,13 @@ "note_detail": { "could_not_find_typewidget": "Nie można znaleźć widżetu typu dla typu '{{type}}'", "printing": "Drukowanie w toku...", - "printing_pdf": "Eksportowanie do PDF w toku..." + "printing_pdf": "Eksportowanie do PDF w toku...", + "print_report_title": "Wydrukuj raport", + "print_report_collection_content_one": "Nie można wydrukować {{count}} notatki w kolekcji, ponieważ nie jest ona obsługiwana lub jest chroniona.", + "print_report_collection_content_few": "Nie można wydrukować {{count}} notatek w kolekcji, ponieważ nie są one obsługiwane lub są chronione.", + "print_report_collection_content_many": "Nie można wydrukować {{count}} notatek w kolekcji, ponieważ nie są one obsługiwane lub są chronione.", + "print_report_collection_details_button": "Zobacz szczegóły", + "print_report_collection_details_ignored_notes": "Zignorowane notatki" }, "note_title": { "placeholder": "wpisz tytuł notatki tutaj...", @@ -1989,7 +2023,8 @@ "note_type_switcher_others": "Inny typ notatki", "note_type_switcher_templates": "Szablon", "note_type_switcher_collection": "Kolekcja", - "edited_notes": "Edytowane notatki" + "edited_notes": "Notatki edytowane dzisiaj", + "promoted_attributes": "Sugerowane atrybuty" }, "search_result": { "no_notes_found": "Nie znaleziono notatek dla podanych parametrów wyszukiwania.", @@ -1999,7 +2034,11 @@ "configure_launchbar": "Konfiguruj pasek szybkiego dostępu" }, "sql_result": { - "no_rows": "Dla tego zapytania nie zwrócono żadnych wierszy" + "no_rows": "Dla tego zapytania nie zwrócono żadnych wierszy", + "not_executed": "Zapytanie nie zostało jeszcze wykonane.", + "failed": "Wykonanie zapytania SQL nie powiodło się", + "statement_result": "Wynik wyrażenia", + "execute_now": "Wykonaj teraz" }, "sql_table_schemas": { "tables": "Tabele" @@ -2116,7 +2155,8 @@ "geo-map": { "create-child-note-title": "Utwórz nową notatkę podrzędną i dodaj ją do mapy", "create-child-note-instruction": "Kliknij na mapie, aby utworzyć nową notatkę w tej lokalizacji lub naciśnij Escape, aby anulować.", - "unable-to-load-map": "Nie można załadować mapy." + "unable-to-load-map": "Nie można załadować mapy.", + "create-child-note-text": "Dodaj zaznaczenie" }, "geo-map-context": { "open-location": "Otwórz lokalizację", @@ -2183,7 +2223,14 @@ "execute_sql_description": "Ta notatka jest notatką SQL. Kliknij, aby wykonać zapytanie SQL.", "shared_copy_to_clipboard": "Kopiuj link do schowka", "shared_open_in_browser": "Otwórz link w przeglądarce", - "shared_unshare": "Usuń udostępnienie" + "shared_unshare": "Usuń udostępnienie", + "save_status_saved": "Zapisane", + "save_status_saving": "Zapisywanie...", + "save_status_unsaved": "Niezapisane", + "save_status_error": "Zapis nie powiódł się", + "save_status_saving_tooltip": "Zmiany zostały zapisane.", + "save_status_unsaved_tooltip": "Są niezapisane zmiany. Zostaną one zapisane automatycznie za chwilę.", + "save_status_error_tooltip": "Wystąpił błąd podczas zapisywania notatki. Spróbuj skopiować treść notatki w inne miejsce i ponownie załadować aplikację." }, "status_bar": { "language_title": "Zmień język treści", @@ -2226,5 +2273,30 @@ "empty_button": "Ukryj panel", "toggle": "Pokaż/ukryj prawy panel", "custom_widget_go_to_source": "Przejdź do kodu źródłowego" + }, + "pdf": { + "attachments_one": "{{count}} załącznik", + "attachments_few": "{{count}} załączniki", + "attachments_many": "{{count}} załączników", + "layers_one": "{{count}} warstwa", + "layers_few": "{{count}} warstw", + "layers_many": "{{count}} warstw", + "pages_one": "{{count}} strona", + "pages_few": "{{count}} stron", + "pages_many": "{{count}} stron", + "pages_alt": "Strona {{pageNumber}}", + "pages_loading": "Wczytuję..." + }, + "platform_indicator": { + "available_on": "Dostępne na {{platform}}" + }, + "mobile_tab_switcher": { + "title_one": "{{count}} zakładka", + "title_few": "{{count}} zakładki", + "title_many": "{{count}} zakładek", + "more_options": "Więcej opcji" + }, + "bookmark_buttons": { + "bookmarks": "Zakładki" } } diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json index 4823db67d3..843f90a03e 100644 --- a/apps/client/src/translations/ro/translation.json +++ b/apps/client/src/translations/ro/translation.json @@ -1761,8 +1761,8 @@ "show-recent-notes": "Afișează notițele recente" }, "electron_integration": { - "background-effects": "Activează efectele de fundal (doar pentru Windows 11)", - "background-effects-description": "Efectul Mica adaugă un fundal estompat și elegant ferestrelor aplicațiilor, creând profunzime și un aspect modern. Opțiunea „Bară de titlu nativă” trebuie să fie dezactivată.", + "background-effects": "Activează efectele de fundal", + "background-effects-description": "Adaugă un fundal estompat și elegant ferestrelor aplicațiilor, creând profunzime și un aspect modern. Opțiunea „Bară de titlu nativă” trebuie să fie dezactivată.", "desktop-application": "Aplicația desktop", "native-title-bar": "Bară de titlu nativă", "native-title-bar-description": "Pentru Windows și macOS, dezactivarea bării de titlu native face aplicația să pară mai compactă. Pe Linux, păstrarea bării integrează mai bine aplicația cu restul sistemului de operare.", @@ -1781,7 +1781,8 @@ "geo-map": { "create-child-note-title": "Crează o notiță nouă și adaug-o pe hartă", "unable-to-load-map": "Nu s-a putut încărca harta.", - "create-child-note-instruction": "Click pe hartă pentru a crea o nouă notiță la acea poziție sau apăsați Escape pentru a anula." + "create-child-note-instruction": "Click pe hartă pentru a crea o nouă notiță la acea poziție sau apăsați Escape pentru a anula.", + "create-child-note-text": "Adaugă marcaj" }, "duration": { "days": "zile", @@ -2127,7 +2128,7 @@ }, "call_to_action": { "background_effects_title": "Efectele de fundal sunt acum stabile", - "background_effects_message": "Pe dispozitive cu Windows, efectele de fundal sunt complet stabile. Acestea adaugă un strop de culoare interfeței grafice prin estomparea fundalului din spatele ferestrei. Această tehnică este folosită și în alte aplicații precum Windows Explorer.", + "background_effects_message": "Pe dispozitive cu Windows și macOS, efectele de fundal sunt stabile. Acestea adaugă un strop de culoare interfeței grafice prin estomparea fundalului din spatele ferestrei.", "background_effects_button": "Activează efectele de fundal", "next_theme_title": "Încercați noua temă Trilium", "next_theme_message": "Utilizați tema clasică, doriți să încercați noua temă?", @@ -2281,5 +2282,14 @@ "pages_other": "{{count}} de pagini", "pages_alt": "Pagina {{pageNumber}}", "pages_loading": "Încărcare..." + }, + "platform_indicator": { + "available_on": "Disponibil pe {{platform}}" + }, + "mobile_tab_switcher": { + "title_one": "{{count}} tab", + "title_few": "{{count}} taburi", + "title_other": "{{count}} de taburi", + "more_options": "Mai multe opțiuni" } } diff --git a/apps/client/src/translations/tw/translation.json b/apps/client/src/translations/tw/translation.json index d4ef14f53a..150aa6d3d1 100644 --- a/apps/client/src/translations/tw/translation.json +++ b/apps/client/src/translations/tw/translation.json @@ -757,7 +757,8 @@ "delete_this_note": "刪除此筆記", "error_cannot_get_branch_id": "無法獲取 notePath '{{notePath}}' 的 branchId", "error_unrecognized_command": "無法識別的命令 {{command}}", - "note_revisions": "筆記歷史版本" + "note_revisions": "筆記歷史版本", + "backlinks": "反向連結" }, "note_icon": { "change_note_icon": "更改筆記圖標", @@ -1939,8 +1940,8 @@ "desktop-application": "桌面版應用程式", "native-title-bar": "原生標題列", "native-title-bar-description": "對於 Windows 和 macOS,關閉原生標題列會讓應用程式看起來更緊湊。在 Linux 上,開啟原生標題列可以與系統的其他部分整合得更好。", - "background-effects": "啟用背景效果(僅適用於 Windows 11)", - "background-effects-description": "Mica 效果為程式視窗新增模糊且時尚的背景,營造出深度感和現代化外觀。「原生標題列」必須被禁用。", + "background-effects": "啟用背景效果", + "background-effects-description": "為程式視窗新增模糊且時尚的背景,營造立體感和現代化外觀。「原生標題列」必須被禁用。", "restart-app-button": "重新啟動應用程式以查看更改", "zoom-factor": "縮放係數" }, @@ -1959,7 +1960,8 @@ "geo-map": { "create-child-note-title": "建立一個新的子筆記並將其加至地圖中", "create-child-note-instruction": "點擊地圖以在該位置建立新筆記,或按 Escape 以取消。", - "unable-to-load-map": "無法載入地圖。" + "unable-to-load-map": "無法載入地圖。", + "create-child-note-text": "新增地圖標記" }, "geo-map-context": { "open-location": "打開位置", @@ -2122,7 +2124,7 @@ }, "call_to_action": { "background_effects_title": "背景特效已推出穩定版本", - "background_effects_message": "在 Windows 裝置上,背景特效現在已完全穩定。背景特效透過模糊背後的背景,為使用者介面增添一抹色彩。此技術也用於其他應用程式,例如 Windows 檔案總管。", + "background_effects_message": "在 Windows 和macOS裝置上,背景特效現在已穩定。背景特效透過模糊背後的背景,為使用者介面增添一抹色彩。", "background_effects_button": "啟用背景特效", "next_theme_title": "試用新 Trilium 主題", "next_theme_message": "您正在使用舊版主題,要試用新主題嗎?", @@ -2267,5 +2269,12 @@ "pages_other": "", "pages_alt": "第 {{pageNumber}} 頁", "pages_loading": "正在載入…" + }, + "mobile_tab_switcher": { + "more_options": "更多選項", + "title_one": "{{count}} 個分頁" + }, + "platform_indicator": { + "available_on": "可於 {{platform}} 使用" } } diff --git a/apps/client/src/widgets/Backlinks.css b/apps/client/src/widgets/Backlinks.css new file mode 100644 index 0000000000..9e8ced45ba --- /dev/null +++ b/apps/client/src/widgets/Backlinks.css @@ -0,0 +1,83 @@ +.tn-backlinks-widget .backlinks-items { + list-style-type: none; + margin: 0; + padding: 0; + position: static; + width: unset; + + > li { + --border-radius: 8px; + + max-width: 600px; + padding: 10px 20px; + background: var(--card-background-color); + + & + li { + margin-top: 2px; + } + + &:first-child { + border-radius: var(--border-radius) var(--border-radius) 0 0; + } + + &:last-child { + border-radius: 0 0 var(--border-radius) var(--border-radius); + } + + /* Card header */ + & > span:first-child { + display: block; + + > span { + display: flex; + flex-wrap: wrap; + align-items: center; + + /* Note path */ + > small { + flex: 100%; + order: -1; + font-size: .65rem; + + .note-path { + padding: 0; + } + } + + /* Note icon */ + > .tn-icon { + color: var(--menu-item-icon-color); + } + + /* Note title */ + > a { + margin-inline-start: 4px; + color: currentColor; + font-weight: 500; + } + } + } + + /* Card content - excerpt */ + .backlink-excerpt { + all: unset; /* TODO: Remove after disposing the old style from FloatingButtons.css */ + display: block; + + margin: 8px 0; + border-radius: 4px; + background: var(--quick-search-result-content-background); + padding: 8px; + font-size: .75rem; + + a { + background: transparent; + color: var(--quick-search-result-highlight-color); + text-decoration: underline; + } + + p { + margin: 0; + } + } + } +} diff --git a/apps/client/src/widgets/FloatingButtonsDefinitions.tsx b/apps/client/src/widgets/FloatingButtonsDefinitions.tsx index 4ad6c520ae..5d19389cf1 100644 --- a/apps/client/src/widgets/FloatingButtonsDefinitions.tsx +++ b/apps/client/src/widgets/FloatingButtonsDefinitions.tsx @@ -1,3 +1,5 @@ +import "./Backlinks.css"; + import { BacklinkCountResponse, BacklinksResponse, SaveSqlConsoleResponse } from "@triliumnext/commons"; import { VNode } from "preact"; import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "preact/hooks"; @@ -54,21 +56,12 @@ export const DESKTOP_FLOATING_BUTTONS: FloatingButtonsList = [ OpenTriliumApiDocsButton, SaveToNoteButton, RelationMapButtons, - GeoMapButtons, CopyImageReferenceButton, ExportImageButtons, InAppHelpButton, Backlinks ]; -export const MOBILE_FLOATING_BUTTONS: FloatingButtonsList = [ - RefreshBackendLogButton, - EditButton, - RelationMapButtons, - ExportImageButtons, - Backlinks -]; - /** * Floating buttons that should be hidden in popup editor (Quick edit). */ @@ -98,10 +91,10 @@ function SwitchSplitOrientationButton({ note, isReadOnly, isDefaultViewMode }: F />; } -function ToggleReadOnlyButton({ note, viewType, isDefaultViewMode }: FloatingButtonContext) { +function ToggleReadOnlyButton({ note, isDefaultViewMode }: FloatingButtonContext) { const [ isReadOnly, setReadOnly ] = useNoteLabelBoolean(note, "readOnly"); const isSavedSqlite = note.isTriliumSqlite() && !note.isHiddenCompletely(); - const isEnabled = ([ "mermaid", "mindMap", "canvas" ].includes(note.type) || viewType === "geoMap" || isSavedSqlite) + const isEnabled = ([ "mermaid", "mindMap", "canvas" ].includes(note.type) || isSavedSqlite) && note.isContentAvailable() && isDefaultViewMode; return isEnabled && triggerEvent("geoMapCreateChildNote")} - /> - ); -} - function CopyImageReferenceButton({ note, isDefaultViewMode }: FloatingButtonContext) { const hiddenImageCopyRef = useRef(null); const isEnabled = ( @@ -305,7 +287,7 @@ function ExportImageButtons({ note, triggerEvent, isDefaultViewMode }: FloatingB function InAppHelpButton({ note }: FloatingButtonContext) { const helpUrl = getHelpUrlForNote(note); - const isEnabled = !!helpUrl; + const isEnabled = note.type !== "book" && !!helpUrl; return isEnabled && ( * { contain: none; -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index 64a485188e..78450811da 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -1,5 +1,6 @@ import "./NoteDetail.css"; +import clsx from "clsx"; import { isValidElement, VNode } from "preact"; import { useEffect, useRef, useState } from "preact/hooks"; @@ -12,8 +13,9 @@ import { t } from "../services/i18n"; import protected_session_holder from "../services/protected_session_holder"; import toast from "../services/toast.js"; import { dynamicRequire, isElectron, isMobile } from "../services/utils"; +import NoteTreeWidget from "./note_tree"; import { ExtendedNoteType, TYPE_MAPPINGS, TypeWidget } from "./note_types"; -import { useNoteContext, useTriliumEvent } from "./react/hooks"; +import { useLegacyWidget, useNoteContext, useTriliumEvent } from "./react/hooks"; import { NoteListWithLinks } from "./react/NoteList"; import { TypeWidgetProps } from "./type_widgets/type_widget"; @@ -36,6 +38,7 @@ export default function NoteDetail() { const [ noteTypesToRender, setNoteTypesToRender ] = useState<{ [ key in ExtendedNoteType ]?: (props: TypeWidgetProps) => VNode }>({}); const [ activeNoteType, setActiveNoteType ] = useState(); const widgetRequestId = useRef(0); + const hasFixedTree = note && noteContext?.hoistedNoteId === "_lbMobileRoot" && isMobile() && note.noteId.startsWith("_lbMobile"); const props: TypeWidgetProps = { note: note!, @@ -119,13 +122,6 @@ export default function NoteDetail() { } }); - // Fixed tree for launch bar config on mobile. - useEffect(() => { - if (!isMobile) return; - const hasFixedTree = noteContext?.hoistedNoteId === "_lbMobileRoot"; - document.body.classList.toggle("force-fixed-tree", hasFixedTree); - }, [ note ]); - // Handle toast notifications. useEffect(() => { if (!isElectron()) return; @@ -215,8 +211,13 @@ export default function NoteDetail() { return (
+ {hasFixedTree && } + {Object.entries(noteTypesToRender).map(([ itemType, Element ]) => { return new NoteTreeWidget(), { noteContext }); + return
{treeEl}
; +} + /** * Wraps a single note type widget, in order to keep it in the DOM even after the user has switched away to another note type. This allows faster loading of the same note type again. The properties are cached, so that they are updated only * while the widget is visible, to avoid rendering in the background. When not visible, the DOM element is simply hidden. diff --git a/apps/client/src/widgets/PromotedAttributes.tsx b/apps/client/src/widgets/PromotedAttributes.tsx index a9618d3a63..cbe5737256 100644 --- a/apps/client/src/widgets/PromotedAttributes.tsx +++ b/apps/client/src/widgets/PromotedAttributes.tsx @@ -5,6 +5,7 @@ import clsx from "clsx"; import { ComponentChild, HTMLInputTypeAttribute, InputHTMLAttributes, MouseEventHandler, TargetedEvent, TargetedInputEvent } from "preact"; import { Dispatch, StateUpdater, useEffect, useRef, useState } from "preact/hooks"; +import NoteContext from "../components/note_context"; import FAttribute from "../entities/fattribute"; import FNote from "../entities/fnote"; import { Attribute } from "../services/attribute_parser"; @@ -40,8 +41,8 @@ type OnChangeEventData = TargetedEvent | InputEvent | J type OnChangeListener = (e: OnChangeEventData) => Promise; export default function PromotedAttributes() { - const { note, componentId } = useNoteContext(); - const [ cells, setCells ] = usePromotedAttributeData(note, componentId); + const { note, componentId, noteContext } = useNoteContext(); + const [ cells, setCells ] = usePromotedAttributeData(note, componentId, noteContext); return ; } @@ -74,12 +75,12 @@ export function PromotedAttributesContent({ note, componentId, cells, setCells } * * The cells are returned as a state since they can also be altered internally if needed, for example to add a new empty cell. */ -export function usePromotedAttributeData(note: FNote | null | undefined, componentId: string): [ Cell[] | undefined, Dispatch> ] { +export function usePromotedAttributeData(note: FNote | null | undefined, componentId: string, noteContext: NoteContext | undefined): [ Cell[] | undefined, Dispatch> ] { const [ viewType ] = useNoteLabel(note, "viewType"); const [ cells, setCells ] = useState(); function refresh() { - if (!note || viewType === "table") { + if (!note || viewType === "table" || noteContext?.viewScope?.viewMode !== "default") { setCells([]); return; } @@ -124,7 +125,7 @@ export function usePromotedAttributeData(note: FNote | null | undefined, compone setCells(cells); } - useEffect(refresh, [ note, viewType ]); + useEffect(refresh, [ note, viewType, noteContext ]); useTriliumEvent("entitiesReloaded", ({ loadResults }) => { if (loadResults.getAttributeRows(componentId).find((attr) => attributes.isAffecting(attr, note))) { refresh(); diff --git a/apps/client/src/widgets/buttons/global_menu.tsx b/apps/client/src/widgets/buttons/global_menu.tsx index 732286a36f..bb142813ee 100644 --- a/apps/client/src/widgets/buttons/global_menu.tsx +++ b/apps/client/src/widgets/buttons/global_menu.tsx @@ -29,7 +29,6 @@ export default function GlobalMenu({ isHorizontalLayout }: { isHorizontalLayout: const isVerticalLayout = !isHorizontalLayout; const parentComponent = useContext(ParentComponent); const { isUpdateAvailable, latestVersion } = useTriliumUpdateStatus(); - const isMobileLocal = isMobile(); const logoRef = useRef(null); useStaticTooltip(logoRef); @@ -44,9 +43,12 @@ export default function GlobalMenu({ isHorizontalLayout }: { isHorizontalLayout:
} } noDropdownListStyle - onShown={isMobileLocal ? () => document.getElementById("context-menu-cover")?.classList.add("show", "global-menu-cover") : undefined} - onHidden={isMobileLocal ? () => document.getElementById("context-menu-cover")?.classList.remove("show", "global-menu-cover") : undefined} + mobileBackdrop > + {isMobile() && <> + + + } @@ -107,8 +109,7 @@ function BrowserOnlyOptions() { function DevelopmentOptions({ dropStart }: { dropStart: boolean }) { return <> - - Development Options + {experimentalFeatures.map((feature) => ( diff --git a/apps/client/src/widgets/collections/NoteList.css b/apps/client/src/widgets/collections/NoteList.css index bdc6b3dc7d..449f45d97c 100644 --- a/apps/client/src/widgets/collections/NoteList.css +++ b/apps/client/src/widgets/collections/NoteList.css @@ -1,7 +1,7 @@ .note-list-widget { min-height: 0; max-width: var(--max-content-width); /* Inherited from .note-split */ - + overflow: auto; contain: none !important; } @@ -11,10 +11,6 @@ body.prefers-centered-content .note-list-widget:not(.full-height) { margin-inline: auto; } -.note-list-widget .note-list { - padding-block: 10px; -} - .note-list-widget.full-height, .note-list-widget.full-height .note-list-widget-content { height: 100%; @@ -25,8 +21,12 @@ body.prefers-centered-content .note-list-widget:not(.full-height) { } /* #region Pagination */ -.note-list-pager span.current-page { - text-decoration: underline; - font-weight: bold; +.note-list-pager { + font-size: 1rem; + + span.current-page { + text-decoration: underline; + font-weight: bold; + } } -/* #endregion */ \ No newline at end of file +/* #endregion */ diff --git a/apps/client/src/widgets/collections/board/index.css b/apps/client/src/widgets/collections/board/index.css index 28cc98a2c8..4851410db8 100644 --- a/apps/client/src/widgets/collections/board/index.css +++ b/apps/client/src/widgets/collections/board/index.css @@ -2,25 +2,28 @@ position: relative; height: 100%; user-select: none; - overflow-x: auto; + display: flex; + flex-direction: column; --card-font-size: 0.9em; --card-line-height: 1.2; --card-padding: 0.6em; } -body.mobile .board-view { - scroll-snap-type: x mandatory; - -webkit-overflow-scrolling: touch; - scroll-behavior: smooth; -} - .board-view-container { height: 100%; display: flex; gap: 1em; - padding: 1em; + padding-inline: 12px; + padding-block: 4px; align-items: flex-start; + overflow-x: auto; +} + +body.mobile .board-view-container { + scroll-snap-type: x mandatory; + -webkit-overflow-scrolling: touch; + scroll-behavior: smooth; } .board-view-container .board-column { @@ -352,4 +355,4 @@ body.mobile .board-view-container .board-column { font-size: 0.9em; max-width: 200px; word-wrap: break-word; -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/collections/board/index.tsx b/apps/client/src/widgets/collections/board/index.tsx index 39e715f97c..7267b27a75 100644 --- a/apps/client/src/widgets/collections/board/index.tsx +++ b/apps/client/src/widgets/collections/board/index.tsx @@ -1,20 +1,23 @@ -import { Dispatch, StateUpdater, useCallback, useEffect, useMemo, useRef, useState } from "preact/hooks"; -import { ViewModeProps } from "../interface"; import "./index.css"; -import { ColumnMap, getBoardData } from "./data"; + +import { createContext, TargetedKeyboardEvent } from "preact"; +import { Dispatch, StateUpdater, useCallback, useEffect, useMemo, useRef, useState } from "preact/hooks"; + +import FNote from "../../../entities/fnote"; +import { t } from "../../../services/i18n"; +import toast from "../../../services/toast"; +import CollectionProperties from "../../note_bars/CollectionProperties"; +import FormTextArea from "../../react/FormTextArea"; +import FormTextBox from "../../react/FormTextBox"; import { useNoteLabelBoolean, useNoteLabelWithDefault, useTriliumEvent } from "../../react/hooks"; import Icon from "../../react/Icon"; -import { t } from "../../../services/i18n"; -import Api from "./api"; -import FormTextBox from "../../react/FormTextBox"; -import { createContext, TargetedKeyboardEvent } from "preact"; -import { onWheelHorizontalScroll } from "../../widget_utils"; -import Column from "./column"; -import BoardApi from "./api"; -import FormTextArea from "../../react/FormTextArea"; -import FNote from "../../../entities/fnote"; import NoteAutocomplete from "../../react/NoteAutocomplete"; -import toast from "../../../services/toast"; +import { onWheelHorizontalScroll } from "../../widget_utils"; +import { ViewModeProps } from "../interface"; +import Api from "./api"; +import BoardApi from "./api"; +import Column from "./column"; +import { ColumnMap, getBoardData } from "./data"; export interface BoardViewData { columns?: BoardColumnData[]; @@ -145,7 +148,7 @@ export default function BoardView({ note: parentNote, noteIds, viewConfig, saveC const insertBefore = mouseX < columnMiddle; // Calculate the target position - let targetIndex = insertBefore ? index : index + 1; + const targetIndex = insertBefore ? index : index + 1; setColumnDropPosition(targetIndex); }, [draggedColumn]); @@ -159,15 +162,14 @@ export default function BoardView({ note: parentNote, noteIds, viewConfig, saveC }, [draggedColumn, columnDropPosition, handleColumnDrop]); return ( -
+
+ {byColumn && columns &&
{columns.map((column, index) => ( <> @@ -194,7 +196,7 @@ export default function BoardView({ note: parentNote, noteIds, viewConfig, saveC
}
- ) + ); } function AddNewColumn({ api, isInRelationMode }: { api: BoardApi, isInRelationMode: boolean }) { @@ -218,26 +220,26 @@ function AddNewColumn({ api, isInRelationMode }: { api: BoardApi, isInRelationMo tabIndex={300} > {!isCreatingNewColumn - ? <> - {" "} - {t("board_view.add-column")} - - : ( - { - const created = await api.addNewColumn(columnName); - if (!created) { - toast.showMessage(t("board_view.column-already-exists"), undefined, "bx bx-duplicate"); - } - }} - dismiss={() => setIsCreatingNewColumn(false)} - isNewItem - mode={isInRelationMode ? "relation" : "normal"} - /> - )} + ? <> + {" "} + {t("board_view.add-column")} + + : ( + { + const created = await api.addNewColumn(columnName); + if (!created) { + toast.showMessage(t("board_view.column-already-exists"), undefined, "bx bx-duplicate"); + } + }} + dismiss={() => setIsCreatingNewColumn(false)} + isNewItem + mode={isInRelationMode ? "relation" : "normal"} + /> + )}
- ) + ); } export function TitleEditor({ currentValue, placeholder, save, dismiss, mode, isNewItem }: { @@ -302,26 +304,26 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, mode, is onBlur={onBlur} /> ); - } else { - return ( - { - if (e.key === "Escape") { - dismiss(); - } - }} - onBlur={() => dismiss()} - noteIdChanged={(newValue) => { - save(newValue); - dismiss(); - }} - /> - ); } + return ( + { + if (e.key === "Escape") { + dismiss(); + } + }} + onBlur={() => dismiss()} + noteIdChanged={(newValue) => { + save(newValue); + dismiss(); + }} + /> + ); + } diff --git a/apps/client/src/widgets/collections/calendar/index.css b/apps/client/src/widgets/collections/calendar/index.css index b5e9fb1303..34296dc174 100644 --- a/apps/client/src/widgets/collections/calendar/index.css +++ b/apps/client/src/widgets/collections/calendar/index.css @@ -21,7 +21,16 @@ outline: 0; height: 100%; user-select: none; - padding: 10px; + padding: 0; + + @media (max-width: 991px) { + padding: 0; + + th { + font-weight: normal; + font-size: 0.9em; + } + } } .calendar-view a, @@ -43,6 +52,7 @@ --fc-border-color: var(--main-border-color); --fc-neutral-bg-color: var(--launcher-pane-background-color); --fc-list-event-hover-bg-color: var(--left-pane-item-hover-background); + padding: 0 12px; } .calendar-container .fc-list-sticky .fc-list-day > * { @@ -59,33 +69,35 @@ overflow: hidden; } -/* #region Header */ -.calendar-view .calendar-header { - margin-bottom: 10px; - display: flex; - align-items: center; - gap: 10px; -} +.calendar-view .collection-properties { + .center-container { + justify-content: center; -.calendar-view .calendar-header .btn { - min-width: unset !important; -} + .title { + min-width: 150px; + font-size: 1.2em; + text-align: center; + } + } -.calendar-view .calendar-header > .title { - flex-grow: 1; - font-size: 1.3rem; - font-weight: normal; -} + @media (max-width: 991px) { + >div { + justify-content: flex-start; + } -body.desktop:not(.zen):not(.experimental-feature-new-layout) .calendar-view .calendar-header { - padding-block-start: 4px; - padding-inline-end: 5em; -} + .right-container { + flex-grow: 0; + } -.search-result-widget-content .calendar-view .calendar-header { - padding-inline-end: unset !important; + .center-container { + .title { + flex-grow: 1; + min-width: 110px; + font-size: 0.95em; + } + } + } } -/* #endregion */ /* #region Events */ @@ -93,7 +105,7 @@ body.desktop:not(.zen):not(.experimental-feature-new-layout) .calendar-view .cal * week, month, year views */ - .calendar-container a.fc-event { +.calendar-container a.fc-event { text-decoration: none; } diff --git a/apps/client/src/widgets/collections/calendar/index.tsx b/apps/client/src/widgets/collections/calendar/index.tsx index 0dde523c77..a8e7d17259 100644 --- a/apps/client/src/widgets/collections/calendar/index.tsx +++ b/apps/client/src/widgets/collections/calendar/index.tsx @@ -14,8 +14,11 @@ import dialog from "../../../services/dialog"; import froca from "../../../services/froca"; import { t } from "../../../services/i18n"; import { isMobile } from "../../../services/utils"; +import CollectionProperties from "../../note_bars/CollectionProperties"; import ActionButton from "../../react/ActionButton"; import Button, { ButtonGroup } from "../../react/Button"; +import Dropdown from "../../react/Dropdown"; +import { FormListItem } from "../../react/FormList"; import { useNoteLabel, useNoteLabelBoolean, useResizeObserver, useSpacedUpdate, useTriliumEvent, useTriliumOption, useTriliumOptionInt } from "../../react/hooks"; import { ParentComponent } from "../../react/react_utils"; import TouchBar, { TouchBarButton, TouchBarLabel, TouchBarSegmentedControl, TouchBarSpacer } from "../../react/TouchBar"; @@ -41,24 +44,28 @@ const CALENDAR_VIEWS = [ { type: "timeGridWeek", name: t("calendar.week"), + icon: "bx bx-calendar-week", previousText: t("calendar.week_previous"), nextText: t("calendar.week_next") }, { type: "dayGridMonth", name: t("calendar.month"), + icon: "bx bx-calendar", previousText: t("calendar.month_previous"), nextText: t("calendar.month_next") }, { type: "multiMonthYear", name: t("calendar.year"), + icon: "bx bx-layer", previousText: t("calendar.year_previous"), nextText: t("calendar.year_next") }, { type: "listMonth", name: t("calendar.list"), + icon: "bx bx-list-ol", previousText: t("calendar.month_previous"), nextText: t("calendar.month_next") } @@ -72,6 +79,7 @@ export const LOCALE_MAPPINGS: Record Promise<{ de es: () => import("@fullcalendar/core/locales/es"), fr: () => import("@fullcalendar/core/locales/fr"), it: () => import("@fullcalendar/core/locales/it"), + ga: null, cn: () => import("@fullcalendar/core/locales/zh-cn"), tw: () => import("@fullcalendar/core/locales/zh-tw"), ro: () => import("@fullcalendar/core/locales/ro"), @@ -140,7 +148,7 @@ export default function CalendarView({ note, noteIds }: ViewModeProps - + }) { +function CalendarCollectionProperties({ note, calendarRef }: { + note: FNote; + calendarRef: RefObject; +}) { const { title, viewType: currentViewType } = useOnDatesSet(calendarRef); const currentViewData = CALENDAR_VIEWS.find(v => calendarRef.current && v.type === currentViewType); + const isMobileLocal = isMobile(); return ( -
- {title} + + calendarRef.current?.prev()} /> + {title} + calendarRef.current?.next()} /> +
+ + ); +} + +function MobileCalendarViewSwitcher({ calendarRef }: { calendarRef: RefObject }) { + const { viewType: currentViewType } = useOnDatesSet(calendarRef); + const currentViewTypeData = CALENDAR_VIEWS.find(view => view.type === currentViewType); + + return ( + + {CALENDAR_VIEWS.map(viewData => ( + calendarRef.current?.changeView(viewData.type)} + >{viewData.name} + ))} + ); } diff --git a/apps/client/src/widgets/collections/geomap/index.css b/apps/client/src/widgets/collections/geomap/index.css index 341dfb6faf..285a3be5a7 100644 --- a/apps/client/src/widgets/collections/geomap/index.css +++ b/apps/client/src/widgets/collections/geomap/index.css @@ -2,6 +2,13 @@ overflow: hidden; position: relative; height: 100%; + display: flex; + flex-direction: column; + + > .collection-properties { + position: relative; + z-index: 2000; + } } .geo-map-container { diff --git a/apps/client/src/widgets/collections/geomap/index.tsx b/apps/client/src/widgets/collections/geomap/index.tsx index 6b91d4c8e6..6e490a81e8 100644 --- a/apps/client/src/widgets/collections/geomap/index.tsx +++ b/apps/client/src/widgets/collections/geomap/index.tsx @@ -1,24 +1,29 @@ -import Map from "./map"; import "./index.css"; -import { ViewModeProps } from "../interface"; -import { useNoteBlob, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useNoteTreeDrag, useSpacedUpdate, useTriliumEvent } from "../../react/hooks"; -import { DEFAULT_MAP_LAYER_NAME } from "./map_layer"; + import { divIcon, GPXOptions, LatLng, LeafletMouseEvent } from "leaflet"; -import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "preact/hooks"; -import Marker, { GpxTrack } from "./marker"; -import froca from "../../../services/froca"; -import FNote from "../../../entities/fnote"; import markerIcon from "leaflet/dist/images/marker-icon.png"; import markerIconShadow from "leaflet/dist/images/marker-shadow.png"; +import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "preact/hooks"; + import appContext from "../../../components/app_context"; -import { createNewNote, moveMarker } from "./api"; -import openContextMenu, { openMapContextMenu } from "./context_menu"; -import toast from "../../../services/toast"; +import FNote from "../../../entities/fnote"; +import branches from "../../../services/branches"; +import froca from "../../../services/froca"; import { t } from "../../../services/i18n"; import server from "../../../services/server"; -import branches from "../../../services/branches"; -import TouchBar, { TouchBarButton, TouchBarLabel, TouchBarSlider } from "../../react/TouchBar"; +import toast from "../../../services/toast"; +import CollectionProperties from "../../note_bars/CollectionProperties"; +import ActionButton from "../../react/ActionButton"; +import { ButtonOrActionButton } from "../../react/Button"; +import { useNoteBlob, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useNoteTreeDrag, useSpacedUpdate, useTriliumEvent } from "../../react/hooks"; import { ParentComponent } from "../../react/react_utils"; +import TouchBar, { TouchBarButton, TouchBarSlider } from "../../react/TouchBar"; +import { ViewModeProps } from "../interface"; +import { createNewNote, moveMarker } from "./api"; +import openContextMenu, { openMapContextMenu } from "./context_menu"; +import Map from "./map"; +import { DEFAULT_MAP_LAYER_NAME } from "./map_layer"; +import Marker, { GpxTrack } from "./marker"; const DEFAULT_COORDINATES: [number, number] = [3.878638227135724, 446.6630455551659]; const DEFAULT_ZOOM = 2; @@ -50,7 +55,7 @@ export default function GeoView({ note, noteIds, viewConfig, saveConfig }: ViewM } }, 5000); - useEffect(() => { froca.getNotes(noteIds).then(setNotes) }, [ noteIds ]); + useEffect(() => { froca.getNotes(noteIds).then(setNotes); }, [ noteIds ]); useEffect(() => { if (!note) return; @@ -60,7 +65,7 @@ export default function GeoView({ note, noteIds, viewConfig, saveConfig }: ViewM // Note creation. useTriliumEvent("geoMapCreateChildNote", () => { - toast.showPersistent({ + toast.showPersistent({ icon: "plus", id: "geo-new-note", title: "New note", @@ -130,6 +135,19 @@ export default function GeoView({ note, noteIds, viewConfig, saveConfig }: ViewM return (
+ + + + } + /> { coordinates !== undefined && zoom !== undefined && setReadOnly(!isReadOnly)} + />; +} + function NoteWrapper({ note, isReadOnly }: { note: FNote, isReadOnly: boolean }) { const mime = useNoteProperty(note, "mime"); const [ location ] = useNoteLabel(note, LOCATION_ATTRIBUTE); @@ -204,7 +232,7 @@ function NoteMarker({ note, editable, latLng }: { note: FNote, editable: boolean onDragged={editable ? onDragged : undefined} onClick={!editable ? onClick : undefined} onContextMenu={onContextMenu} - /> + />; } function NoteGpxTrack({ note }: { note: FNote }) { @@ -238,7 +266,7 @@ function NoteGpxTrack({ note }: { note: FNote }) { color: note.getLabelValue("color") ?? "blue" } }), [ color, iconClass ]); - return xmlString && + return xmlString && ; } function buildIcon(bxIconClass: string, colorClass?: string, title?: string, noteIdLink?: string, archived?: boolean) { @@ -292,5 +320,5 @@ function GeoMapTouchBar({ state, map }: { state: State, map: L.Map | null | unde enabled={state === State.Normal} /> - ) + ); } diff --git a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx index 40e6ae0bc6..61c7193a6e 100644 --- a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx +++ b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx @@ -7,7 +7,8 @@ import attribute_renderer from "../../../services/attribute_renderer"; import content_renderer from "../../../services/content_renderer"; import { t } from "../../../services/i18n"; import link from "../../../services/link"; -import { useImperativeSearchHighlighlighting, useNoteLabel, useNoteLabelBoolean } from "../../react/hooks"; +import CollectionProperties from "../../note_bars/CollectionProperties"; +import { useImperativeSearchHighlighlighting, useNoteLabel, useNoteLabelBoolean, useNoteProperty } from "../../react/hooks"; import Icon from "../../react/Icon"; import NoteLink from "../../react/NoteLink"; import { ViewModeProps } from "../interface"; @@ -19,11 +20,18 @@ export function ListView({ note, noteIds: unfilteredNoteIds, highlightedTokens } const noteIds = useFilteredNoteIds(note, unfilteredNoteIds); const { pageNotes, ...pagination } = usePagination(note, noteIds); const [ includeArchived ] = useNoteLabelBoolean(note, "includeArchived"); + const noteType = useNoteProperty(note, "type"); + const hasCollectionProperties = [ "book", "search" ].includes(noteType ?? ""); return (
+ } + /> + { noteIds.length > 0 &&
- + {!hasCollectionProperties && } - ) + ); } diff --git a/apps/client/src/widgets/launch_bar/GenericButtons.tsx b/apps/client/src/widgets/launch_bar/GenericButtons.tsx index 70fe0fccef..59c158dec1 100644 --- a/apps/client/src/widgets/launch_bar/GenericButtons.tsx +++ b/apps/client/src/widgets/launch_bar/GenericButtons.tsx @@ -7,32 +7,18 @@ import { isCtrlKey } from "../../services/utils"; import { useGlobalShortcut, useNoteLabel } from "../react/hooks"; import { LaunchBarActionButton, useLauncherIconAndTitle } from "./launch_bar_widgets"; -export function CustomNoteLauncher({ launcherNote, getTargetNoteId, getHoistedNoteId }: { +export function CustomNoteLauncher(props: { launcherNote: FNote; getTargetNoteId: (launcherNote: FNote) => string | null | Promise; getHoistedNoteId?: (launcherNote: FNote) => string | null; keyboardShortcut?: string; }) { + const { launcherNote, getTargetNoteId } = props; const { icon, title } = useLauncherIconAndTitle(launcherNote); const launch = useCallback(async (evt: MouseEvent | KeyboardEvent) => { - if (evt.which === 3) { - return; - } - - const targetNoteId = await getTargetNoteId(launcherNote); - if (!targetNoteId) return; - - const hoistedNoteIdWithDefault = getHoistedNoteId?.(launcherNote) || appContext.tabManager.getActiveContext()?.hoistedNoteId; - const ctrlKey = isCtrlKey(evt); - - if ((evt.which === 1 && ctrlKey) || evt.which === 2) { - const activate = !!evt.shiftKey; - await appContext.tabManager.openInNewTab(targetNoteId, hoistedNoteIdWithDefault, activate); - } else { - await appContext.tabManager.openInSameTab(targetNoteId, hoistedNoteIdWithDefault); - } - }, [ launcherNote, getTargetNoteId, getHoistedNoteId ]); + await launchCustomNoteLauncher(evt, props); + }, [ props ]); // Keyboard shortcut. const [ shortcut ] = useNoteLabel(launcherNote, "keyboardShortcut"); @@ -54,3 +40,24 @@ export function CustomNoteLauncher({ launcherNote, getTargetNoteId, getHoistedNo /> ); } + +export async function launchCustomNoteLauncher(evt: MouseEvent | KeyboardEvent, { launcherNote, getTargetNoteId, getHoistedNoteId }: { + launcherNote: FNote; + getTargetNoteId: (launcherNote: FNote) => string | null | Promise; + getHoistedNoteId?: (launcherNote: FNote) => string | null; +}) { + if (evt.which === 3) return; + + const targetNoteId = await getTargetNoteId(launcherNote); + if (!targetNoteId) return; + + const hoistedNoteIdWithDefault = getHoistedNoteId?.(launcherNote) || appContext.tabManager.getActiveContext()?.hoistedNoteId; + const ctrlKey = isCtrlKey(evt); + + if ((evt.which === 1 && ctrlKey) || evt.which === 2) { + const activate = !!evt.shiftKey; + await appContext.tabManager.openInNewTab(targetNoteId, hoistedNoteIdWithDefault, activate); + } else { + await appContext.tabManager.openInSameTab(targetNoteId, hoistedNoteIdWithDefault); + } +} diff --git a/apps/client/src/widgets/launch_bar/LauncherContainer.tsx b/apps/client/src/widgets/launch_bar/LauncherContainer.tsx index 3450a4c013..d202feaf35 100644 --- a/apps/client/src/widgets/launch_bar/LauncherContainer.tsx +++ b/apps/client/src/widgets/launch_bar/LauncherContainer.tsx @@ -3,6 +3,7 @@ import { useCallback, useLayoutEffect, useState } from "preact/hooks"; import FNote from "../../entities/fnote"; import froca from "../../services/froca"; import { isDesktop, isMobile } from "../../services/utils"; +import TabSwitcher from "../mobile_widgets/TabSwitcher"; import { useTriliumEvent } from "../react/hooks"; import { onWheelHorizontalScroll } from "../widget_utils"; import BookmarkButtons from "./BookmarkButtons"; @@ -97,6 +98,8 @@ function initBuiltinWidget(note: FNote, isHorizontalLayout: boolean) { return ; case "aiChatLauncher": return ; + case "mobileTabSwitcher": + return ; default: throw new Error(`Unrecognized builtin widget ${builtinWidget} for launcher ${note.noteId} "${note.title}"`); } diff --git a/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx b/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx index 0cb7c9906f..639b5aede7 100644 --- a/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx +++ b/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx @@ -1,3 +1,4 @@ +import clsx from "clsx"; import { createContext } from "preact"; import { useContext } from "preact/hooks"; @@ -18,12 +19,12 @@ export interface LauncherNoteProps { launcherNote: FNote; } -export function LaunchBarActionButton(props: Omit) { +export function LaunchBarActionButton({ className, ...props }: Omit) { const { isHorizontalLayout } = useContext(LaunchBarContext); return ( {children} ); diff --git a/apps/client/src/widgets/layout/InlineTitle.tsx b/apps/client/src/widgets/layout/InlineTitle.tsx index 9070902535..f6e5a51556 100644 --- a/apps/client/src/widgets/layout/InlineTitle.tsx +++ b/apps/client/src/widgets/layout/InlineTitle.tsx @@ -5,6 +5,7 @@ import { Tooltip } from "bootstrap"; import clsx from "clsx"; import { ComponentChild } from "preact"; import { useLayoutEffect, useMemo, useRef, useState } from "preact/hooks"; +import type React from "react"; import { Trans } from "react-i18next"; import FNote from "../../entities/fnote"; diff --git a/apps/client/src/widgets/layout/NoteTitleActions.css b/apps/client/src/widgets/layout/NoteTitleActions.css index b1aa37d89c..4ae4c15816 100644 --- a/apps/client/src/widgets/layout/NoteTitleActions.css +++ b/apps/client/src/widgets/layout/NoteTitleActions.css @@ -50,6 +50,9 @@ body.experimental-feature-new-layout { } } + } + + body.desktop .title-actions { > .collapsible, > .note-type-switcher { padding-inline-start: calc(24px - var(--title-actions-padding-start)); @@ -57,3 +60,4 @@ body.experimental-feature-new-layout { } } } + diff --git a/apps/client/src/widgets/layout/NoteTitleActions.tsx b/apps/client/src/widgets/layout/NoteTitleActions.tsx index dd1ed2342c..73ad3e0e89 100644 --- a/apps/client/src/widgets/layout/NoteTitleActions.tsx +++ b/apps/client/src/widgets/layout/NoteTitleActions.tsx @@ -1,34 +1,29 @@ import "./NoteTitleActions.css"; -import clsx from "clsx"; import { useEffect, useState } from "preact/hooks"; import NoteContext from "../../components/note_context"; import FNote from "../../entities/fnote"; import { t } from "../../services/i18n"; -import CollectionProperties from "../note_bars/CollectionProperties"; import { checkFullHeight, getExtendedWidgetType } from "../NoteDetail"; import { PromotedAttributesContent, usePromotedAttributeData } from "../PromotedAttributes"; -import SimpleBadge from "../react/Badge"; import Collapsible, { ExternallyControlledCollapsible } from "../react/Collapsible"; import { useNoteContext, useNoteLabel, useNoteProperty, useTriliumEvent, useTriliumOptionBool } from "../react/hooks"; -import NoteLink, { NewNoteLink } from "../react/NoteLink"; +import { NewNoteLink } from "../react/NoteLink"; import { useEditedNotes } from "../ribbon/EditedNotesTab"; import SearchDefinitionTab from "../ribbon/SearchDefinitionTab"; import NoteTypeSwitcher from "./NoteTypeSwitcher"; export default function NoteTitleActions() { - const { note, ntxId, componentId, noteContext } = useNoteContext(); - const isHiddenNote = note && note.noteId !== "_search" && note.noteId.startsWith("_"); + const { note, ntxId, componentId, noteContext, viewScope } = useNoteContext(); const noteType = useNoteProperty(note, "type"); return (
{noteType === "search" && } - {!isHiddenNote && note && noteType === "book" && } - + {(!viewScope?.viewMode || viewScope.viewMode === "default") && }
); } @@ -49,7 +44,7 @@ function PromotedAttributes({ note, componentId, noteContext }: { componentId: string, noteContext: NoteContext | undefined }) { - const [ cells, setCells ] = usePromotedAttributeData(note, componentId); + const [ cells, setCells ] = usePromotedAttributeData(note, componentId, noteContext); const [ expanded, setExpanded ] = useState(false); useEffect(() => { diff --git a/apps/client/src/widgets/layout/StatusBar.css b/apps/client/src/widgets/layout/StatusBar.css index c421c3d65e..a0b22c8d26 100644 --- a/apps/client/src/widgets/layout/StatusBar.css +++ b/apps/client/src/widgets/layout/StatusBar.css @@ -58,101 +58,12 @@ .dropdown-note-info { padding: 1em !important; - - ul { - --row-block-margin: .2em; - - list-style-type: none; - padding: 0; - margin: 0; - margin-top: calc(0px - var(--row-block-margin)); - margin-bottom: 12px; - display: table; - - li { - display: table-row; - - > strong { - display: table-cell; - padding: var(--row-block-margin) 0; - opacity: .5; - } - - > span { - display: table-cell; - user-select: text; - padding-left: 2em; - } - } - } } .dropdown-note-paths { .note-paths-widget { padding: 0.5em; } - - .note-path-intro { - color: var(--muted-text-color); - } - - .note-path-list { - margin: 12px 0; - padding: 0; - list-style: none; - - /* Note path card */ - li { - --border-radius: 6px; - - position: relative; - background: var(--card-background-color); - padding: 8px 20px 8px 25px; - - &:first-child { - border-radius: var(--border-radius) var(--border-radius) 0 0; - } - - &:last-child { - border-radius: 0 0 var(--border-radius) var(--border-radius); - } - - & + li { - margin-top: 2px; - } - - /* Current path arrow */ - &.path-current::before { - position: absolute; - display: flex; - justify-content: flex-end; - align-items: center; - content: "\ee8f"; - top: 0; - left: 0; - width: 20px; - bottom: 0; - font-family: "boxicons"; - font-size: .75em; - color: var(--menu-item-icon-color); - } - } - - /* Note path segment */ - a { - margin-inline: 2px; - padding-inline: 2px; - color: currentColor; - font-weight: normal; - text-decoration: none; - - /* The last segment of the note path */ - &.basename { - color: var(--muted-text-color); - } - } - - } } .backlinks-widget > .dropdown-menu { @@ -160,84 +71,6 @@ max-height: 60vh; overflow-y: scroll; - - /* Backlink card */ - li { - --border-radius: 8px; - - max-width: 600px; - padding: 10px 20px; - background: var(--card-background-color); - - & + li { - margin-top: 2px; - } - - &:first-child { - border-radius: var(--border-radius) var(--border-radius) 0 0; - } - - &:last-child { - border-radius: 0 0 var(--border-radius) var(--border-radius); - } - - /* Card header */ - & > span:first-child { - display: block; - - > span { - display: flex; - flex-wrap: wrap; - align-items: center; - - /* Note path */ - > small { - flex: 100%; - order: -1; - font-size: .65rem; - - .note-path { - padding: 0; - } - } - - /* Note icon */ - > .tn-icon { - color: var(--menu-item-icon-color); - } - - /* Note title */ - > a { - margin-inline-start: 4px; - color: currentColor; - font-weight: 500; - } - } - } - - /* Card content - excerpt */ - & > span:nth-child(2) > div { - all: unset; /* TODO: Remove after disposing the old style from FloatingButtons.css */ - display: block; - - margin: 8px 0; - border-radius: 4px; - background: var(--quick-search-result-content-background); - padding: 8px; - font-size: .75rem; - - a { - background: transparent; - color: var(--quick-search-result-highlight-color); - text-decoration: underline; - } - - p { - margin: 0; - } - } - - } } } @@ -284,16 +117,50 @@ } - div.similar-notes-widget div.similar-notes-wrapper { - max-height: unset; - } - button.select-button:not(:focus-visible) { outline: none; } } +body.experimental-feature-new-layout .note-info-content { + ul { + --row-block-margin: .2em; + + list-style-type: none; + padding: 0; + margin: 0; + margin-top: calc(0px - var(--row-block-margin)); + margin-bottom: 12px; + display: table; + + li { + display: table-row; + + > strong { + display: table-cell; + padding: var(--row-block-margin) 0; + opacity: .5; + } + + > span { + display: table-cell; + user-select: text; + padding-left: 2em; + } + } + } +} + +body.experimental-feature-new-layout div.similar-notes-widget div.similar-notes-wrapper { + max-height: unset; +} + +body.experimental-feature-new-layout.mobile div.similar-notes-widget div.similar-notes-wrapper { + max-height: unset; + padding: 0; +} + .bottom-panel { margin: 0 !important; padding: 0; diff --git a/apps/client/src/widgets/layout/StatusBar.tsx b/apps/client/src/widgets/layout/StatusBar.tsx index 903aeca3b2..c608c8f203 100644 --- a/apps/client/src/widgets/layout/StatusBar.tsx +++ b/apps/client/src/widgets/layout/StatusBar.tsx @@ -56,7 +56,7 @@ export default function StatusBar() { similarNotesShown: activePane === "similar-notes", setSimilarNotesShown: (shown) => setActivePane(shown && "similar-notes") }; - const isHiddenNote = note?.isInHiddenSubtree(); + const isHiddenNote = note?.isHiddenCompletely(); return (
@@ -212,8 +212,8 @@ export function getLocaleName(locale: Locale | null | undefined) { //#region Note info & Similar interface NoteInfoContext extends StatusBarContext { - similarNotesShown: boolean; - setSimilarNotesShown: (value: boolean) => void; + similarNotesShown?: boolean; + setSimilarNotesShown?: (value: boolean) => void; } export function NoteInfoBadge(context: NoteInfoContext) { @@ -225,7 +225,7 @@ export function NoteInfoBadge(context: NoteInfoContext) { // Keyboard shortcut. useTriliumEvent("toggleRibbonTabNoteInfo", () => enabled && dropdownRef.current?.show()); - useTriliumEvent("toggleRibbonTabSimilarNotes", () => setSimilarNotesShown(!similarNotesShown)); + useTriliumEvent("toggleRibbonTabSimilarNotes", () => setSimilarNotesShown && setSimilarNotesShown(!similarNotesShown)); return (enabled && ; +export function NoteInfoContent({ note, setSimilarNotesShown, noteType, dropdownRef }: Pick & { + dropdownRef?: RefObject; noteType: NoteType; }) { const { metadata, ...sizeProps } = useNoteMetadata(note); @@ -251,7 +251,7 @@ function NoteInfoContent({ note, setSimilarNotesShown, noteType, dropdownRef }: const noteTypeMapping = useMemo(() => NOTE_TYPES.find(t => t.type === noteType), [ noteType ]); return ( - <> +
    {originalFileName && } @@ -262,14 +262,14 @@ function NoteInfoContent({ note, setSimilarNotesShown, noteType, dropdownRef }: } />
- { - dropdownRef.current?.hide(); + dropdownRef?.current?.hide(); setSimilarNotesShown(true); }} - /> - + />} +
); } @@ -300,7 +300,7 @@ function BacklinksBadge({ note, viewScope }: StatusBarContext) { const count = useBacklinkCount(note, viewScope?.viewMode === "default"); return (note && count > 0 && .tn-icon { + margin-inline-end: 0.4em; + } + + .title { + overflow: hidden; + text-overflow: ellipsis; + text-wrap: nowrap; + font-size: 0.9em; + flex-grow: 1; + } + + .icon-action { + flex-shrink: 0; + } + } + + .tab-preview { + flex-grow: 1; + height: 100%; + overflow: hidden; + font-size: 0.5em; + user-select: none; + pointer-events: none; + + &.type-text { + padding: 10px; + --ck-content-todo-list-checkmark-size: 8px; + + p { margin-bottom: 0.2em;} + hr { margin-block: 0.1em; height: 1px; } + h2 { font-size: 1.20em; } + h3 { font-size: 1.15em; } + h4 { font-size: 1.10em; } + h5 { font-size: 1.05em} + h6 { font-size: 1em; } + ul, ol { margin: 0 } + } + + &.type-book, + &.type-contentWidget, + &.type-search, + &.type-empty, + &.type-relationMap, + &.type-launcher, + &.tab-preview-placeholder { + display: flex; + align-items: center; + justify-content: center; + font-size: 1.25em; + color: var(--muted-text-color); + } + + .preview-placeholder { + font-size: 500%; + } + } + + &.with-split { + .preview-placeholder { + font-size: 250%; + } + } + } + } + + .modal-footer { + .tn-link { + color: var(--main-text-color); + width: 40%; + text-align: center; + text-decoration: none; + } + } +} diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx new file mode 100644 index 0000000000..ff92b6512e --- /dev/null +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx @@ -0,0 +1,267 @@ +import "./TabSwitcher.css"; + +import clsx from "clsx"; +import { ComponentChild } from "preact"; +import { createPortal, Fragment } from "preact/compat"; +import { useCallback, useEffect, useRef, useState } from "preact/hooks"; + +import appContext, { CommandNames } from "../../components/app_context"; +import NoteContext from "../../components/note_context"; +import FNote from "../../entities/fnote"; +import contextMenu from "../../menus/context_menu"; +import { getHue, parseColor } from "../../services/css_class_manager"; +import froca from "../../services/froca"; +import { t } from "../../services/i18n"; +import type { ViewMode, ViewScope } from "../../services/link"; +import { NoteContent } from "../collections/legacy/ListOrGridView"; +import { LaunchBarActionButton } from "../launch_bar/launch_bar_widgets"; +import { ICON_MAPPINGS } from "../note_bars/CollectionProperties"; +import ActionButton from "../react/ActionButton"; +import { useActiveNoteContext, useNoteIcon, useTriliumEvents } from "../react/hooks"; +import Icon from "../react/Icon"; +import LinkButton from "../react/LinkButton"; +import Modal from "../react/Modal"; + +const VIEW_MODE_ICON_MAPPINGS: Record, string> = { + source: "bx bx-code", + "contextual-help": "bx bx-help-circle", + "note-map": "bx bxs-network-chart", + attachments: "bx bx-paperclip", +}; + +export default function TabSwitcher() { + const [ shown, setShown ] = useState(false); + const mainNoteContexts = useMainNoteContexts(); + + return ( + <> + setShown(true)} + data-tab-count={mainNoteContexts.length > 99 ? "∞" : mainNoteContexts.length} + /> + {createPortal(, document.body)} + + ); +} + +function TabBarModal({ mainNoteContexts, shown, setShown }: { + mainNoteContexts: NoteContext[]; + shown: boolean; + setShown: (newValue: boolean) => void; +}) { + const [ fullyShown, setFullyShown ] = useState(false); + const selectTab = useCallback((noteContextToActivate: NoteContext) => { + appContext.tabManager.activateNoteContext(noteContextToActivate.ntxId); + setShown(false); + }, [ setShown ]); + + return ( + setFullyShown(true)} + customTitleBarButtons={[ + { + iconClassName: "bx bx-dots-vertical-rounded", + title: t("mobile_tab_switcher.more_options"), + onClick(e) { + contextMenu.show({ + x: e.pageX, + y: e.pageY, + items: [ + { title: t("tab_row.new_tab"), command: "openNewTab", uiIcon: "bx bx-plus" }, + { title: t("tab_row.reopen_last_tab"), command: "reopenLastTab", uiIcon: "bx bx-undo", enabled: appContext.tabManager.recentlyClosedTabs.length !== 0 }, + { kind: "separator" }, + { title: t("tab_row.close_all_tabs"), command: "closeAllTabs", uiIcon: "bx bx-trash destructive-action-icon" }, + ], + selectMenuItemHandler: ({ command }) => { + if (command) { + appContext.triggerCommand(command); + } + } + }); + }, + } + ]} + footer={<> + { + appContext.triggerCommand("openNewTab"); + setShown(false); + }} + /> + } + scrollable + onHidden={() => { + setShown(false); + setFullyShown(false); + }} + > + + + ); +} + +function TabBarModelContent({ mainNoteContexts, selectTab, shown }: { + mainNoteContexts: NoteContext[]; + shown: boolean; + selectTab: (noteContextToActivate: NoteContext) => void; +}) { + const activeNoteContext = useActiveNoteContext(); + const tabRefs = useRef>({}); + + // Scroll to active tab. + useEffect(() => { + if (!shown || !activeNoteContext?.ntxId) return; + const correspondingEl = tabRefs.current[activeNoteContext.ntxId]; + requestAnimationFrame(() => { + correspondingEl?.scrollIntoView(); + }); + }, [ activeNoteContext, shown ]); + + return ( +
+ {mainNoteContexts.map((noteContext) => ( + (tabRefs.current[noteContext.ntxId ?? ""] = el)} + /> + ))} +
+ ); +} + +function Tab({ noteContext, containerRef, selectTab, activeNtxId }: { + containerRef: (el: HTMLDivElement | null) => void; + noteContext: NoteContext; + selectTab: (noteContextToActivate: NoteContext) => void; + activeNtxId: string | null | undefined; +}) { + const { note } = noteContext; + const colorClass = note?.getColorClass() || ''; + const workspaceTabBackgroundColorHue = getWorkspaceTabBackgroundColorHue(noteContext); + const subContexts = noteContext.getSubContexts(); + + return ( +
1 + })} + onClick={() => selectTab(noteContext)} + style={{ + "--bg-hue": workspaceTabBackgroundColorHue + }} + > + {subContexts.map(subContext => ( + + + + + ))} +
+ ); +} + +function TabHeader({ noteContext, colorClass }: { noteContext: NoteContext, colorClass: string }) { + const iconClass = useNoteIcon(noteContext.note); + const [ navigationTitle, setNavigationTitle ] = useState(null); + + // Manage the title for read-only notes + useEffect(() => { + noteContext?.getNavigationTitle().then(setNavigationTitle); + }, [noteContext]); + + return ( +
+ {noteContext.note && } + {navigationTitle ?? noteContext.note?.title ?? t("tab_row.new_tab")} + {noteContext.isMainContext() && { + // We are closing a tab, so we need to prevent propagation for click (activate tab). + e.stopPropagation(); + appContext.tabManager.removeNoteContext(noteContext.ntxId); + }} + />} +
+ ); +} + +function TabPreviewContent({ note, viewScope }: { + note: FNote | null, + viewScope: ViewScope | undefined +}) { + let el: ComponentChild; + let isPlaceholder = true; + + if (!note) { + el = ; + } else if (note.type === "book") { + el = ; + } else if (viewScope?.viewMode && viewScope.viewMode !== "default") { + el = ; + } else { + el = ; + isPlaceholder = false; + } + + return ( +
{el}
+ ); +} + +function PreviewPlaceholder({ icon}: { + icon: string; +}) { + return ( +
+ +
+ ); +} + +function getWorkspaceTabBackgroundColorHue(noteContext: NoteContext) { + if (!noteContext.hoistedNoteId) return; + const hoistedNote = froca.getNoteFromCache(noteContext.hoistedNoteId); + if (!hoistedNote) return; + + const workspaceTabBackgroundColor = hoistedNote.getWorkspaceTabBackgroundColor(); + if (!workspaceTabBackgroundColor) return; + + try { + const parsedColor = parseColor(workspaceTabBackgroundColor); + if (!parsedColor) return; + return getHue(parsedColor); + } catch (e) { + // Colors are non-critical, simply ignore. + console.warn(e); + } +} + +function useMainNoteContexts() { + const [ noteContexts, setNoteContexts ] = useState(appContext.tabManager.getMainNoteContexts()); + + useTriliumEvents([ "newNoteContextCreated", "noteContextRemoved" ] , () => { + setNoteContexts(appContext.tabManager.getMainNoteContexts()); + }); + + return noteContexts; +} diff --git a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.css b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.css new file mode 100644 index 0000000000..f3e1503471 --- /dev/null +++ b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.css @@ -0,0 +1,3 @@ +.code-note-switcher-modal .dropdown-menu { + background: none !important; +} diff --git a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx index 765bb4c31e..909d3b6288 100644 --- a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx +++ b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx @@ -1,74 +1,240 @@ -import { useContext } from "preact/hooks"; -import appContext, { CommandMappings } from "../../components/app_context"; -import contextMenu, { MenuItem } from "../../menus/context_menu"; -import branches from "../../services/branches"; +import "./mobile_detail_menu.css"; + +import { Dropdown as BootstrapDropdown } from "bootstrap"; +import { createPortal, useRef, useState } from "preact/compat"; + +import FNote, { NotePathRecord } from "../../entities/fnote"; import { t } from "../../services/i18n"; import note_create from "../../services/note_create"; -import tree from "../../services/tree"; +import server from "../../services/server"; +import { BacklinksList, useBacklinkCount } from "../FloatingButtonsDefinitions"; +import { getLocaleName, NoteInfoContent } from "../layout/StatusBar"; import ActionButton from "../react/ActionButton"; -import { ParentComponent } from "../react/react_utils"; -import BasicWidget from "../basic_widget"; +import { FormDropdownDivider, FormDropdownSubmenu, FormListItem } from "../react/FormList"; +import { useNoteContext, useNoteProperty } from "../react/hooks"; +import Modal from "../react/Modal"; +import { NoteTypeCodeNoteList, useLanguageSwitcher, useMimeTypes } from "../ribbon/BasicPropertiesTab"; +import { NoteContextMenu } from "../ribbon/NoteActions"; +import NoteActionsCustom from "../ribbon/NoteActionsCustom"; +import { NotePathsWidget, useSortedNotePaths } from "../ribbon/NotePathsTab"; +import SimilarNotesTab from "../ribbon/SimilarNotesTab"; +import { useProcessedLocales } from "../type_widgets/options/components/LocaleSelector"; export default function MobileDetailMenu() { - const parentComponent = useContext(ParentComponent); + const dropdownRef = useRef(null); + const { note, noteContext, parentComponent, ntxId, viewScope, hoistedNoteId } = useNoteContext(); + const subContexts = noteContext?.getMainContext().getSubContexts() ?? []; + const isMainContext = noteContext?.isMainContext(); + const [ backlinksModalShown, setBacklinksModalShown ] = useState(false); + const [ notePathsModalShown, setNotePathsModalShown ] = useState(false); + const [ noteInfoModalShown, setNoteInfoModalShown ] = useState(false); + const [ similarNotesModalShown, setSimilarNotesModalShown ] = useState(false); + const [ codeNoteSwitcherModalShown, setCodeNoteSwitcherModalShown ] = useState(false); + const sortedNotePaths = useSortedNotePaths(note, hoistedNoteId); + const backlinksCount = useBacklinkCount(note, viewScope?.viewMode === "default"); + + function closePane() { + // Wait first for the context menu to be dismissed, otherwise the backdrop stays on. + requestAnimationFrame(() => { + parentComponent.triggerCommand("closeThisNoteSplit", { ntxId }); + }); + } return ( - { - const ntxId = (parentComponent as BasicWidget | null)?.getClosestNtxId(); - if (!ntxId) return; +
+ {note ? ( + +
+
+ setBacklinksModalShown(true)} + disabled={backlinksCount === 0} + >{t("status_bar.backlinks", { count: backlinksCount })} +
+
+ setNotePathsModalShown(true)} + disabled={(sortedNotePaths?.length ?? 0) <= 1} + >{t("status_bar.note_paths", { count: sortedNotePaths?.length })} +
+
+ - const noteContext = appContext.tabManager.getNoteContextById(ntxId); - const subContexts = noteContext.getMainContext().getSubContexts(); - const isMainContext = noteContext?.isMainContext(); - const note = noteContext.note; + {noteContext && ntxId && } + noteContext?.notePath && note_create.createNote(noteContext.notePath)} + icon="bx bx-plus" + >{t("mobile_detail_menu.insert_child_note")} + {subContexts.length < 2 && <> + + { + // We have to manually manage the hide because otherwise the old note context gets activated. + e.stopPropagation(); + dropdownRef.current?.hide(); + parentComponent.triggerCommand("openNewNoteSplit", { ntxId }); + }} + icon="bx bx-dock-right" + >{t("create_pane_button.create_new_split")} + } + {!isMainContext && <> + + {t("close_pane_button.close_this_pane")} + } + + } + itemsNearNoteSettings={<> + {note.type === "text" && } + {note.type === "code" && setCodeNoteSwitcherModalShown(true)}>{t("status_bar.code_note_switcher")}} + setNoteInfoModalShown(true)}>{t("note_info_widget.title")} + setSimilarNotesModalShown(true)}>{t("similar_notes.title")} + + } + /> + ) : ( + + )} - const items: (MenuItem)[] = [ - { title: t("mobile_detail_menu.insert_child_note"), command: "insertChildNote", uiIcon: "bx bx-plus", enabled: note?.type !== "search" }, - { title: t("mobile_detail_menu.delete_this_note"), command: "delete", uiIcon: "bx bx-trash", enabled: note?.noteId !== "root" }, - { kind: "separator" }, - { title: t("mobile_detail_menu.note_revisions"), command: "showRevisions", uiIcon: "bx bx-history" }, - { kind: "separator" }, - subContexts.length < 2 && { title: t("create_pane_button.create_new_split"), command: "openNewNoteSplit", uiIcon: "bx bx-dock-right" }, - !isMainContext && { title: t("close_pane_button.close_this_pane"), command: "closeThisNoteSplit", uiIcon: "bx bx-x" } - ].filter(i => !!i) as MenuItem[]; - - const lastItem = items.at(-1); - if (lastItem && "kind" in lastItem && lastItem.kind === "separator") { - items.pop(); - } - - contextMenu.show({ - x: e.pageX, - y: e.pageY, - items, - selectMenuItemHandler: async ({ command }) => { - if (command === "insertChildNote") { - note_create.createNote(appContext.tabManager.getActiveContextNotePath() ?? undefined); - } else if (command === "delete") { - const notePath = appContext.tabManager.getActiveContextNotePath(); - if (!notePath) { - throw new Error("Cannot get note path to delete."); - } - - const branchId = await tree.getBranchIdFromUrl(notePath); - - if (!branchId) { - throw new Error(t("mobile_detail_menu.error_cannot_get_branch_id", { notePath })); - } - - if (await branches.deleteNotes([branchId]) && parentComponent) { - parentComponent.triggerCommand("setActiveScreen", { screen: "tree" }); - } - } else if (command && parentComponent) { - parentComponent.triggerCommand(command, { ntxId }); - } - }, - forcePositionOnMobile: true - }); - }} - /> - ) + {createPortal(( + <> + + + + + + + ), document.body)} +
+ ); +} + +function ContentLanguageSelector({ note }: { note: FNote | null | undefined }) { + const { locales, DEFAULT_LOCALE, currentNoteLanguage, setCurrentNoteLanguage } = useLanguageSwitcher(note); + const { activeLocale, processedLocales } = useProcessedLocales(locales, DEFAULT_LOCALE, currentNoteLanguage ?? DEFAULT_LOCALE.id); + + return ( + + {processedLocales.map((locale, index) => + (typeof locale === "object") ? ( + setCurrentNoteLanguage(locale.id)} + >{locale.name} + ) : ( + + ) + )} + + ); +} + +interface WithModal { + modalShown: boolean; + setModalShown: (shown: boolean) => void; +} + +function BacklinksModal({ note, modalShown, setModalShown }: { note: FNote | null | undefined } & WithModal) { + return ( + setModalShown(false)} + > +
    + {note && } +
+
+ ); +} + +function NotePathsModal({ note, modalShown, notePath, sortedNotePaths, setModalShown }: { note: FNote | null | undefined, sortedNotePaths: NotePathRecord[] | undefined, notePath: string | null | undefined } & WithModal) { + return ( + setModalShown(false)} + > + {note && ( + + )} + + ); +} + +function NoteInfoModal({ note, modalShown, setModalShown }: { note: FNote | null | undefined } & WithModal) { + return ( + setModalShown(false)} + > + {note && } + + ); +} + +function SimilarNotesModal({ note, modalShown, setModalShown }: { note: FNote | null | undefined } & WithModal) { + return ( + setModalShown(false)} + > + + + ); +} + +function CodeNoteSwitcherModal({ note, modalShown, setModalShown }: { note: FNote | null | undefined } & WithModal) { + const currentNoteMime = useNoteProperty(note, "mime"); + const mimeTypes = useMimeTypes(); + + return ( + setModalShown(false)} + > +
+ {note && { + server.put(`notes/${note.noteId}/type`, { type, mime }); + setModalShown(false); + }} + />} +
+
+ ); } diff --git a/apps/client/src/widgets/note_bars/CollectionProperties.css b/apps/client/src/widgets/note_bars/CollectionProperties.css index c4db1a8ae0..99700f77a7 100644 --- a/apps/client/src/widgets/note_bars/CollectionProperties.css +++ b/apps/client/src/widgets/note_bars/CollectionProperties.css @@ -1,5 +1,5 @@ .collection-properties { - padding: 0; + padding: 0.55em 12px; display: flex; gap: 0.25em; align-items: center; @@ -14,7 +14,31 @@ } } - .spacer { + >div { + display: inline-flex; + align-items: center; + gap: 0.5em; + } + + .center-container { flex-grow: 1; + justify-content: center; + } + + .right-container { + justify-content: flex-end; + } + + button.btn { + min-width: 0; + } + + @media (max-width: 991px) { + flex-wrap: wrap; + padding: 0.55em 1em; + + >div { + flex-grow: 1; + } } } diff --git a/apps/client/src/widgets/note_bars/CollectionProperties.tsx b/apps/client/src/widgets/note_bars/CollectionProperties.tsx index d5c9ffb42d..5dba675e6d 100644 --- a/apps/client/src/widgets/note_bars/CollectionProperties.tsx +++ b/apps/client/src/widgets/note_bars/CollectionProperties.tsx @@ -1,24 +1,22 @@ import "./CollectionProperties.css"; import { t } from "i18next"; +import { ComponentChildren } from "preact"; import { useContext, useRef } from "preact/hooks"; import { Fragment } from "preact/jsx-runtime"; import FNote from "../../entities/fnote"; -import { getHelpUrlForNote } from "../../services/in_app_help"; -import { openInAppHelpFromUrl } from "../../services/utils"; import { ViewTypeOptions } from "../collections/interface"; -import ActionButton from "../react/ActionButton"; import Dropdown from "../react/Dropdown"; import { FormDropdownDivider, FormDropdownSubmenu, FormListItem, FormListToggleableItem } from "../react/FormList"; import FormTextBox from "../react/FormTextBox"; -import { useNoteLabel, useNoteLabelBoolean, useNoteLabelWithDefault, useTriliumEvent } from "../react/hooks"; +import { useNoteLabel, useNoteLabelBoolean, useNoteLabelWithDefault, useNoteProperty, useTriliumEvent } from "../react/hooks"; import Icon from "../react/Icon"; import { ParentComponent } from "../react/react_utils"; import { bookPropertiesConfig, BookProperty, ButtonProperty, CheckBoxProperty, ComboBoxItem, ComboBoxProperty, NumberProperty, SplitButtonProperty } from "../ribbon/collection-properties-config"; import { useViewType, VIEW_TYPE_MAPPINGS } from "../ribbon/CollectionPropertiesTab"; -const ICON_MAPPINGS: Record = { +export const ICON_MAPPINGS: Record = { grid: "bx bxs-grid", list: "bx bx-list-ul", calendar: "bx bx-calendar", @@ -28,15 +26,26 @@ const ICON_MAPPINGS: Record = { presentation: "bx bx-rectangle" }; -export default function CollectionProperties({ note }: { note: FNote }) { +export default function CollectionProperties({ note, centerChildren, rightChildren }: { + note: FNote; + centerChildren?: ComponentChildren; + rightChildren?: ComponentChildren; +}) { const [ viewType, setViewType ] = useViewType(note); + const noteType = useNoteProperty(note, "type"); - return ( + return ([ "book", "search" ].includes(noteType ?? "") &&
- - -
- +
+ + +
+
+ {centerChildren} +
+
+ {rightChildren} +
); } @@ -222,15 +231,3 @@ function CheckBoxPropertyView({ note, property }: { note: FNote, property: Check /> ); } - -function HelpButton({ note }: { note: FNote }) { - const helpUrl = getHelpUrlForNote(note); - - return (helpUrl && ( - openInAppHelpFromUrl(helpUrl))} - text={t("help-button.title")} - /> - )); -} diff --git a/apps/client/src/widgets/note_icon.css b/apps/client/src/widgets/note_icon.css index 4ed6df6482..cea05cdcd9 100644 --- a/apps/client/src/widgets/note_icon.css +++ b/apps/client/src/widgets/note_icon.css @@ -117,3 +117,35 @@ body.experimental-feature-new-layout { } } } + +body.mobile .modal.icon-switcher { + .modal-dialog { + left: 0; + right: 0; + margin: unset; + transform: unset; + max-width: 100%; + height: 100%; + } + + .modal-body { + padding: 0; + display: flex; + flex-direction: column; + + > .filter-row { + padding: 0.25em var(--bs-modal-padding) 0.5em var(--bs-modal-padding); + border-bottom: 1px solid var(--main-border-color); + } + } + + .icon-list { + margin: auto; + flex-grow: 1; + height: 100%; + + span { + padding: 12px; + } + } +} diff --git a/apps/client/src/widgets/note_icon.tsx b/apps/client/src/widgets/note_icon.tsx index 7bbbd3e345..9df9ad48f4 100644 --- a/apps/client/src/widgets/note_icon.tsx +++ b/apps/client/src/widgets/note_icon.tsx @@ -4,18 +4,24 @@ import { IconRegistry } from "@triliumnext/commons"; import { Dropdown as BootstrapDropdown } from "bootstrap"; import clsx from "clsx"; import { t } from "i18next"; -import { CSSProperties, RefObject } from "preact"; +import { CSSProperties } from "preact"; +import { createPortal } from "preact/compat"; import { useEffect, useMemo, useRef, useState } from "preact/hooks"; +import type React from "react"; import { CellComponentProps, Grid } from "react-window"; import FNote from "../entities/fnote"; import attributes from "../services/attributes"; import server from "../services/server"; +import { isDesktop, isMobile } from "../services/utils"; import ActionButton from "./react/ActionButton"; import Dropdown from "./react/Dropdown"; import { FormDropdownDivider, FormListItem } from "./react/FormList"; import FormTextBox from "./react/FormTextBox"; -import { useNoteContext, useNoteLabel, useStaticTooltip } from "./react/hooks"; +import { useNoteContext, useNoteLabel, useStaticTooltip, useWindowSize } from "./react/hooks"; +import Modal from "./react/Modal"; + +const ICON_SIZE = isMobile() ? 56 : 48; interface IconToCountCache { iconClassToCountMap: Record; @@ -36,6 +42,10 @@ export default function NoteIcon() { setIcon(note?.getIcon()); }, [ note, iconClass, workspaceIconClass ]); + if (isMobile()) { + return ; + } + return ( - { note && } + { note && dropdownRef?.current?.hide()} columnCount={12} /> } ); } -function NoteIconList({ note, dropdownRef }: { - note: FNote, - dropdownRef: RefObject; +function MobileNoteIconSwitcher({ note, icon }: { + note: FNote | null | undefined; + icon: string | null | undefined; +}) { + const [ modalShown, setModalShown ] = useState(false); + const { windowWidth } = useWindowSize(); + + return (note && +
+ setModalShown(true)} + /> + + {createPortal(( + setModalShown(false)} + className="icon-switcher note-icon-widget" + scrollable + > + setModalShown(false)} columnCount={Math.max(1, Math.floor(windowWidth / ICON_SIZE))} /> + + ), document.body)} +
+ ); +} + +function NoteIconList({ note, onHide, columnCount }: { + note: FNote; + onHide: () => void; + columnCount: number; }) { - const searchBoxRef = useRef(null); const iconListRef = useRef(null); const [ search, setSearch ] = useState(); const [ filterByPrefix, setFilterByPrefix ] = useState(null); @@ -72,53 +113,22 @@ function NoteIconList({ note, dropdownRef }: { return ( <> -
- {t("note_icon.search")} - s.prefix === filterByPrefix)?.name ?? "" - }) - : t("note_icon.search_placeholder", { number: filteredIcons.length ?? 0, count: glob.iconRegistry.sources.length })} - currentValue={search} onChange={setSearch} - autoFocus - /> - - {getIconLabels(note).length > 0 && ( -
- { - if (!note) return; - for (const label of getIconLabels(note)) { - attributes.removeAttributeById(note.noteId, label.attributeId); - } - dropdownRef?.current?.hide(); - }} - /> -
- )} - - {glob.iconRegistry.sources.length > 0 && - - } -
+
{ // Make sure we are not clicking on something else than a button. const clickedTarget = e.target as HTMLElement; @@ -129,18 +139,19 @@ function NoteIconList({ note, dropdownRef }: { const attributeToSet = note.hasOwnedLabel("workspace") ? "workspaceIconClass" : "iconClass"; attributes.setLabel(note.noteId, attributeToSet, iconClass); } - dropdownRef?.current?.hide(); + onHide(); }} > {filteredIcons.length ? ( ) : ( @@ -151,12 +162,97 @@ function NoteIconList({ note, dropdownRef }: { ); } -function IconItemCell({ rowIndex, columnIndex, style, filteredIcons }: CellComponentProps<{ +function FilterRow({ note, filterByPrefix, search, setSearch, setFilterByPrefix, filteredIcons, onHide }: { + note: FNote; + filterByPrefix: string | null; + search: string | undefined; + setSearch: (value: string | undefined) => void; + setFilterByPrefix: (value: string | null) => void; filteredIcons: IconWithName[]; -}>): React.JSX.Element { - const iconIndex = rowIndex * 12 + columnIndex; + onHide: () => void; +}) { + const searchBoxRef = useRef(null); + const hasCustomIcon = getIconLabels(note).length > 0; + + function resetToDefaultIcon() { + if (!note) return; + for (const label of getIconLabels(note)) { + attributes.removeAttributeById(note.noteId, label.attributeId); + } + onHide(); + } + + return ( +
+ {t("note_icon.search")} + s.prefix === filterByPrefix)?.name ?? "" + }) + : t("note_icon.search_placeholder", { number: filteredIcons.length ?? 0, count: glob.iconRegistry.sources.length })} + currentValue={search} onChange={setSearch} + autoFocus + /> + + {isDesktop() + ? <> + {hasCustomIcon && ( +
+ +
+ )} + + { + + } + : ( + + {hasCustomIcon && <> + {t("note_icon.reset-default")} + + } + + + + )} +
+ ); +} + +function IconItemCell({ rowIndex, columnIndex, style, filteredIcons, columnCount }: CellComponentProps<{ + filteredIcons: IconWithName[]; + columnCount: number; +}>) { + const iconIndex = rowIndex * columnCount + columnIndex; const iconData = filteredIcons[iconIndex] as IconWithName | undefined; - if (!iconData) return <>; + if (!iconData) return <> as React.ReactElement; const { id, terms, iconPack } = iconData; return ( @@ -166,7 +262,7 @@ function IconItemCell({ rowIndex, columnIndex, style, filteredIcons }: CellCompo title={t("note_icon.icon_tooltip", { name: terms?.[0] ?? id, iconPack })} style={style as CSSProperties} /> - ); + ) as React.ReactElement; } function IconFilterContent({ filterByPrefix, setFilterByPrefix }: { @@ -183,7 +279,7 @@ function IconFilterContent({ filterByPrefix, setFilterByPrefix }: { checked={filterByPrefix === "bx"} onClick={() => setFilterByPrefix("bx")} >{t("note_icon.filter-default")} - + {glob.iconRegistry.sources.length > 1 && } {glob.iconRegistry.sources.map(({ prefix, name, icon }) => ( prefix !== "bx" && , "onClick" | "onAuxClick" | "onContextMenu"> { +import { CommandNames } from "../../components/app_context"; +import keyboard_actions from "../../services/keyboard_actions"; +import { useStaticTooltip } from "./hooks"; + +export interface ActionButtonProps extends Pick, "onClick" | "onAuxClick" | "onContextMenu" | "style"> { text: string; titlePosition?: "top" | "right" | "bottom" | "left"; icon: string; diff --git a/apps/client/src/widgets/react/Button.tsx b/apps/client/src/widgets/react/Button.tsx index 6089f17095..ffdc6ddd2c 100644 --- a/apps/client/src/widgets/react/Button.tsx +++ b/apps/client/src/widgets/react/Button.tsx @@ -1,8 +1,11 @@ import type { ComponentChildren, RefObject } from "preact"; import type { CSSProperties } from "preact/compat"; -import { useMemo } from "preact/hooks"; import { memo } from "preact/compat"; +import { useMemo } from "preact/hooks"; + import { CommandNames } from "../../components/app_context"; +import { isDesktop } from "../../services/utils"; +import ActionButton from "./ActionButton"; import Icon from "./Icon"; export interface ButtonProps { @@ -78,7 +81,7 @@ export function ButtonGroup({ children }: { children: ComponentChildren }) {
{children}
- ) + ); } export function SplitButton({ text, icon, children, ...restProps }: { @@ -103,7 +106,17 @@ export function SplitButton({ text, icon, children, ...restProps }: { {children} - ) + ); +} + +export function ButtonOrActionButton(props: { + text: string; + icon: string; +} & Pick) { + if (isDesktop()) { + return + className={clsx("custom-title-bar-button bx", titleBarButton.iconClassName)} + title={titleBarButton.title} + onClick={titleBarButton.onClick} /> ))} - +
diff --git a/apps/client/src/widgets/react/ResponsiveContainer.tsx b/apps/client/src/widgets/react/ResponsiveContainer.tsx new file mode 100644 index 0000000000..6c077a5c06 --- /dev/null +++ b/apps/client/src/widgets/react/ResponsiveContainer.tsx @@ -0,0 +1,12 @@ +import { ComponentChildren } from "preact"; + +import { isMobile } from "../../services/utils"; + +interface ResponsiveContainerProps { + mobile?: ComponentChildren; + desktop?: ComponentChildren; +} + +export default function ResponsiveContainer({ mobile, desktop }: ResponsiveContainerProps) { + return (isMobile() ? mobile : desktop); +} diff --git a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx index 9b800bebb9..5dbd0d29cb 100644 --- a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx +++ b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx @@ -1,5 +1,4 @@ import { MimeType, NoteType, ToggleInParentResponse } from "@triliumnext/commons"; -import { ComponentChildren } from "preact"; import { createPortal } from "preact/compat"; import { Dispatch, StateUpdater, useCallback, useEffect, useMemo, useState } from "preact/hooks"; @@ -117,19 +116,18 @@ export function NoteTypeDropdownContent({ currentNoteType, currentNoteMime, note onClick={() => changeNoteType(type, mime)} >{title} ); - } else { - return ( - <> - - - {title} - - - ); } + return ( + <> + + + {title} + + + ); })} {!noCodeNotes && } @@ -141,7 +139,7 @@ export function NoteTypeCodeNoteList({ currentMimeType, mimeTypes, changeNoteTyp currentMimeType?: string; mimeTypes: MimeType[]; changeNoteType(type: NoteType, mime: string): void; - setModalShown(shown: boolean): void; + setModalShown?(shown: boolean): void; }) { return ( <> @@ -155,8 +153,10 @@ export function NoteTypeCodeNoteList({ currentMimeType, mimeTypes, changeNoteTyp ))} - - setModalShown(true)}>{t("basic_properties.configure_code_notes")} + {setModalShown && <> + + setModalShown(true)}>{t("basic_properties.configure_code_notes")} + } ); } @@ -195,7 +195,7 @@ function ProtectedNoteSwitch({ note }: { note?: FNote | null }) { onChange={(shouldProtect) => note && protected_session.protectNote(note.noteId, shouldProtect, false)} />
- ) + ); } function EditabilitySelect({ note }: { note?: FNote | null }) { @@ -417,9 +417,9 @@ function findTypeTitle(type?: NoteType, mime?: string | null) { const found = mimeTypes.find((mt) => mt.mime === mime); return found ? found.title : mime; - } else { - const noteType = NOTE_TYPES.find((nt) => nt.type === type); - - return noteType ? noteType.title : type; } + const noteType = NOTE_TYPES.find((nt) => nt.type === type); + + return noteType ? noteType.title : type; + } diff --git a/apps/client/src/widgets/ribbon/NoteActions.tsx b/apps/client/src/widgets/ribbon/NoteActions.tsx index 6db1d384e5..b818672709 100644 --- a/apps/client/src/widgets/ribbon/NoteActions.tsx +++ b/apps/client/src/widgets/ribbon/NoteActions.tsx @@ -1,6 +1,6 @@ import { ConvertToAttachmentResponse } from "@triliumnext/commons"; import { Dropdown as BootstrapDropdown } from "bootstrap"; -import { RefObject } from "preact"; +import { ComponentChildren, RefObject } from "preact"; import { useContext, useEffect, useRef } from "preact/hooks"; import appContext, { CommandNames } from "../../components/app_context"; @@ -22,7 +22,7 @@ import MovePaneButton from "../buttons/move_pane_button"; import ActionButton from "../react/ActionButton"; import Dropdown from "../react/Dropdown"; import { FormDropdownDivider, FormDropdownSubmenu, FormListHeader, FormListItem, FormListToggleableItem } from "../react/FormList"; -import { useIsNoteReadOnly, useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent, useTriliumOption } from "../react/hooks"; +import { useIsNoteReadOnly, useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useSyncedRef, useTriliumEvent, useTriliumOption } from "../react/hooks"; import { ParentComponent } from "../react/react_utils"; import { NoteTypeDropdownContent, useNoteBookmarkState, useShareState } from "./BasicPropertiesTab"; import NoteActionsCustom from "./NoteActionsCustom"; @@ -63,8 +63,14 @@ function RevisionsButton({ note }: { note: FNote }) { type ItemToFocus = "basic-properties"; -function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: NoteContext }) { - const dropdownRef = useRef(null); +export function NoteContextMenu({ note, noteContext, itemsAtStart, itemsNearNoteSettings, dropdownRef: externalDropdownRef }: { + note: FNote, + noteContext?: NoteContext, + itemsAtStart?: ComponentChildren; + itemsNearNoteSettings?: ComponentChildren; + dropdownRef?: RefObject; +}) { + const dropdownRef = useSyncedRef(externalDropdownRef, null); const parentComponent = useContext(ParentComponent); const noteType = useNoteProperty(note, "type") ?? ""; const [viewType] = useNoteLabel(note, "viewType"); @@ -99,12 +105,15 @@ function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: Not dropdownRef={dropdownRef} buttonClassName={ isNewLayout ? "bx bx-dots-horizontal-rounded" : "bx bx-dots-vertical-rounded" } className="note-actions" + dropdownContainerClassName="mobile-bottom-menu" hideToggleArrow noSelectButtonStyle noDropdownListStyle iconAction onHidden={() => itemToFocusRef.current = null } + mobileBackdrop > + {itemsAtStart} {isReadOnly && <> } + {itemsNearNoteSettings} + parentComponent?.triggerCommand("showImportDialog", { noteId: note.noteId })} /> @@ -277,7 +288,7 @@ function DevelopmentActions({ note, noteContext }: { note: FNote, noteContext?: ); } -function CommandItem({ icon, text, title, command, disabled }: { icon: string, text: string, title?: string, command: CommandNames | (() => void), disabled?: boolean, destructive?: boolean }) { +export function CommandItem({ icon, text, title, command, disabled }: { icon: string, text: string, title?: string, command: CommandNames | (() => void), disabled?: boolean, destructive?: boolean }) { return void; }) { return ( - parentComponent?.triggerEvent("copyImageReferenceToClipboard", { ntxId })} @@ -161,7 +166,7 @@ function RefreshButton({ note, noteType, isDefaultViewMode, parentComponent, not const isEnabled = (note.noteId === "_backendLog" || noteType === "render") && isDefaultViewMode; return (isEnabled && - parentComponent.triggerEvent("refreshData", { ntxId: noteContext.ntxId })} @@ -170,11 +175,11 @@ function RefreshButton({ note, noteType, isDefaultViewMode, parentComponent, not } function SwitchSplitOrientationButton({ note, isReadOnly, isDefaultViewMode }: NoteActionsCustomInnerProps) { - const isShown = note.type === "mermaid" && note.isContentAvailable() && isDefaultViewMode; + const isShown = note.type === "mermaid" && !cachedIsMobile && note.isContentAvailable() && isDefaultViewMode; const [ splitEditorOrientation, setSplitEditorOrientation ] = useTriliumOption("splitEditorOrientation"); const upcomingOrientation = splitEditorOrientation === "horizontal" ? "vertical" : "horizontal"; - return isShown && setSplitEditorOrientation(upcomingOrientation)} @@ -182,13 +187,13 @@ function SwitchSplitOrientationButton({ note, isReadOnly, isDefaultViewMode }: N />; } -function ToggleReadOnlyButton({ note, viewType, isDefaultViewMode }: NoteActionsCustomInnerProps) { +export function ToggleReadOnlyButton({ note, isDefaultViewMode }: NoteActionsCustomInnerProps) { const [ isReadOnly, setReadOnly ] = useNoteLabelBoolean(note, "readOnly"); const isSavedSqlite = note.isTriliumSqlite() && !note.isHiddenCompletely(); - const isEnabled = ([ "mermaid", "mindMap", "canvas" ].includes(note.type) || viewType === "geoMap" || isSavedSqlite) + const isEnabled = ([ "mermaid", "mindMap", "canvas" ].includes(note.type) || isSavedSqlite) && note.isContentAvailable() && isDefaultViewMode; - return isEnabled && setReadOnly(!isReadOnly)} @@ -197,7 +202,7 @@ function ToggleReadOnlyButton({ note, viewType, isDefaultViewMode }: NoteActions function RunActiveNoteButton({ noteMime }: NoteActionsCustomInnerProps) { const isEnabled = noteMime.startsWith("application/javascript") || noteMime === "text/x-sqlite;schema=trilium"; - return isEnabled && openInAppHelpFromUrl(noteMime.endsWith("frontend") ? "Q2z6av6JZVWm" : "MEtfsqa5VwNi")} />; } -function InAppHelpButton({ note, noteType }: NoteActionsCustomInnerProps) { +function InAppHelpButton({ note }: NoteActionsCustomInnerProps) { const helpUrl = getHelpUrlForNote(note); - const isEnabled = !!helpUrl && (noteType !== "book"); + const isEnabled = !!helpUrl; return isEnabled && ( - helpUrl && openInAppHelpFromUrl(helpUrl)} @@ -247,16 +252,9 @@ function InAppHelpButton({ note, noteType }: NoteActionsCustomInnerProps) { ); } -function AddChildButton({ parentComponent, noteType, viewType, ntxId, isReadOnly }: NoteActionsCustomInnerProps) { - if (noteType === "book" && viewType === "geoMap") { - return parentComponent.triggerEvent("geoMapCreateChildNote", { ntxId })} - disabled={isReadOnly} - />; - } else if (noteType === "relationMap") { - return parentComponent.triggerEvent("relationMapCreateChildNote", { ntxId })} @@ -265,3 +263,19 @@ function AddChildButton({ parentComponent, noteType, viewType, ntxId, isReadOnly } } //#endregion + +function NoteAction({ text, ...props }: Pick & { + onClick?: ((e: MouseEvent) => void) | undefined; +}) { + return (cachedIsMobile + ? {text} + : + ); +} + +function NoteActionWithFileUpload({ text, ...props }: Pick & Pick) { + return (cachedIsMobile + ? {text} + : + ); +} diff --git a/apps/client/src/widgets/ribbon/NotePathsTab.css b/apps/client/src/widgets/ribbon/NotePathsTab.css new file mode 100644 index 0000000000..64c7374480 --- /dev/null +++ b/apps/client/src/widgets/ribbon/NotePathsTab.css @@ -0,0 +1,63 @@ +body.experimental-feature-new-layout .note-paths-widget { + .note-path-intro { + color: var(--muted-text-color); + } + + .note-path-list { + margin: 12px 0; + padding: 0; + list-style: none; + + /* Note path card */ + li { + --border-radius: 6px; + + position: relative; + background: var(--card-background-color); + padding: 8px 20px 8px 25px; + + &:first-child { + border-radius: var(--border-radius) var(--border-radius) 0 0; + } + + &:last-child { + border-radius: 0 0 var(--border-radius) var(--border-radius); + } + + & + li { + margin-top: 2px; + } + + /* Current path arrow */ + &.path-current::before { + position: absolute; + display: flex; + justify-content: flex-end; + align-items: center; + content: "\ee8f"; + top: 0; + left: 0; + width: 20px; + bottom: 0; + font-family: "boxicons"; + font-size: .75em; + color: var(--menu-item-icon-color); + } + } + + /* Note path segment */ + a { + margin-inline: 2px; + padding-inline: 2px; + color: currentColor; + font-weight: normal; + text-decoration: none; + + /* The last segment of the note path */ + &.basename { + color: var(--muted-text-color); + } + } + + } +} diff --git a/apps/client/src/widgets/ribbon/NotePathsTab.tsx b/apps/client/src/widgets/ribbon/NotePathsTab.tsx index 19b361a5de..2ef9085331 100644 --- a/apps/client/src/widgets/ribbon/NotePathsTab.tsx +++ b/apps/client/src/widgets/ribbon/NotePathsTab.tsx @@ -1,15 +1,16 @@ -import { useEffect, useMemo, useState } from "preact/hooks"; +import "./NotePathsTab.css"; + +import clsx from "clsx"; +import { useContext, useEffect, useMemo, useState } from "preact/hooks"; import FNote, { NotePathRecord } from "../../entities/fnote"; import { t } from "../../services/i18n"; import { NOTE_PATH_TITLE_SEPARATOR } from "../../services/tree"; import { useTriliumEvent } from "../react/hooks"; -import NoteLink from "../react/NoteLink"; -import { joinElements } from "../react/react_utils"; -import { TabContext } from "./ribbon-interface"; import LinkButton from "../react/LinkButton"; -import clsx from "clsx"; - +import NoteLink from "../react/NoteLink"; +import { joinElements, ParentComponent } from "../react/react_utils"; +import { TabContext } from "./ribbon-interface"; export default function NotePathsTab({ note, hoistedNoteId, notePath }: TabContext) { const sortedNotePaths = useSortedNotePaths(note, hoistedNoteId); @@ -20,6 +21,7 @@ export function NotePathsWidget({ sortedNotePaths, currentNotePath }: { sortedNotePaths: NotePathRecord[] | undefined; currentNotePath?: string | null | undefined; }) { + const parentComponent = useContext(ParentComponent); return (
<> @@ -39,7 +41,7 @@ export function NotePathsWidget({ sortedNotePaths, currentNotePath }: { parentComponent?.triggerCommand("cloneNoteIdsTo")} />
@@ -112,9 +114,9 @@ function NotePath({ currentNotePath, notePathRecord }: { currentNotePath?: strin
  • {joinElements(fullNotePaths.map((notePath, index, arr) => ( + className={clsx({"basename": (index === arr.length - 1)})} + notePath={notePath} + noPreview /> )), NOTE_PATH_TITLE_SEPARATOR)} {icons.map(({ icon, title }) => ( diff --git a/apps/client/src/widgets/ribbon/SearchDefinitionTab.tsx b/apps/client/src/widgets/ribbon/SearchDefinitionTab.tsx index 66d283a114..2d58fc1913 100644 --- a/apps/client/src/widgets/ribbon/SearchDefinitionTab.tsx +++ b/apps/client/src/widgets/ribbon/SearchDefinitionTab.tsx @@ -2,12 +2,12 @@ import "./SearchDefinitionTab.css"; import { SaveSearchNoteResponse } from "@triliumnext/commons"; import { useContext, useEffect, useState } from "preact/hooks"; +import { Fragment } from "preact/jsx-runtime"; import appContext from "../../components/app_context"; import FNote from "../../entities/fnote"; import attributes from "../../services/attributes"; import bulk_action, { ACTION_GROUPS } from "../../services/bulk_action"; -import { isExperimentalFeatureEnabled } from "../../services/experimental_features"; import froca from "../../services/froca"; import { t } from "../../services/i18n"; import server from "../../services/server"; @@ -16,18 +16,16 @@ import tree from "../../services/tree"; import { getErrorMessage } from "../../services/utils"; import ws from "../../services/ws"; import RenameNoteBulkAction from "../bulk_actions/note/rename_note"; -import CollectionProperties from "../note_bars/CollectionProperties"; -import Button from "../react/Button"; +import Button, { SplitButton } from "../react/Button"; import Dropdown from "../react/Dropdown"; import { FormListHeader, FormListItem } from "../react/FormList"; import { useTriliumEvent } from "../react/hooks"; import Icon from "../react/Icon"; import { ParentComponent } from "../react/react_utils"; +import ResponsiveContainer from "../react/ResponsiveContainer"; import { TabContext } from "./ribbon-interface"; import { SEARCH_OPTIONS, SearchOption } from "./SearchDefinitionOptions"; -const isNewLayout = isExperimentalFeatureEnabled("new-layout"); - export default function SearchDefinitionTab({ note, ntxId, hidden }: Pick) { const parentComponent = useContext(ParentComponent); const [ searchOptions, setSearchOptions ] = useState<{ availableOptions: SearchOption[], activeOptions: SearchOption[] }>(); @@ -88,15 +86,32 @@ export default function SearchDefinitionTab({ note, ntxId, hidden }: Pick {t("search_definition.add_search_option")} - {searchOptions?.availableOptions.map(({ icon, label, tooltip, attributeName, attributeType, defaultValue }) => ( -
  • - - - + )}
    @@ -171,6 +140,56 @@ export default function SearchDefinitionTab({ note, ntxId, hidden }: Pick("special-notes/save-search-note", { searchNoteId: note.noteId }); + if (!notePath) return; + + await ws.waitForMaxKnownEntityChangeId(); + await appContext.tabManager.getActiveContext()?.setNote(notePath); + + // Note the {{- notePathTitle}} in json file is not typo, it's unescaping + // See https://www.i18next.com/translation-function/interpolation#unescape + toast.showMessage(t("search_definition.search_note_saved", { notePathTitle: await tree.getNotePathTitle(notePath) })); + } + + return ( + + + + +
    + } + mobile={ + + {t("search_definition.search_execute")} + {note.isHiddenCompletely() && {t("search_definition.save_to_note")}} + + } + /> + + + + ); +} + function BulkActionsList({ note }: { note: FNote }) { const [ bulkActions, setBulkActions ] = useState(); @@ -203,15 +222,18 @@ function AddBulkActionButton({ note }: { note: FNote }) { buttonClassName="action-add-toggle btn btn-sm" text={<>{" "}{t("search_definition.action")}} noSelectButtonStyle + dropdownContainerClassName="mobile-bottom-menu" mobileBackdrop > - {ACTION_GROUPS.map(({ actions, title }) => ( - <> + {ACTION_GROUPS.map(({ actions, title }, index) => ( + - {actions.map(({ actionName, actionTitle }) => ( - bulk_action.addAction(note.noteId, actionName)}>{actionTitle} - ))} - +
    + {actions.map(({ actionName, actionTitle }) => ( + bulk_action.addAction(note.noteId, actionName)}>{actionTitle} + ))} +
    +
    ))} ); diff --git a/apps/client/src/widgets/ribbon/style.css b/apps/client/src/widgets/ribbon/style.css index cd99cd1d55..71c865ebad 100644 --- a/apps/client/src/widgets/ribbon/style.css +++ b/apps/client/src/widgets/ribbon/style.css @@ -459,7 +459,7 @@ body.experimental-feature-new-layout { gap: var(--button-gap); &> button:last-of-type { - margin-right: 1em; + margin-right: 0.5em; } } } diff --git a/apps/client/src/widgets/type_widgets/Attachment.css b/apps/client/src/widgets/type_widgets/Attachment.css index 014a00b6e5..c345b77d49 100644 --- a/apps/client/src/widgets/type_widgets/Attachment.css +++ b/apps/client/src/widgets/type_widgets/Attachment.css @@ -10,6 +10,12 @@ display: flex; justify-content: space-between; align-items: baseline; + + @media (max-width: 991px) { + margin-block: 1em; + flex-direction: column; + gap: 0.5em; + } } /* #endregion */ @@ -42,6 +48,12 @@ display: flex; align-items: center; gap: 1em; + + @media (max-width: 991px) { + gap: 0.5em; + flex-wrap: wrap; + .attachment-title { flex-grow: 1; } + } } .attachment-details { @@ -127,10 +139,6 @@ /* #region Attachment actions */ -.attachment-actions .dropdown-menu { - width: 20em; -} - .attachment-actions .dropdown-item .tn-icon { position: relative; top: 3px; diff --git a/apps/client/src/widgets/type_widgets/Attachment.tsx b/apps/client/src/widgets/type_widgets/Attachment.tsx index 95bc3c340c..041814589c 100644 --- a/apps/client/src/widgets/type_widgets/Attachment.tsx +++ b/apps/client/src/widgets/type_widgets/Attachment.tsx @@ -239,6 +239,8 @@ function AttachmentActions({ attachment, copyAttachmentLinkToClipboard }: { atta text={} buttonClassName="icon-action-always-border" iconAction + dropdownContainerClassName="mobile-bottom-menu" + mobileBackdrop > "en-GB": "en", es: "es", fr: "fr", + ga: null, it: "it", ja: "ja", pt: "pt", diff --git a/apps/client/src/widgets/type_widgets/canvas/i18n.spec.ts b/apps/client/src/widgets/type_widgets/canvas/i18n.spec.ts index c77e4979da..7a51032134 100644 --- a/apps/client/src/widgets/type_widgets/canvas/i18n.spec.ts +++ b/apps/client/src/widgets/type_widgets/canvas/i18n.spec.ts @@ -2,6 +2,7 @@ import { LOCALES } from "@triliumnext/commons"; import { readdirSync } from "fs"; import { join } from "path"; import { describe, expect, it } from "vitest"; + import { LANGUAGE_MAPPINGS } from "./i18n.js"; const localeDir = join(__dirname, "../../../../../../node_modules/@excalidraw/excalidraw/dist/prod/locales"); @@ -21,9 +22,9 @@ describe("Canvas i18n", () => { for (const locale of LOCALES) { if (locale.contentOnly || locale.devOnly) continue; const languageCode = LANGUAGE_MAPPINGS[locale.id]; - if (!supportedLanguageCodes.has(languageCode)) { + if (languageCode && !supportedLanguageCodes.has(languageCode)) { console.log("Supported locales:", Array.from(supportedLanguageCodes.values()).join(", ")); - expect.fail(`Unable to find locale for ${locale.id} -> ${languageCode}.`) + expect.fail(`Unable to find locale for ${locale.id} -> ${languageCode}.`); } } }); diff --git a/apps/client/src/widgets/type_widgets/canvas/i18n.ts b/apps/client/src/widgets/type_widgets/canvas/i18n.ts index ba044032b4..924ec48dbe 100644 --- a/apps/client/src/widgets/type_widgets/canvas/i18n.ts +++ b/apps/client/src/widgets/type_widgets/canvas/i18n.ts @@ -10,6 +10,7 @@ export const LANGUAGE_MAPPINGS: Record
    ) : ( -
    -
    - - Title - +
    +
    + + Title + +
    -
    )} {!isNewLayout &&
    @@ -192,7 +193,7 @@ function LayoutIllustration({ isNewLayout }: { isNewLayout?: boolean }) {
    -
    +
    } @@ -356,7 +357,11 @@ function ElectronIntegration() { + {t("electron_integration.background-effects")} + {" "} + + } currentValue={backgroundEffects} onChange={setBackgroundEffects} disabled={nativeTitleBarVisible} /> @@ -383,10 +388,10 @@ function Performance() { currentValue={shadowsEnabled} onChange={setShadowsEnabled} /> - + />} {isElectron() && } diff --git a/apps/client/src/widgets/type_widgets/options/components/PlatformIndicator.css b/apps/client/src/widgets/type_widgets/options/components/PlatformIndicator.css new file mode 100644 index 0000000000..e91e873559 --- /dev/null +++ b/apps/client/src/widgets/type_widgets/options/components/PlatformIndicator.css @@ -0,0 +1,5 @@ +.platform-indicator { + display: inline-flex; + gap: 0.25em; + color: var(--muted-text-color); +} diff --git a/apps/client/src/widgets/type_widgets/options/components/PlatformIndicator.tsx b/apps/client/src/widgets/type_widgets/options/components/PlatformIndicator.tsx new file mode 100644 index 0000000000..bb95e8d9ce --- /dev/null +++ b/apps/client/src/widgets/type_widgets/options/components/PlatformIndicator.tsx @@ -0,0 +1,34 @@ +import "./PlatformIndicator.css"; + +import { useRef } from "preact/hooks"; + +import { t } from "../../../../services/i18n"; +import { useStaticTooltip } from "../../../react/hooks"; +import Icon from "../../../react/Icon"; + +interface PlatformIndicatorProps { + windows?: boolean | "11"; + mac: boolean; +} + +export default function PlatformIndicator({ windows, mac }: PlatformIndicatorProps) { + const containerRef = useRef(null); + useStaticTooltip(containerRef, { + selector: "span", + animation: false, + title() { return this.title; }, + }); + + return ( +
    + {windows && } + {mac && } +
    + ); +} diff --git a/apps/client/src/widgets/type_widgets/options/other.tsx b/apps/client/src/widgets/type_widgets/options/other.tsx index 6ac92b4207..e6813f8d2b 100644 --- a/apps/client/src/widgets/type_widgets/options/other.tsx +++ b/apps/client/src/widgets/type_widgets/options/other.tsx @@ -1,20 +1,22 @@ +import { SANITIZER_DEFAULT_ALLOWED_TAGS } from "@triliumnext/commons"; +import { useMemo } from "preact/hooks"; +import type React from "react"; import { Trans } from "react-i18next"; + import { t } from "../../../services/i18n"; +import search from "../../../services/search"; import server from "../../../services/server"; import toast from "../../../services/toast"; +import { isElectron } from "../../../services/utils"; import Button from "../../react/Button"; -import FormText from "../../react/FormText"; -import OptionsSection from "./components/OptionsSection"; -import TimeSelector from "./components/TimeSelector"; -import { useMemo } from "preact/hooks"; -import { useTriliumOption, useTriliumOptionBool, useTriliumOptionJson } from "../../react/hooks"; -import { SANITIZER_DEFAULT_ALLOWED_TAGS } from "@triliumnext/commons"; import FormCheckbox from "../../react/FormCheckbox"; import FormGroup from "../../react/FormGroup"; -import search from "../../../services/search"; -import FormTextBox, { FormTextBoxWithUnit } from "../../react/FormTextBox"; import FormSelect from "../../react/FormSelect"; -import { isElectron } from "../../../services/utils"; +import FormText from "../../react/FormText"; +import FormTextBox, { FormTextBoxWithUnit } from "../../react/FormTextBox"; +import { useTriliumOption, useTriliumOptionBool, useTriliumOptionJson } from "../../react/hooks"; +import OptionsSection from "./components/OptionsSection"; +import TimeSelector from "./components/TimeSelector"; export default function OtherSettings() { return ( @@ -31,7 +33,7 @@ export default function OtherSettings() { - ) + ); } function SearchEngineSettings() { @@ -82,7 +84,7 @@ function SearchEngineSettings() { />
    - ) + ); } function TrayOptionsSettings() { @@ -97,7 +99,7 @@ function TrayOptionsSettings() { onChange={trayEnabled => setDisableTray(!trayEnabled)} /> - ) + ); } function NoteErasureTimeout() { @@ -105,13 +107,13 @@ function NoteErasureTimeout() { {t("note_erasure_timeout.note_erasure_description")} - {t("note_erasure_timeout.manual_erasing_description")} - +
    + + ); +} diff --git a/apps/website/src/resources/icon-packs/Boxicons 3 (Basic).json b/apps/website/src/resources/icon-packs/Boxicons 3 (Basic).json new file mode 100644 index 0000000000..9fd39daa39 --- /dev/null +++ b/apps/website/src/resources/icon-packs/Boxicons 3 (Basic).json @@ -0,0 +1,7 @@ +{ + "name": "Boxicons 3 (Basic)", + "file": "Boxicons 3 (Basic).zip", + "version": "3.0.0", + "website": "https://boxicons.com/", + "description": "The Basic set of icons from Boxicons v3. This is an upgrade from Trilium's built-in icon pack (Boxicons v2)." +} \ No newline at end of file diff --git a/apps/website/src/resources/icon-packs/Boxicons 3 (Brands).json b/apps/website/src/resources/icon-packs/Boxicons 3 (Brands).json new file mode 100644 index 0000000000..9bd319f722 --- /dev/null +++ b/apps/website/src/resources/icon-packs/Boxicons 3 (Brands).json @@ -0,0 +1,7 @@ +{ + "name": "Boxicons 3 (Brands)", + "file": "Boxicons 3 (Brands).zip", + "version": "3.0.0", + "website": "https://boxicons.com/", + "description": "The brand set of icons from Boxicons v3." +} \ No newline at end of file diff --git a/apps/website/src/resources/icon-packs/Material Design Icons.json b/apps/website/src/resources/icon-packs/Material Design Icons.json new file mode 100644 index 0000000000..d9dd50d294 --- /dev/null +++ b/apps/website/src/resources/icon-packs/Material Design Icons.json @@ -0,0 +1,7 @@ +{ + "name": "Material Design Icons", + "file": "Material Design Icons.zip", + "version": "7.4.47", + "website": "https://pictogrammers.com/library/mdi/", + "description": "The community Material Design Icons pack (@mdi/font). Not to be confused with Google's own Material Design Icons." +} \ No newline at end of file diff --git a/apps/website/src/resources/icon-packs/Phosphor Icons (Fill).json b/apps/website/src/resources/icon-packs/Phosphor Icons (Fill).json new file mode 100644 index 0000000000..c11fa69184 --- /dev/null +++ b/apps/website/src/resources/icon-packs/Phosphor Icons (Fill).json @@ -0,0 +1,7 @@ +{ + "name": "Phosphor Icons (Fill)", + "file": "Phosphor Icons (Fill).zip", + "version": "2.1.2", + "website": "https://phosphoricons.com/", + "description": "The filled version of Phosphor Icons." +} \ No newline at end of file diff --git a/apps/website/src/resources/icon-packs/Phosphor Icons (Regular).json b/apps/website/src/resources/icon-packs/Phosphor Icons (Regular).json new file mode 100644 index 0000000000..da6dd99366 --- /dev/null +++ b/apps/website/src/resources/icon-packs/Phosphor Icons (Regular).json @@ -0,0 +1,7 @@ +{ + "name": "Phosphor Icons (Regular)", + "file": "Phosphor Icons (Regular).zip", + "version": "2.1.2", + "website": "https://phosphoricons.com/", + "description": "The regular weight version of Phosphor Icons." +} \ No newline at end of file diff --git a/apps/website/src/style.css b/apps/website/src/style.css index 417d3c23c0..39f15c4035 100644 --- a/apps/website/src/style.css +++ b/apps/website/src/style.css @@ -42,7 +42,7 @@ body { } main { - min-height: calc(100vh - 80px - 90px); + min-height: calc(100vh - 80px - 136px); display: flex; flex-direction: column; } @@ -65,6 +65,7 @@ a { max-width: 1200px; width: 90%; margin: auto; + box-sizing: border-box; } section { @@ -123,14 +124,14 @@ img { display: flex; flex-direction: column; flex-grow: 1; - + .more-info-container { margin-top: 0.5em; flex-grow: 1; display: flex; flex-direction: column; justify-content: flex-end; - + .more-info { font-size: 0.9em; } @@ -149,7 +150,7 @@ img { } } -@media (max-width: 719px) { +@media (max-width: 719.99px) { .grid-4-cols > *, .grid-3-cols > *, .grid-2-cols > * { @@ -168,7 +169,7 @@ img { h2 { margin-bottom: 2em; } - } + } .grid-4-cols { display: grid; @@ -191,4 +192,4 @@ img { .mobile-only { display: none !important; } -} \ No newline at end of file +} diff --git a/apps/website/src/translations/ar/translation.json b/apps/website/src/translations/ar/translation.json index d367a27d8e..6760c21d57 100644 --- a/apps/website/src/translations/ar/translation.json +++ b/apps/website/src/translations/ar/translation.json @@ -41,7 +41,13 @@ "search_title": "البحث القوي", "web_clipper_title": "اداة قص الويب", "title": "الانتاجية والسلامة", - "jump_to_title": "الاوامر والبحث السريع" + "jump_to_title": "الاوامر والبحث السريع", + "revisions_content": "تُحفظ الملاحظات دوريًا في الخلفية، ويمكن استخدام التعديلات للمراجعة أو للتراجع عن التغييرات غير المقصودة. كما يمكن إنشاء التعديلات عند الطلب.", + "sync_content": "استخدم نسخة مستضافة ذاتيًا أو نسخة سحابية لمزامنة ملاحظاتك بسهولة عبر أجهزة متعددة، وللوصول إليها من هاتفك المحمول باستخدام تطبيق ويب تقدمي (PWA).", + "protected_notes_content": "احمِ معلوماتك الشخصية الحساسة عبر تشفير الملاحظات وقفلها خلف جلسة محمية بكلمة مرور.", + "jump_to_content": "انتقل بسرعة إلى الملاحظات أو أوامر واجهة المستخدم عبر التسلسل الهرمي من خلال البحث عن عناوينها، مع ميزة المطابقة التقريبية لتجاوز الأخطاء الإملائية أو الاختلافات البسيطة.", + "search_content": "أو ابحث عن نص داخل الملاحظات وضيّق نطاق البحث عبر التصفية حسب الملاحظة الرئيسية، أو حسب مستوى التفرع.", + "web_clipper_content": "اقتبس صفحات الويب (أو لقطات الشاشة) وضعها مباشرة في Trilium باستخدام إضافة المتصفح مقص الشبكة (Web Clipper)." }, "note_types": { "canvas_title": "مساحة العمل", @@ -49,7 +55,11 @@ "text_title": "ملاحظات النص", "code_title": "ملاحظات الكود", "file_title": "ملاحظات الملف", - "mermaid_title": "مخططات Mermaid" + "mermaid_title": "مخططات Mermaid", + "title": "طرق متعددة لعرض معلوماتك", + "text_description": "يتم تحرير الملاحظات باستخدام محرر مرئي (WYSIWYG)، مع دعم للجداول، والصور، والعبارات الرياضية، وكتل التعليمات البرمجية مع تمييز بناء الجملة. يمكنك تنسيق النص بسرعة باستخدام قواعد \"Markdown\" أو عبر أوامر الشرطة المائلة (slash commands).", + "code_description": "تستخدم العينات الكبيرة من التعليمات البرمجية أو النصوص البرمجية (Scripts) محررًا مخصصًا، مع تمييز الصيغة للعديد من لغات البرمجة وبسمات ألوان متنوعة.", + "file_description": "تضمين ملفات الوسائط المتعددة مثل ملفات PDF والصور ومقاطع الفيديو مع ميزة المعاينة داخل التطبيق." }, "extensibility_benefits": { "import_export_title": "استيراد/تصدير", diff --git a/apps/website/src/translations/de/translation.json b/apps/website/src/translations/de/translation.json index d2c4bd5c82..ddfeec247c 100644 --- a/apps/website/src/translations/de/translation.json +++ b/apps/website/src/translations/de/translation.json @@ -154,7 +154,8 @@ "header": { "get-started": "Loslegen", "documentation": "Dokumentation", - "support-us": "Unterstützt uns" + "support-us": "Unterstützt uns", + "resources": "Ressourcen" }, "footer": { "copyright_and_the": " und die ", @@ -196,5 +197,12 @@ "download_exe": "Installationsdatei herunterladen (.exe)", "download_zip": "Portable (.zip)", "download_scoop": "Scoop" + }, + "resources": { + "icon_packs": "Symbolpakete", + "download": "Herunterladen", + "website": "Webseite", + "title": "Ressourcen", + "icon_packs_intro": "Erweitere die Auswahl an verfügbaren Symbolen für deine Notizen, indem du ein Symbolpaket verwendest. Für weitere Informationen zu Symbolpaketen, schaue in die offizielle Dokumentation." } } diff --git a/apps/website/src/translations/en/translation.json b/apps/website/src/translations/en/translation.json index d62d861898..4012fa2df3 100644 --- a/apps/website/src/translations/en/translation.json +++ b/apps/website/src/translations/en/translation.json @@ -112,6 +112,7 @@ "header": { "get-started": "Get started", "documentation": "Documentation", + "resources": "Resources", "support-us": "Support us" }, "footer": { @@ -196,5 +197,12 @@ "description": "Trilium Notes hosted on PikaPods, a paid service for easy access and management. Not directly affiliated with the Trilium team.", "download_pikapod": "Set up on PikaPods", "download_triliumcc": "Alternatively see trilium.cc" + }, + "resources": { + "title": "Resources", + "icon_packs": "Icon packs", + "icon_packs_intro": "Expand the selection of available icons for your notes by using an icon pack. For more information about icon packs, see the official documentation.", + "download": "Download", + "website": "Website" } } diff --git a/apps/website/src/translations/es/translation.json b/apps/website/src/translations/es/translation.json index 4620780493..88bfdcccd9 100644 --- a/apps/website/src/translations/es/translation.json +++ b/apps/website/src/translations/es/translation.json @@ -195,6 +195,14 @@ "header": { "get-started": "Comencemos", "documentation": "Documentación", - "support-us": "Apóyanos" + "support-us": "Apóyanos", + "resources": "Recursos" + }, + "resources": { + "title": "Recursos", + "icon_packs": "Paquetes de iconos", + "icon_packs_intro": "Ampliar la selección de iconos disponibles para sus notas utilizando un paquete de iconos. Para más información acerca de paquetes de icono, vea la documentación oficial.", + "download": "Descargar", + "website": "Sitio web" } } diff --git a/apps/website/src/translations/ga/translation.json b/apps/website/src/translations/ga/translation.json new file mode 100644 index 0000000000..c19563443c --- /dev/null +++ b/apps/website/src/translations/ga/translation.json @@ -0,0 +1,208 @@ +{ + "get-started": { + "title": "Tosaigh", + "desktop_title": "Íoslódáil an feidhmchlár deisce (v{{version}})", + "architecture": "Ailtireacht:", + "older_releases": "Féach ar eisiúintí níos sine", + "server_title": "Socraigh freastalaí le haghaidh rochtana ar ilghléasanna" + }, + "hero_section": { + "title": "Eagraigh do chuid smaointe. Tóg do bhunachar eolais pearsanta.", + "subtitle": "Is réiteach foinse oscailte é Trilium chun nótaí a thógáil agus bunachar eolais pearsanta a eagrú. Bain úsáid as go háitiúil ar do dheasc, nó sioncrónaigh é le do fhreastalaí féinóstáilte chun do nótaí a choinneáil cibé áit a théann tú.", + "get_started": "Tosaigh", + "github": "GitHub", + "dockerhub": "Docker Hub", + "screenshot_alt": "Scáileán den fheidhmchlár deisce Trilium Notes" + }, + "organization_benefits": { + "title": "Eagraíocht", + "note_structure_title": "Struchtúr nótaí", + "note_structure_description": "Is féidir nótaí a shocrú go hiarlathach. Níl aon ghá le fillteáin, ós rud é gur féidir fo-nótaí a bheith i ngach nóta. Is féidir nóta aonair a chur leis i roinnt áiteanna san ordlathas.", + "attributes_title": "Lipéid nótaí agus caidrimh", + "attributes_description": "Bain úsáid as caidrimh idir nótaí nó cuir lipéid leis le haghaidh catagóiriú éasca. Bain úsáid as tréithe ardaithe chun faisnéis struchtúrtha a iontráil ar féidir a úsáid i dtáblaí agus i gcláir.", + "hoisting_title": "Spásanna oibre agus ardaitheoir", + "hoisting_description": "Deighil do nótaí pearsanta agus oibre go héasca trí iad a ghrúpáil faoi spás oibre, rud a dhíríonn ar do chrann nótaí chun sraith nótaí ar leith amháin a thaispeáint." + }, + "productivity_benefits": { + "title": "Táirgiúlacht agus sábháilteacht", + "revisions_title": "Athbhreithnithe nóta", + "revisions_content": "Sábháiltear nótaí go tréimhsiúil sa chúlra agus is féidir athbhreithnithe a úsáid le haghaidh athbhreithnithe nó chun athruithe de thaisme a chealú. Is féidir athbhreithnithe a chruthú ar éileamh freisin.", + "sync_title": "Sioncrónú", + "sync_content": "Bain úsáid as cás féinóstáilte nó scamall chun do nótaí a shioncrónú go héasca ar fud ilghléasanna, agus chun rochtain a fháil orthu ó do ghuthán póca ag baint úsáide as PWA.", + "protected_notes_title": "Nótaí faoi chosaint", + "protected_notes_content": "Cosain faisnéis phearsanta íogair trí na nótaí a chriptiú agus iad a ghlasáil taobh thiar de sheisiún atá cosanta ag pasfhocal.", + "jump_to_title": "Cuardach tapa agus orduithe", + "jump_to_content": "Léim go tapa chuig nótaí nó orduithe UI ar fud an ordlathais trí chuardach a dhéanamh ar a dteideal, le meaitseáil doiléir chun clóscríobh nó difríochtaí beaga a chur san áireamh.", + "search_title": "Cuardach cumhachtach", + "search_content": "Nó déan cuardach ar théacs laistigh de nótaí agus caolaigh an cuardach trí scagadh a dhéanamh de réir an nóta tuismitheora, nó de réir doimhneachta.", + "web_clipper_title": "Gearrthóir gréasáin", + "web_clipper_content": "Gabh leathanaigh ghréasáin (nó scáileáin) agus cuir iad go díreach i Trilium ag baint úsáide as síneadh brabhsálaí an ghearrthóra gréasáin." + }, + "note_types": { + "title": "Ilbhealaí chun d’fhaisnéis a léiriú", + "text_title": "Nótaí téacs", + "text_description": "Déantar na nótaí a chur in eagar ag baint úsáide as eagarthóir amhairc (WYSIWYG), a thacaíonn le táblaí, íomhánna, nathanna matamaitice, bloic chóid le haibhsiú comhréire. Formáidigh an téacs go tapa ag baint úsáide as comhréir cosúil le Markdown nó ag baint úsáide as orduithe slaise.", + "code_title": "Nótaí cóid", + "code_description": "Úsáideann samplaí móra de chód foinse nó scripteanna eagarthóir tiomnaithe, le haibhsiú comhréire do go leor teangacha ríomhchlárúcháin agus le téamaí dathanna éagsúla.", + "file_title": "Nótaí comhaid", + "file_description": "Cuir comhaid ilmheán ar nós PDFanna, íomhánna, físeáin le chéile le réamhamharc san fheidhmchlár.", + "canvas_title": "Canbhás", + "canvas_description": "Socraigh cruthanna, íomhánna agus téacs ar chanbhás gan teorainn, ag baint úsáide as an teicneolaíocht chéanna atá taobh thiar de excalidraw.com. Oiriúnach do léaráidí, sceitsí agus pleanáil amhairc.", + "mermaid_title": "Léaráidí maighdeana mara", + "mermaid_description": "Cruthaigh léaráidí ar nós cairteacha sreafa, léaráidí ranga agus seicheamhacha, cairteacha Gantt agus go leor eile, ag baint úsáide as comhréir Mermaid.", + "mindmap_title": "Léarscáil intinne", + "mindmap_description": "Eagraigh do chuid smaointe go hamhairc nó déan seisiún smaointeoireachta.", + "others_list": "agus cinn eile: <0>léarscáil nótaí, <1>léarscáil gaoil, <2>cuardaigh shábháilte, <3>nóta rindreála, agus <4>radhairc ghréasáin." + }, + "extensibility_benefits": { + "title": "Comhroinnt & inleathnú", + "import_export_title": "Iompórtáil/onnmhairiú", + "import_export_description": "Idirghníomhaigh go héasca le feidhmchláir eile ag baint úsáide as formáidí Markdown, ENEX, OML.", + "share_title": "Comhroinn nótaí ar an ngréasán", + "share_description": "Má tá freastalaí agat, is féidir é a úsáid chun fo-thacar de do nótaí a roinnt le daoine eile.", + "scripting_title": "Scriptiú ardleibhéil", + "scripting_description": "Tóg do chomhtháthú féin laistigh de Trilium le giuirléidí saincheaptha, nó loighic taobh an fhreastalaí.", + "api_title": "REST API", + "api_description": "Idirghníomhaigh le Trilium go ríomhchláraitheach ag baint úsáide as a REST API ionsuite." + }, + "collections": { + "title": "Bailiúcháin", + "calendar_title": "Féilire", + "calendar_description": "Eagraigh d’imeachtaí pearsanta nó gairmiúla ag baint úsáide as féilire, le tacaíocht d’imeachtaí uile-lae agus il-lae. Féach ar d’imeachtaí go tapa leis na radhairc seachtaine, míosa agus bliana. Idirghníomhaíocht éasca chun imeachtaí a chur leis nó a tharraingt.", + "table_title": "Tábla", + "table_description": "Taispeáin agus cuir in eagar faisnéis faoi nótaí i struchtúr táblach, le cineálacha éagsúla colún amhail téacs, uimhir, boscaí seiceála, dáta & am, naisc agus dathanna agus tacaíocht do chaidrimh. De rogha air sin, taispeáin na nótaí laistigh de ordlathas crainn taobh istigh den tábla.", + "board_title": "Bord Kanban", + "board_description": "Eagraigh stádas do thascanna nó do thionscadail i mbord Kanban le bealach éasca chun míreanna agus colúin nua a chruthú agus a stádas a athrú go simplí trí tharraingt trasna an chláir.", + "geomap_title": "Geo-léarscáil", + "geomap_description": "Pleanáil do laethanta saoire nó marcáil do phointí spéise go díreach ar léarscáil gheografach ag baint úsáide as marcóirí saincheaptha. Taispeáin rianta GPX taifeadta chun bealaí taistil a rianú.", + "presentation_title": "Cur i Láthair", + "presentation_description": "Eagraigh faisnéis i sleamhnáin agus cuir i láthair iad i lánscáileán le haistrithe réidhe. Is féidir na sleamhnáin a onnmhairiú go PDF freisin le go mbeidh sé éasca iad a roinnt." + }, + "faq": { + "title": "Ceisteanna Coitianta", + "mobile_question": "An bhfuil feidhmchlár soghluaiste ann?", + "mobile_answer": "Faoi láthair níl aon aip shoghluaiste oifigiúil ann. Mar sin féin, má tá freastalaí agat is féidir leat rochtain a fháil air trí bhrabhsálaí gréasáin a úsáid agus fiú é a shuiteáil mar PWA. I gcás Android, tá aip neamhoifigiúil ann ar a dtugtar TriliumDroid a oibríonn as líne fiú (cosúil le cliant deisce).", + "database_question": "Cá bhfuil na sonraí stóráilte?", + "database_answer": "Stórálfar do nótaí go léir i mbunachar sonraí SQLite i bhfillteán feidhmchláir. Is é an chúis a n-úsáideann Trilium bunachar sonraí in ionad comhaid téacs simplí ná feidhmíocht agus go mbeadh roinnt gnéithe i bhfad níos deacra a chur i bhfeidhm amhail clóin (an nóta céanna in áiteanna éagsúla sa chrann). Chun an fillteán feidhmchláir a aimsiú, téigh go dtí an fhuinneog Maidir Linn.", + "server_question": "An bhfuil freastalaí ag teastáil uaim le Trilium a úsáid?", + "server_answer": "Ní hea, ceadaíonn an freastalaí rochtain trí bhrabhsálaí gréasáin agus bainistíonn sé an sioncrónú má tá ilghléasanna agat. Chun tús a chur leis, is leor an feidhmchlár deisce a íoslódáil agus tosú ag baint úsáide as.", + "scaling_question": "Cé chomh maith agus a scálaíonn an feidhmchlár le líon mór nótaí?", + "scaling_answer": "Ag brath ar úsáid, ba cheart go mbeadh an feidhmchlár in ann 100,000 nóta ar a laghad a láimhseáil gan fadhb. Tabhair faoi deara go bhféadfadh teip a bheith ar an bpróiseas sioncrónaithe uaireanta má tá go leor comhad mór á uaslódáil (1 GB in aghaidh an chomhaid) ós rud é go bhfuil Trilium beartaithe níos mó mar fheidhmchlár bonn eolais seachas stór comhad (cosúil le NextCloud, mar shampla).", + "network_share_question": "An féidir liom mo bhunachar sonraí a roinnt thar thiomántán líonra?", + "network_share_answer": "Ní hea, ní smaoineamh maith é bunachar sonraí SQLite a roinnt thar thiomántán líonra i gcoitinne. Cé go bhféadfadh sé oibriú uaireanta, tá seans ann go ndéanfar an bunachar sonraí a thruailliú mar gheall ar ghlasanna comhad neamhfhoirfe thar líonra.", + "security_question": "Conas a chosnaítear mo chuid sonraí?", + "security_answer": "De réir réamhshocraithe, ní chriptítear nótaí agus is féidir iad a léamh go díreach ón mbunachar sonraí. Nuair a mharcáiltear nóta mar chriptithe, déantar an nóta a chriptiú ag baint úsáide as AES-128-CBC." + }, + "final_cta": { + "title": "Réidh le tosú le Trilium Notes?", + "description": "Tóg do bhunachar eolais pearsanta le gnéithe cumhachtacha agus príobháideacht iomlán.", + "get_started": "Tosaigh" + }, + "components": { + "link_learn_more": "Foghlaim níos mó..." + }, + "download_now": { + "text": "Íoslódáil anois ", + "platform_big": "v{{version}} do {{platform}}", + "platform_small": "do {{platform}}", + "linux_big": "v{{version}} do Linux", + "linux_small": "do Linux", + "more_platforms": "Tuilleadh ardán & socrú freastalaí" + }, + "header": { + "get-started": "Tosaigh", + "documentation": "Doiciméadú", + "support-us": "Tacaigh linn", + "resources": "Acmhainní" + }, + "footer": { + "copyright_and_the": " agus an ", + "copyright_community": "pobal" + }, + "social_buttons": { + "github": "GitHub", + "github_discussions": "Pléanna GitHub", + "matrix": "Maitrís", + "reddit": "Reddit" + }, + "support_us": { + "title": "Tacaigh linn", + "financial_donations_title": "Síntiúis airgeadais", + "financial_donations_description": "Tógtar agus cothaítear Trilium le na céadta uair an chloig oibre. Coinníonn do thacaíocht é foinse oscailte, feabhsaíonn sé gnéithe, agus clúdaíonn sé costais amhail óstáil.", + "financial_donations_cta": "Smaoinigh ar thacaíocht a thabhairt don phríomhfhorbróir (eliandoran) den fheidhmchlár trí:", + "github_sponsors": "Urraitheoirí GitHub", + "paypal": "PayPal", + "buy_me_a_coffee": "Ceannaigh Caife Dom" + }, + "contribute": { + "title": "Bealaí eile chun ranníocaíocht a dhéanamh", + "way_translate": "Aistrigh an feidhmchlár go do theanga dhúchais trí Weblate.", + "way_community": "Déan idirghníomhú leis an bpobal ar GitHub Discussions nó ar Matrix.", + "way_reports": "Tuairiscigh fabhtanna trí Fadhbanna GitHub.", + "way_document": "Feabhas a chur ar an doiciméadacht trí eolas a thabhairt dúinn faoi bhearnaí sa doiciméadacht nó trí threoracha, Ceisteanna Coitianta nó ranganna teagaisc a chur ar fáil.", + "way_market": "Scaip an scéal: Roinn Nótaí Trilium le cairde, nó ar bhlaganna agus ar na meáin shóisialta." + }, + "404": { + "title": "404: Níor aimsíodh", + "description": "Níorbh fhéidir an leathanach a bhí á lorg agat a aimsiú. B’fhéidir gur scriosadh é nó go bhfuil an URL mícheart." + }, + "download_helper_desktop_windows": { + "title_x64": "Windows 64-bit", + "title_arm64": "Windows ar ARM", + "description_x64": "Ag luí le gléasanna Intel nó AMD a bhfuil Windows 10 agus 11 á rith acu.", + "description_arm64": "Ag luí le gléasanna ARM (m.sh. le Qualcomm Snapdragon).", + "quick_start": "Chun a shuiteáil trí Winget:", + "download_exe": "Íoslódáil an Suiteálaí (.exe)", + "download_zip": "Iniompartha (.zip)", + "download_scoop": "Scúp" + }, + "download_helper_desktop_linux": { + "title_x64": "Linux 64-bit", + "title_arm64": "Linux ar ARM", + "description_x64": "Don chuid is mó de na dáiltí Linux, comhoiriúnach le hailtireacht x86_64.", + "description_arm64": "I gcás dáiltí Linux bunaithe ar ARM, comhoiriúnach le hailtireacht aarch64.", + "quick_start": "Roghnaigh formáid phacáiste chuí, ag brath ar do dháileadh:", + "download_deb": ".deb", + "download_rpm": ".rpm", + "download_flatpak": ".flatpak", + "download_zip": "Iniompartha (.zip)", + "download_nixpkgs": "nixpkgs", + "download_aur": "AUR" + }, + "download_helper_desktop_macos": { + "title_x64": "macOS do Intel", + "title_arm64": "macOS do Apple Silicon", + "description_x64": "Do Macs bunaithe ar Intel a bhfuil macOS Monterey nó níos déanaí á rith acu.", + "description_arm64": "Do ríomhairí Mac Apple Silicon ar nós iad siúd a bhfuil sceallóga M1 agus M2 acu.", + "quick_start": "Chun a shuiteáil trí Homebrew:", + "download_dmg": "Íoslódáil an Suiteálaí (.dmg)", + "download_homebrew_cask": "Homebrew Cask", + "download_zip": "Iniompartha (.zip)" + }, + "download_helper_server_docker": { + "title": "Féinóstáilte ag baint úsáide as Docker", + "description": "Imscaradh go héasca ar Windows, Linux nó macOS ag baint úsáide as coimeádán Docker.", + "download_dockerhub": "Docker Hub", + "download_ghcr": "ghcr.io" + }, + "download_helper_server_linux": { + "title": "Féinóstáilte ar Linux", + "description": "Imscar Trilium Notes ar do fhreastalaí nó VPS féin, atá comhoiriúnach leis an gcuid is mó de na dáileacháin.", + "download_tar_x64": "x64 (.tar.xz)", + "download_tar_arm64": "ARM (.tar.xz)", + "download_nixos": "Modúl NixOS" + }, + "download_helper_server_hosted": { + "title": "Óstáil íoctha", + "description": "Nótaí Trilium atá á n-óstáil ar PikaPods, seirbhís íoctha le haghaidh rochtana agus bainistíochta éasca. Níl baint dhíreach aige le foireann Trilium.", + "download_pikapod": "Socraigh ar PikaPods", + "download_triliumcc": "Nó féach ar trilium.cc" + }, + "resources": { + "title": "Acmhainní", + "icon_packs": "Pacáistí deilbhín", + "icon_packs_intro": "Leathnaigh rogha na ndeilbhíní atá ar fáil le do nótaí trí phacáiste deilbhíní a úsáid. Le haghaidh tuilleadh eolais faoi phacáistí deilbhíní, féach ar an dhoiciméadú oifigiúil.", + "download": "Íoslódáil", + "website": "Suíomh Gréasáin" + } +} diff --git a/apps/website/src/translations/ja/translation.json b/apps/website/src/translations/ja/translation.json index 81070e3836..ca28a21f84 100644 --- a/apps/website/src/translations/ja/translation.json +++ b/apps/website/src/translations/ja/translation.json @@ -195,6 +195,14 @@ "header": { "get-started": "はじめる", "documentation": "ドキュメント", - "support-us": "サポート" + "support-us": "サポート", + "resources": "リソース" + }, + "resources": { + "title": "リソース", + "icon_packs": "アイコンパック", + "icon_packs_intro": "アイコンパックを使用すると、ノートで使用できるアイコンの選択肢が広がります。アイコンパックの詳細については、公式ドキュメントをご覧ください。", + "download": "ダウンロード", + "website": "Webサイト" } } diff --git a/apps/website/src/translations/pl/translation.json b/apps/website/src/translations/pl/translation.json index 733f9a9607..7551a29e34 100644 --- a/apps/website/src/translations/pl/translation.json +++ b/apps/website/src/translations/pl/translation.json @@ -195,6 +195,14 @@ "header": { "get-started": "Start", "documentation": "Dokumentacja", - "support-us": "Wesprzyj nas" + "support-us": "Wesprzyj nas", + "resources": "Zasoby" + }, + "resources": { + "title": "Zasoby", + "icon_packs": "Paczki ikon", + "icon_packs_intro": "Rozszerz wybór dostępnych ikon dla swoich notatek, korzystając z pakietu ikon. Więcej informacji na temat pakietów ikon znajdziesz w dokumentacji .", + "download": "Pobieranie", + "website": "Strona internetowa" } } diff --git a/apps/website/src/translations/zh-Hans/translation.json b/apps/website/src/translations/zh-Hans/translation.json index 17310a663c..f6aeba9812 100644 --- a/apps/website/src/translations/zh-Hans/translation.json +++ b/apps/website/src/translations/zh-Hans/translation.json @@ -131,7 +131,8 @@ "header": { "get-started": "开始使用", "documentation": "文档", - "support-us": "支持我们" + "support-us": "支持我们", + "resources": "资源" }, "footer": { "copyright_and_the": " 以及 ", @@ -196,5 +197,12 @@ "download_tar_x64": "64 位 (.tar.xz)", "download_tar_arm64": "ARM (.tar.xz)", "download_nixos": "NixOS 模块" + }, + "resources": { + "icon_packs": "图标包", + "icon_packs_intro": "使用图标包可以扩展笔记中可用的图标选择。有关图标包的更多信息,请参阅官方文档。", + "download": "下载", + "website": "网站", + "title": "资源" } } diff --git a/apps/website/vite.config.ts b/apps/website/vite.config.ts index becf0a2463..2c4f5e5ee1 100644 --- a/apps/website/vite.config.ts +++ b/apps/website/vite.config.ts @@ -8,7 +8,12 @@ export default defineConfig({ prerender: { enabled: true, renderTarget: '#app', - additionalPrerenderRoutes: ['/404'], + additionalPrerenderRoutes: [ + '/404', + '/get-started', + '/resources', + '/support-us' + ], previewMiddlewareEnabled: true, previewMiddlewareFallback: '/404', }, diff --git a/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md index e36815b902..0d73a1c0eb 100644 --- a/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md +++ b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md @@ -4,8 +4,9 @@ Once the Weblate translations for a single language have reached ~50% in coverag To do so: 1. In `packages/commons` look for `i18n.ts` and add a new entry to `UNSORTED_LOCALES` for the language. -2. In `apps/server` look for `services/i18n.ts` and add a mapping for the new language in `DAYJS_LOADER`. Sort the entire list. +2. In `packages/commons` look for `dayjs.ts` and add a mapping for the new language in `DAYJS_LOADER`. Sort the entire list. 3. In `apps/client`, look for `collections/calendar/index.tsx` and modify `LOCALE_MAPPINGS` to add support to the new language. 4. In `apps/client`, look for `widgets/type_widgets/canvas/i18n.ts` and modify `LANGUAGE_MAPPINGS`. A unit test ensures that the language is actually loadable. 5. In `apps/client`, look for `widgets/type_widgets/MindMap.tsx` and modify `LOCALE_MAPPINGS`. The type definitions should already validate if the new value is supported by Mind Elixir. -6. In `packages/ckeditor5`, look for `i18n.ts` and modify `LOCALE_MAPPINGS`. The import validation should already check if the new value is supported by CKEditor, and there's also a test to ensure it. \ No newline at end of file +6. In `packages/ckeditor5`, look for `i18n.ts` and modify `LOCALE_MAPPINGS`. The import validation should already check if the new value is supported by CKEditor, and there's also a test to ensure it. +7. Locale mappings for PDF.js might need adjustment. To do so, in `packages/pdfjs-viewer/scripts/build.ts` there is `LOCALE_MAPPINGS`. \ No newline at end of file diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md index 505fe22c9b..8b43e75bd5 100644 --- a/docs/Developer Guide/Developer Guide/Documentation.md +++ b/docs/Developer Guide/Developer Guide/Documentation.md @@ -1,5 +1,5 @@ # Documentation -There are multiple types of documentation for Trilium: +There are multiple types of documentation for Trilium: * The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1. * The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers. diff --git a/docs/Developer Guide/Developer Guide/Environment Setup.md b/docs/Developer Guide/Developer Guide/Environment Setup.md index bf7f44adb8..f958b4eec0 100644 --- a/docs/Developer Guide/Developer Guide/Environment Setup.md +++ b/docs/Developer Guide/Developer Guide/Environment Setup.md @@ -24,7 +24,7 @@ As a quick heads-up of some differences when compared to `npm`: ## Installing dependencies -Run `pnpm i` at the top of the `Notes` repository to install the dependencies. +Run `pnpm i` at the top of the `Trilium` repository to install the dependencies. > [!NOTE] > Dependencies are kept up to date periodically in the project. Generally it's a good rule to do `pnpm i` after each `git pull` on the main branch. diff --git a/docs/README-ar.md b/docs/README-ar.md index c92fc73ec2..bacb285274 100644 --- a/docs/README-ar.md +++ b/docs/README-ar.md @@ -88,29 +88,34 @@ script)](./README-ZH_TW.md) | [English](../README.md) | [French](./README-fr.md) النصية](https://docs.triliumnotes.org/user-guide/scripts) المتقدمة * UI available in English, German, Spanish, French, Romanian, and Chinese (simplified and traditional) -* Direct [OpenID and TOTP - integration](https://docs.triliumnotes.org/user-guide/setup/server/mfa) for - more secure login -* [Synchronization](https://docs.triliumnotes.org/user-guide/setup/synchronization) - with self-hosted sync server - * there are [3rd party services for hosting synchronisation - server](https://docs.triliumnotes.org/user-guide/setup/server/cloud-hosting) -* [Sharing](https://docs.triliumnotes.org/user-guide/advanced-usage/sharing) - (publishing) notes to public internet -* Strong [note - encryption](https://docs.triliumnotes.org/user-guide/concepts/notes/protected-notes) - with per-note granularity -* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type - "canvas") -* [Relation - maps](https://docs.triliumnotes.org/user-guide/note-types/relation-map) and - [note/link maps](https://docs.triliumnotes.org/user-guide/note-types/note-map) - for visualizing notes and their relations -* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) -* [Geo maps](https://docs.triliumnotes.org/user-guide/collections/geomap) with - location pins and GPX tracks -* [Scripting](https://docs.triliumnotes.org/user-guide/scripts) - see [Advanced - showcases](https://docs.triliumnotes.org/user-guide/advanced-usage/advanced-showcases) +* تكامل مباشر مع [أنظمة الهوية المفتوحة OpenID وكلمات المرور المؤقتة + TOTP](https://docs.triliumnotes.org/user-guide/setup/server/mfa) لتسجيل دخول + أكثر أماناً +* [المزامنة](https://docs.triliumnotes.org/user-guide/setup/synchronization) مع + خادم مزامنة مُستضاف ذاتيًا + * توجد [خدمات خارجية لاستضافة خادم + المزامنة](https://docs.triliumnotes.org/user-guide/setup/server/cloud-hosting) +* [مشاركة](https://docs.triliumnotes.org/user-guide/advanced-usage/sharing) + الملاحظات (نشرها) على شبكة الإنترنت العامة +* [تشفير الملاحظات] + (https://docs.triliumnotes.org/user-guide/concepts/notes/protected-notes) + تشفير قوي مع إمكانية التحكم بكل ملاحظة على حدة +* رسم المخططات، بالاعتماد على إكسكاليدرا [Excalidraw](https://excalidraw.com/) + (نوع الملاحظة "لوحة رسم") +* [خرائط + العلاقات](https://docs.triliumnotes.org/user-guide/note-types/relation-map) + و[خرائط الملاحظات + والروابط](https://docs.triliumnotes.org/user-guide/note-types/note-map) لتصور + الملاحظات وارتباطاتها بصرياً +* الخرائط الذهنية، بالاعتماد على مايند إليكسر [Mind + Elixir](https://docs.mind-elixir.com/) +* "[الخرائط + الجغرافية](https://docs.triliumnotes.org/user-guide/collections/geomap) مع + دبابيس الموقع ومسارات GPX (GPX = تنسيق تبادل بيانات نظام تحديد المواقع + العالمي) +* [البرمجة النصية](https://docs.triliumnotes.org/user-guide/scripts) - راجع + [نماذج العرض + المتقدمة](https://docs.triliumnotes.org/user-guide/advanced-usage/advanced-showcases) * [واجهة REST API](https://docs.triliumnotes.org/user-guide/advanced-usage/etapi) للأتمتة * Scales well in both usability and performance upwards of 100 000 notes diff --git a/docs/README-ga.md b/docs/README-ga.md new file mode 100644 index 0000000000..42d3ee6e1b --- /dev/null +++ b/docs/README-ga.md @@ -0,0 +1,355 @@ +
    + Special thanks to:
    + + Warp sponsorship
    + Warp, built for coding with multiple AI agents
    +
    + Available for macOS, Linux and Windows +
    + +
    + +# Trilium Notes + +![Urraitheoirí GitHub](https://img.shields.io/github/sponsors/eliandoran) +![Pátrúin LiberaPay](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Tarraingtí Docker](https://img.shields.io/docker/pulls/triliumnext/trilium) +![Íoslódálacha GitHub (gach sócmhainn, gach +eisiúint)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Stádas +aistriúcháin](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + + + +[Chinese (Simplified Han script)](./README-ZH_CN.md) | [Chinese (Traditional Han +script)](./README-ZH_TW.md) | [English](../README.md) | [French](./README-fr.md) +| [German](./README-de.md) | [Greek](./README-el.md) | [Italian](./README-it.md) +| [Japanese](./README-ja.md) | [Romanian](./README-ro.md) | +[Spanish](./README-es.md) + + +Is feidhmchlár saor in aisce agus foinse oscailte, tras-ardán, ordlathach é +Trilium Notes chun nótaí a thógáil le fócas ar bhunachair mhóra eolais +phearsanta a thógáil. + +Trilium Screenshot + +## ⏬ Íoslódáil +- [An leagan is déanaí](https://github.com/TriliumNext/Trilium/releases/latest) + – leagan cobhsaí, molta do fhormhór na n-úsáideoirí. +- [Tógáil oíche](https://github.com/TriliumNext/Trilium/releases/tag/nightly) – + leagan forbartha éagobhsaí, a nuashonraítear go laethúil leis na gnéithe agus + na socruithe is déanaí. + +## 📚 Doiciméadú + +**Tabhair cuairt ar ár ndoiciméadacht chuimsitheach ag +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Tá ár ndoiciméadacht ar fáil i bhformáidí éagsúla: +- **Doiciméadacht Ar Líne**: Brabhsáil an doiciméadacht iomlán ag + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **Cabhair san Aip**: Brúigh `F1` laistigh de Trilium chun rochtain a fháil ar + an doiciméadacht chéanna go díreach san fheidhmchlár +- **GitHub**: Nascleanúint tríd an [Treoir + Úsáideora](./User%20Guide/User%20Guide/) sa stórlann seo + +### Naisc Thapa +- [Treoir Tosaithe](https://docs.triliumnotes.org/) +- [Treoracha Suiteála](https://docs.triliumnotes.org/user-guide/setup) +- [Socrú + Docker](https://docs.triliumnotes.org/user-guide/setup/server/installation/docker) +- [Uasghrádú + TriliumNext](https://docs.triliumnotes.org/user-guide/setup/upgrading) +- [Coincheapa agus Gnéithe + Bunúsacha](https://docs.triliumnotes.org/user-guide/concepts/notes) +- [Patrúin de Bhunachar Eolais + Phearsanta](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) + +## 🎁 Gnéithe + +* Is féidir nótaí a shocrú i gcrann domhain treallach. Is féidir nóta aonair a + chur in áiteanna éagsúla sa chrann (féach + [clónáil](https://docs.triliumnotes.org/user-guide/concepts/notes/cloning)) +* Eagarthóir nótaí WYSIWYG saibhir lena n-áirítear táblaí, íomhánna agus + [matamaitic](https://docs.triliumnotes.org/user-guide/note-types/text) le + marcáil síos + [autoformat](https://docs.triliumnotes.org/user-guide/note-types/text/markdown-formatting) +* Tacaíocht le haghaidh eagarthóireacht [nótaí le cód + foinse](https://docs.triliumnotes.org/user-guide/note-types/code), lena + n-áirítear aibhsiú comhréire +* Nascleanúint thapa agus éasca idir + nótaí(https://docs.triliumnotes.org/user-guide/concepts/navigation/note-navigation), + cuardach téacs iomlán agus [ardú + nótaí](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-hoisting) +* Gan uaim [leaganú + nótaí](https://docs.triliumnotes.org/user-guide/concepts/notes/note-revisions) +* Is féidir nótaí + [tréithe](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) + a úsáid chun nótaí a eagrú, fiosrúcháin a dhéanamh agus [scriptiú] + ardleibhéil(https://docs.triliumnotes.org/user-guide/scripts) +* Tá an comhéadan úsáideora ar fáil i mBéarla, i nGearmáinis, i Spáinnis, i + bhFraincis, i Rómáinis, agus i Sínis (simplithe agus traidisiúnta) +* Díreach [Comhtháthú OpenID agus + TOTP](https://docs.triliumnotes.org/user-guide/setup/server/mfa) le haghaidh + logáil isteach níos sláine +* [Sioncrónú](https://docs.triliumnotes.org/user-guide/setup/synchronization) le + freastalaí sioncrónaithe féinóstáilte + * tá [seirbhísí tríú páirtí ann chun freastalaí sioncrónaithe a + óstáil](https://docs.triliumnotes.org/user-guide/setup/server/cloud-hosting) +* Nótaí [Ag + roinnt](https://docs.triliumnotes.org/user-guide/advanced-usage/sharing) (ag + foilsiú) ar an idirlíon poiblí +* [Criptiú nótaí] + láidir(https://docs.triliumnotes.org/user-guide/concepts/notes/protected-notes) + le mionsonraí in aghaidh an nóta +* Léaráidí sceitseála, bunaithe ar [Excalidraw](https://excalidraw.com/) + (tabhair faoi deara cineál "canbhás") +* [Léarscáileanna + caidrimh](https://docs.triliumnotes.org/user-guide/note-types/relation-map) + agus [léarscáileanna + nótaí/naisc](https://docs.triliumnotes.org/user-guide/note-types/note-map) + chun nótaí agus a gcaidrimh a léirshamhlú +* Léarscáileanna intinne, bunaithe ar [Mind + Elixir](https://docs.mind-elixir.com/) +* [Léarscáileanna + geo](https://docs.triliumnotes.org/user-guide/collections/geomap) le bioráin + suímh agus rianta GPX +* [Scriptiú](https://docs.triliumnotes.org/user-guide/scripts) - féach + [Taispeántais + Ardleibhéil](https://docs.triliumnotes.org/user-guide/advanced-usage/advanced-showcases) +* [REST API](https://docs.triliumnotes.org/user-guide/advanced-usage/etapi) le + haghaidh uathoibrithe +* Scálann go maith i dtéarmaí inúsáidteachta agus feidhmíochta araon os cionn + 100,000 nóta +* Tadhall-optamaithe [comhéadan soghluaiste] + (https://docs.triliumnotes.org/user-guide/setup/mobile-frontend) le haghaidh + fóin chliste agus táibléad +* Téama dorcha + ionsuite(https://docs.triliumnotes.org/user-guide/concepts/themes), tacaíocht + do théamaí úsáideora +* [Evernote](https://docs.triliumnotes.org/user-guide/concepts/import-export/evernote) + agus [Iompórtáil & Easpórtáil + Markdown](https://docs.triliumnotes.org/user-guide/concepts/import-export/markdown) +* [Gearrthóir + Gréasáin](https://docs.triliumnotes.org/user-guide/setup/web-clipper) le + haghaidh sábháil éasca ar ábhar gréasáin +* Comhéadan úsáideora saincheaptha (cnaipí taobhbharra, giuirléidí sainithe ag + an úsáideoir, ...) +* [Metrics](https://docs.triliumnotes.org/user-guide/advanced-usage/metrics), + mar aon le Painéal Grafana. + +✨ Féach ar na hacmhainní/pobail tríú páirtí seo a leanas le haghaidh tuilleadh +earraí gaolmhara le TriliumNext: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) le haghaidh + téamaí, scripteanna, breiseáin agus tuilleadh ó thríú páirtithe. +- [TriliumRocks!](https://trilium.rocks/) le haghaidh ranganna teagaisc, + treoracha, agus i bhfad níos mó. + +## ❓Cén fáth TriliumNext? + +Bhronn forbróir bunaidh Trilium ([Zadam](https://github.com/zadam)) stórlann +Trilium go fial ar an tionscadal pobail atá le fáil ag +https://github.com/TriliumNext + +### ⬆️Ag dul ar imirce ó Zadam/Trilium? + +Níl aon chéimeanna imirce speisialta ann chun imirce ó shampla zadam/Trilium go +sampla TriliumNext/Trilium. Níl le déanamh ach [TriliumNext/Trilium a +shuiteáil](#-installation) mar is gnách agus úsáidfidh sé do bhunachar sonraí +atá ann cheana féin. + +Tá leaganacha suas go dtí agus lena n-áirítear +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) +comhoiriúnach leis an leagan is déanaí de zadam/trilium de +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Méadaítear +leaganacha sioncrónaithe aon leaganacha níos déanaí de TriliumNext/Trilium rud a +chuireann cosc ar aistriú díreach. + +## 💬 Pléigh linn + +Ná bíodh drogall ort páirt a ghlacadh inár gcomhráite oifigiúla. Ba bhreá linn +cloisteáil faoi na gnéithe, na moltaí nó na fadhbanna a d'fhéadfadh a bheith +agat! + +- [Maitrís](https://matrix.to/#/#triliumnext:matrix.org) (Le haghaidh plé + sioncrónach.) + - Tá droichead idir seomra an Mhaitrís `Ginearálta` agus + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) freisin +- [Plé Github](https://github.com/TriliumNext/Trilium/discussions) (Le haghaidh + plé neamhshioncrónach.) +- [Fadhbanna Github](https://github.com/TriliumNext/Trilium/issues) (Le haghaidh + tuairiscí fabhtanna agus iarratais ar ghnéithe.) + +## 🏗 Suiteáil + +### Windows / MacOS + +Íoslódáil an scaoileadh dénártha do d'ardán ón [leathanach scaoileadh is +déanaí](https://github.com/TriliumNext/Trilium/releases/latest), dízipeáil an +pacáiste agus rith an comhad inrite `trilium`. + +### Linux + +Más liostaithe sa tábla thíos atá do dháileadh, bain úsáid as pacáiste do +dháilte. + +[![Stádas +pacáistithe](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +Féadfaidh tú an scaoileadh dénártha do d'ardán a íoslódáil ón [leathanach +scaoileadh is déanaí](https://github.com/TriliumNext/Trilium/releases/latest) +freisin, an pacáiste a dhízipeáil agus an comhad inrite `trilium` a rith. + +Cuirtear TriliumNext ar fáil mar Flatpak freisin, ach níl sé foilsithe ar +FlatHub go fóill. + +### Brabhsálaí (aon chóras oibriúcháin) + +Má úsáideann tú suiteáil freastalaí (féach thíos), is féidir leat rochtain +dhíreach a fháil ar an gcomhéadan gréasáin (atá beagnach mar an gcéanna leis an +aip deisce). + +Faoi láthair ní thacaítear (agus déantar tástáil ar) ach leis na leaganacha is +déanaí de Chrome agus Firefox. + +### Soghluaiste + +Chun TriliumNext a úsáid ar ghléas soghluaiste, is féidir leat brabhsálaí +gréasáin soghluaiste a úsáid chun rochtain a fháil ar chomhéadan soghluaiste +suiteála freastalaí (féach thíos). + +Féach ar an eagrán https://github.com/TriliumNext/Trilium/issues/4962 le +haghaidh tuilleadh eolais faoi thacaíocht d’aipeanna soghluaiste. + +Más fearr leat aip dhúchasach Android, is féidir leat +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid) +a úsáid. Tuairiscigh fabhtanna agus gnéithe atá ar iarraidh ag [a +stór](https://github.com/FliegendeWurst/TriliumDroid). Tabhair faoi deara: Is +fearr nuashonruithe uathoibríocha a dhíchumasú ar do shuiteáil freastalaí (féach +thíos) agus TriliumDroid in úsáid agat ós rud é go gcaithfidh an leagan +sioncrónaithe a bheith mar an gcéanna idir Trilium agus TriliumDroid. + +### Freastalaí + +Chun TriliumNext a shuiteáil ar do fhreastalaí féin (lena n-áirítear trí Docker +ó [Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) lean [na doiciméid +suiteála freastalaí](https://docs.triliumnotes.org/user-guide/setup/server). + + +## 💻 Cuir leis + +### Aistriúcháin + +Más cainteoir dúchais thú, cabhraigh linn Trilium a aistriú trí dhul chuig ár +[leathanach Weblate](https://hosted.weblate.org/engage/trilium/). + +Seo an clúdach teanga atá againn go dtí seo: + +[![Stádas +aistriúcháin](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Cód + +Íoslódáil an stórlann, suiteáil spleáchais ag baint úsáide as `pnpm` agus ansin +rith an freastalaí (ar fáil ag http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Doiciméadú + +Íoslódáil an stórlann, suiteáil spleáchais ag baint úsáide as `pnpm` agus ansin +rith an timpeallacht atá riachtanach chun an doiciméadú a chur in eagar: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Ag Tógáil an Inrite +Íoslódáil an stórlann, suiteáil spleáchais ag baint úsáide as `pnpm` agus ansin +tóg an aip deisce do Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +Le haghaidh tuilleadh sonraí, féach ar na [doiciméid +forbartha](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Doiciméadacht Forbróra + +Féach ar an [treoir +dhoiciméadúcháin](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +le haghaidh tuilleadh sonraí. Má tá tuilleadh ceisteanna agat, bíodh leisce ort +teagmháil a dhéanamh linn trí na naisc a bhfuil cur síos orthu sa chuid "Pléigh +Linn" thuas. + +## 👏 Glaonna amach + +* [zadam](https://github.com/zadam) as an gcoincheap bunaidh agus cur i bhfeidhm + an fheidhmchláir. +* [Sarah Hussein](https://github.com/Sarah-Hussein) as dearadh dheilbhín an + fheidhmchláir. +* [nriver](https://github.com/nriver) as a chuid oibre ar an idirnáisiúnú. +* [Thomas Frei](https://github.com/thfrei) as a shaothar bunaidh ar an Chanbhás. +* [antoniotejada](https://github.com/nriver) don ghiuirléid aibhsithe comhréire + bunaidh. +* [Dosu](https://dosu.dev/) as na freagraí uathoibrithe a sholáthar dúinn ar + shaincheisteanna agus ar phlé GitHub. +* [Deilbhíní Tábla](https://tabler.io/icons) do na deilbhíní sa tráidire córais. + +Ní bheadh Trilium indéanta gan na teicneolaíochtaí atá taobh thiar de: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - an t-eagarthóir amhairc + atá taobh thiar de nótaí téacs. Táimid buíoch as sraith de na gnéithe préimhe + a bheith curtha ar fáil dúinn. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - eagarthóir cóid le + tacaíocht do líon ollmhór teangacha. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - an clár bán gan + teorainn a úsáidtear i nótaí Canvas. +* [Intinn Elixir](https://github.com/SSShooter/mind-elixir-core) - ag soláthar + feidhmiúlacht léarscáil intinne. +* [Bileog](https://github.com/Leaflet/Leaflet) - le haghaidh léarscáileanna + geografacha a léiriú. +* [Tábla](https://github.com/olifolkerd/tabulator) - don tábla idirghníomhach a + úsáidtear i mbailiúcháin. +* [FancyTree](https://github.com/mar10/fancytree) - leabharlann crann lán + gnéithe gan iomaíocht cheart. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - leabharlann nascachta amhairc. + Úsáidte i [léarscáileanna + caidrimh](https://docs.triliumnotes.org/user-guide/note-types/relation-map) + agus [léarscáileanna + nasc](https://docs.triliumnotes.org/user-guide/advanced-usage/note-map#link-map) + +## 🤝 Tacaíocht + +Tógtar agus cothaítear Trilium le [na céadta uair an chloig +oibre](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Coinníonn +do thacaíocht é foinse oscailte, feabhsaíonn sé gnéithe, agus clúdaíonn sé +costais amhail óstáil. + +Smaoinigh ar thacaíocht a thabhairt don phríomhfhorbróir +([eliantoran](https://github.com/eliandoran)) den fheidhmchlár trí: + +- [Urraitheoirí GitHub](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Ceannaigh Caife Dom](https://buymeacoffee.com/eliandoran) + +## 🔑 Ceadúnas + +Cóipcheart 2017-2025 zadam, Elian Doran, agus rannpháirtithe eile + +Is bogearraí saor in aisce an clár seo: is féidir leat é a athdháileadh agus/nó +a mhodhnú faoi théarmaí Cheadúnas Poiblí Ginearálta GNU Affero mar atá foilsithe +ag an bhFondúireacht Bogearraí Saor in Aisce, cibé acu leagan 3 den Cheadúnas, +nó (de réir do rogha féin) aon leagan níos déanaí. diff --git a/docs/README-nb_NO.md b/docs/README-nb_NO.md index f4ebb15319..43e29db665 100644 --- a/docs/README-nb_NO.md +++ b/docs/README-nb_NO.md @@ -76,21 +76,21 @@ Vår dokumentasjon er tilgjengelig i flere format: * Support for editing [notes with source code](https://docs.triliumnotes.org/user-guide/note-types/code), including syntax highlighting -* Fast and easy [navigation between - notes](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-navigation), - full text search and [note - hoisting](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-hoisting) +* Rask og enkel [navigering mellom + notater](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-navigation), + fulltekstsøk og + [notat-fokusering](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-hoisting) * Sømløs [notathistorikk](https://docs.triliumnotes.org/user-guide/concepts/notes/note-revisions) -* Note - [attributes](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) - can be used for note organization, querying and advanced - [scripting](https://docs.triliumnotes.org/user-guide/scripts) -* UI available in English, German, Spanish, French, Romanian, and Chinese - (simplified and traditional) -* Direct [OpenID and TOTP - integration](https://docs.triliumnotes.org/user-guide/setup/server/mfa) for - more secure login +* Notaters + [attributter](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) + kan brukes til å organisere notater, utføre spørringer og avansert + [skripting](https://docs.triliumnotes.org/user-guide/scripts) +* Brukergrensesnitt tilgjengelig på Engelsk, Tysk, Spansk, Fransk, Rumensk, og + Kinesisk (forenklet og tradisjonell) +* Direkte [OpenID og + TOTP-integrasjon](https://docs.triliumnotes.org/user-guide/setup/server/mfa) + for sikrere pålogging * [Synkronisering](https://docs.triliumnotes.org/user-guide/setup/synchronization) med selv-hostet sync server * there are [3rd party services for hosting synchronisation diff --git a/docs/README-pl.md b/docs/README-pl.md index 3b39b1e02f..73a83f8fb0 100644 --- a/docs/README-pl.md +++ b/docs/README-pl.md @@ -35,7 +35,7 @@ wiedzy. Trilium Screenshot -## ⏬ Pobierz +## ⏬ Pobieranie - [Ostatnie wydanie](https://github.com/TriliumNext/Trilium/releases/latest) – stabilna wersja, polecane dla większości użytkowników. - [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) - @@ -48,7 +48,7 @@ wiedzy. [docs.triliumnotes.org](https://docs.triliumnotes.org/)** Nasza dokumentacja jest dostępna w wielu formatach: -- **Dokumentacja Online**: Pełna dokumentacja dostępna pod +- **Dokumentacja Online**: Pełna dokumentacja dostępna na [docs.triliumnotes.org](https://docs.triliumnotes.org/) - **Pomoc w aplikacji**: Naciśnij `F1` w Trilium, aby uzyskać dostęp do tej samej dokumentacji bezpośrednio w aplikacji @@ -64,15 +64,15 @@ Nasza dokumentacja jest dostępna w wielu formatach: TriliumNext](https://docs.triliumnotes.org/user-guide/setup/upgrading) - [Podstawowe koncepcje i funkcjonalność](https://docs.triliumnotes.org/user-guide/concepts/notes) -- [Wzorce Bazy Wiedzy - Osobistej](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) +- [Wzorce osobistej Bazy + Wiedzy](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) ## 🎁 Funkcjonalność * Notatki mogą być zorganizowane w drzewa dowolnej głębokości. Pojedyncza notatka może być umieszczona w wielu miejscach w drzewie (patrz [klonowanie](https://docs.triliumnotes.org/user-guide/concepts/notes/cloning)) -* Bogaty edytor notatek WYSIWYG, zawierający np. tabele, obrazy i +* Bogato wyposażony edytor notatek WYSIWYG, zawierający np. tabele, obrazy i [matematykę](https://docs.triliumnotes.org/user-guide/note-types/text) z [autoformat](https://docs.triliumnotes.org/user-guide/note-types/text/markdown-formatting) Markdown @@ -83,7 +83,7 @@ Nasza dokumentacja jest dostępna w wielu formatach: notatkach](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-navigation), wyszukiwanie po pełnym tekście i[wyróżnienie notatki](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-hoisting) -* Płynne [aktualizowanie wersji +* Bezproblemowe [aktualizowanie wersji notatki](https://docs.triliumnotes.org/user-guide/concepts/notes/note-revisions) * [Atrybuty](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) notatki mogą być użyte dla jej organizacji, wyszukiwania i użycia @@ -113,7 +113,7 @@ Nasza dokumentacja jest dostępna w wielu formatach: * [Mapy geograficzne](https://docs.triliumnotes.org/user-guide/collections/geomap) z oznaczeniami lokalizacji i trasami GPX -* [Skryptowanie](https://docs.triliumnotes.org/user-guide/scripts) – patrz +* [Skrypty](https://docs.triliumnotes.org/user-guide/scripts) – patrz [zaawansowane przykłady](https://docs.triliumnotes.org/user-guide/advanced-usage/advanced-showcases) * [REST API](https://docs.triliumnotes.org/user-guide/advanced-usage/etapi) do @@ -209,7 +209,7 @@ interfejsu webowego, niemal identycznego z aplikacją desktopową. Aktualnie wspierane i testowane są tylko najnowsze wersje Chrome i Firefox. -### Mobile +### Urządzenia mobilne Aby korzystać z TriliumNext na urządzeniu mobilnym, możesz użyć mobilnej przeglądarki internetowej, aby uzyskać dostęp do mobilnego interfejsu instalacji @@ -295,9 +295,8 @@ W razie dodatkowych pytań możesz skorzystać z linków podanych w sekcji implementację aplikacji. * [Sarah Hussein](https://github.com/Sarah-Hussein) za zaprojektowanie ikony aplikacji. -* [nriver](https://github.com/nriver) za prace nad internacjonalizacją. -* [Thomas Frei](https://github.com/thfrei) za pierwotne prace nad Płótnem ( - Canvas ). +* [nriver](https://github.com/nriver) za prace nad wersjami językowymi. +* [Thomas Frei](https://github.com/thfrei) za pierwotne prace nad Canvas. * [antoniotejada](https://github.com/nriver) za pierwotny widżet podświetlania składni. * [Dosu](https://dosu.dev/) za stworzenie rozwiązania umożliwiającego diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index 55cfaa0fab..df7c61602d 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -1480,31 +1480,87 @@ { "type": "relation", "name": "internalLink", - "value": "WOcw2SLH6tbX", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "nRqcgfTb97uV", + "value": "YtSN43OrfzaA", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "bwg0e8ewQMak", + "value": "Ms1nauBra7gq", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 40 }, + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "3seOhtN8uLIY", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "luNhaphA37EO", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IjZS7iK5EXtb", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "nRqcgfTb97uV", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 120 + }, { "type": "label", "name": "shareAlias", @@ -1522,7 +1578,16 @@ ], "format": "markdown", "dataFileName": "Mobile Frontend.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "JRliU5bOLszn", + "title": "IMG_1765.PNG", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Mobile Frontend_IMG_1765.PNG" + } + ] }, { "isClone": false, @@ -2780,6 +2845,20 @@ "isInheritable": false, "position": 30 }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 50 + }, { "type": "label", "name": "iconClass", @@ -2821,6 +2900,14 @@ "mime": "image/png", "position": 10, "dataFileName": "2_Tabs_image.png" + }, + { + "attachmentId": "rFdKVhoVtsLA", + "title": "IMG_1767.PNG", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Tabs_IMG_1767.PNG" } ] }, @@ -5243,6 +5330,20 @@ "type": "text", "mime": "text/markdown", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 20 + }, { "type": "label", "name": "shareAlias", @@ -5260,24 +5361,7 @@ ], "format": "markdown", "dataFileName": "Bookmarks.md", - "attachments": [ - { - "attachmentId": "99dD0P74W8QJ", - "title": "bookmark-folder.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Bookmarks_bookmark-folder.png" - }, - { - "attachmentId": "9dX71aLlSl9R", - "title": "bookmarks.gif", - "role": "image", - "mime": "image/gif", - "position": 10, - "dataFileName": "Bookmarks_bookmarks.gif" - } - ] + "attachments": [] }, { "isClone": false, @@ -5965,7 +6049,16 @@ ], "format": "markdown", "dataFileName": "Icon Packs.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "CPieIjN3b77m", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Icon Packs_image.png" + } + ] } ] }, diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md b/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md index cb68dab93d..89f1445ecd 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md @@ -39,4 +39,4 @@ This is a list of labels that Trilium natively supports. > [!TIP] > Some labels presented here end with a `*`. That means that there are multiple labels with the same prefix, consult the specific page linked in the description of that label for more information. -
    LabelDescription
    disableVersioningDisables automatic creation of Note Revisions for a particular note. Useful for e.g. large, but unimportant notes - e.g. large JS libraries used for scripting.
    versioningLimitLimits the maximum number of Note Revisions for a particular note, overriding the global settings.
    calendarRootMarks the note which should be used as root for Day Notes. Only one should be marked as such.
    archivedHides notes from default search results and dialogs. Archived notes can optionally be hidden in the Note Tree.
    excludeFromExportExcludes this note and its children when exporting.
    run, runOnInstance, runAtHourSee Events.
    disableInclusionScripts with this label won't be included into parent script execution.
    sorted

    Keeps child notes sorted by title alphabetically.

    When given a value, it will sort by the value of another label instead. If one of the child notes doesn't have the specified label, the title will be used for them instead.

    sortDirection

    If sorted is applied, specifies the direction of the sort:

    • ASC, ascending (default)
    • DESC, descending
    sortFoldersFirstIf sorted is applied, folders (notes with children) will be sorted as a group at the top, and the rest will be sorted.
    topIf sorted is applied to the parent note, keeps given note on top in its parent.
    hidePromotedAttributesHide Promoted Attributes on this note. Generally useful when defining inherited attributes, but the parent note doesn't need them.
    readOnlyMarks a note to be always be read-only, if it's a supported note (text, code, mermaid).
    autoReadOnlyDisabledDisables automatic read-only mode for the given note.
    appCssMarks CSS notes which are loaded into the Trilium application and can thus be used to modify Trilium's looks. See Custom app-wide CSS for more info.
    appThemeMarks CSS notes which are full Trilium themes and are thus available in Trilium options. See Theme development for more information.
    appThemeBaseSet to next, next-light, or next-dark to use the corresponding TriliumNext theme (auto, light or dark) as the base for a custom theme, instead of the legacy one. See Customize the Next theme for more information.
    cssClassValue of this label is then added as CSS class to the node representing given note in the Note Tree. This can be useful for advanced theming. Can be used in template notes.
    iconClassvalue of this label is added as a CSS class to the icon on the tree which can help visually distinguish the notes in the tree. Example might be bx bx-home - icons are taken from boxicons. Can be used in template notes.
    pageSizeSpecifies the number of items per page in Note List.
    customRequestHandlerSee Custom Request Handler.
    customResourceProviderSee Custom Resource Providers.
    widgetMarks this note as a custom widget which will be added to the Trilium component tree. See Custom Widgets for more information.
    searchHomeNew search notes will be created as children of this note (see Saved Search).
    workspace and related attributesSee Workspaces.
    inboxdefault inbox location for new notes - when you create a note using new note button in the sidebar, notes will be created as child notes in the note marked as with #inbox label.
    sqlConsoleHomeDefault location of SQL Console notes
    bookmarkedIndicates this note is a bookmark.
    bookmarkFolderNote with this label will appear in bookmarks as folder (allowing access to its children). See Bookmarks for more information.
    share*See the attribute reference in Sharing.
    displayRelations, hideRelationsComma delimited names of relations which should be displayed/hidden in a Relation Map (both the note type and the Note Map (Link map, Tree map) general functionality).
    titleTemplate

    Default title of notes created as children of this note. This value is evaluated as a JavaScript string and thus can be enriched with dynamic content via the injected now and parentNote variables.

    Examples:

    • \({parentNote.getLabel('authorName')}'s literary works
    • Log for \){now.format('YYYY-MM-DD HH:mm:ss')}
    • to mirror the parent's template.

    See Default Note Title for more info.

    templateThis note will appear in the selection of available template when creating new note. See Templates for more information.
    tocControls the display of the Table of contents for a given note. #toc or #toc=show to always display the table of contents, #toc=false to always hide it.
    colordefines color of the note in note tree, links etc. Use any valid CSS color value like 'red' or #a13d5f
    Note: this color may be automatically adjusted when displayed to ensure sufficient contrast with the background.
    keyboardShortcutDefines a keyboard shortcut which will immediately jump to this note. Example: 'ctrl+alt+e'. Requires frontend reload for the change to take effect.
    keepCurrentHoistingOpening this link won't change hoisting even if the note is not displayable in the current hoisted subtree.
    executeButtonTitle of the button which will execute the current code note
    executeDescriptionLonger description of the current code note displayed together with the execute button
    excludeFromNoteMapNotes with this label will be hidden from the Note Map.
    newNotesOnTopNew notes will be created at the top of the parent note, not on the bottom.
    hideHighlightWidgetHides the Highlights list widget
    hideChildrenOverviewHides the Note List for that particular note.
    printLandscapeWhen exporting to PDF, changes the orientation of the page to landscape instead of portrait.
    printPageSizeWhen exporting to PDF, changes the size of the page. Supported values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.
    geolocationIndicates the latitude and longitude of a note, to be displayed in a Geo Map.
    calendar:*Defines specific options for the Calendar View.
    viewTypeSets the view of child notes (e.g. grid or list). See Note List for more information.
    \ No newline at end of file +
    LabelDescription
    disableVersioningDisables automatic creation of Note Revisions for a particular note. Useful for e.g. large, but unimportant notes - e.g. large JS libraries used for scripting.
    versioningLimitLimits the maximum number of Note Revisions for a particular note, overriding the global settings.
    calendarRootMarks the note which should be used as root for Day Notes. Only one should be marked as such.
    archivedHides notes from default search results and dialogs. Archived notes can optionally be hidden in the Note Tree.
    excludeFromExportExcludes this note and its children when exporting.
    run, runOnInstance, runAtHourSee Events.
    disableInclusionScripts with this label won't be included into parent script execution.
    sorted

    Keeps child notes sorted by title alphabetically.

    When given a value, it will sort by the value of another label instead. If one of the child notes doesn't have the specified label, the title will be used for them instead.

    sortDirection

    If sorted is applied, specifies the direction of the sort:

    • ASC, ascending (default)
    • DESC, descending
    sortFoldersFirstIf sorted is applied, folders (notes with children) will be sorted as a group at the top, and the rest will be sorted.
    topIf sorted is applied to the parent note, keeps given note on top in its parent.
    hidePromotedAttributesHide Promoted Attributes on this note. Generally useful when defining inherited attributes, but the parent note doesn't need them.
    readOnlyMarks a note to be always be read-only, if it's a supported note (text, code, mermaid).
    autoReadOnlyDisabledDisables automatic read-only mode for the given note.
    appCssMarks CSS notes which are loaded into the Trilium application and can thus be used to modify Trilium's looks. See Custom app-wide CSS for more info.
    appThemeMarks CSS notes which are full Trilium themes and are thus available in Trilium options. See Theme development for more information.
    appThemeBaseSet to next, next-light, or next-dark to use the corresponding TriliumNext theme (auto, light or dark) as the base for a custom theme, instead of the legacy one. See Customize the Next theme for more information.
    cssClassValue of this label is then added as CSS class to the node representing given note in the Note Tree. This can be useful for advanced theming. Can be used in template notes.
    iconClassvalue of this label is added as a CSS class to the icon on the tree which can help visually distinguish the notes in the tree. Example might be bx bx-home - icons are taken from boxicons. Can be used in template notes.
    pageSizeSpecifies the number of items per page in Note List.
    customRequestHandlerSee Custom Request Handler.
    customResourceProviderSee Custom Resource Providers.
    widgetMarks this note as a custom widget which will be added to the Trilium component tree. See Custom Widgets for more information.
    searchHomeNew search notes will be created as children of this note (see Saved Search).
    workspace and related attributesSee Workspaces.
    inboxdefault inbox location for new notes - when you create a note using new note button in the sidebar, notes will be created as child notes in the note marked as with #inbox label.
    sqlConsoleHomeDefault location of SQL Console notes
    bookmarkedIndicates this note is a bookmark.
    bookmarkFolderNote with this label will appear in bookmarks as folder (allowing access to its children). See Bookmarks for more information.
    share*See the attribute reference in Sharing.
    displayRelations, hideRelationsComma delimited names of relations which should be displayed/hidden in a Relation Map (both the note type and the Note Map (Link map, Tree map) general functionality).
    titleTemplate

    Default title of notes created as children of this note. This value is evaluated as a JavaScript string and thus can be enriched with dynamic content via the injected now and parentNote variables.

    Examples:

    • \({parentNote.getLabel('authorName')}'s literary works
    • Log for \){now.format('YYYY-MM-DD HH:mm:ss')}
    • to mirror the parent's template.

    See Default Note Title for more info.

    templateThis note will appear in the selection of available template when creating new note. See Templates for more information.
    tocControls the display of the Table of contents for a given note. #toc or #toc=show to always display the table of contents, #toc=false to always hide it.
    colordefines color of the note in note tree, links etc. Use any valid CSS color value like 'red' or #a13d5f
    Note: this color may be automatically adjusted when displayed to ensure sufficient contrast with the background.
    keyboardShortcutDefines a keyboard shortcut which will immediately jump to this note. Example: 'ctrl+alt+e'. Requires frontend reload for the change to take effect.
    keepCurrentHoistingOpening this link won't change hoisting even if the note is not displayable in the current hoisted subtree.
    executeButtonTitle of the button which will execute the current code note
    executeDescriptionLonger description of the current code note displayed together with the execute button
    excludeFromNoteMapNotes with this label will be hidden from the Note Map.
    newNotesOnTopNew notes will be created at the top of the parent note, not on the bottom.
    hideHighlightWidgetHides the Highlights list widget
    hideChildrenOverviewHides the Note List for that particular note.
    subtreeHiddenHides all child notes of this note from the tree, displaying a badge with the count of hidden children. Children remain accessible via search or direct links.
    printLandscapeWhen exporting to PDF, changes the orientation of the page to landscape instead of portrait.
    printPageSizeWhen exporting to PDF, changes the size of the page. Supported values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.
    geolocationIndicates the latitude and longitude of a note, to be displayed in a Geo Map.
    map:*Defines specific options for the Geo Map.
    calendar:*Defines specific options for the Calendar View.
    viewTypeSets the view of child notes (e.g. grid or list). See Note List for more information.
    \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Nightly release.md b/docs/User Guide/User Guide/Advanced Usage/Nightly release.md index c9c2aac095..3ef005cd57 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Nightly release.md +++ b/docs/User Guide/User Guide/Advanced Usage/Nightly release.md @@ -21,9 +21,9 @@ Depending on your use case, you can either test the portable version or even use This is pretty useful if you are a beta tester that wants to periodically update their version: -On Ubuntu: +## On Ubuntu (Bash) -``` +```sh #!/usr/bin/env bash name=TriliumNotes-linux-x64-nightly.deb @@ -31,4 +31,34 @@ rm -f $name* wget https://github.com/TriliumNext/Trilium/releases/download/nightly/$name sudo apt-get install ./$name rm $name +``` + +## On Windows (PowerShell) + +```powershell +if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { + $arch = "arm64"; +} else { + $arch = "x64"; +} + +$exeUrl = "https://github.com/TriliumNext/Trilium/releases/download/nightly/TriliumNotes-main-windows-$($arch).exe"; +Write-Host "Downloading $($exeUrl)" + +# Generate a unique path in the temp dir +$guid = [guid]::NewGuid().ToString() +$destination = Join-Path -Path $env:TEMP -ChildPath "$guid.exe" + +try { + $ProgressPreference = 'SilentlyContinue' + Invoke-WebRequest -Uri $exeUrl -OutFile $destination + $process = Start-Process -FilePath $destination +} catch { + Write-Error "An error occurred: $_" +} finally { + # Clean up + if (Test-Path $destination) { + Remove-Item -Path $destination -Force + } +} ``` \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md index 79a61e4ad0..332ec24172 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md @@ -1,12 +1,18 @@ # Bookmarks -To easily access selected notes, you can bookmark them. See demo: +Frequently used notes can be bookmarked, which will make them appear in the Launch Bar for easy access. -![](Bookmarks_bookmarks.gif) +## Configuring the launch bar + +If bookmarks don't appear in the launch bar, then most likely the bookmark section has been hidden. Go to the Launch Bar configuration from the Global menu and ensure _Bookmarks_ is in the _Visible Launchers_ section. ## Bookmark folder Space in the left panel is limited, and you might want to bookmark many items. One possible solution is to bookmark a folder, so it shows its children: -![](Bookmarks_bookmark-folder.png) +To do this, bookmark a folder and assign it the `#bookmarkFolder` label. -To do this, you need to add a `#bookmarkFolder` label to the note. \ No newline at end of file +## Mobile + +On mobile, bookmarks are only displayed starting with v0.102.0. Because of the more constrained screen size, the bookmarks are grouped under a single icon instead of displaying them as separate icons. + +When pressed, a menu will appear listing all the bookmarks. Bookmark folders are also supported and will appear as sub-menus. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmark-folder.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmark-folder.png deleted file mode 100644 index 48e9a4af59..0000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmark-folder.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmarks.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmarks.gif deleted file mode 100644 index 20fca913f4..0000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmarks.gif and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs.md b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs.md index 8b2f0a84e3..e493ce2fab 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs.md @@ -1,12 +1,23 @@ # Icon Packs -## Importing an existing icon pack +> [!IMPORTANT] +> This feature is still in preview and is available only in the [nightly release](https://docs.triliumnotes.org/user-guide/advanced-usage/nightly-release). + +
    + +By default, Trilium comes with a set of icons called Boxicons v2. Since v0.102.0, custom icon packs allow a wider selection of icons for notes. Icon packs are specific to Trilium, so they must either be created from scratch (see below) or imported from a ZIP file from a third-party developer. +## Sample icon packs + +The Trilium team maintains a few icon packs that are not shipped with Trilium. These icon packs can be found on the official website on the [Resources page](https://triliumnotes.org/resources). + +## Importing an existing icon pack + > [!NOTE] > **Icon packs are third-party content** > -> The Trilium maintainers are not responsible for keeping these icon packs up to date. If you have an issue with a specific icon pack, then the issue must be reported to the third-party developer responsible for it, not the Trilium team. +> Apart from the [sample icon packs](https://triliumnotes.org/resources), the Trilium maintainers are not responsible for keeping icon packs up to date. If you have an issue with a specific icon pack, then the issue must be reported to the third-party developer responsible for it, not the Trilium team. To import an icon pack: diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs_image.png new file mode 100644 index 0000000000..2730befaa6 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md index d0ba7aecf4..c47103ba70 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md @@ -1,7 +1,11 @@ # Launch Bar ## Position of the Launch bar -Depending on the layout selected, the launcher bar will either be on the left side of the screen with buttons displayed vertically or at the top of the screen. See [Vertical and horizontal layout](Vertical%20and%20horizontal%20layout.md) for more information. +On desktop, depending on the layout selected, the launcher bar will either be on the left side of the screen with buttons displayed vertically or at the top of the screen. See Vertical and horizontal layout for more information. + +On mobile, the launch bar will always be at the bottom. + +If there are too many items in the launch bar to fit the screen, it will become scrollable. ## Terminology @@ -9,30 +13,38 @@ Depending on the layout selected, the launcher bar will either be on the left si * **Available Launcher**: a launcher that is not displayed on the launch bar, but can be added. * **Visible Launcher**: a launcher that is currently displayed on the launch bar. -## Configuring the Launch bar +## Configuring the desktop Launch bar There are two ways to configure the launch bar: * Right click in the empty space between launchers on the launch bar and select _Configure Launchbar._ -* Click on the [Global menu](Global%20menu.md) and select _Configure Launchbar_. +* Click on the Global menu and select _Configure Launchbar_. -This will open a new tab with the [Note Tree](Note%20Tree.md) listing the launchers. +This will open a new tab with the Note Tree listing the launchers. ![](Launch%20Bar_image.png) Expanding _Available Launchers_ section will show the list of launchers that are not displayed on the launch bar. The _Visible Launchers_ will show the ones that are currently displayed. +## Configuring the mobile launch bar + +The launch bar on mobile uses a different configuration from the desktop one. The reasoning is that not all desktop icons are available on mobile, and fewer icons fit on a mobile screen. + +To configure the launch bar on mobile, go to Global menu and select _Configure Launchbar_. + +The configure the mobile launch bar while on the desktop (especially useful to configure more complicated launchers such as scripts or custom widgets), go to Global menu → Advanced → Show Hidden Subtree and look for the _Mobile Launch Bar_ section. While in the hidden subtree, it's also possible to drag launchers between the _Mobile Launch Bar_ and (Desktop) _Launch Bar_ sections. + ### Adding/removing and reordering launchers To display a new launcher in the launch bar, first look for it in the _Available Launchers_ section. Then right click it and select _Move to visible launchers_. It is also possible to drag and drop the item manually. Similarly, to remove it from the launch bar, simply look for it in _Visible Launchers_ then right click it and select _Move to available launchers_ or use drag-and-drop. -Drag-and-drop the items in the tree in order to change their order. See [Note Tree](Note%20Tree.md) for more interaction options, including using keyboard shortcuts. +Drag-and-drop the items in the tree in order to change their order. See Note Tree for more interaction options, including using keyboard shortcuts. ## Customizing the launcher -* The icon of a launcher can be changed just like a normal note. See [Note Icons](../Notes/Note%20Icons.md) for more information. +* The icon of a launcher can be changed just like a normal note. See Note Icons for more information. * The title of the launcher can also be changed. ### Resetting @@ -47,17 +59,17 @@ Right click either the _Available launchers_ or _Visible launchers_ sections and A note launcher will simply navigate to a specified note. 1. Set the `target` promoted attribute to the note to navigate to. - 2. Optionally, set `hoistedNote` to hoist a particular note. See [Note Hoisting](../Navigation/Note%20Hoisting.md) for more information. + 2. Optionally, set `hoistedNote` to hoist a particular note. See Note Hoisting for more information. 3. Optionally, set a `keyboardShortcut` to trigger the launcher. 2. **Script Launcher** - An advanced launcher which will run a script upon pressing. See [Scripts](../../Scripting.md) for more information. + An advanced launcher which will run a script upon pressing. See Scripting for more information. 1. Set `script` to point to the desired script to run. 2. Optionally, set a `keyboardShortcut` to trigger the launcher. 3. **Custom Widget** - Allows defining a custom widget to be rendered inside the launcher. See [Widget Basics](../../Scripting/Frontend%20Basics/Custom%20Widgets/Widget%20Basics.md) for more information. + Allows defining a custom widget to be rendered inside the launcher. See Widget Basics for more information. 4. **Spacers** Launchers that create some distance between other launchers for better visual distinction. -Launchers are configured via predefined [Promoted Attributes](../../Advanced%20Usage/Attributes/Promoted%20Attributes.md). \ No newline at end of file +Launchers are configured via predefined Promoted Attributes. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.md index 912070b6f6..13ed514cf3 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.md @@ -26,5 +26,20 @@ Since tabs are a commonly used feature, there are multiple keyboard shortcuts th * Ctrl+W to close the current tab. * Ctrl+Shift+T to reopen the last closed tab. * Ctrl+Tab and Ctrl+Shift+Tab to go to the next or previous tab. -* Ctrl+1, Ctrl+2, up to Ctrl+9 to activate the first, second and up til ninth tab. -* There is also a shortcut to go to the last tab, but it is not assigned a key by default. \ No newline at end of file +* Ctrl+1, Ctrl+2, up to Ctrl+9 to activate the first, second and up to ninth tab. +* There is also a shortcut to go to the last tab, but it is not assigned a key by default. + +## Mobile + +
    + +Tabs are also supported on the Mobile Frontend. + +Since v0.102.0, the tabs are displayed by pressing the dedicated tab switcher button in the Launch Bar. In this view the tabs are laid out on a grid with a preview of the note content. + +The context menu button at the top-right of the popup allows creating a new tab, reopening the last closed tab and closing all the tabs. + +Split Views are also indicated in the tab switcher, with two titles displayed in a tab. + +> [!NOTE] +> Versions prior to v0.102.0 also supported tabs, but they were displayed directly above the Launch Bar. The decision to use a more mobile-like tab switcher was taken because the original tab bar could not support many tabs at once and the new design better aligns with how mobile applications handle tabs. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs_IMG_1767.PNG b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs_IMG_1767.PNG new file mode 100644 index 0000000000..dd5a7ab1e5 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs_IMG_1767.PNG differ diff --git a/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md index dc9e7a1124..1629f95f91 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md +++ b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md @@ -1,28 +1,85 @@ # Mobile Frontend -Trilium ([server edition](Server%20Installation.md)) has a mobile web frontend which is optimized for touch based devices - smartphones and tablets. It is activated automatically during login process based on browser detection. +
    -Mobile frontend is limited in features compared to full desktop frontend. See below for more details on this. +Trilium has a mobile web frontend which is optimized for touch based devices - smartphones and tablets. It is activated automatically during login process based on browser detection. -Note that this is not an Android/iOS app, this is just mobile friendly web page served on the [server edition](Server%20Installation.md). +Mobile frontend is limited in features compared to the full desktop version. See below for more details on this. + +## Layout basics + +Unlike the desktop version, the mobile version has a slightly different UI meant to better fit the constrained screens of a mobile phone. + +Here is a non-exhaustive list of differences between the desktop version and the mobile one: + +* The Note Tree is displayed as a sidebar. To display the sidebar, press the button in the top-left of the screen. + + * There is also a swipe gesture that can be done from the left of the screen, but the browser's navigation gesture interferes with it most of the time (depending on the platform). + * Press and hold a note to display the Note tree contextual menu. +* The Quick search bar is also displayed at the top of the note tree. +* The full Search function can be triggered either from either the Global menu or from the Launch Bar, if configured. +* The Launch Bar is displayed at the bottom of the screen. + + * The launch bar uses a different configuration for icons than the desktop version. See the dedicated page for more information on how to configure it. +* Most of the note-related actions are grouped in the horizontal dots icon on the top-right of the note. +* The Tabs are grouped under a tab switcher in the Launch Bar, where the tabs are displayed in a full-screen grid with preview for easy switching, as well as additional options such as reopening closed tabs. +* Since v0.100.0, Split View can also be used in mobile view, but with a maximum of two panes at once. The splits are displayed vertically instead of horizontally. +* Starting with v0.102.0, the New Layout is enforced on mobile. This brings features such as the note badges, note type switcher or collection properties which would otherwise not be available. + +## Installing as a PWA + +The mobile view can be set up as a PWA. While this does not offer any offline capabilities, it will display the application in full-screen and makes it easy to access via your mobile phone's home screen. + +### On iOS with Safari + +1. Open your default web browser and access your Trilium instance. +2. Login. +3. Press the \[…\] button in the bottom-right of the screen and select Share. +4. Scroll down to reveal the full list of items and choose “Add to Home Screen”. +5. Press “Add” and the web app will be available. + +### On Android with Google Chrome + +> [!IMPORTANT] +> Google Chrome requires the server to be served over HTTPS in order to display in full-screen. If using HTTP, the app will appear like a normal web page (similar to a bookmark). + +1. Open your default web browser and access your Trilium instance. +2. Login. +3. Press the three vertical dots icon in the top-right of the screen and select _Add to Home screen._ +4. Select the _Install_ option. +5. Select an appropriate name. +6. The web app will appear as an application, not on the home screen. + +### On Android with Brave + +> [!IMPORTANT] +> Brave requires the server to be served over HTTPS in order to display in full-screen. If using HTTP, the app will appear like a normal web page (similar to a bookmark). + +1. Open your default web browser and access your Trilium instance. +2. Login. +3. Press the three vertical dots icon in the bottom-right of the screen and select _Add to Home screen_. +4. Press the _Install_ option. +5. The web app will appear as an application, not on the home screen. + +### On Samsung Browser + +1. Open your default web browser and access your Trilium instance. +2. Login. +3. Press the hamburger menu in the bottom-right of the screen. +4. Select _Add to_, followed by _Home screen_. +5. Press _Add_ and the web app will appear on the home page. ## Testing via the desktop application If you are running Trilium without a dedicated [server installation](Server%20Installation.md), you can still test the mobile application using the desktop application. For more information, see Using the desktop application as a server. To access it go to `http://:37840/login?mobile` . -## Limitations - -Mobile frontend provides only some of the features of the full desktop frontend: - -* it is possible to browse the whole note tree, read and edit all types of notes, but you can create only text notes -* reading and editing [protected notes](../Basic%20Concepts%20and%20Features/Notes/Protected%20Notes.md) is possible, but creating them is not supported -* editing options is not supported -* cloning notes is not supported -* uploading file attachments is not supported - ## Forcing mobile/desktop frontend -Trilium decides automatically whether to use mobile or desktop frontend. If this is not appropriate, you can use `?mobile` or `?desktop` query param on **login** page (Note: you might need to log out). +Trilium decides automatically whether to use mobile or desktop front-end. If this is not appropriate, you can use `?mobile` or `?desktop` query param on **login** page (Note: you might need to log out). + +Alternatively, simply select _Switch to Mobile/Desktop Version_ in the Global menu. ## Scripting -You can alter the behavior with [scripts](../Scripting.md) just like for normal frontend. For script notes to be executed, they need to have labeled `#run=mobileStartup`. \ No newline at end of file +You can alter the behavior with Scripting, just like for normal frontend. For script notes to be executed, they need to have labeled `#run=mobileStartup`. + +Custom Launch Bar widgets are also supported. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend_IMG_1765.PNG b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend_IMG_1765.PNG new file mode 100644 index 0000000000..5536b5ffbd Binary files /dev/null and b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend_IMG_1765.PNG differ diff --git a/docs/User Guide/User Guide/Theme development/Creating a custom theme.md b/docs/User Guide/User Guide/Theme development/Creating a custom theme.md index 12334c6cae..0a39e2f6e2 100644 --- a/docs/User Guide/User Guide/Theme development/Creating a custom theme.md +++ b/docs/User Guide/User Guide/Theme development/Creating a custom theme.md @@ -41,6 +41,6 @@ Do note that the theme will be based off of the legacy theme. To override that a ## Step 5. Making changes -Simply go back to the note and change according to needs. To apply the changes to the current window, press Ctrl+Shift+R to refresh. +Simply go back to the note and change according to needs. To apply the changes to the current window, press Ctrl+Shift+R to refresh. It's a good idea to keep two windows, one for editing and the other one for previewing the changes. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Theme development/Creating an icon pack.md b/docs/User Guide/User Guide/Theme development/Creating an icon pack.md index 218c21b21b..20bc897899 100644 --- a/docs/User Guide/User Guide/Theme development/Creating an icon pack.md +++ b/docs/User Guide/User Guide/Theme development/Creating an icon pack.md @@ -1,6 +1,6 @@ # Creating an icon pack > [!NOTE] -> e This page describes how to create custom icon packs. For a general description of how to use already existing icon packs, see Icon Packs. +> This page describes how to create custom icon packs. For a general description of how to use already existing icon packs, see Icon Packs. ## Supported formats @@ -49,9 +49,9 @@ The icon pack manifest is a JSON file with the following structure: "bx-ball": { "glyph": "\ue9c2", "terms": [ "ball" ] - }, + }, "bxs-party": { - "glyph": "\uec92" + "glyph": "\uec92", "terms": [ "party" ] } } diff --git a/docs/User Guide/User Guide/Theme development/Customize the Next theme.md b/docs/User Guide/User Guide/Theme development/Customize the Next theme.md index 657199a67e..e5e1ad8860 100644 --- a/docs/User Guide/User Guide/Theme development/Customize the Next theme.md +++ b/docs/User Guide/User Guide/Theme development/Customize the Next theme.md @@ -12,10 +12,10 @@ The `appThemeBase` label can be set to one of the following values: ## Overrides -Do note that the TriliumNext theme has a few more overrides than the legacy theme, so you might need to suffix `!important` if the style changes are not applied. +Do note that the TriliumNext theme has a few more overrides than the legacy theme. Due to that, it is recommended to use `#trilium-app` with a next theme instead of the `:root` of a legacy theme. ```css -:root { - --launcher-pane-background-color: #0d6efd !important; +#trilium-app { + --launcher-pane-background-color: #0d6efd; } ``` \ No newline at end of file diff --git a/package.json b/package.json index cfd0050a27..894779b3e9 100644 --- a/package.json +++ b/package.json @@ -46,24 +46,24 @@ "devDependencies": { "@electron/rebuild": "4.0.3", "@fast-csv/parse": "5.0.5", - "@playwright/test": "1.57.0", + "@playwright/test": "1.58.1", "@triliumnext/server": "workspace:*", "@types/express": "5.0.6", "@types/js-yaml": "4.0.9", - "@types/node": "24.10.9", + "@types/node": "24.10.10", "@vitest/browser-webdriverio": "4.0.18", "@vitest/coverage-v8": "4.0.18", "@vitest/ui": "4.0.18", "chalk": "5.6.2", "cross-env": "10.1.0", - "dpdm": "3.14.0", + "dpdm": "4.0.1", "esbuild": "0.27.2", - "eslint": "9.39.2", + "eslint": "10.0.0", "eslint-config-preact": "2.0.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-playwright": "2.5.1", "eslint-plugin-simple-import-sort": "12.1.1", - "happy-dom": "20.4.0", + "happy-dom": "20.5.0", "http-server": "14.1.1", "jiti": "2.6.1", "js-yaml": "4.1.1", @@ -73,7 +73,7 @@ "tslib": "2.8.1", "tsx": "4.21.0", "typescript": "5.9.3", - "typescript-eslint": "8.53.0", + "typescript-eslint": "8.54.0", "upath": "2.0.1", "vite": "7.3.1", "vite-plugin-dts": "4.5.4", @@ -93,7 +93,7 @@ "url": "https://github.com/TriliumNext/Trilium/issues" }, "homepage": "https://triliumnotes.org", - "packageManager": "pnpm@10.28.2", + "packageManager": "pnpm@10.29.1", "pnpm": { "patchedDependencies": { "@ckeditor/ckeditor5-mention": "patches/@ckeditor__ckeditor5-mention.patch", @@ -101,7 +101,7 @@ }, "overrides": { "mermaid": "11.12.2", - "preact": "10.28.2", + "preact": "10.28.3", "roughjs": "4.6.6", "@types/express-serve-static-core": "5.1.0", "flat@<5.0.1": ">=5.0.1", @@ -115,7 +115,23 @@ "on-headers@<1.1.0": ">=1.1.0", "form-data@>=4.0.0 <4.0.4": ">=4.0.4", "form-data@>=3.0.0 <3.0.4": ">=3.0.4", - "node-abi": "4.26.0" + "node-abi": "4.26.0", + "validator@<13.15.20": ">=13.15.20", + "tmp@<=0.2.3": ">=0.2.4", + "glob@>=10.2.0 <10.5.0": ">=10.5.0", + "glob@>=11.0.0 <11.1.0": ">=11.1.0", + "node-forge@<1.3.2": ">=1.3.2", + "mdast-util-to-hast@>=13.0.0 <13.2.1": ">=13.2.1", + "validator@<13.15.22": ">=13.15.22", + "qs@<6.14.1": ">=6.14.1", + "@smithy/config-resolver@<4.4.0": ">=4.4.0", + "tar@<=7.5.2": ">=7.5.3", + "tar@<=7.5.3": ">=7.5.4", + "lodash-es@>=4.0.0 <=4.17.22": ">=4.17.23", + "lodash@>=4.0.0 <=4.17.22": ">=4.17.23", + "diff@<4.0.4": ">=4.0.4", + "diff@>=6.0.0 <8.0.3": ">=8.0.3", + "tar@<7.5.7": ">=7.5.7" }, "ignoredBuiltDependencies": [ "sqlite3" diff --git a/packages/ckeditor5-admonition/package.json b/packages/ckeditor5-admonition/package.json index 0bf44edb4c..9bc2f772ff 100644 --- a/packages/ckeditor5-admonition/package.json +++ b/packages/ckeditor5-admonition/package.json @@ -24,22 +24,22 @@ "@ckeditor/ckeditor5-dev-build-tools": "54.3.2", "@ckeditor/ckeditor5-inspector": ">=4.1.0", "@ckeditor/ckeditor5-package-tools": "5.0.1", - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "@vitest/browser": "4.0.18", "@vitest/coverage-istanbul": "4.0.18", "ckeditor5": "47.4.0", - "eslint": "9.39.2", + "eslint": "10.0.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.7", - "stylelint": "17.0.0", + "stylelint": "17.1.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.18", - "webdriverio": "9.23.2" + "webdriverio": "9.23.3" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-footnotes/package.json b/packages/ckeditor5-footnotes/package.json index 92494c2a1c..4eeb69447b 100644 --- a/packages/ckeditor5-footnotes/package.json +++ b/packages/ckeditor5-footnotes/package.json @@ -25,22 +25,22 @@ "@ckeditor/ckeditor5-dev-build-tools": "54.3.2", "@ckeditor/ckeditor5-inspector": ">=4.1.0", "@ckeditor/ckeditor5-package-tools": "5.0.1", - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "@vitest/browser": "4.0.18", "@vitest/coverage-istanbul": "4.0.18", "ckeditor5": "47.4.0", - "eslint": "9.39.2", + "eslint": "10.0.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.7", - "stylelint": "17.0.0", + "stylelint": "17.1.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.18", - "webdriverio": "9.23.2" + "webdriverio": "9.23.3" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-keyboard-marker/package.json b/packages/ckeditor5-keyboard-marker/package.json index 23d476fd7f..b4f29c22a2 100644 --- a/packages/ckeditor5-keyboard-marker/package.json +++ b/packages/ckeditor5-keyboard-marker/package.json @@ -27,22 +27,22 @@ "@ckeditor/ckeditor5-dev-build-tools": "54.3.2", "@ckeditor/ckeditor5-inspector": ">=4.1.0", "@ckeditor/ckeditor5-package-tools": "5.0.1", - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "@vitest/browser": "4.0.18", "@vitest/coverage-istanbul": "4.0.18", "ckeditor5": "47.4.0", - "eslint": "9.39.2", + "eslint": "10.0.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.7", - "stylelint": "17.0.0", + "stylelint": "17.1.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.18", - "webdriverio": "9.23.2" + "webdriverio": "9.23.3" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json index 68f9eccfee..3cee2b2bed 100644 --- a/packages/ckeditor5-math/package.json +++ b/packages/ckeditor5-math/package.json @@ -27,22 +27,22 @@ "@ckeditor/ckeditor5-dev-build-tools": "54.3.2", "@ckeditor/ckeditor5-inspector": ">=4.1.0", "@ckeditor/ckeditor5-package-tools": "5.0.1", - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "@vitest/browser": "4.0.18", "@vitest/coverage-istanbul": "4.0.18", "ckeditor5": "47.4.0", - "eslint": "9.39.2", + "eslint": "10.0.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.7", - "stylelint": "17.0.0", + "stylelint": "17.1.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.18", - "webdriverio": "9.23.2" + "webdriverio": "9.23.3" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-mermaid/package.json b/packages/ckeditor5-mermaid/package.json index 1cc5aea86e..da7bac6b6b 100644 --- a/packages/ckeditor5-mermaid/package.json +++ b/packages/ckeditor5-mermaid/package.json @@ -27,22 +27,22 @@ "@ckeditor/ckeditor5-dev-build-tools": "54.3.2", "@ckeditor/ckeditor5-inspector": ">=4.1.0", "@ckeditor/ckeditor5-package-tools": "5.0.1", - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "@vitest/browser": "4.0.18", "@vitest/coverage-istanbul": "4.0.18", "ckeditor5": "47.4.0", - "eslint": "9.39.2", + "eslint": "10.0.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.7", - "stylelint": "17.0.0", + "stylelint": "17.1.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.18", - "webdriverio": "9.23.2" + "webdriverio": "9.23.3" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index 8b16b2d86f..af4b31a38a 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -16,7 +16,7 @@ "ckeditor5-premium-features": "47.4.0" }, "devDependencies": { - "@smithy/middleware-retry": "4.4.27", + "@smithy/middleware-retry": "4.4.30", "@types/jquery": "3.5.33" } } diff --git a/packages/ckeditor5/src/i18n.ts b/packages/ckeditor5/src/i18n.ts index dd4e616d3d..83f16dce5b 100644 --- a/packages/ckeditor5/src/i18n.ts +++ b/packages/ckeditor5/src/i18n.ts @@ -40,6 +40,7 @@ const LOCALE_MAPPINGS: Record = { coreTranslation: () => import("ckeditor5/translations/fr.js"), premiumFeaturesTranslation: () => import("ckeditor5-premium-features/translations/fr.js"), }, + ga: null, it: { languageCode: "it", coreTranslation: () => import("ckeditor5/translations/it.js"), diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index 397676b5df..1648ec87a1 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -16,7 +16,7 @@ "@codemirror/lang-xml": "6.1.0", "@codemirror/legacy-modes": "6.5.2", "@codemirror/search": "6.6.0", - "@codemirror/view": "6.39.11", + "@codemirror/view": "6.39.12", "@fsegurai/codemirror-theme-abcdef": "6.2.3", "@fsegurai/codemirror-theme-abyss": "6.2.3", "@fsegurai/codemirror-theme-android-studio": "6.2.3", @@ -50,6 +50,6 @@ "codemirror-lang-elixir": "4.0.0", "codemirror-lang-hcl": "0.1.0", "codemirror-lang-mermaid": "0.5.0", - "eslint-linter-browserify": "9.39.2" + "eslint-linter-browserify": "10.0.0" } } diff --git a/packages/commons/src/lib/dayjs.ts b/packages/commons/src/lib/dayjs.ts index 7ed1d85513..9254230ecc 100644 --- a/packages/commons/src/lib/dayjs.ts +++ b/packages/commons/src/lib/dayjs.ts @@ -41,6 +41,7 @@ export const DAYJS_LOADER: Record Promise import("dayjs/locale/es.js"), "fa": () => import("dayjs/locale/fa.js"), "fr": () => import("dayjs/locale/fr.js"), + "ga": () => import("dayjs/locale/ga.js"), "it": () => import("dayjs/locale/it.js"), "he": () => import("dayjs/locale/he.js"), "ja": () => import("dayjs/locale/ja.js"), diff --git a/packages/commons/src/lib/hidden_subtree.ts b/packages/commons/src/lib/hidden_subtree.ts index 2fcd68f119..91e46b7080 100644 --- a/packages/commons/src/lib/hidden_subtree.ts +++ b/packages/commons/src/lib/hidden_subtree.ts @@ -45,7 +45,8 @@ export interface HiddenSubtreeItem { | "quickSearch" | "aiChatLauncher" | "commandPalette" - | "toggleZenMode"; + | "toggleZenMode" + | "mobileTabSwitcher"; command?: keyof typeof Command; /** * If set to true, then branches will be enforced to be in the correct place. diff --git a/packages/commons/src/lib/i18n.ts b/packages/commons/src/lib/i18n.ts index ac005c6456..4831c3178e 100644 --- a/packages/commons/src/lib/i18n.ts +++ b/packages/commons/src/lib/i18n.ts @@ -19,6 +19,7 @@ const UNSORTED_LOCALES = [ { id: "en-GB", name: "English (United Kingdom)", electronLocale: "en_GB" }, { id: "es", name: "Español", electronLocale: "es" }, { id: "fr", name: "Français", electronLocale: "fr" }, + { id: "ga", name: "Gaeilge", electronLocale: "en" }, { id: "it", name: "Italiano", electronLocale: "it" }, { id: "ja", name: "日本語", electronLocale: "ja" }, { id: "pt_br", name: "Português (Brasil)", electronLocale: "pt_BR" }, diff --git a/packages/pdfjs-viewer/scripts/build.ts b/packages/pdfjs-viewer/scripts/build.ts index 4a7e56880c..a51ccae4aa 100644 --- a/packages/pdfjs-viewer/scripts/build.ts +++ b/packages/pdfjs-viewer/scripts/build.ts @@ -10,7 +10,8 @@ const build = new BuildHelper("packages/pdfjs-viewer"); const watchMode = process.argv.includes("--watch"); const LOCALE_MAPPINGS: Record = { - "es": "es-ES" + "es": "es-ES", + "ga": "ga-IE" }; async function main() { @@ -28,8 +29,9 @@ async function main() { // Copy locales. const localeMappings = {}; for (const locale of LOCALES) { - if (locale.id === "en" || locale.contentOnly || locale.devOnly) continue; - const mappedLocale = LOCALE_MAPPINGS[locale.electronLocale] || locale.electronLocale.replace("_", "-"); + if (locale.contentOnly || locale.devOnly) continue; + const mappedLocale = LOCALE_MAPPINGS[locale.id] || locale.electronLocale.replace("_", "-"); + if (mappedLocale === "en") continue; const localePath = `${locale.id}/viewer.ftl`; build.copy(`viewer/locale/${mappedLocale}/viewer.ftl`, `web/locale/${localePath}`); localeMappings[locale.id] = localePath; diff --git a/packages/share-theme/package.json b/packages/share-theme/package.json index a8e6e6672f..ddddc79389 100644 --- a/packages/share-theme/package.json +++ b/packages/share-theme/package.json @@ -31,11 +31,11 @@ "devDependencies": { "@digitak/esrun": "3.2.26", "@triliumnext/ckeditor5": "workspace:*", - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "dotenv": "17.2.3", "esbuild": "0.27.2", - "eslint": "9.39.2", + "eslint": "10.0.0", "highlight.js": "11.11.1", "typescript": "5.9.3" } diff --git a/packages/trilium-core/src/services/hidden_subtree_launcherbar.ts b/packages/trilium-core/src/services/hidden_subtree_launcherbar.ts index d233bde28b..3a56d433f7 100644 --- a/packages/trilium-core/src/services/hidden_subtree_launcherbar.ts +++ b/packages/trilium-core/src/services/hidden_subtree_launcherbar.ts @@ -40,18 +40,24 @@ export default function buildLaunchBarConfig() { type: "launcher", command: "showRecentChanges", icon: "bx bx-history" - } + }, + searchNotes: { + title: t("hidden-subtree.search-notes-title"), + type: "launcher", + command: "searchNotes", + icon: "bx bx-search", + }, + bookmarks: { + title: t("hidden-subtree.bookmarks-title"), + type: "launcher", + builtinWidget: "bookmarks", + icon: "bx bx-bookmark" + }, }; const desktopAvailableLaunchers: HiddenSubtreeItem[] = [ - { - id: "_lbBackInHistory", - ...sharedLaunchers.backInHistory - }, - { - id: "_lbForwardInHistory", - ...sharedLaunchers.forwardInHistory - }, + { id: "_lbBackInHistory", ...sharedLaunchers.backInHistory }, + { id: "_lbForwardInHistory", ...sharedLaunchers.forwardInHistory }, { id: "_commandPalette", title: t("hidden-subtree.command-palette"), @@ -82,11 +88,7 @@ export default function buildLaunchBarConfig() { }, { id: "_lbSearch", - title: t("hidden-subtree.search-notes-title"), - type: "launcher", - command: "searchNotes", - icon: "bx bx-search", - attributes: [{ type: "label", name: "desktopOnly" }] + ...sharedLaunchers.searchNotes }, { id: "_lbJumpTo", @@ -128,13 +130,7 @@ export default function buildLaunchBarConfig() { baseSize: "50", growthFactor: "0" }, - { - id: "_lbBookmarks", - title: t("hidden-subtree.bookmarks-title"), - type: "launcher", - builtinWidget: "bookmarks", - icon: "bx bx-bookmark" - }, + { id: "_lbBookmarks", ...sharedLaunchers.bookmarks }, { id: "_lbToday", ...sharedLaunchers.openToday @@ -179,18 +175,15 @@ export default function buildLaunchBarConfig() { const mobileAvailableLaunchers: HiddenSubtreeItem[] = [ { id: "_lbMobileNewNote", ...sharedLaunchers.newNote }, - { id: "_lbMobileToday", ...sharedLaunchers.openToday } + { id: "_lbMobileSearchNotes", ...sharedLaunchers.searchNotes }, + { id: "_lbMobileToday", ...sharedLaunchers.openToday }, + { id: "_lbMobileRecentChanges", ...sharedLaunchers.recentChanges }, + { id: "_lbMobileBookmarks", ...sharedLaunchers.bookmarks } ]; const mobileVisibleLaunchers: HiddenSubtreeItem[] = [ - { - id: "_lbMobileBackInHistory", - ...sharedLaunchers.backInHistory - }, - { - id: "_lbMobileForwardInHistory", - ...sharedLaunchers.forwardInHistory - }, + { id: "_lbMobileBackInHistory", ...sharedLaunchers.backInHistory }, + { id: "_lbMobileForwardInHistory", ...sharedLaunchers.forwardInHistory }, { id: "_lbMobileJumpTo", title: t("hidden-subtree.jump-to-note-title"), @@ -203,8 +196,11 @@ export default function buildLaunchBarConfig() { ...sharedLaunchers.calendar }, { - id: "_lbMobileRecentChanges", - ...sharedLaunchers.recentChanges + id: "_lbMobileTabSwitcher", + title: t("hidden-subtree.tab-switcher-title"), + type: "launcher", + builtinWidget: "mobileTabSwitcher", + icon: "bx bx-rectangle" } ]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84c3f1a245..d1a85c0f99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: mermaid: 11.12.2 - preact: 10.28.2 + preact: 10.28.3 roughjs: 4.6.6 '@types/express-serve-static-core': 5.1.0 flat@<5.0.1: '>=5.0.1' @@ -21,6 +21,22 @@ overrides: form-data@>=4.0.0 <4.0.4: '>=4.0.4' form-data@>=3.0.0 <3.0.4: '>=3.0.4' node-abi: 4.26.0 + validator@<13.15.20: '>=13.15.20' + tmp@<=0.2.3: '>=0.2.4' + glob@>=10.2.0 <10.5.0: '>=10.5.0' + glob@>=11.0.0 <11.1.0: '>=11.1.0' + node-forge@<1.3.2: '>=1.3.2' + mdast-util-to-hast@>=13.0.0 <13.2.1: '>=13.2.1' + validator@<13.15.22: '>=13.15.22' + qs@<6.14.1: '>=6.14.1' + '@smithy/config-resolver@<4.4.0': '>=4.4.0' + tar@<=7.5.2: '>=7.5.3' + tar@<=7.5.3: '>=7.5.4' + lodash-es@>=4.0.0 <=4.17.22: '>=4.17.23' + lodash@>=4.0.0 <=4.17.22: '>=4.17.23' + diff@<4.0.4: '>=4.0.4' + diff@>=6.0.0 <8.0.3: '>=8.0.3' + tar@<7.5.7: '>=7.5.7' patchedDependencies: '@ckeditor/ckeditor5-code-block': @@ -41,8 +57,8 @@ importers: specifier: 5.0.5 version: 5.0.5 '@playwright/test': - specifier: 1.57.0 - version: 1.57.0 + specifier: 1.58.1 + version: 1.58.1 '@triliumnext/server': specifier: workspace:* version: link:apps/server @@ -53,14 +69,14 @@ importers: specifier: 4.0.9 version: 4.0.9 '@types/node': - specifier: 24.10.9 - version: 24.10.9 + specifier: 24.10.10 + version: 24.10.10 '@vitest/browser-webdriverio': specifier: 4.0.18 - version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)(webdriverio@9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-v8': specifier: 4.0.18 - version: 4.0.18(@vitest/browser@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18))(vitest@4.0.18) + version: 4.0.18(@vitest/browser@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18))(vitest@4.0.18) '@vitest/ui': specifier: 4.0.18 version: 4.0.18(vitest@4.0.18) @@ -71,29 +87,29 @@ importers: specifier: 10.1.0 version: 10.1.0 dpdm: - specifier: 3.14.0 - version: 3.14.0 + specifier: 4.0.1 + version: 4.0.1 esbuild: specifier: 0.27.2 version: 0.27.2 eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-preact: specifier: 2.0.0 - version: 2.0.0(eslint@9.39.2(jiti@2.6.1)) + version: 2.0.0(eslint@10.0.0(jiti@2.6.1)) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) + version: 10.1.8(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-playwright: specifier: 2.5.1 - version: 2.5.1(eslint@9.39.2(jiti@2.6.1)) + version: 2.5.1(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-simple-import-sort: specifier: 12.1.1 - version: 12.1.1(eslint@9.39.2(jiti@2.6.1)) + version: 12.1.1(eslint@10.0.0(jiti@2.6.1)) happy-dom: - specifier: 20.4.0 - version: 20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.5.0 + version: 20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) http-server: specifier: 14.1.1 version: 14.1.1 @@ -111,7 +127,7 @@ importers: version: 0.18.0 rollup-plugin-webpack-stats: specifier: 2.1.10 - version: 2.1.10(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.1.10(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) tslib: specifier: 2.8.1 version: 2.8.1 @@ -122,26 +138,26 @@ importers: specifier: 5.9.3 version: 5.9.3 typescript-eslint: - specifier: 8.53.0 - version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) upath: specifier: 2.0.1 version: 2.0.1 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vite-plugin-dts: specifier: 4.5.4 - version: 4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.10.10)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) apps/build-docs: devDependencies: '@redocly/cli': - specifier: 2.14.9 - version: 2.14.9(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) + specifier: 2.15.1 + version: 2.15.1(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) archiver: specifier: 7.0.1 version: 7.0.1 @@ -192,13 +208,13 @@ importers: version: 0.2.0(mermaid@11.12.2) '@mind-elixir/node-menu': specifier: 5.0.1 - version: 5.0.1(mind-elixir@5.6.1) + version: 5.0.1(mind-elixir@5.8.0) '@popperjs/core': specifier: 2.11.8 version: 2.11.8 '@preact/signals': - specifier: 2.6.1 - version: 2.6.1(preact@10.28.2) + specifier: 2.6.2 + version: 2.6.2(preact@10.28.3) '@triliumnext/ckeditor5': specifier: workspace:* version: link:../../packages/ckeditor5 @@ -242,11 +258,11 @@ importers: specifier: 3.0.0 version: 3.0.0 force-graph: - specifier: 1.51.0 - version: 1.51.0 + specifier: 1.51.1 + version: 1.51.1 globals: - specifier: 17.0.0 - version: 17.0.0 + specifier: 17.3.0 + version: 17.3.0 i18next: specifier: 25.8.0 version: 25.8.0(typescript@5.9.3) @@ -284,8 +300,8 @@ importers: specifier: 11.12.2 version: 11.12.2 mind-elixir: - specifier: 5.6.1 - version: 5.6.1 + specifier: 5.8.0 + version: 5.8.0 normalize.css: specifier: 8.0.1 version: 8.0.1 @@ -293,14 +309,14 @@ importers: specifier: 9.4.3 version: 9.4.3 preact: - specifier: 10.28.2 - version: 10.28.2 + specifier: 10.28.3 + version: 10.28.3 react-i18next: specifier: 16.5.4 version: 16.5.4(i18next@25.8.0(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) react-window: - specifier: 2.2.5 - version: 2.2.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 2.2.6 + version: 2.2.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) reveal.js: specifier: 5.2.1 version: 5.2.1 @@ -319,7 +335,7 @@ importers: version: 5.0.0 '@prefresh/vite': specifier: 2.4.11 - version: 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@types/bootstrap': specifier: 5.2.10 version: 5.2.10 @@ -345,8 +361,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) happy-dom: - specifier: 20.4.0 - version: 20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.5.0 + version: 20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) lightningcss: specifier: 1.31.1 version: 1.31.1 @@ -355,7 +371,7 @@ importers: version: 0.7.2 vite-plugin-static-copy: specifier: 3.2.0 - version: 3.2.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 3.2.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) apps/client-standalone: dependencies: @@ -394,7 +410,7 @@ importers: version: 2.11.8 '@preact/signals': specifier: 2.5.1 - version: 2.5.1(preact@10.28.2) + version: 2.5.1(preact@10.28.3) '@sqlite.org/sqlite-wasm': specifier: 3.51.1-build2 version: 3.51.1-build2 @@ -501,8 +517,8 @@ importers: specifier: 9.4.3 version: 9.4.3 preact: - specifier: 10.28.2 - version: 10.28.2 + specifier: 10.28.3 + version: 10.28.3 react-i18next: specifier: 16.5.1 version: 16.5.1(i18next@25.7.3(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) @@ -527,7 +543,7 @@ importers: version: 5.0.0 '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.28.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@types/bootstrap': specifier: 5.2.10 version: 5.2.10 @@ -563,7 +579,7 @@ importers: version: 0.7.2 vite-plugin-static-copy: specifier: 3.1.4 - version: 3.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 3.1.4(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) apps/db-compare: dependencies: @@ -584,7 +600,7 @@ importers: dependencies: '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@40.0.0) + version: 2.1.3(electron@40.2.1) better-sqlite3: specifier: 12.6.2 version: 12.6.2 @@ -641,8 +657,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) electron: - specifier: 40.0.0 - version: 40.0.0 + specifier: 40.2.1 + version: 40.2.1 prebuild-install: specifier: 7.1.3 version: 7.1.3 @@ -697,8 +713,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) electron: - specifier: 40.0.0 - version: 40.0.0 + specifier: 40.2.1 + version: 40.2.1 fs-extra: specifier: 11.3.3 version: 11.3.3 @@ -730,9 +746,12 @@ importers: '@anthropic-ai/sdk': specifier: 0.71.2 version: 0.71.2(zod@4.1.12) + '@braintree/sanitize-url': + specifier: 7.1.2 + version: 7.1.2 '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@40.0.0) + version: 2.1.3(electron@40.2.1) '@triliumnext/commons': specifier: workspace:* version: link:../../packages/commons @@ -863,8 +882,8 @@ importers: specifier: 4.0.1 version: 4.0.1 electron: - specifier: 40.0.0 - version: 40.0.0 + specifier: 40.2.1 + version: 40.2.1 electron-debug: specifier: 4.1.0 version: 4.1.0 @@ -1006,10 +1025,10 @@ importers: devDependencies: '@wxt-dev/auto-icons': specifier: 1.1.0 - version: 1.1.0(wxt@0.20.13(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 1.1.0(wxt@0.20.13(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) wxt: specifier: 0.20.13 - version: 0.20.13(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 0.20.13(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) apps/website: dependencies: @@ -1020,27 +1039,27 @@ importers: specifier: 3.0.2 version: 3.0.2(encoding@0.1.13) preact: - specifier: 10.28.2 - version: 10.28.2 + specifier: 10.28.3 + version: 10.28.3 preact-iso: specifier: 2.11.1 - version: 2.11.1(preact-render-to-string@6.6.5(preact@10.28.2))(preact@10.28.2) + version: 2.11.1(preact-render-to-string@6.6.5(preact@10.28.3))(preact@10.28.3) preact-render-to-string: specifier: 6.6.5 - version: 6.6.5(preact@10.28.2) + version: 6.6.5(preact@10.28.3) react-i18next: specifier: 16.5.4 version: 16.5.4(i18next@25.8.0(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) devDependencies: '@preact/preset-vite': - specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + specifier: 2.10.3 + version: 2.10.3(@babel/core@7.28.0)(preact@10.28.3)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-preact: specifier: 2.0.0 - version: 2.0.0(eslint@9.39.2(jiti@2.6.1)) + version: 2.0.0(eslint@10.0.0(jiti@2.6.1)) typescript: specifier: 5.9.3 version: 5.9.3 @@ -1049,10 +1068,10 @@ importers: version: 0.4.2 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/ckeditor5: dependencies: @@ -1082,8 +1101,8 @@ importers: version: 47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5) devDependencies: '@smithy/middleware-retry': - specifier: 4.4.27 - version: 4.4.27 + specifier: 4.4.30 + version: 4.4.30 '@types/jquery': specifier: 3.5.33 version: 3.5.33 @@ -1098,16 +1117,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 5.0.1 - version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) + version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: 8.53.0 - version: 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.53.0 - version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.18 - version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) '@vitest/coverage-istanbul': specifier: 4.0.18 version: 4.0.18(vitest@4.0.18) @@ -1115,11 +1134,11 @@ importers: specifier: 47.4.0 version: 47.4.0 eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 13.0.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -1127,26 +1146,26 @@ importers: specifier: 16.2.7 version: 16.2.7 stylelint: - specifier: 17.0.0 - version: 17.0.0(typescript@5.9.3) + specifier: 17.1.0 + version: 17.1.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(stylelint@17.0.0(typescript@5.9.3)) + version: 13.0.0(stylelint@17.1.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.2 - version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.3 + version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-footnotes: devDependencies: @@ -1158,16 +1177,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 5.0.1 - version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) + version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: 8.53.0 - version: 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.53.0 - version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.18 - version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) '@vitest/coverage-istanbul': specifier: 4.0.18 version: 4.0.18(vitest@4.0.18) @@ -1175,11 +1194,11 @@ importers: specifier: 47.4.0 version: 47.4.0 eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 13.0.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -1187,26 +1206,26 @@ importers: specifier: 16.2.7 version: 16.2.7 stylelint: - specifier: 17.0.0 - version: 17.0.0(typescript@5.9.3) + specifier: 17.1.0 + version: 17.1.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(stylelint@17.0.0(typescript@5.9.3)) + version: 13.0.0(stylelint@17.1.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.2 - version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.3 + version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-keyboard-marker: devDependencies: @@ -1218,16 +1237,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 5.0.1 - version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) + version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: 8.53.0 - version: 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.53.0 - version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.18 - version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) '@vitest/coverage-istanbul': specifier: 4.0.18 version: 4.0.18(vitest@4.0.18) @@ -1235,11 +1254,11 @@ importers: specifier: 47.4.0 version: 47.4.0 eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 13.0.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -1247,26 +1266,26 @@ importers: specifier: 16.2.7 version: 16.2.7 stylelint: - specifier: 17.0.0 - version: 17.0.0(typescript@5.9.3) + specifier: 17.1.0 + version: 17.1.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(stylelint@17.0.0(typescript@5.9.3)) + version: 13.0.0(stylelint@17.1.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.2 - version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.3 + version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-math: dependencies: @@ -1285,16 +1304,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 5.0.1 - version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) + version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: 8.53.0 - version: 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.53.0 - version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.18 - version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) '@vitest/coverage-istanbul': specifier: 4.0.18 version: 4.0.18(vitest@4.0.18) @@ -1302,11 +1321,11 @@ importers: specifier: 47.4.0 version: 47.4.0 eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 13.0.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -1314,26 +1333,26 @@ importers: specifier: 16.2.7 version: 16.2.7 stylelint: - specifier: 17.0.0 - version: 17.0.0(typescript@5.9.3) + specifier: 17.1.0 + version: 17.1.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(stylelint@17.0.0(typescript@5.9.3)) + version: 13.0.0(stylelint@17.1.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.2 - version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.3 + version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-mermaid: dependencies: @@ -1352,16 +1371,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 5.0.1 - version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) + version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: 8.53.0 - version: 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.53.0 - version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.18 - version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + version: 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) '@vitest/coverage-istanbul': specifier: 4.0.18 version: 4.0.18(vitest@4.0.18) @@ -1369,11 +1388,11 @@ importers: specifier: 47.4.0 version: 47.4.0 eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 13.0.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -1381,26 +1400,26 @@ importers: specifier: 16.2.7 version: 16.2.7 stylelint: - specifier: 17.0.0 - version: 17.0.0(typescript@5.9.3) + specifier: 17.1.0 + version: 17.1.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 13.0.0(stylelint@17.0.0(typescript@5.9.3)) + version: 13.0.0(stylelint@17.1.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.2 - version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.3 + version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/codemirror: dependencies: @@ -1438,89 +1457,89 @@ importers: specifier: 6.6.0 version: 6.6.0 '@codemirror/view': - specifier: 6.39.11 - version: 6.39.11 + specifier: 6.39.12 + version: 6.39.12 '@fsegurai/codemirror-theme-abcdef': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-abyss': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-android-studio': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-andromeda': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-cobalt2': specifier: 6.0.3 - version: 6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-forest': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-monokai': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-nord': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-palenight': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-day': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-storm': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-volcano': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-dark': specifier: 6.2.4 - version: 6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-light': specifier: 6.2.4 - version: 6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1) + version: 6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1) '@replit/codemirror-indentation-markers': specifier: 6.5.3 - version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11) + version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12) '@replit/codemirror-lang-nix': specifier: 6.0.1 - version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) + version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) '@replit/codemirror-vim': specifier: 6.3.0 - version: 6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.6.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11) + version: 6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.6.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12) '@ssddanbrown/codemirror-lang-smarty': specifier: 1.0.0 version: 1.0.0 @@ -1540,8 +1559,8 @@ importers: specifier: 0.5.0 version: 0.5.0 eslint-linter-browserify: - specifier: 9.39.2 - version: 9.39.2 + specifier: 10.0.0 + version: 10.0.0 packages/commons: dependencies: @@ -1605,11 +1624,11 @@ importers: specifier: workspace:* version: link:../ckeditor5 '@typescript-eslint/eslint-plugin': - specifier: 8.53.0 - version: 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.53.0 - version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) dotenv: specifier: 17.2.3 version: 17.2.3 @@ -1617,8 +1636,8 @@ importers: specifier: 0.27.2 version: 0.27.2 eslint: - specifier: 9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: 10.0.0 + version: 10.0.0(jiti@2.6.1) highlight.js: specifier: 11.11.1 version: 11.11.1 @@ -1919,10 +1938,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -2002,6 +2017,9 @@ packages: '@braintree/sanitize-url@7.1.1': resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + '@bufbuild/protobuf@2.10.2': resolution: {integrity: sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A==} @@ -2014,11 +2032,11 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@cacheable/memory@2.0.5': - resolution: {integrity: sha512-fkiAxCvssEyJZ5fxX4tcdZFRmW9JehSTGvvqmXn6rTzG5cH6V/3C4ad8yb01vOjp2xBydHkHrgpW0qeGtzt6VQ==} + '@cacheable/memory@2.0.7': + resolution: {integrity: sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==} - '@cacheable/utils@2.3.1': - resolution: {integrity: sha512-38NJXjIr4W1Sghun8ju+uYWD8h2c61B4dKwfnQHVDFpAJ9oS28RpfqZQJ6Dgd3RceGkILDY9YT+72HJR3LoeSQ==} + '@cacheable/utils@2.3.3': + resolution: {integrity: sha512-JsXDL70gQ+1Vc2W/KUFfkAJzgb4puKwwKehNLuB+HrNKWf91O736kGfxn4KujXCCSuh6mRRL4XEB0PkAFjWS0A==} '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -2374,8 +2392,8 @@ packages: '@codemirror/theme-one-dark@6.1.2': resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} - '@codemirror/view@6.39.11': - resolution: {integrity: sha512-bWdeR8gWM87l4DB/kYSF9A+dVackzDb/V56Tq7QVrQ7rn86W0rgZFtlL3g3pem6AeGcb9NQNoy3ao4WpW4h5tQ==} + '@codemirror/view@6.39.12': + resolution: {integrity: sha512-f+/VsHVn/kOA9lltk/GFzuYwVVAKmOnNjxbrhkk3tPHntFqjWeI2TbIXx006YkBkqC10wZ4NsnWXCQiFPeAISQ==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -2419,10 +2437,6 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.19': - resolution: {integrity: sha512-QW5/SM2ARltEhoKcmRI1LoLf3/C7dHGswwCnfLcoMgqurBT4f8GvwXMgAbK/FwcxthmJRK5MGTtddj0yQn0J9g==} - engines: {node: '>=18'} - '@csstools/css-syntax-patches-for-csstree@1.0.25': resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==} engines: {node: '>=18'} @@ -3135,12 +3149,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3151,13 +3159,13 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.1': + resolution: {integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.5.2': + resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/core@0.14.0': resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} @@ -3167,37 +3175,29 @@ packages: resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.1.0': + resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/js@9.39.1': resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/markdown@6.6.0': resolution: {integrity: sha512-IsWPy2jU3gaQDlioDC4sT4I4kG1hX1OMWs/q2sWwJrPoMASHW/Z4SDw+6Aql6EsHejGbagYuJbFq9Zvx+Y1b1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.1': + resolution: {integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/plugin-kit@0.3.5': resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.6.0': + resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@excalidraw/excalidraw@0.18.0': resolution: {integrity: sha512-QkIiS+5qdy8lmDWTKsuy0sK/fen/LRDtbhm2lc2xcFcqhv2/zdg95bYnl+wnwwXGHo7kEmP65BSiMHE7PJ3Zpw==} @@ -3759,10 +3759,6 @@ packages: resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -4442,12 +4438,8 @@ packages: '@phosphor-icons/web@2.1.2': resolution: {integrity: sha512-rPAR9o/bEcp4Cw4DEeZHXf+nlGCMNGkNDRizYHM47NLxz9vvEHp/Tt6FMK1NcWadzw/pFDPnRBGi/ofRya958A==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@playwright/test@1.57.0': - resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} + '@playwright/test@1.58.1': + resolution: {integrity: sha512-6LdVIUERWxQMmUSSQi0I53GgCBYgM2RpGngCPY7hSeju+VrKjq3lvs7HpJoPbDiY5QM5EYRtRX5fvrinnMAz3w==} engines: {node: '>=18'} hasBin: true @@ -4475,18 +4467,24 @@ packages: '@babel/core': 7.x vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x + '@preact/preset-vite@2.10.3': + resolution: {integrity: sha512-1SiS+vFItpkNdBs7q585PSAIln0wBeBdcpJYbzPs1qipsb/FssnkUioNXuRsb8ZnU8YEQHr+3v8+/mzWSnTQmg==} + peerDependencies: + '@babel/core': 7.x + vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x + '@preact/signals-core@1.12.2': resolution: {integrity: sha512-5Yf8h1Ke3SMHr15xl630KtwPTW4sYDFkkxS0vQ8UiQLWwZQnrF9IKaVG1mN5VcJz52EcWs2acsc/Npjha/7ysA==} '@preact/signals@2.5.1': resolution: {integrity: sha512-VPjk5YFt7i11Fi4UK0tzaEe5xLwfhUxXL3l89ocxQ5aPz7bRo8M5+N73LjBMPklyXKYKz6YsNo4Smp8n6nplng==} peerDependencies: - preact: 10.28.2 + preact: 10.28.3 - '@preact/signals@2.6.1': - resolution: {integrity: sha512-Gp3DI1T/0YyirwJnImR8l9xyVJgKiVzJXmEhic1/7SPw3zStrsvuBpwKnD609CzsIdzxprWa6yTNXN+VLLZPGQ==} + '@preact/signals@2.6.2': + resolution: {integrity: sha512-80PMfNS3d8t/J3cRNEJP14zRioWnavgqzX/+tsNGiCX6rpD26+eLkUQpa1sIeOERZMink+dAi34y0MJhg11LKQ==} peerDependencies: - preact: 10.28.2 + preact: 10.28.3 '@prefresh/babel-plugin@0.5.2': resolution: {integrity: sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==} @@ -4494,7 +4492,7 @@ packages: '@prefresh/core@1.5.5': resolution: {integrity: sha512-H6GTXUl4V4fe3ijz7yhSa/mZ+pGSOh7XaJb6uP/sQsagBx9yl0D1HKDaeoMQA8Ad2Xm27LqvbitMGSdY9UFSKQ==} peerDependencies: - preact: 10.28.2 + preact: 10.28.3 '@prefresh/utils@1.2.1': resolution: {integrity: sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==} @@ -4502,7 +4500,7 @@ packages: '@prefresh/vite@2.4.11': resolution: {integrity: sha512-/XjURQqdRiCG3NpMmWqE9kJwrg9IchIOWHzulCfqg2sRe/8oQ1g5De7xrk9lbqPIQLn7ntBkKdqWXIj4E9YXyg==} peerDependencies: - preact: 10.28.2 + preact: 10.28.3 vite: '>=2.0.0' '@promptbook/utils@0.69.5': @@ -4831,27 +4829,27 @@ packages: '@redocly/ajv@8.17.2': resolution: {integrity: sha512-rcbDZOfXAgGEJeJ30aWCVVJvxV9ooevb/m1/SFblO2qHs4cqTk178gx7T/vdslf57EA4lTofrwsq5K8rxK9g+g==} - '@redocly/cli@2.14.9': - resolution: {integrity: sha512-eueSFzydep5jwOHxlYW6rFOSRP1b5vY7gVOzQBd2/I6XQJnG31hgrDACqx/heD4vv3hhdpoumopz24erxLe0zQ==} + '@redocly/cli@2.15.1': + resolution: {integrity: sha512-wnzIxQxqhcg9HQUbjxD++cnRpCI8pUUFw2YV9XlFcvDp1EpPy6QokSnZZL3TbC1PLqzTE2XnUycawoTPv9hBuA==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true '@redocly/config@0.22.2': resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==} - '@redocly/config@0.41.2': - resolution: {integrity: sha512-G6muhdTKcEV2TECBFzuT905p4a27OgUtwBqRVnMx1JebO6i8zlm6bPB2H3fD1Hl+MiUpk7Jx2kwGmLVgpz5nIg==} + '@redocly/config@0.41.4': + resolution: {integrity: sha512-LaRKXpHyK5GxmgG2n2e8xp2NyUa8qZls3WMAVg5hKO4b2d7X5uU5F2jvH6JUTVdRW/VfStQqan5DQ1uQz7MVzg==} '@redocly/openapi-core@1.34.5': resolution: {integrity: sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} - '@redocly/openapi-core@2.14.9': - resolution: {integrity: sha512-PIWVxm7Os3U276XMhLIh+qftaA6TxVwOuoyDaobGSkd609fp25tp57G2k/uzzKjrhUD4g2QzeJ4lfCoaBgEjhg==} + '@redocly/openapi-core@2.15.1': + resolution: {integrity: sha512-6OKY+ZgAnU2B1OoPQHXXWCXwNQQUn+8N7WfGMrpRZxorQsB9EcQs0rYofO4mquFzvmIgU2owf8cLaD771pv3BQ==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@redocly/respect-core@2.14.9': - resolution: {integrity: sha512-kP3rylB04NZV52IoEa1t8ObkSxpRZy3zpkRAxYOiLtggRETOnLdcDbYep4ipbk6t0suZamznOLOgiAeBYHo/ig==} + '@redocly/respect-core@2.15.1': + resolution: {integrity: sha512-Qrbhv/TE0TkxNaoDv1hPtNcpMORQiSrU9R95ZtI6KevgUcuEK2GgmoXHTrtVdWdxnpqm8bESTxffcz7+etMjOQ==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} '@replit/codemirror-indentation-markers@6.5.3': @@ -5245,16 +5243,16 @@ packages: resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.1.4': - resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} + '@smithy/config-resolver@4.4.6': + resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.21.0': - resolution: {integrity: sha512-bg2TfzgsERyETAxc/Ims/eJX8eAnIeTi4r4LHpMpfF/2NyO6RsWis0rjKcCPaGksljmOb23BZRiCeT/3NvwkXw==} + '@smithy/core@3.22.0': + resolution: {integrity: sha512-6vjCHD6vaY8KubeNw2Fg3EK0KLGQYdldG4fYgQmA0xSW0dJ8G2xFhSOdrlUakWVoP5JuWHtFODg3PNd/DN3FDA==} engines: {node: '>=18.0.0'} - '@smithy/core@3.21.1': - resolution: {integrity: sha512-NUH8R4O6FkN8HKMojzbGg/5pNjsfTjlMmeFclyPfPaXXUrbr5TzhWgbf7t92wfrpCHRgpjyz7ffASIS3wX28aA==} + '@smithy/core@3.22.1': + resolution: {integrity: sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.0.6': @@ -5305,16 +5303,16 @@ packages: resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.10': - resolution: {integrity: sha512-kwWpNltpxrvPabnjEFvwSmA+66l6s2ReCvgVSzW/z92LU4T28fTdgZ18IdYRYOrisu2NMQ0jUndRScbO65A/zg==} + '@smithy/middleware-endpoint@4.4.12': + resolution: {integrity: sha512-9JMKHVJtW9RysTNjcBZQHDwB0p3iTP6B1IfQV4m+uCevkVd/VuLgwfqk5cnI4RHcp4cPwoIvxQqN4B1sxeHo8Q==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.11': - resolution: {integrity: sha512-/WqsrycweGGfb9sSzME4CrsuayjJF6BueBmkKlcbeU5q18OhxRrvvKlmfw3tpDsK5ilx2XUJvoukwxHB0nHs/Q==} + '@smithy/middleware-endpoint@4.4.13': + resolution: {integrity: sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.27': - resolution: {integrity: sha512-xFUYCGRVsfgiN5EjsJJSzih9+yjStgMTCLANPlf0LVQkPDYCe0hz97qbdTZosFOiYlGBlHYityGRxrQ/hxhfVQ==} + '@smithy/middleware-retry@4.4.30': + resolution: {integrity: sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.9': @@ -5333,6 +5331,10 @@ packages: resolution: {integrity: sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==} engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.4.9': + resolution: {integrity: sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==} + engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.8': resolution: {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} engines: {node: '>=18.0.0'} @@ -5361,12 +5363,12 @@ packages: resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.11': - resolution: {integrity: sha512-6o804SCyHGMXAb5mFJ+iTy9kVKv7F91a9szN0J+9X6p8A0NrdpUxdaC57aye2ipQkP2C4IAqETEpGZ0Zj77Haw==} + '@smithy/smithy-client@4.11.1': + resolution: {integrity: sha512-SERgNg5Z1U+jfR6/2xPYjSEHY1t3pyTHC/Ma3YQl6qWtmiL42bvNId3W/oMUWIwu7ekL2FMPdqAmwbQegM7HeQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.12': - resolution: {integrity: sha512-VKO/HKoQ5OrSHW6AJUmEnUKeXI1/5LfCwO9cwyao7CmLvGnZeM1i36Lyful3LK1XU7HwTVieTqO1y2C/6t3qtA==} + '@smithy/smithy-client@4.11.2': + resolution: {integrity: sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==} engines: {node: '>=18.0.0'} '@smithy/types@4.12.0': @@ -5401,6 +5403,10 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} + '@smithy/util-config-provider@4.2.0': + resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-browser@4.0.22': resolution: {integrity: sha512-hjElSW18Wq3fUAWVk6nbk7pGrV7ZT14DL1IUobmqhV3lxcsIenr5FUsDe2jlTVaS8OYBI3x+Og9URv5YcKb5QA==} engines: {node: '>=18.0.0'} @@ -5413,6 +5419,10 @@ packages: resolution: {integrity: sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==} engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@3.2.8': + resolution: {integrity: sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==} + engines: {node: '>=18.0.0'} + '@smithy/util-hex-encoding@4.2.0': resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} engines: {node: '>=18.0.0'} @@ -5429,6 +5439,10 @@ packages: resolution: {integrity: sha512-jbqemy51UFSZSp2y0ZmRfckmrzuKww95zT9BYMmuJ8v3altGcqjwoV1tzpOwuHaKrwQrCjIzOib499ymr2f98g==} engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.5.11': + resolution: {integrity: sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==} + engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@4.2.0': resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} engines: {node: '>=18.0.0'} @@ -5793,6 +5807,9 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -5940,6 +5957,9 @@ packages: '@types/node@22.19.1': resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + '@types/node@24.10.10': + resolution: {integrity: sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==} + '@types/node@24.10.9': resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} @@ -6088,11 +6108,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/eslint-plugin@8.53.0': - resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.53.0 + '@typescript-eslint/parser': ^8.54.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -6103,8 +6123,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.53.0': - resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -6116,14 +6136,14 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.52.0': - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + '@typescript-eslint/project-service@8.53.0': + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.53.0': - resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -6132,28 +6152,28 @@ packages: resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.52.0': - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.53.0': resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.46.4': resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.52.0': - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + '@typescript-eslint/tsconfig-utils@8.53.0': + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.53.0': - resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -6165,8 +6185,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.53.0': - resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -6176,41 +6196,34 @@ packages: resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.52.0': - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.53.0': resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.46.4': resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.52.0': - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.53.0': resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.4': - resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==} + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.52.0': - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + '@typescript-eslint/utils@8.46.4': + resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -6223,18 +6236,25 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.46.4': resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.52.0': - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.53.0': resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -6349,27 +6369,27 @@ packages: '@vue/shared@3.5.14': resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==} - '@wdio/config@9.23.2': - resolution: {integrity: sha512-19Z+AIQ1NUpr6ncTumjSthm6A7c3DbaGTp+VCdcyN+vHYOK4WsWIomSk+uSbFosYFQVGRjCaHaeGSnC8GNPGYQ==} + '@wdio/config@9.23.3': + resolution: {integrity: sha512-tQCT1R6R3hdib7Qb+82Dxgn/sB+CiR8+GS4zyJh5vU0dzLGeYsCo2B5W89VLItvRjveTmsmh8NOQGV2KH0FHTQ==} engines: {node: '>=18.20.0'} '@wdio/logger@9.18.0': resolution: {integrity: sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==} engines: {node: '>=18.20.0'} - '@wdio/protocols@9.23.2': - resolution: {integrity: sha512-pmCYOYI2N89QCC8IaiHwaWyP0mR8T1iKkEGpoTq2XVihp7VK/lfPvieyeZT5/e28MadYLJsDQ603pbu5J1NRDg==} + '@wdio/protocols@9.23.3': + resolution: {integrity: sha512-QfA3Gfl9/3QRX1FnH7x2+uZrgpkwYcksgk1bxGLzl/E0Qefp3BkhgHAfSB1+iKsiYIw9iFOLVx+x+zh0F4BSeg==} '@wdio/repl@9.16.2': resolution: {integrity: sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==} engines: {node: '>=18.20.0'} - '@wdio/types@9.23.2': - resolution: {integrity: sha512-ryfrERGsNp+aCcrTE1rFU6cbmDj8GHZ04R9k52KNt2u1a6bv3Eh5A/cUA0hXuMdEUfsc8ePLYdwQyOLFydZ0ig==} + '@wdio/types@9.23.3': + resolution: {integrity: sha512-Ufjh06DAD7cGTMORUkq5MTZLw1nAgBSr2y8OyiNNuAfPGCwHEU3EwEfhG/y0V7S7xT5pBxliqWi7AjRrCgGcIA==} engines: {node: '>=18.20.0'} - '@wdio/utils@9.23.2': - resolution: {integrity: sha512-+QfgXUWeA940AXT5l5UlrBKoHBk9GLSQE3BA+7ra1zWuFvv6SHG6M2mwplcPlOlymJMqXy8e7ZgLEoLkXuvC1Q==} + '@wdio/utils@9.23.3': + resolution: {integrity: sha512-LO/cTpOcb3r49psjmWTxjFduHUMHDOhVfSzL1gfBCS5cGv6h3hAWOYw/94OrxLn1SIOgZu/hyLwf3SWeZB529g==} engines: {node: '>=18.20.0'} '@webassemblyjs/ast@1.14.1': @@ -7087,8 +7107,8 @@ packages: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} - cacheable@2.2.0: - resolution: {integrity: sha512-LEJxRqfeomiiRd2t0uON6hxAtgOoWDfY3fugebbz+J3vDLO+SkdfFChQcOHTZhj9SYa9iwE9MGYNX72dKiOE4w==} + cacheable@2.3.2: + resolution: {integrity: sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -8198,18 +8218,6 @@ packages: di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - - diff@8.0.2: - resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} - engines: {node: '>=0.3.1'} - diff@8.0.3: resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} engines: {node: '>=0.3.1'} @@ -8287,8 +8295,8 @@ packages: resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} hasBin: true - dpdm@3.14.0: - resolution: {integrity: sha512-YJzsFSyEtj88q5eTELg3UWU7TVZkG1dpbF4JDQ3t1b07xuzXmdoGeSz9TKOke1mUuOpWlk4q+pBh+aHzD6GBTg==} + dpdm@4.0.1: + resolution: {integrity: sha512-9NutC+V6A/4GHgqsqRTMQNDlhipK3lyPWBJ8zIVT8lTncy71d1BzR7sbCO0Dv2zTZ4XSxvbEfMyd0NDDLU0+fw==} hasBin: true draggabilly@3.0.0: @@ -8377,8 +8385,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@40.0.0: - resolution: {integrity: sha512-UyBy5yJ0/wm4gNugCtNPjvddjAknMTuXR2aCHioXicH7aKRKGDBPp4xqTEi/doVcB3R+MN3wfU9o8d/9pwgK2A==} + electron@40.2.1: + resolution: {integrity: sha512-0zOeyN8LB1KHIjVV5jyMmQmkqx3J8OkkVlab3p7vOM28jI46blxW7M52Tcdi6X2m5o2jj8ejOlAh5+boL3w8aQ==} engines: {node: '>= 12.20.55'} hasBin: true @@ -8600,8 +8608,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-linter-browserify@9.39.2: - resolution: {integrity: sha512-X4oD9ymZLMaNcSRZkNyDEcwObLPTg9QsQM/YHnfWJbnqUJpmmgicXtgi9UGgk+ntC9Aydnp3RW7+uWrkoUbWbg==} + eslint-linter-browserify@10.0.0: + resolution: {integrity: sha512-ZmJ1OcWj3DjsrapPTJagVUpZnsmCFKzyResEDQwSVq4YndeubocN6uVMIe7Fw6RUIUP2Fxn2WdciFqbvpQGsbQ==} eslint-plugin-ckeditor5-rules@13.0.0: resolution: {integrity: sha512-flXURsHYkTlPIHWlxt6BB40DRkdl8l1+qp9rFEi5ruF9ZW6hPRPN3Z4fvalrUAy/JuxmmwrcYKpiv+5keOHuPw==} @@ -8645,9 +8653,9 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.0: + resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} @@ -8661,9 +8669,13 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.0: + resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.0.0: + resolution: {integrity: sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -8675,6 +8687,10 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.1.0: + resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8688,6 +8704,10 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -8892,8 +8912,8 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - file-entry-cache@11.1.1: - resolution: {integrity: sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==} + file-entry-cache@11.1.2: + resolution: {integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==} file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} @@ -8966,8 +8986,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat-cache@6.1.19: - resolution: {integrity: sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==} + flat-cache@6.1.20: + resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -9004,13 +9024,13 @@ packages: resolution: {integrity: sha512-aTnihCmiMA0ItLJLCbrQYS9mzriopW24goFPgUnKAAmAlPogTSmFWqoBPMXzIfPb7bs04Hur5zEI4WYgLW3Sig==} engines: {node: '>=12'} + force-graph@1.51.1: + resolution: {integrity: sha512-uEEX8iRzgq1IKRISOw6RrB2RLMhcI25xznQYrCTVvxZHZZ+A2jH6qIolYuwavVxAMi64pFp2yZm4KFVdD993cg==} + engines: {node: '>=12'} + foreach@2.0.6: resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - form-data-encoder@4.1.0: resolution: {integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==} engines: {node: '>= 18'} @@ -9254,35 +9274,22 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - hasBin: true - - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} - engines: {node: 20 || >=22} - hasBin: true - glob@13.0.0: resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-agent@3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} @@ -9308,10 +9315,6 @@ packages: resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==} engines: {node: '>=16'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - globals@15.15.0: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} @@ -9324,6 +9327,10 @@ packages: resolution: {integrity: sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==} engines: {node: '>=18'} + globals@17.3.0: + resolution: {integrity: sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -9387,8 +9394,8 @@ packages: resolution: {integrity: sha512-QsCdAUHAmiDeKeaNojb1OHOPF7NjcWPBR7obdu3NwH2a/oyQaLg5d0aaCy/9My6CdPChYF07dvz5chaXBGaD4g==} engines: {node: '>=20.0.0'} - happy-dom@20.4.0: - resolution: {integrity: sha512-RDeQm3dT9n0A5f/TszjUmNCLEuPnMGv3Tv4BmNINebz/h17PA6LMBcxJ5FrcqltNBMh9jA/8ufgDdBYUdBt+eg==} + happy-dom@20.5.0: + resolution: {integrity: sha512-VQe+Q5CYiGOgcCERXhcfNsbnrN92FDEKciMH/x6LppU9dd0j4aTjCTlqONFOIMcAm/5JxS3+utowbXV1OoFr+g==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -9433,6 +9440,10 @@ packages: resolution: {integrity: sha512-43XJKpwle72Ik5Zpam7MuzRWyNdwwdf6XHlh8wCj2PggvWf+v/Dm5B0dxGZOmddidgeO6Ofu9As/o231Ti/9PA==} engines: {node: '>=20'} + hashery@1.4.0: + resolution: {integrity: sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==} + engines: {node: '>=20'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -9509,8 +9520,8 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - hookified@1.13.0: - resolution: {integrity: sha512-6sPYUY8olshgM/1LDNW4QZQN0IqgKhtl/1C8koNZBJrKLBk3AZl6chQtNwpNztvfiApHMEwMHek5rv993PRbWw==} + hookified@1.15.0: + resolution: {integrity: sha512-51w+ZZGt7Zw5q7rM3nC4t3aLn/xvKDETsXqMczndvwyVQhAHfUmUuFBRFcos8Iyebtk7OAE9dL26wFNzZVVOkw==} hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -10179,13 +10190,6 @@ packages: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} - jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -10431,8 +10435,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - keyv@5.5.4: - resolution: {integrity: sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} khroma@2.1.0: resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} @@ -10666,9 +10670,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} @@ -10722,8 +10723,8 @@ packages: lodash.zip@4.2.0: resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -10733,6 +10734,10 @@ packages: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} + log-update@5.0.1: resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10928,8 +10933,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -11138,8 +11143,8 @@ packages: mind-elixir@5.4.0: resolution: {integrity: sha512-yxXajDWoSF6id8b2LKxlhXidxH/v6mx4JV+isrtsZ62RGCMsRbjUMFO9xOfTVH8vyxWhsbCkiAP6/i5hqbyk6w==} - mind-elixir@5.6.1: - resolution: {integrity: sha512-FTpP5yfyjqXxtHbUAcJVrzBgbU9en0dQIbYx4lQc1C7aWOnjHGHr9iVccgMqU4gh9jVIBpunm4++2DpN753mGg==} + mind-elixir@5.8.0: + resolution: {integrity: sha512-/UpfwZoiySbXoc6nUIK5DSo8HK5vKtW8tnQz63vuoCvuVU3xj1j2mfmMTnGgiV5NoAKxSyAD59RMBpJfD0kbPw==} mini-css-extract-plugin@2.9.4: resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} @@ -11211,10 +11216,6 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -11242,11 +11243,6 @@ packages: engines: {node: '>=10'} hasBin: true - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} @@ -11445,8 +11441,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + node-forge@1.3.3: + resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} engines: {node: '>= 6.13.0'} node-gyp-build@4.8.4: @@ -11726,14 +11722,14 @@ packages: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} + ora@9.1.0: + resolution: {integrity: sha512-53uuLsXHOAJl5zLrUrzY9/kE+uIFEx7iaH4g2BIJQK4LZjY4LpCCYZVKDWIkL+F01wAaCg93duQ1whnK/AmY1A==} + engines: {node: '>=20'} + os-shim@0.1.3: resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==} engines: {node: '>= 0.4.0'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - outdent@0.8.0: resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} @@ -11926,10 +11922,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} @@ -12051,13 +12043,13 @@ packages: pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - playwright-core@1.57.0: - resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + playwright-core@1.58.1: + resolution: {integrity: sha512-bcWzOaTxcW+VOOGBCQgnaKToLJ65d6AqfLVKEWvexyS3AS6rbXl+xdpYRMGSRBClPvyj44njOWoxjNdL/H9UNg==} engines: {node: '>=18'} hasBin: true - playwright@1.57.0: - resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + playwright@1.58.1: + resolution: {integrity: sha512-+2uTZHxSCcxjvGc5C891LrS1/NlxglGxzrC4seZiVjcYVQfUa87wBL6rTDqzGjuoWNjnBzRqKmF6zRYGMvQUaQ==} engines: {node: '>=18'} hasBin: true @@ -12496,10 +12488,6 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} - engines: {node: '>=4'} - postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} @@ -12556,16 +12544,16 @@ packages: preact-iso@2.11.1: resolution: {integrity: sha512-rLy0RmzP/hrDjnFdnEblxFgKtzUj4njkHrpGJBGS7S4QuYw1zv0lA38qsWpeAAB10JAz/hF2CsHrLen9ufCtbw==} peerDependencies: - preact: 10.28.2 + preact: 10.28.3 preact-render-to-string: '>=6.4.0' preact-render-to-string@6.6.5: resolution: {integrity: sha512-O6MHzYNIKYaiSX3bOw0gGZfEbOmlIDtDfWwN1JJdc/T3ihzRT6tGGSEWE088dWrEDGa1u7101q+6fzQnO9XCPA==} peerDependencies: - preact: 10.28.2 + preact: 10.28.3 - preact@10.28.2: - resolution: {integrity: sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==} + preact@10.28.3: + resolution: {integrity: sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==} prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} @@ -12688,22 +12676,14 @@ packages: pwacompat@2.0.17: resolution: {integrity: sha512-6Du7IZdIy7cHiv7AhtDy4X2QRM8IAD5DII69mt5qWibC2d15ZU8DmBG1WdZKekG11cChSu4zkSUGPF9sweOl6w==} - qified@0.5.2: - resolution: {integrity: sha512-7gJ6mxcQb9vUBOtbKm5mDevbe2uRcOEVp1g4gb/Q+oLntB3HY8eBhOYRxFI2mlDFlY1e4DOSCptzxarXRvzxCA==} + qified@0.6.0: + resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} engines: {node: '>=20'} qjobs@1.2.0: resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} engines: {node: '>=0.9'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} - qs@6.14.1: resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} @@ -12884,8 +12864,8 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - react-window@2.2.5: - resolution: {integrity: sha512-6viWvPSZvVuMIe9hrl4IIZoVfO/npiqOb03m4Z9w+VihmVzBbiudUrtUqDpsWdKvd/Ai31TCR25CBcFFAUm28w==} + react-window@2.2.6: + resolution: {integrity: sha512-v89O08xRdpCaEuf380B39D1C/0KgUDZA59xft6SVAjzjz/xQxSyXrgDWHymIsYI6TMrqE8WO+G0/PB9AGE8VNA==} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 @@ -14058,8 +14038,8 @@ packages: engines: {node: '>=18.12.0'} hasBin: true - stylelint@17.0.0: - resolution: {integrity: sha512-saMZ2mqdQre4AfouxcbTdpVglDRcROb4MIucKHvgsDb/0IX7ODhcaz+EOIyfxAsm8Zjl/7j4hJj6MgIYYM8Xwg==} + stylelint@17.1.0: + resolution: {integrity: sha512-+cUX1FxkkbLX5qJRAPapUv/+v+YU3pGbWu+pHVqTXpiY0mYh3Dxfxa0bLBtVtYgOC8hIWIyX2H/3Y3LWlAevDg==} engines: {node: '>=20.19.0'} hasBin: true @@ -14189,16 +14169,6 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me - - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} - engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me - tar@7.5.7: resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==} engines: {node: '>=18'} @@ -14303,10 +14273,6 @@ packages: tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -14523,8 +14489,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - typescript-eslint@8.53.0: - resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} + typescript-eslint@8.54.0: + resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -14590,10 +14556,6 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@6.21.3: - resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} - engines: {node: '>=18.17'} - undici@6.23.0: resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} engines: {node: '>=18.17'} @@ -14819,8 +14781,8 @@ packages: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} - validator@13.15.0: - resolution: {integrity: sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==} + validator@13.15.26: + resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==} engines: {node: '>= 0.10'} value-equal@1.0.1: @@ -15034,12 +14996,12 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webdriver@9.23.2: - resolution: {integrity: sha512-HZy3eydZbmex0pbyLwHaDsAyZ+S+V4XQTdGK/nAOi4uPa74U6yT9vXqtb+3B+5/LDM7L8kTD6Z3b1y4gB4pmTw==} + webdriver@9.23.3: + resolution: {integrity: sha512-8FdXOhzkxqDI6F1dyIsQONhKLDZ9HPSEwNBnH3bD1cHnj/6nVvyYrUtDPo/+J324BuwOa1IVTH3m8mb3B2hTlA==} engines: {node: '>=18.20.0'} - webdriverio@9.23.2: - resolution: {integrity: sha512-VjfTw1bRJdBrzjoCu7BGThxn1JK2V7mAGvxibaBrCNIayPPQjLhVDNJPOVEiR7txM6zmOUWxhkCDxHjhMYirfQ==} + webdriverio@9.23.3: + resolution: {integrity: sha512-1dhMsBx/GLHJsDLhg/xuEQ48JZPrbldz7qdFT+MXQZADj9CJ4bJywWtVBME648MmVMfgDvLc5g2ThGIOupSLvQ==} engines: {node: '>=18.20.0'} peerDependencies: puppeteer-core: '>=22.x || <=24.x' @@ -15425,6 +15387,10 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + z-schema@5.0.5: resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} engines: {node: '>=8.0.0'} @@ -15576,8 +15542,8 @@ snapshots: '@aws-sdk/util-endpoints': 3.821.0 '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.21.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.22.0 '@smithy/eventstream-serde-browser': 4.0.4 '@smithy/eventstream-serde-config-resolver': 4.1.2 '@smithy/eventstream-serde-node': 4.0.4 @@ -15585,14 +15551,14 @@ snapshots: '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.10 - '@smithy/middleware-retry': 4.4.27 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.30 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -15625,20 +15591,20 @@ snapshots: '@aws-sdk/util-endpoints': 3.821.0 '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.21.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.22.0 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.10 - '@smithy/middleware-retry': 4.4.27 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.30 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -15658,12 +15624,12 @@ snapshots: dependencies: '@aws-sdk/types': 3.821.0 '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.21.0 + '@smithy/core': 3.22.0 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 @@ -15688,7 +15654,7 @@ snapshots: '@smithy/node-http-handler': 4.4.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/util-stream': 4.5.10 tslib: 2.8.1 @@ -15800,7 +15766,7 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 '@aws-sdk/util-endpoints': 3.821.0 - '@smithy/core': 3.21.0 + '@smithy/core': 3.22.0 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -15819,20 +15785,20 @@ snapshots: '@aws-sdk/util-endpoints': 3.821.0 '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.21.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.22.0 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.10 - '@smithy/middleware-retry': 4.4.27 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.30 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -15907,7 +15873,7 @@ snapshots: '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -15933,11 +15899,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.28.4(@babel/core@7.28.0)(eslint@9.39.2(jiti@2.6.1))': + '@babel/eslint-parser@7.28.4(@babel/core@7.28.0)(eslint@10.0.0(jiti@2.6.1))': dependencies: '@babel/core': 7.28.0 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) eslint-visitor-keys: 2.1.0 semver: 6.3.1 @@ -15974,7 +15940,7 @@ snapshots: dependencies: '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -15983,8 +15949,6 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} @@ -16055,7 +16019,7 @@ snapshots: '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/types@7.28.5': dependencies: @@ -16068,6 +16032,8 @@ snapshots: '@braintree/sanitize-url@7.1.1': {} + '@braintree/sanitize-url@7.1.2': {} + '@bufbuild/protobuf@2.10.2': optional: true @@ -16087,28 +16053,28 @@ snapshots: tough-cookie: 4.1.4 optional: true - '@cacheable/memory@2.0.5': + '@cacheable/memory@2.0.7': dependencies: - '@cacheable/utils': 2.3.1 - '@keyv/bigmap': 1.3.0(keyv@5.5.4) - hookified: 1.13.0 - keyv: 5.5.4 + '@cacheable/utils': 2.3.3 + '@keyv/bigmap': 1.3.0(keyv@5.6.0) + hookified: 1.15.0 + keyv: 5.6.0 - '@cacheable/utils@2.3.1': + '@cacheable/utils@2.3.3': dependencies: - hashery: 1.2.0 - keyv: 5.5.4 + hashery: 1.4.0 + keyv: 5.6.0 '@chevrotain/cst-dts-gen@11.0.3': dependencies: '@chevrotain/gast': 11.0.3 '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 + lodash-es: 4.17.23 '@chevrotain/gast@11.0.3': dependencies: '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 + lodash-es: 4.17.23 '@chevrotain/regexp-to-ast@11.0.3': {} @@ -16155,7 +16121,7 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 ckeditor5-collaboration: 47.4.0 - diff: 8.0.2 + diff: 8.0.3 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.2.2 @@ -16316,7 +16282,7 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 '@types/luxon': 3.6.2 ckeditor5: 47.4.0 - diff: 8.0.2 + diff: 8.0.3 luxon: 3.6.1 transitivePeerDependencies: - supports-color @@ -16393,7 +16359,7 @@ snapshots: '@ckeditor/ckeditor5-dev-utils': 54.0.0(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) chalk: 5.6.2 fs-extra: 11.3.3 - glob: 11.0.3 + glob: 13.0.0 plural-forms: 0.5.5 pofile: 1.1.4 rimraf: 6.0.1 @@ -16422,7 +16388,7 @@ snapshots: cssnano: 7.1.1(postcss@8.5.6) esbuild-loader: 4.3.0(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) fs-extra: 11.3.3 - glob: 11.0.3 + glob: 13.0.0 is-interactive: 2.0.0 mini-css-extract-plugin: 2.9.4(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) mocha: 11.7.2 @@ -16671,8 +16637,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-highlight@47.4.0': dependencies: @@ -16692,8 +16656,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-embed@47.4.0': dependencies: @@ -16703,8 +16665,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-support@47.4.0': dependencies: @@ -16720,8 +16680,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-icons@47.4.0': {} @@ -16739,8 +16697,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: @@ -16764,8 +16720,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -16775,8 +16729,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: @@ -16801,8 +16753,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: @@ -16826,8 +16776,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-markdown-gfm@47.4.0': dependencies: @@ -16865,8 +16813,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -16904,7 +16850,7 @@ snapshots: es-toolkit: 1.39.5 protobufjs: 7.5.0 - '@ckeditor/ckeditor5-package-tools@5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5)': + '@ckeditor/ckeditor5-package-tools@5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5)': dependencies: '@ckeditor/ckeditor5-dev-translations': 54.0.0(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) '@ckeditor/ckeditor5-dev-utils': 54.0.0(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) @@ -16912,7 +16858,7 @@ snapshots: chalk: 5.6.2 css-loader: 5.2.7(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) fs-extra: 11.3.3 - glob: 11.0.3 + glob: 13.0.0 minimist: 1.2.8 postcss: 8.5.6 postcss-loader: 4.3.0(postcss@8.5.6)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) @@ -16923,7 +16869,7 @@ snapshots: stylelint-config-ckeditor5: 2.0.1(stylelint@16.26.1(typescript@5.0.4)) terser-webpack-plugin: 5.3.14(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) ts-loader: 9.5.4(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)) - ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.0.4) + ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.0.4) typescript: 5.0.4 upath: 2.0.1 webpack: 5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2) @@ -17084,7 +17030,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 ckeditor5: 47.4.0 '@ckeditor/ckeditor5-source-editing@47.4.0': @@ -17262,21 +17208,21 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@codemirror/commands@6.10.1': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@codemirror/commands@6.8.1': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@codemirror/lang-css@6.3.1': @@ -17294,7 +17240,7 @@ snapshots: '@codemirror/lang-javascript': 6.2.4 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@lezer/css': 1.1.11 '@lezer/html': 1.3.12 @@ -17305,7 +17251,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/lint': 6.8.5 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@lezer/javascript': 1.5.1 @@ -17320,7 +17266,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -17330,7 +17276,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -17356,14 +17302,14 @@ snapshots: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@lezer/xml': 1.0.6 '@codemirror/language@6.11.0': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -17376,13 +17322,13 @@ snapshots: '@codemirror/lint@6.8.5': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 crelt: 1.0.6 '@codemirror/search@6.6.0': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 crelt: 1.0.6 '@codemirror/state@6.5.2': @@ -17393,10 +17339,10 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@codemirror/view@6.39.11': + '@codemirror/view@6.39.12': dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 @@ -17439,8 +17385,6 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.19': {} - '@csstools/css-syntax-patches-for-csstree@1.0.25': {} '@csstools/css-tokenizer@3.0.4': {} @@ -17470,10 +17414,6 @@ snapshots: dependencies: postcss-selector-parser: 7.1.1 - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': - dependencies: - postcss-selector-parser: 7.1.0 - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.1)': dependencies: postcss-selector-parser: 7.1.1 @@ -17493,7 +17433,7 @@ snapshots: bluebird: 3.7.2 commander: 9.5.0 debug: 4.3.7 - node-forge: 1.3.1 + node-forge: 1.3.3 split: 1.0.1 transitivePeerDependencies: - supports-color @@ -17577,7 +17517,7 @@ snapshots: interpret: 3.1.1 jiti: 2.6.1 listr2: 7.0.2 - lodash: 4.17.21 + lodash: 4.17.23 log-symbols: 4.1.0 node-fetch: 2.7.0(encoding@0.1.13) rechoir: 0.8.0 @@ -17801,7 +17741,7 @@ snapshots: nopt: 6.0.0 proc-log: 2.0.1 semver: 7.7.3 - tar: 6.2.1 + tar: 7.5.7 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -17864,7 +17804,7 @@ snapshots: ora: 5.4.1 read-binary-file-arch: 1.0.6 semver: 7.7.3 - tar: 6.2.1 + tar: 7.5.7 yargs: 17.7.2 transitivePeerDependencies: - bluebird @@ -17888,9 +17828,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/remote@2.1.3(electron@40.0.0)': + '@electron/remote@2.1.3(electron@40.2.1)': dependencies: - electron: 40.0.0 + electron: 40.2.1 '@electron/universal@2.0.2': dependencies: @@ -18182,29 +18122,24 @@ snapshots: '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0(jiti@2.6.1))': dependencies: - eslint: 9.39.2(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': - dependencies: - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint/config-array@0.23.1': dependencies: - '@eslint/object-schema': 2.1.7 + '@eslint/object-schema': 3.0.1 debug: 4.4.3(supports-color@8.1.1) - minimatch: 3.1.2 + minimatch: 10.1.1 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + '@eslint/config-helpers@0.5.2': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 '@eslint/core@0.14.0': dependencies: @@ -18214,28 +18149,12 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.17.0': + '@eslint/core@1.1.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': - dependencies: - ajv: 6.12.6 - debug: 4.4.3(supports-color@8.1.1) - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/js@9.39.1': {} - '@eslint/js@9.39.2': {} - '@eslint/markdown@6.6.0': dependencies: '@eslint/core': 0.14.0 @@ -18249,16 +18168,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/object-schema@2.1.7': {} + '@eslint/object-schema@3.0.1': {} '@eslint/plugin-kit@0.3.5': dependencies: '@eslint/core': 0.15.2 levn: 0.4.1 - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.6.0': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 levn: 0.4.1 '@excalidraw/excalidraw@0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': @@ -18353,177 +18272,177 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@fsegurai/codemirror-theme-abcdef@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abcdef@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-abyss@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abyss@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-android-studio@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-android-studio@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-andromeda@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-andromeda@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-cobalt2@6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-cobalt2@6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-forest@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-forest@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-monokai@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-monokai@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-nord@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-nord@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-palenight@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-palenight@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-day@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-day@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-volcano@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-volcano@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-dark@6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-dark@6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-light@6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-light@6.2.4(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/highlight': 1.2.1 '@fullcalendar/core@6.1.20': dependencies: - preact: 10.28.2 + preact: 10.28.3 '@fullcalendar/daygrid@6.1.20(@fullcalendar/core@6.1.20)': dependencies: @@ -18703,26 +18622,26 @@ snapshots: '@inquirer/core': 9.2.1 '@inquirer/type': 2.0.0 - '@inquirer/confirm@5.1.21(@types/node@24.10.9)': + '@inquirer/confirm@5.1.21(@types/node@24.10.10)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.9) - '@inquirer/type': 3.0.10(@types/node@24.10.9) + '@inquirer/core': 10.3.2(@types/node@24.10.10) + '@inquirer/type': 3.0.10(@types/node@24.10.10) optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 optional: true - '@inquirer/core@10.3.2(@types/node@24.10.9)': + '@inquirer/core@10.3.2(@types/node@24.10.10)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.10) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 optional: true '@inquirer/core@9.2.1': @@ -18812,9 +18731,9 @@ snapshots: dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.10(@types/node@24.10.9)': + '@inquirer/type@3.0.10(@types/node@24.10.10)': optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 optional: true '@isaacs/balanced-match@4.0.1': {} @@ -18823,15 +18742,6 @@ snapshots: dependencies: '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 @@ -19093,11 +19003,11 @@ snapshots: '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 - '@keyv/bigmap@1.3.0(keyv@5.5.4)': + '@keyv/bigmap@1.3.0(keyv@5.6.0)': dependencies: hashery: 1.2.0 - hookified: 1.13.0 - keyv: 5.5.4 + hookified: 1.15.0 + keyv: 5.6.0 '@keyv/serialize@1.1.1': {} @@ -19189,7 +19099,7 @@ snapshots: '@malept/flatpak-bundler': 0.4.0 debug: 4.4.3(supports-color@8.1.1) electron-installer-common: 0.10.4 - lodash: 4.17.21 + lodash: 4.17.23 semver: 7.7.3 yargs: 16.2.0 transitivePeerDependencies: @@ -19200,7 +19110,7 @@ snapshots: dependencies: debug: 4.4.3(supports-color@8.1.1) fs-extra: 9.1.0 - lodash: 4.17.21 + lodash: 4.17.23 tmp-promise: 3.0.3 transitivePeerDependencies: - supports-color @@ -19257,24 +19167,24 @@ snapshots: dependencies: langium: 3.3.1 - '@microsoft/api-extractor-model@7.30.6(@types/node@24.10.9)': + '@microsoft/api-extractor-model@7.30.6(@types/node@24.10.10)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@24.10.9) + '@rushstack/node-core-library': 5.13.1(@types/node@24.10.10) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.52.8(@types/node@24.10.9)': + '@microsoft/api-extractor@7.52.8(@types/node@24.10.10)': dependencies: - '@microsoft/api-extractor-model': 7.30.6(@types/node@24.10.9) + '@microsoft/api-extractor-model': 7.30.6(@types/node@24.10.10) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@24.10.9) + '@rushstack/node-core-library': 5.13.1(@types/node@24.10.10) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.15.3(@types/node@24.10.9) - '@rushstack/ts-command-line': 5.0.1(@types/node@24.10.9) - lodash: 4.17.21 + '@rushstack/terminal': 0.15.3(@types/node@24.10.10) + '@rushstack/ts-command-line': 5.0.1(@types/node@24.10.10) + lodash: 4.17.23 minimatch: 3.0.8 resolve: 1.22.10 semver: 7.5.4 @@ -19296,9 +19206,9 @@ snapshots: dependencies: mind-elixir: 5.4.0 - '@mind-elixir/node-menu@5.0.1(mind-elixir@5.6.1)': + '@mind-elixir/node-menu@5.0.1(mind-elixir@5.8.0)': dependencies: - mind-elixir: 5.6.1 + mind-elixir: 5.8.0 '@mixmark-io/domino@2.2.0': {} @@ -19452,7 +19362,7 @@ snapshots: '@npmcli/package-json@7.0.0': dependencies: '@npmcli/git': 6.0.3 - glob: 11.0.3 + glob: 13.0.0 hosted-git-info: 9.0.0 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 @@ -19639,12 +19549,9 @@ snapshots: '@phosphor-icons/web@2.1.2': {} - '@pkgjs/parseargs@0.11.0': - optional: true - - '@playwright/test@1.57.0': + '@playwright/test@1.58.1': dependencies: - playwright: 1.57.0 + playwright: 1.58.1 '@pnpm/config.env-replace@1.1.0': {} @@ -19662,51 +19569,68 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.28.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) - '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0) debug: 4.4.3(supports-color@8.1.1) picocolors: 1.1.1 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-prerender-plugin: 0.5.11(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite-prerender-plugin: 0.5.11(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) transitivePeerDependencies: - preact - supports-color + '@preact/preset-vite@2.10.3(@babel/core@7.28.0)(preact@10.28.3)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) + '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@rollup/pluginutils': 5.1.4(rollup@4.52.0) + babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0) + debug: 4.4.3(supports-color@8.1.1) + picocolors: 1.1.1 + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite-prerender-plugin: 0.5.11(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + transitivePeerDependencies: + - preact + - rollup + - supports-color + '@preact/signals-core@1.12.2': {} - '@preact/signals@2.5.1(preact@10.28.2)': + '@preact/signals@2.5.1(preact@10.28.3)': dependencies: '@preact/signals-core': 1.12.2 - preact: 10.28.2 + preact: 10.28.3 - '@preact/signals@2.6.1(preact@10.28.2)': + '@preact/signals@2.6.2(preact@10.28.3)': dependencies: '@preact/signals-core': 1.12.2 - preact: 10.28.2 + preact: 10.28.3 '@prefresh/babel-plugin@0.5.2': {} - '@prefresh/core@1.5.5(preact@10.28.2)': + '@prefresh/core@1.5.5(preact@10.28.3)': dependencies: - preact: 10.28.2 + preact: 10.28.3 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@prefresh/babel-plugin': 0.5.2 - '@prefresh/core': 1.5.5(preact@10.28.2) + '@prefresh/core': 1.5.5(preact@10.28.3) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 10.28.2 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + preact: 10.28.3 + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -20044,25 +19968,25 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - '@redocly/cli@2.14.9(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': + '@redocly/cli@2.15.1(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': dependencies: '@opentelemetry/exporter-trace-otlp-http': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.34.0 - '@redocly/openapi-core': 2.14.9 - '@redocly/respect-core': 2.14.9 + '@redocly/openapi-core': 2.15.1 + '@redocly/respect-core': 2.15.1 abort-controller: 3.0.0 ajv: '@redocly/ajv@8.17.1' ajv-formats: 3.0.1(@redocly/ajv@8.17.1) - chokidar: 3.6.0 colorette: 1.4.0 cookie: 0.7.2 dotenv: 16.4.7 - glob: 11.0.3 + glob: 13.0.0 handlebars: 4.7.8 https-proxy-agent: 7.0.6 mobx: 6.15.0 + picomatch: 4.0.3 pluralize: 8.0.0 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -20085,7 +20009,7 @@ snapshots: '@redocly/config@0.22.2': {} - '@redocly/config@0.41.2': + '@redocly/config@0.41.4': dependencies: json-schema-to-ts: 2.7.2 @@ -20103,10 +20027,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@redocly/openapi-core@2.14.9': + '@redocly/openapi-core@2.15.1': dependencies: '@redocly/ajv': 8.17.2 - '@redocly/config': 0.41.2 + '@redocly/config': 0.41.4 ajv: '@redocly/ajv@8.17.2' ajv-formats: 3.0.1(@redocly/ajv@8.17.2) colorette: 1.4.0 @@ -20116,12 +20040,12 @@ snapshots: pluralize: 8.0.0 yaml-ast-parser: 0.0.43 - '@redocly/respect-core@2.14.9': + '@redocly/respect-core@2.15.1': dependencies: '@faker-js/faker': 7.6.0 '@noble/hashes': 1.8.0 '@redocly/ajv': 8.17.1 - '@redocly/openapi-core': 2.14.9 + '@redocly/openapi-core': 2.15.1 ajv: '@redocly/ajv@8.17.1' better-ajv-errors: 1.2.0(@redocly/ajv@8.17.1) colorette: 2.0.20 @@ -20129,30 +20053,31 @@ snapshots: jsonpath-rfc9535: 1.3.0 openapi-sampler: 1.6.2 outdent: 0.8.0 + picomatch: 4.0.3 - '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)': + '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 - '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': + '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.6.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.11)': + '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.6.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)': dependencies: '@codemirror/commands': 6.10.1 '@codemirror/language': 6.11.0 '@codemirror/search': 6.6.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.11 + '@codemirror/view': 6.39.12 '@rolldown/binding-android-arm64@1.0.0-beta.29': optional: true @@ -20341,7 +20266,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.0': optional: true - '@rushstack/node-core-library@5.13.1(@types/node@24.10.9)': + '@rushstack/node-core-library@5.13.1(@types/node@24.10.10)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -20352,23 +20277,23 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.15.3(@types/node@24.10.9)': + '@rushstack/terminal@0.15.3(@types/node@24.10.10)': dependencies: - '@rushstack/node-core-library': 5.13.1(@types/node@24.10.9) + '@rushstack/node-core-library': 5.13.1(@types/node@24.10.10) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 - '@rushstack/ts-command-line@5.0.1(@types/node@24.10.9)': + '@rushstack/ts-command-line@5.0.1(@types/node@24.10.10)': dependencies: - '@rushstack/terminal': 0.15.3(@types/node@24.10.9) + '@rushstack/terminal': 0.15.3(@types/node@24.10.10) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -20449,15 +20374,16 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/config-resolver@4.1.4': + '@smithy/config-resolver@4.4.6': dependencies: '@smithy/node-config-provider': 4.3.8 '@smithy/types': 4.12.0 - '@smithy/util-config-provider': 4.0.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.8 '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/core@3.21.0': + '@smithy/core@3.22.0': dependencies: '@smithy/middleware-serde': 4.2.9 '@smithy/protocol-http': 5.3.8 @@ -20470,7 +20396,7 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 - '@smithy/core@3.21.1': + '@smithy/core@3.22.1': dependencies: '@smithy/middleware-serde': 4.2.9 '@smithy/protocol-http': 5.3.8 @@ -20478,7 +20404,7 @@ snapshots: '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-middleware': 4.2.8 - '@smithy/util-stream': 4.5.10 + '@smithy/util-stream': 4.5.11 '@smithy/util-utf8': 4.2.0 '@smithy/uuid': 1.1.0 tslib: 2.8.1 @@ -20555,9 +20481,9 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.10': + '@smithy/middleware-endpoint@4.4.12': dependencies: - '@smithy/core': 3.21.0 + '@smithy/core': 3.22.0 '@smithy/middleware-serde': 4.2.9 '@smithy/node-config-provider': 4.3.8 '@smithy/shared-ini-file-loader': 4.4.3 @@ -20566,9 +20492,9 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.11': + '@smithy/middleware-endpoint@4.4.13': dependencies: - '@smithy/core': 3.21.1 + '@smithy/core': 3.22.1 '@smithy/middleware-serde': 4.2.9 '@smithy/node-config-provider': 4.3.8 '@smithy/shared-ini-file-loader': 4.4.3 @@ -20577,12 +20503,12 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.27': + '@smithy/middleware-retry@4.4.30': dependencies: '@smithy/node-config-provider': 4.3.8 '@smithy/protocol-http': 5.3.8 '@smithy/service-error-classification': 4.2.8 - '@smithy/smithy-client': 4.10.12 + '@smithy/smithy-client': 4.11.2 '@smithy/types': 4.12.0 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -20615,6 +20541,14 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@smithy/node-http-handler@4.4.9': + dependencies: + '@smithy/abort-controller': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/property-provider@4.2.8': dependencies: '@smithy/types': 4.12.0 @@ -20656,24 +20590,24 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.10.11': + '@smithy/smithy-client@4.11.1': dependencies: - '@smithy/core': 3.21.0 - '@smithy/middleware-endpoint': 4.4.10 + '@smithy/core': 3.22.0 + '@smithy/middleware-endpoint': 4.4.12 '@smithy/middleware-stack': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 '@smithy/util-stream': 4.5.10 tslib: 2.8.1 - '@smithy/smithy-client@4.10.12': + '@smithy/smithy-client@4.11.2': dependencies: - '@smithy/core': 3.21.1 - '@smithy/middleware-endpoint': 4.4.11 + '@smithy/core': 3.22.1 + '@smithy/middleware-endpoint': 4.4.13 '@smithy/middleware-stack': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 - '@smithy/util-stream': 4.5.10 + '@smithy/util-stream': 4.5.11 tslib: 2.8.1 '@smithy/types@4.12.0': @@ -20714,21 +20648,25 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/util-config-provider@4.2.0': + dependencies: + tslib: 2.8.1 + '@smithy/util-defaults-mode-browser@4.0.22': dependencies: '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 bowser: 2.11.0 tslib: 2.8.1 '@smithy/util-defaults-mode-node@4.0.22': dependencies: - '@smithy/config-resolver': 4.1.4 + '@smithy/config-resolver': 4.4.6 '@smithy/credential-provider-imds': 4.0.6 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -20738,6 +20676,12 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@smithy/util-endpoints@3.2.8': + dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/util-hex-encoding@4.2.0': dependencies: tslib: 2.8.1 @@ -20764,6 +20708,17 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/util-stream@4.5.11': + dependencies: + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.9 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/util-uri-escape@4.2.0': dependencies: tslib: 2.8.1 @@ -20796,10 +20751,10 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@stylistic/eslint-plugin@4.4.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@stylistic/eslint-plugin@4.4.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) + '@typescript-eslint/utils': 8.53.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.0.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -20808,7 +20763,7 @@ snapshots: - supports-color - typescript - '@stylistic/stylelint-plugin@3.1.3(stylelint@17.0.0(typescript@5.9.3))': + '@stylistic/stylelint-plugin@3.1.3(stylelint@17.1.0(typescript@5.9.3))': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -20818,7 +20773,7 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 style-search: 0.1.0 - stylelint: 17.0.0(typescript@5.9.3) + stylelint: 17.1.0(typescript@5.9.3) '@swc/core-darwin-arm64@1.11.29': optional: true @@ -20926,7 +20881,7 @@ snapshots: '@types/appdmg@0.5.5': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 optional: true '@types/archiver@7.0.0': @@ -20942,11 +20897,11 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/bonjour@3.5.13': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/bootstrap@5.2.10': dependencies: @@ -20960,7 +20915,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/responselike': 1.0.3 '@types/chai@5.2.2': @@ -20985,11 +20940,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.1.0 - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/connect@3.4.38': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/cookie-parser@1.4.10(@types/express@5.0.6)': dependencies: @@ -21002,7 +20957,7 @@ snapshots: '@types/cors@2.8.19': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/cssnano@5.1.3(postcss@8.5.6)': dependencies: @@ -21151,6 +21106,8 @@ snapshots: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + '@types/esrecurse@4.3.1': {} + '@types/estree@1.0.8': {} '@types/express-http-proxy@1.6.7': @@ -21159,7 +21116,7 @@ snapshots: '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -21200,7 +21157,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 optional: true '@types/geojson-vt@3.2.5': @@ -21223,7 +21180,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/ini@4.1.1': {} @@ -21237,11 +21194,11 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/keyv@3.1.4': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/leaflet-gpx@1.3.8': dependencies: @@ -21291,11 +21248,11 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/node-forge@1.3.14': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/node@16.9.1': {} @@ -21323,6 +21280,10 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@24.10.10': + dependencies: + undici-types: 7.16.0 + '@types/node@24.10.9': dependencies: undici-types: 7.16.0 @@ -21351,13 +21312,13 @@ snapshots: '@types/readdir-glob@1.1.5': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/resolve@1.20.2': {} '@types/responselike@1.0.3': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/retry@0.12.2': {} @@ -21376,7 +21337,7 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/serve-favicon@2.5.7': dependencies: @@ -21389,7 +21350,7 @@ snapshots: '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/send': 0.17.5 '@types/serve-static@2.2.0': @@ -21403,7 +21364,7 @@ snapshots: '@types/sockjs@0.3.36': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/statuses@2.0.6': optional: true @@ -21418,7 +21379,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.10.9 + '@types/node': 24.10.10 form-data: 4.0.5 '@types/supercluster@7.1.3': @@ -21434,7 +21395,7 @@ snapshots: '@types/through2@2.0.41': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 '@types/tmp@0.2.6': {} @@ -21472,18 +21433,18 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 optional: true - '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.4 - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -21492,15 +21453,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.0 - eslint: 9.39.2(jiti@2.6.1) + '@typescript-eslint/parser': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + eslint: 10.0.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -21508,42 +21469,33 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.46.4 '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.4 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.53.0 - debug: 4.4.3(supports-color@8.1.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) '@typescript-eslint/types': 8.53.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 @@ -21559,26 +21511,31 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.46.4': dependencies: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/visitor-keys': 8.46.4 - '@typescript-eslint/scope-manager@8.52.0': - dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 - '@typescript-eslint/scope-manager@8.53.0': dependencies: '@typescript-eslint/types': 8.53.0 '@typescript-eslint/visitor-keys': 8.53.0 - '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.54.0': dependencies: - typescript: 5.9.3 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 - '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -21586,25 +21543,29 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -21612,10 +21573,10 @@ snapshots: '@typescript-eslint/types@8.46.4': {} - '@typescript-eslint/types@8.52.0': {} - '@typescript-eslint/types@8.53.0': {} + '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3) @@ -21632,21 +21593,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 9.0.5 - semver: 7.7.3 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3) @@ -21662,35 +21608,50 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.46.4 '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.53.0 '@typescript-eslint/types': 8.53.0 '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -21700,16 +21661,16 @@ snapshots: '@typescript-eslint/types': 8.46.4 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.52.0': - dependencies: - '@typescript-eslint/types': 8.52.0 - eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.53.0': dependencies: '@typescript-eslint/types': 8.53.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + eslint-visitor-keys: 4.2.1 + '@ungap/structured-clone@1.3.0': {} '@uploadcare/cname-prefix@6.18.3': {} @@ -21746,27 +21707,27 @@ snapshots: - bufferutil - utf-8-validate - '@vitest/browser-webdriverio@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@vitest/browser-webdriverio@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)(webdriverio@9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@vitest/browser': 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - webdriverio: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + '@vitest/browser': 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + webdriverio: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)': + '@vitest/browser@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)': dependencies: - '@vitest/mocker': 4.0.18(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/mocker': 4.0.18(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/utils': 4.0.18 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -21786,11 +21747,11 @@ snapshots: magicast: 0.5.1 obug: 2.1.1 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.18(@vitest/browser@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18))(vitest@4.0.18)': + '@vitest/coverage-v8@4.0.18(@vitest/browser@4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18))(vitest@4.0.18)': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.18 @@ -21802,9 +21763,9 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: - '@vitest/browser': 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + '@vitest/browser': 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) '@vitest/expect@4.0.18': dependencies: @@ -21815,14 +21776,14 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.18(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitest/mocker@4.0.18(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.7.5(@types/node@24.10.9)(typescript@5.9.3) - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + msw: 2.7.5(@types/node@24.10.10)(typescript@5.9.3) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/pretty-format@4.0.18': dependencies: @@ -21850,7 +21811,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@4.0.18': dependencies: @@ -21904,14 +21865,15 @@ snapshots: '@vue/shared@3.5.14': {} - '@wdio/config@9.23.2': + '@wdio/config@9.23.3': dependencies: '@wdio/logger': 9.18.0 - '@wdio/types': 9.23.2 - '@wdio/utils': 9.23.2 + '@wdio/types': 9.23.3 + '@wdio/utils': 9.23.3 deepmerge-ts: 7.1.5 - glob: 10.5.0 + glob: 13.0.0 import-meta-resolve: 4.2.0 + jiti: 2.6.1 transitivePeerDependencies: - bare-buffer - supports-color @@ -21924,21 +21886,21 @@ snapshots: safe-regex2: 5.0.0 strip-ansi: 7.1.2 - '@wdio/protocols@9.23.2': {} + '@wdio/protocols@9.23.3': {} '@wdio/repl@9.16.2': dependencies: '@types/node': 20.19.25 - '@wdio/types@9.23.2': + '@wdio/types@9.23.3': dependencies: '@types/node': 20.19.25 - '@wdio/utils@9.23.2': + '@wdio/utils@9.23.3': dependencies: '@puppeteer/browsers': 2.10.10 '@wdio/logger': 9.18.0 - '@wdio/types': 9.23.2 + '@wdio/types': 9.23.3 decamelize: 6.0.1 deepmerge-ts: 7.1.5 edgedriver: 6.1.2 @@ -22042,12 +22004,12 @@ snapshots: '@webext-core/match-patterns@1.0.3': {} - '@wxt-dev/auto-icons@1.1.0(wxt@0.20.13(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@wxt-dev/auto-icons@1.1.0(wxt@0.20.13(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: defu: 6.1.4 fs-extra: 11.3.3 sharp: 0.34.5 - wxt: 0.20.13(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + wxt: 0.20.13(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@wxt-dev/browser@0.1.32': dependencies: @@ -22277,11 +22239,11 @@ snapshots: archiver-utils@5.0.2: dependencies: - glob: 10.5.0 + glob: 13.0.0 graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 - lodash: 4.17.21 + lodash: 4.17.23 normalize-path: 3.0.0 readable-stream: 4.7.0 @@ -22577,7 +22539,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.13.0 + qs: 6.14.1 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -22592,7 +22554,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.7.0 on-finished: 2.4.1 - qs: 6.14.0 + qs: 6.14.1 raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: @@ -22756,7 +22718,7 @@ snapshots: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.2.1 + tar: 7.5.7 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird @@ -22780,7 +22742,7 @@ snapshots: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 9.0.1 - tar: 6.2.1 + tar: 7.5.7 unique-filename: 2.0.1 transitivePeerDependencies: - bluebird @@ -22789,7 +22751,7 @@ snapshots: dependencies: '@npmcli/fs': 4.0.0 fs-minipass: 3.0.3 - glob: 10.5.0 + glob: 13.0.0 lru-cache: 10.4.3 minipass: 7.1.2 minipass-collect: 2.0.1 @@ -22804,7 +22766,7 @@ snapshots: dependencies: '@npmcli/fs': 4.0.0 fs-minipass: 3.0.3 - glob: 11.0.3 + glob: 13.0.0 lru-cache: 11.2.4 minipass: 7.1.2 minipass-collect: 2.0.1 @@ -22826,13 +22788,13 @@ snapshots: normalize-url: 6.1.0 responselike: 2.0.1 - cacheable@2.2.0: + cacheable@2.3.2: dependencies: - '@cacheable/memory': 2.0.5 - '@cacheable/utils': 2.3.1 - hookified: 1.13.0 - keyv: 5.5.4 - qified: 0.5.2 + '@cacheable/memory': 2.0.7 + '@cacheable/utils': 2.3.3 + hookified: 1.15.0 + keyv: 5.6.0 + qified: 0.6.0 call-bind-apply-helpers@1.0.2: dependencies: @@ -22960,7 +22922,7 @@ snapshots: '@chevrotain/regexp-to-ast': 11.0.3 '@chevrotain/types': 11.0.3 '@chevrotain/utils': 11.0.3 - lodash-es: 4.17.21 + lodash-es: 4.17.23 chokidar@3.6.0: dependencies: @@ -22988,7 +22950,7 @@ snapshots: chrome-launcher@1.2.0: dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 2.0.2 @@ -23008,8 +22970,6 @@ snapshots: ckeditor5-collaboration@47.4.0: dependencies: '@ckeditor/ckeditor5-collaboration-core': 47.4.0 - transitivePeerDependencies: - - supports-color ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: @@ -24108,12 +24068,6 @@ snapshots: di@0.0.1: {} - diff@4.0.2: {} - - diff@7.0.0: {} - - diff@8.0.2: {} - diff@8.0.3: {} dir-compare@4.2.0: @@ -24202,15 +24156,15 @@ snapshots: dependencies: minimatch: 3.1.2 - dpdm@3.14.0: + dpdm@4.0.1: dependencies: - chalk: 4.1.2 + chalk: 5.6.2 fs-extra: 11.3.3 - glob: 10.4.5 - ora: 5.4.1 + glob: 13.0.0 + ora: 9.1.0 tslib: 2.8.1 typescript: 5.9.3 - yargs: 17.7.2 + yargs: 18.0.0 draggabilly@3.0.0: dependencies: @@ -24279,7 +24233,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) fs-extra: 9.1.0 glob: 7.2.3 - lodash: 4.17.21 + lodash: 4.17.23 parse-author: 2.0.0 semver: 7.7.3 tmp-promise: 3.0.3 @@ -24296,7 +24250,7 @@ snapshots: electron-installer-common: 0.10.4 fs-extra: 9.1.0 get-folder-size: 2.0.1 - lodash: 4.17.21 + lodash: 4.17.23 word-wrap: 1.2.5 yargs: 16.2.0 transitivePeerDependencies: @@ -24320,7 +24274,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) electron-installer-common: 0.10.4 fs-extra: 9.1.0 - lodash: 4.17.21 + lodash: 4.17.23 word-wrap: 1.2.5 yargs: 16.2.0 transitivePeerDependencies: @@ -24358,7 +24312,7 @@ snapshots: '@electron/asar': 3.4.1 debug: 4.4.3(supports-color@8.1.1) fs-extra: 7.0.1 - lodash: 4.17.21 + lodash: 4.17.23 temp: 0.9.4 optionalDependencies: '@electron/windows-sign': 1.2.1 @@ -24366,10 +24320,10 @@ snapshots: - supports-color optional: true - electron@40.0.0: + electron@40.2.1: dependencies: '@electron/get': 2.0.3 - '@types/node': 24.10.9 + '@types/node': 24.10.10 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -24426,7 +24380,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/cors': 2.8.19 - '@types/node': 24.10.9 + '@types/node': 24.10.10 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -24760,40 +24714,40 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-ckeditor5@13.0.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + eslint-config-ckeditor5@13.0.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@eslint/js': 9.39.1 '@eslint/markdown': 6.6.0 - '@stylistic/eslint-plugin': 4.4.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) + '@stylistic/eslint-plugin': 4.4.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.0.0(jiti@2.6.1) eslint-plugin-ckeditor5-rules: 13.0.0 - eslint-plugin-mocha: 11.2.0(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-mocha: 11.2.0(eslint@10.0.0(jiti@2.6.1)) globals: 16.5.0 typescript: 5.9.3 - typescript-eslint: 8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color - eslint-config-preact@2.0.0(eslint@9.39.2(jiti@2.6.1)): + eslint-config-preact@2.0.0(eslint@10.0.0(jiti@2.6.1)): dependencies: '@babel/core': 7.28.0 - '@babel/eslint-parser': 7.28.4(@babel/core@7.28.0)(eslint@9.39.2(jiti@2.6.1)) + '@babel/eslint-parser': 7.28.4(@babel/core@7.28.0)(eslint@10.0.0(jiti@2.6.1)) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) '@eslint/js': 9.39.1 - eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-compat: 6.0.2(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.39.2(jiti@2.6.1)) + eslint: 10.0.0(jiti@2.6.1) + eslint-plugin-compat: 6.0.2(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@10.0.0(jiti@2.6.1)) globals: 16.5.0 transitivePeerDependencies: - supports-color - eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@2.6.1)): dependencies: - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) - eslint-linter-browserify@9.39.2: {} + eslint-linter-browserify@10.0.0: {} eslint-plugin-ckeditor5-rules@13.0.0: dependencies: @@ -24804,34 +24758,34 @@ snapshots: validate-npm-package-name: 6.0.2 yaml: 2.8.1 - eslint-plugin-compat@6.0.2(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-compat@6.0.2(eslint@10.0.0(jiti@2.6.1)): dependencies: '@mdn/browser-compat-data': 5.7.6 ast-metadata-inferer: 0.8.1 browserslist: 4.26.2 caniuse-lite: 1.0.30001743 - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) find-up: 5.0.0 globals: 15.15.0 lodash.memoize: 4.1.2 semver: 7.7.3 - eslint-plugin-mocha@11.2.0(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-mocha@11.2.0(eslint@10.0.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - eslint: 9.39.2(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) + eslint: 10.0.0(jiti@2.6.1) globals: 15.15.0 - eslint-plugin-playwright@2.5.1(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-playwright@2.5.1(eslint@10.0.0(jiti@2.6.1)): dependencies: - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) globals: 16.5.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-react-hooks@5.2.0(eslint@10.0.0(jiti@2.6.1)): dependencies: - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) - eslint-plugin-react@7.37.5(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@10.0.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -24839,7 +24793,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -24853,17 +24807,19 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-simple-import-sort@12.1.1(eslint@10.0.0(jiti@2.6.1)): dependencies: - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.0(jiti@2.6.1) eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.4.0: + eslint-scope@9.1.0: dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -24873,29 +24829,28 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2(jiti@2.6.1): + eslint-visitor-keys@5.0.0: {} + + eslint@10.0.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 + '@eslint/config-array': 0.23.1 + '@eslint/config-helpers': 0.5.2 + '@eslint/core': 1.1.0 + '@eslint/plugin-kit': 0.6.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.12.6 - chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 + eslint-scope: 9.1.0 + eslint-visitor-keys: 5.0.0 + espree: 11.1.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -24905,8 +24860,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 10.1.1 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -24920,6 +24874,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + espree@11.1.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 5.0.0 + espree@9.6.1: dependencies: acorn: 8.15.0 @@ -24932,6 +24892,10 @@ snapshots: dependencies: estraverse: 5.3.0 + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -25063,7 +25027,7 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.13.0 + qs: 6.14.1 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.0 @@ -25098,7 +25062,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.14.0 + qs: 6.14.1 range-parser: 1.2.1 router: 2.2.0 send: 1.2.0 @@ -25132,7 +25096,7 @@ snapshots: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 - tmp: 0.0.33 + tmp: 0.2.5 extract-zip@2.0.1: dependencies: @@ -25209,9 +25173,9 @@ snapshots: fflate@0.8.2: {} - file-entry-cache@11.1.1: + file-entry-cache@11.1.2: dependencies: - flat-cache: 6.1.19 + flat-cache: 6.1.20 file-entry-cache@8.0.0: dependencies: @@ -25313,11 +25277,11 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.19: + flat-cache@6.1.20: dependencies: - cacheable: 2.2.0 + cacheable: 2.3.2 flatted: 3.3.3 - hookified: 1.13.0 + hookified: 1.15.0 flat@5.0.2: {} @@ -25327,7 +25291,7 @@ snapshots: dependencies: d3-selection: 3.0.0 kapsule: 1.16.3 - preact: 10.28.2 + preact: 10.28.3 flora-colossus@2.0.0: dependencies: @@ -25365,15 +25329,28 @@ snapshots: float-tooltip: 1.7.5 index-array-by: 1.4.2 kapsule: 1.16.3 - lodash-es: 4.17.21 + lodash-es: 4.17.23 + + force-graph@1.51.1: + dependencies: + '@tweenjs/tween.js': 25.0.0 + accessor-fn: 1.5.3 + bezier-js: 6.1.4 + canvas-color-tracker: 1.3.2 + d3-array: 3.2.4 + d3-drag: 3.0.0 + d3-force-3d: 3.0.6 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + float-tooltip: 1.7.5 + index-array-by: 1.4.2 + kapsule: 1.16.3 + lodash-es: 4.17.23 foreach@2.0.6: {} - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data-encoder@4.1.0: {} form-data@4.0.5: @@ -25647,33 +25624,6 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@11.0.3: - dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 - minimatch: 10.1.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - glob@13.0.0: dependencies: minimatch: 10.1.1 @@ -25740,14 +25690,14 @@ snapshots: kind-of: 6.0.3 which: 4.0.0 - globals@14.0.0: {} - globals@15.15.0: {} globals@16.5.0: {} globals@17.0.0: {} + globals@17.3.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -25825,7 +25775,7 @@ snapshots: '@types/whatwg-mimetype': 3.0.2 whatwg-mimetype: 3.0.0 - happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 24.10.9 '@types/whatwg-mimetype': 3.0.2 @@ -25866,7 +25816,11 @@ snapshots: hashery@1.2.0: dependencies: - hookified: 1.13.0 + hookified: 1.15.0 + + hashery@1.4.0: + dependencies: + hookified: 1.15.0 hasown@2.0.2: dependencies: @@ -25929,7 +25883,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -25945,7 +25899,7 @@ snapshots: hast-util-to-text: 4.0.2 hast-util-whitespace: 3.0.0 mdast-util-phrasing: 4.1.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 mdast-util-to-string: 4.0.0 rehype-minify-whitespace: 6.0.2 trim-trailing-lines: 2.1.0 @@ -26003,7 +25957,7 @@ snapshots: hookable@5.5.3: {} - hookified@1.13.0: {} + hookified@1.15.0: {} hosted-git-info@2.8.9: {} @@ -26659,16 +26613,6 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - jake@10.9.2: dependencies: async: 3.2.6 @@ -26680,7 +26624,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -26949,7 +26893,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy: 1.18.1 isbinaryfile: 4.0.10 - lodash: 4.17.21 + lodash: 4.17.23 log4js: 6.9.1 mime: 2.6.0 minimatch: 3.1.2 @@ -26988,7 +26932,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - keyv@5.5.4: + keyv@5.6.0: dependencies: '@keyv/serialize': 1.1.1 @@ -27227,8 +27171,6 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.21: {} - lodash-es@4.17.23: {} lodash.clonedeep@4.5.0: {} @@ -27263,7 +27205,7 @@ snapshots: lodash.zip@4.2.0: {} - lodash@4.17.21: {} + lodash@4.17.23: {} log-symbols@4.1.0: dependencies: @@ -27275,6 +27217,11 @@ snapshots: chalk: 5.6.2 is-unicode-supported: 1.3.0 + log-symbols@7.0.1: + dependencies: + is-unicode-supported: 2.1.0 + yoctocolors: 2.1.2 + log-update@5.0.1: dependencies: ansi-escapes: 5.0.0 @@ -27624,7 +27571,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -27709,7 +27656,7 @@ snapshots: dompurify: 3.2.5 katex: 0.16.28 khroma: 2.1.0 - lodash-es: 4.17.21 + lodash-es: 4.17.23 marked: 16.4.2 roughjs: 4.6.6 stylis: 4.3.6 @@ -27951,7 +27898,7 @@ snapshots: mind-elixir@5.4.0: {} - mind-elixir@5.6.1: {} + mind-elixir@5.8.0: {} mini-css-extract-plugin@2.9.4(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)): dependencies: @@ -28040,8 +27987,6 @@ snapshots: dependencies: yallist: 4.0.0 - minipass@5.0.0: {} - minipass@7.1.2: {} minizlib@2.1.2: @@ -28063,8 +28008,6 @@ snapshots: mkdirp@1.0.4: {} - mkdirp@3.0.1: {} - mlly@1.7.4: dependencies: acorn: 8.15.0 @@ -28102,10 +28045,10 @@ snapshots: browser-stdout: 1.3.1 chokidar: 4.0.3 debug: 4.4.3(supports-color@8.1.1) - diff: 7.0.0 + diff: 8.0.3 escape-string-regexp: 4.0.0 find-up: 5.0.0 - glob: 10.5.0 + glob: 13.0.0 he: 1.2.0 js-yaml: 4.1.1 log-symbols: 4.1.0 @@ -28139,12 +28082,12 @@ snapshots: ms@2.1.3: {} - msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3): + msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.21(@types/node@24.10.9) + '@inquirer/confirm': 5.1.21(@types/node@24.10.10) '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -28279,7 +28222,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.1: {} + node-forge@1.3.3: {} node-gyp-build@4.8.4: optional: true @@ -28309,7 +28252,7 @@ snapshots: npmlog: 6.0.2 rimraf: 3.0.2 semver: 7.7.3 - tar: 6.2.1 + tar: 7.5.7 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -28651,9 +28594,18 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.2 - os-shim@0.1.3: {} + ora@9.1.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.2.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.2.2 + string-width: 8.1.0 - os-tmpdir@1.0.2: {} + os-shim@0.1.3: {} outdent@0.8.0: {} @@ -28760,7 +28712,7 @@ snapshots: promise-retry: 2.0.1 sigstore: 4.0.0 ssri: 12.0.0 - tar: 7.4.3 + tar: 7.5.7 transitivePeerDependencies: - supports-color @@ -28864,11 +28816,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-scurry@2.0.0: dependencies: lru-cache: 11.2.4 @@ -28987,11 +28934,11 @@ snapshots: exsolve: 1.0.8 pathe: 2.0.3 - playwright-core@1.57.0: {} + playwright-core@1.58.1: {} - playwright@1.57.0: + playwright@1.58.1: dependencies: - playwright-core: 1.57.0 + playwright-core: 1.58.1 optionalDependencies: fsevents: 2.3.2 @@ -29401,11 +29348,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 @@ -29457,16 +29399,16 @@ snapshots: potpack@2.1.0: {} - preact-iso@2.11.1(preact-render-to-string@6.6.5(preact@10.28.2))(preact@10.28.2): + preact-iso@2.11.1(preact-render-to-string@6.6.5(preact@10.28.3))(preact@10.28.3): dependencies: - preact: 10.28.2 - preact-render-to-string: 6.6.5(preact@10.28.2) + preact: 10.28.3 + preact-render-to-string: 6.6.5(preact@10.28.3) - preact-render-to-string@6.6.5(preact@10.28.2): + preact-render-to-string@6.6.5(preact@10.28.3): dependencies: - preact: 10.28.2 + preact: 10.28.3 - preact@10.28.2: {} + preact@10.28.3: {} prebuild-install@7.1.3: dependencies: @@ -29541,7 +29483,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.9 + '@types/node': 24.10.10 long: 5.3.2 protocol-buffers-schema@3.6.0: {} @@ -29602,26 +29544,18 @@ snapshots: purgecss@7.0.2: dependencies: commander: 12.1.0 - glob: 11.0.3 + glob: 13.0.0 postcss: 8.5.6 postcss-selector-parser: 6.1.2 pwacompat@2.0.17: {} - qified@0.5.2: + qified@0.6.0: dependencies: - hookified: 1.13.0 + hookified: 1.15.0 qjobs@1.2.0: {} - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - - qs@6.14.0: - dependencies: - side-channel: 1.1.0 - qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -29804,7 +29738,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - react-window@2.2.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-window@2.2.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -30023,7 +29957,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -30122,7 +30056,7 @@ snapshots: rimraf@6.0.1: dependencies: - glob: 11.0.3 + glob: 13.0.0 package-json-from-dist: 1.0.1 roarr@2.15.4: @@ -30160,11 +30094,11 @@ snapshots: '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.29 optional: true - rollup-plugin-stats@1.5.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + rollup-plugin-stats@1.5.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): optionalDependencies: rolldown: 1.0.0-beta.29 rollup: 4.52.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) rollup-plugin-styles@4.0.0(rollup@4.52.0): dependencies: @@ -30193,13 +30127,13 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.52.0) rollup: 4.52.0 - rollup-plugin-webpack-stats@2.1.10(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + rollup-plugin-webpack-stats@2.1.10(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: - rollup-plugin-stats: 1.5.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + rollup-plugin-stats: 1.5.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) optionalDependencies: rolldown: 1.0.0-beta.29 rollup: 4.52.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) rollup@4.52.0: dependencies: @@ -30464,7 +30398,7 @@ snapshots: selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.14 - node-forge: 1.3.1 + node-forge: 1.3.3 semver-compare@1.0.0: optional: true @@ -30975,7 +30909,7 @@ snapshots: bindings: 1.5.0 node-addon-api: 7.1.1 prebuild-install: 7.1.3 - tar: 6.2.1 + tar: 7.5.7 optionalDependencies: node-gyp: 8.4.1 transitivePeerDependencies: @@ -31230,37 +31164,37 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.1 - stylelint-config-ckeditor5@13.0.0(stylelint@17.0.0(typescript@5.9.3)): + stylelint-config-ckeditor5@13.0.0(stylelint@17.1.0(typescript@5.9.3)): dependencies: - '@stylistic/stylelint-plugin': 3.1.3(stylelint@17.0.0(typescript@5.9.3)) - stylelint: 17.0.0(typescript@5.9.3) - stylelint-config-recommended: 16.0.0(stylelint@17.0.0(typescript@5.9.3)) - stylelint-plugin-ckeditor5-rules: 13.0.0(stylelint@17.0.0(typescript@5.9.3)) + '@stylistic/stylelint-plugin': 3.1.3(stylelint@17.1.0(typescript@5.9.3)) + stylelint: 17.1.0(typescript@5.9.3) + stylelint-config-recommended: 16.0.0(stylelint@17.1.0(typescript@5.9.3)) + stylelint-plugin-ckeditor5-rules: 13.0.0(stylelint@17.1.0(typescript@5.9.3)) stylelint-config-ckeditor5@2.0.1(stylelint@16.26.1(typescript@5.0.4)): dependencies: stylelint: 16.26.1(typescript@5.0.4) stylelint-config-recommended: 3.0.0(stylelint@16.26.1(typescript@5.0.4)) - stylelint-config-recommended@16.0.0(stylelint@17.0.0(typescript@5.9.3)): + stylelint-config-recommended@16.0.0(stylelint@17.1.0(typescript@5.9.3)): dependencies: - stylelint: 17.0.0(typescript@5.9.3) + stylelint: 17.1.0(typescript@5.9.3) stylelint-config-recommended@3.0.0(stylelint@16.26.1(typescript@5.0.4)): dependencies: stylelint: 16.26.1(typescript@5.0.4) - stylelint-plugin-ckeditor5-rules@13.0.0(stylelint@17.0.0(typescript@5.9.3)): + stylelint-plugin-ckeditor5-rules@13.0.0(stylelint@17.1.0(typescript@5.9.3)): dependencies: - stylelint: 17.0.0(typescript@5.9.3) + stylelint: 17.1.0(typescript@5.9.3) stylelint@16.26.1(typescript@5.0.4): dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-syntax-patches-for-csstree': 1.0.19 + '@csstools/css-syntax-patches-for-csstree': 1.0.25 '@csstools/css-tokenizer': 3.0.4 '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) '@dual-bundle/import-meta-resolve': 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 @@ -31270,7 +31204,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 11.1.1 + file-entry-cache: 11.1.2 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 @@ -31287,7 +31221,7 @@ snapshots: postcss: 8.5.6 postcss-resolve-nested-selector: 0.1.6 postcss-safe-parser: 7.0.1(postcss@8.5.6) - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 @@ -31299,7 +31233,7 @@ snapshots: - supports-color - typescript - stylelint@17.0.0(typescript@5.9.3): + stylelint@17.1.0(typescript@5.9.3): dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-syntax-patches-for-csstree': 1.0.25 @@ -31315,7 +31249,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 11.1.1 + file-entry-cache: 11.1.2 global-modules: 2.0.0 globby: 16.1.0 globjoin: 0.1.4 @@ -31543,24 +31477,6 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.23.0 - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@7.4.3: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.2 - minizlib: 3.1.0 - mkdirp: 3.0.1 - yallist: 5.0.0 - tar@7.5.7: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -31675,10 +31591,6 @@ snapshots: tmp: 0.2.5 optional: true - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - tmp@0.2.5: {} tn1150@0.1.0: @@ -31770,19 +31682,19 @@ snapshots: typescript: 5.0.4 webpack: 5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2) - ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.0.4): + ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.0.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.9 + '@types/node': 24.10.10 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 - diff: 4.0.2 + diff: 8.0.3 make-error: 1.3.6 typescript: 5.0.4 v8-compile-cache-lib: 3.0.1 @@ -31790,19 +31702,19 @@ snapshots: optionalDependencies: '@swc/core': 1.11.29(@swc/helpers@0.5.17) - ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.9)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.10)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.9 + '@types/node': 24.10.10 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 - diff: 4.0.2 + diff: 8.0.3 make-error: 1.3.6 typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 @@ -31936,24 +31848,24 @@ snapshots: typescript: 5.9.3 yaml: 2.8.1 - typescript-eslint@8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.4(@typescript-eslint/parser@8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) + '@typescript-eslint/utils': 8.46.4(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -31996,8 +31908,6 @@ snapshots: undici-types@7.16.0: {} - undici@6.21.3: {} - undici@6.23.0: {} undici@7.19.0: {} @@ -32052,7 +31962,7 @@ snapshots: union@0.5.0: dependencies: - qs: 6.14.0 + qs: 6.14.1 unique-filename@1.1.1: dependencies: @@ -32234,7 +32144,7 @@ snapshots: validate-npm-package-name@6.0.2: {} - validator@13.15.0: {} + validator@13.15.26: {} value-equal@1.0.1: {} @@ -32257,13 +32167,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@5.3.0(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vite-node@5.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: cac: 6.7.14 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -32277,9 +32187,9 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@24.10.10)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: - '@microsoft/api-extractor': 7.52.8(@types/node@24.10.9) + '@microsoft/api-extractor': 7.52.8(@types/node@24.10.10) '@rollup/pluginutils': 5.1.4(rollup@4.52.0) '@volar/typescript': 2.4.13 '@vue/language-core': 2.2.0(typescript@5.9.3) @@ -32290,35 +32200,35 @@ snapshots: magic-string: 0.30.21 typescript: 5.9.3 optionalDependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-static-copy@3.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-static-copy@3.1.4(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: chokidar: 3.6.0 p-map: 7.0.4 picocolors: 1.1.1 tinyglobby: 0.2.15 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-plugin-static-copy@3.2.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-static-copy@3.2.0(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: chokidar: 3.6.0 p-map: 7.0.4 picocolors: 1.1.1 tinyglobby: 0.2.15 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-plugin-svgo@2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-svgo@2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: svgo: 3.3.2 typescript: 5.9.3 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-prerender-plugin@0.5.11(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-prerender-plugin@0.5.11(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -32326,9 +32236,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -32337,7 +32247,7 @@ snapshots: rollup: 4.52.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.10 fsevents: 2.3.3 jiti: 2.6.1 less: 4.1.3 @@ -32348,10 +32258,10 @@ snapshots: tsx: 4.21.0 yaml: 2.8.1 - vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.10)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/mocker': 4.0.18(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -32368,14 +32278,14 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 - '@types/node': 24.10.9 - '@vitest/browser-webdriverio': 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@types/node': 24.10.10 + '@vitest/browser-webdriverio': 4.0.18(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.10)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)(webdriverio@9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.18(vitest@4.0.18) - happy-dom: 20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + happy-dom: 20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti @@ -32488,18 +32398,18 @@ snapshots: web-streams-polyfill@3.3.3: {} - webdriver@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriver@9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 20.19.25 '@types/ws': 8.18.1 - '@wdio/config': 9.23.2 + '@wdio/config': 9.23.3 '@wdio/logger': 9.18.0 - '@wdio/protocols': 9.23.2 - '@wdio/types': 9.23.2 - '@wdio/utils': 9.23.2 + '@wdio/protocols': 9.23.3 + '@wdio/types': 9.23.3 + '@wdio/utils': 9.23.3 deepmerge-ts: 7.1.5 https-proxy-agent: 7.0.6 - undici: 6.21.3 + undici: 6.23.0 ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-buffer @@ -32507,16 +32417,16 @@ snapshots: - supports-color - utf-8-validate - webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriverio@9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 20.19.25 '@types/sinonjs__fake-timers': 8.1.5 - '@wdio/config': 9.23.2 + '@wdio/config': 9.23.3 '@wdio/logger': 9.18.0 - '@wdio/protocols': 9.23.2 + '@wdio/protocols': 9.23.3 '@wdio/repl': 9.16.2 - '@wdio/types': 9.23.2 - '@wdio/utils': 9.23.2 + '@wdio/types': 9.23.3 + '@wdio/utils': 9.23.3 archiver: 7.0.1 aria-query: 5.3.2 cheerio: 1.2.0 @@ -32533,7 +32443,7 @@ snapshots: rgb2hex: 0.2.5 serialize-error: 12.0.0 urlpattern-polyfill: 10.1.0 - webdriver: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + webdriver: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-buffer - bufferutil @@ -32714,7 +32624,7 @@ snapshots: whatwg-url@8.7.0: dependencies: - lodash: 4.17.21 + lodash: 4.17.23 tr46: 2.1.0 webidl-conversions: 6.1.0 @@ -32867,7 +32777,7 @@ snapshots: dependencies: is-wsl: 3.1.0 - wxt@0.20.13(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + wxt@0.20.13(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(rollup@4.52.0)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@1natsu/wait-element': 4.1.2 '@aklinker1/rollup-plugin-visualizer': 5.12.0(rollup@4.52.0) @@ -32911,8 +32821,8 @@ snapshots: publish-browser-extension: 3.0.3 scule: 1.3.0 unimport: 5.6.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-node: 5.3.0(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite-node: 5.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) web-ext-run: 0.2.4 transitivePeerDependencies: - '@types/node' @@ -33043,11 +32953,13 @@ snapshots: yoctocolors-cjs@2.1.3: {} + yoctocolors@2.1.2: {} + z-schema@5.0.5: dependencies: lodash.get: 4.4.2 lodash.isequal: 4.5.0 - validator: 13.15.0 + validator: 13.15.26 optionalDependencies: commander: 9.5.0 diff --git a/scripts/translation/check-translation-coverage.ts b/scripts/translation/check-translation-coverage.ts index 57ae4a57e4..0e01040604 100644 --- a/scripts/translation/check-translation-coverage.ts +++ b/scripts/translation/check-translation-coverage.ts @@ -2,20 +2,21 @@ import { LOCALES } from "../../packages/commons/src/lib/i18n"; import { getLanguageStats } from "./utils"; async function main() { - const languageStats = await getLanguageStats("client"); - const localeIdsWithCoverage = languageStats.results + const project = "client"; + const languageStats = await getLanguageStats(project); + const localesWithCoverage = languageStats.results .filter(language => language.translated_percent > 50) - .map(language => language.language_code); - for (const localeId of localeIdsWithCoverage) { + for (const localeData of localesWithCoverage) { + const { language_code: localeId, translated_percent: percentage, language } = localeData; const locale = LOCALES.find(l => l.id === localeId); if (!locale) { - console.error(`Locale not found for id: ${localeId}`); + console.error(`❌ Language ${language.name} (${localeId}) has a coverage of ${percentage}% in '${project}', but it is not supported by the application.`); process.exit(1); } } - console.log("Translation coverage check passed."); + console.log("✅ Translation coverage check passed."); } main();