diff --git a/apps/client-standalone/package.json b/apps/client-standalone/package.json index f8e67e11c6..6dd7529e28 100644 --- a/apps/client-standalone/package.json +++ b/apps/client-standalone/package.json @@ -32,7 +32,7 @@ "@triliumnext/highlightjs": "workspace:*", "@triliumnext/share-theme": "workspace:*", "@triliumnext/split.js": "workspace:*", - "@zumer/snapdom": "2.6.0", + "@zumer/snapdom": "2.7.0", "autocomplete.js": "0.38.1", "bootstrap": "5.3.8", "boxicons": "2.1.4", @@ -43,8 +43,8 @@ "fflate": "0.8.2", "force-graph": "1.51.2", "globals": "17.4.0", - "i18next": "25.10.10", - "i18next-http-backend": "3.0.2", + "i18next": "26.0.3", + "i18next-http-backend": "3.0.4", "jquery": "4.0.0", "jquery.fancytree": "2.38.5", "js-md5": "0.8.3", @@ -59,11 +59,11 @@ "mark.js": "8.11.1", "marked": "17.0.5", "mermaid": "11.13.0", - "mind-elixir": "5.9.3", + "mind-elixir": "5.10.0", "normalize.css": "8.0.1", "panzoom": "9.4.4", "preact": "10.29.0", - "react-i18next": "17.0.0", + "react-i18next": "17.0.2", "react-window": "2.2.7", "reveal.js": "6.0.0", "svg-pan-zoom": "3.6.2", @@ -84,6 +84,6 @@ "cross-env": "7.0.3", "happy-dom": "20.8.9", "script-loader": "0.7.2", - "vite-plugin-static-copy": "3.4.0" + "vite-plugin-static-copy": "4.0.0" } } \ No newline at end of file diff --git a/apps/desktop/electron-forge/forge.config.ts b/apps/desktop/electron-forge/forge.config.ts index 03d5a4e857..9aad0b64ce 100644 --- a/apps/desktop/electron-forge/forge.config.ts +++ b/apps/desktop/electron-forge/forge.config.ts @@ -4,7 +4,7 @@ import { existsSync } from "fs"; import fs from "fs-extra"; import path, { join } from "path"; -import packageJson from "../package.json" assert { type: "json" }; +import packageJson from "../package.json" with { type: "json" }; import { PRODUCT_NAME } from "../src/app-info.js"; const ELECTRON_FORGE_DIR = __dirname; diff --git a/apps/server/package.json b/apps/server/package.json index c603d92c33..fed8dab2ab 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -37,6 +37,8 @@ "ai": "6.0.142", "better-sqlite3": "12.8.0", "html-to-text": "9.0.5", + "i18next-fs-backend": "2.6.3", + "i18next": "26.0.3", "js-yaml": "4.1.1", "unpdf": "1.4.0" }, @@ -97,9 +99,7 @@ "html": "1.0.0", "html2plaintext": "2.1.4", "http-proxy-agent": "8.0.0", - "https-proxy-agent": "8.0.0", - "i18next": "26.0.3", - "i18next-fs-backend": "2.6.3", + "https-proxy-agent": "8.0.0", "image-type": "6.1.0", "ini": "6.0.0", "is-animated": "2.0.2", diff --git a/apps/server/src/etapi/special_notes.ts b/apps/server/src/etapi/special_notes.ts index c88b1da429..bd4602dd3d 100644 --- a/apps/server/src/etapi/special_notes.ts +++ b/apps/server/src/etapi/special_notes.ts @@ -1,7 +1,7 @@ +import { special_notes as specialNotesService } from "@triliumnext/core"; import type { Router } from "express"; import dateNotesService from "../services/date_notes.js"; -import specialNotesService from "../services/special_notes.js"; import eu from "./etapi_utils.js"; import mappers from "./mappers.js"; diff --git a/apps/server/src/main.ts b/apps/server/src/main.ts index 66572d1c8a..9f54b0c9bd 100644 --- a/apps/server/src/main.ts +++ b/apps/server/src/main.ts @@ -10,13 +10,13 @@ import path from "path"; import ClsHookedExecutionContext from "./cls_provider.js"; import NodejsCryptoProvider from "./crypto_provider.js"; -import NodejsZipProvider from "./zip_provider.js"; import ServerPlatformProvider from "./platform_provider.js"; import dataDirs from "./services/data_dir.js"; import port from "./services/port.js"; import NodeRequestProvider from "./services/request.js"; import WebSocketMessagingProvider from "./services/ws_messaging_provider.js"; import BetterSqlite3Provider from "./sql_provider.js"; +import NodejsZipProvider from "./zip_provider.js"; async function startApplication() { const config = (await import("./services/config.js")).default; diff --git a/apps/server/src/routes/api/sender.ts b/apps/server/src/routes/api/sender.ts index a4c8348464..48006710f7 100644 --- a/apps/server/src/routes/api/sender.ts +++ b/apps/server/src/routes/api/sender.ts @@ -1,10 +1,9 @@ -import { utils } from "@triliumnext/core"; +import { special_notes as specialNotesService,utils } from "@triliumnext/core"; import type { Request } from "express"; import imageType from "image-type"; import imageService from "../../services/image.js"; import noteService from "../../services/notes.js"; -import specialNotesService from "../../services/special_notes.js"; async function uploadImage(req: Request) { const file = req.file; diff --git a/apps/server/src/routes/index.ts b/apps/server/src/routes/index.ts index 65d4b3160d..90a502dd61 100644 --- a/apps/server/src/routes/index.ts +++ b/apps/server/src/routes/index.ts @@ -1,16 +1,14 @@ import { BootstrapDefinition } from "@triliumnext/commons"; -import { getSharedBootstrapItems, getSql, icon_packs as iconPackService, sql_init } from "@triliumnext/core"; +import { getSharedBootstrapItems, icon_packs as iconPackService, sql_init } from "@triliumnext/core"; import type { Request, Response } from "express"; import packageJson from "../../package.json" with { type: "json" }; -import type BNote from "../becca/entities/bnote.js"; import appPath from "../services/app_path.js"; import assetPath from "../services/asset_path.js"; -import attributeService from "../services/attributes.js"; import config from "../services/config.js"; import log from "../services/log.js"; import optionService from "../services/options.js"; -import { isDev, isElectron, isMac, isWindows, isWindows11 } from "../services/utils.js"; +import { isDev, isElectron, isMac, isWindows11 } from "../services/utils.js"; import { generateCsrfToken } from "./csrf_protection.js"; type View = "desktop" | "mobile" | "print"; diff --git a/apps/server/src/services/llm/tools/attachment_tools.ts b/apps/server/src/services/llm/tools/attachment_tools.ts index 8b40de0e59..a291fa8878 100644 --- a/apps/server/src/services/llm/tools/attachment_tools.ts +++ b/apps/server/src/services/llm/tools/attachment_tools.ts @@ -2,6 +2,7 @@ * LLM tools for attachment operations. */ +import { unwrapStringOrBuffer } from "@triliumnext/core/src/services/utils/binary.js"; import { z } from "zod"; import becca from "../../../becca/becca.js"; @@ -47,7 +48,7 @@ export const attachmentTools = defineTools({ return { attachmentId: attachment.attachmentId, source: "text" as const, - content: typeof content === "string" ? content : content.toString("utf-8") + content: unwrapStringOrBuffer(content) }; } diff --git a/apps/server/src/services/llm/tools/helpers.ts b/apps/server/src/services/llm/tools/helpers.ts index fbfebb1e12..e0913637e2 100644 --- a/apps/server/src/services/llm/tools/helpers.ts +++ b/apps/server/src/services/llm/tools/helpers.ts @@ -2,11 +2,12 @@ * Shared helpers for LLM tools — content conversion, metadata building, and previews. */ +import { markdownExportService as markdownExport,markdownImportService as markdownImport } from "@triliumnext/core"; +import { unwrapStringOrBuffer } from "@triliumnext/core/src/services/utils/binary.js"; + import becca from "../../../becca/becca.js"; import type BAttachment from "../../../becca/entities/battachment.js"; import type BNote from "../../../becca/entities/bnote.js"; -import markdownExport from "../../export/markdown.js"; -import markdownImport from "../../import/markdown.js"; const CONTENT_PREVIEW_MAX_LENGTH = 500; const ATTACHMENT_PREVIEW_MAX_LENGTH = 200; @@ -97,7 +98,7 @@ export function getAttachmentContentPreview(att: BAttachment): string | null { if (att.hasStringContent()) { const content = att.getContent(); - text = typeof content === "string" ? content : content.toString("utf-8"); + text = unwrapStringOrBuffer(content); } else { const blob = att.blobId ? becca.getBlob({ blobId: att.blobId }) : null; text = blob?.textRepresentation ?? null; diff --git a/apps/server/src/services/llm/tools/note_tools.ts b/apps/server/src/services/llm/tools/note_tools.ts index 2daa55a1ca..a9bf918bf2 100644 --- a/apps/server/src/services/llm/tools/note_tools.ts +++ b/apps/server/src/services/llm/tools/note_tools.ts @@ -2,14 +2,14 @@ * LLM tools for note operations (search, read, create, update, append). */ +import { markdownImportService as markdownImport } from "@triliumnext/core"; import { z } from "zod"; import becca from "../../../becca/becca.js"; -import markdownImport from "../../import/markdown.js"; import noteService from "../../notes.js"; import SearchContext from "../../search/search_context.js"; import searchService from "../../search/services/search.js"; -import { TOOL_LIMITS, getContentPreview, getNoteContentForLlm, getNoteMeta, setNoteContentFromLlm } from "./helpers.js"; +import { getContentPreview, getNoteContentForLlm, getNoteMeta, setNoteContentFromLlm,TOOL_LIMITS } from "./helpers.js"; import { defineTools } from "./tool_registry.js"; export const noteTools = defineTools({ diff --git a/apps/server/src/services/ocr/ocr_service.ts b/apps/server/src/services/ocr/ocr_service.ts index f59ff8e609..938ef30131 100644 --- a/apps/server/src/services/ocr/ocr_service.ts +++ b/apps/server/src/services/ocr/ocr_service.ts @@ -1,7 +1,7 @@ import { getTesseractCode } from '@triliumnext/commons'; +import { blob as blobService } from '@triliumnext/core'; import becca from '../../becca/becca.js'; -import blobService from '../blob.js'; import entityChangesService from '../entity_changes.js'; import log from '../log.js'; import options from '../options.js'; @@ -173,7 +173,7 @@ class OCRService { mime: string; blobId: string | undefined; languageNoteId: string; - getContent: () => string | Buffer; + getContent: () => string | Uint8Array; }, options: OCRProcessingOptions = {}): Promise { const { entityId, entityType, category, mime, blobId, languageNoteId } = entity; @@ -369,8 +369,7 @@ class OCRService { const hash = blobService.calculateContentHash({ blobId: blob.blobId, content: blob.content, - textRepresentation: blob.textRepresentation, - utcDateModified: blob.utcDateModified! + textRepresentation: blob.textRepresentation }); entityChangesService.putEntityChange({ entityName: "blobs", diff --git a/apps/server/src/services/special_notes.ts b/apps/server/src/services/special_notes.ts index 4232a4ef65..32a177e657 100644 --- a/apps/server/src/services/special_notes.ts +++ b/apps/server/src/services/special_notes.ts @@ -99,6 +99,10 @@ function getLlmChatHome() { } function saveLlmChat(llmChatNoteId: string | null) { + if (!llmChatNoteId) { + throw new Error(`Missing chat note ID`); + } + const llmChatNote = becca.getNote(llmChatNoteId); if (!llmChatNote) { throw new Error(`Unable to find LLM chat note ID: ${llmChatNoteId}`); diff --git a/packages/commons/src/lib/server_api.ts b/packages/commons/src/lib/server_api.ts index 4a29afb9ba..336c2a2ea9 100644 --- a/packages/commons/src/lib/server_api.ts +++ b/packages/commons/src/lib/server_api.ts @@ -336,7 +336,7 @@ export type BootstrapDefinition = { csrfToken?: string; headingStyle: "plain" | "underline" | "markdown"; layoutOrientation: "vertical" | "horizontal"; - platform?: typeof process.platform | "web"; + platform?: "aix" | "android" | "darwin" | "freebsd" | "haiku" | "linux" | "openbsd" | "sunos" | "win32" | "cygwin" | "netbsd" | "web"; isElectron: boolean; isStandalone: boolean; hasNativeTitleBar: boolean; diff --git a/packages/trilium-core/package.json b/packages/trilium-core/package.json index 3e3e729909..b43e48cf14 100644 --- a/packages/trilium-core/package.json +++ b/packages/trilium-core/package.json @@ -13,7 +13,7 @@ "async-mutex": "0.5.0", "chardet": "2.1.1", "escape-html": "1.0.3", - "i18next": "25.10.10", + "i18next": "26.0.3", "mime-types": "3.0.2", "node-html-parser": "7.1.0", "sanitize-filename": "1.6.4", diff --git a/packages/trilium-core/src/index.ts b/packages/trilium-core/src/index.ts index 064a02be7d..d2cfdec5a7 100644 --- a/packages/trilium-core/src/index.ts +++ b/packages/trilium-core/src/index.ts @@ -113,6 +113,7 @@ export * as becca_easy_mocking from "./test/becca_easy_mocking"; export * as becca_mocking from "./test/becca_mocking"; export { default as markdownImportService } from "./services/import/markdown"; +export { default as markdownExportService } from "./services/export/markdown"; export { default as scriptService } from "./services/script"; export { default as BackendScriptApi, type Api as BackendScriptApiInterface } from "./services/backend_script_api"; diff --git a/packages/trilium-core/src/services/handlers.ts b/packages/trilium-core/src/services/handlers.ts index f32bf6ddd0..f5b701825b 100644 --- a/packages/trilium-core/src/services/handlers.ts +++ b/packages/trilium-core/src/services/handlers.ts @@ -8,7 +8,7 @@ import hiddenSubtreeService from "./hidden_subtree.js"; import oneTimeTimer from "./one_time_timer.js"; import type BNote from "../becca/entities/bnote.js"; import type AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js"; -import type { DefinitionObject } from "./promoted_attribute_definition_interface.js"; +import { DefinitionObject } from "@triliumnext/commons"; type Handler = (definition: DefinitionObject, note: BNote, targetNote: BNote) => void; diff --git a/packages/trilium-core/src/services/hidden_subtree.ts b/packages/trilium-core/src/services/hidden_subtree.ts index 90ca6135c8..0eecc635c8 100644 --- a/packages/trilium-core/src/services/hidden_subtree.ts +++ b/packages/trilium-core/src/services/hidden_subtree.ts @@ -11,6 +11,7 @@ import { cleanUpHelp, getHelpHiddenSubtreeData } from "./in_app_help.js"; import migrationService from "./migration.js"; import noteService from "./notes.js"; import { getLog } from "./log.js"; +import { getSql } from "./sql/index.js"; export const LBTPL_ROOT = "_lbTplRoot"; export const LBTPL_BASE = "_lbTplBase"; diff --git a/packages/trilium-core/src/services/search/expressions/ocr_content.ts b/packages/trilium-core/src/services/search/expressions/ocr_content.ts index 2b3472b1bb..324297c0a4 100644 --- a/packages/trilium-core/src/services/search/expressions/ocr_content.ts +++ b/packages/trilium-core/src/services/search/expressions/ocr_content.ts @@ -1,5 +1,5 @@ import becca from "../../../becca/becca.js"; -import sql from "../../sql.js"; +import { getSql } from "../../sql/index.js"; import NoteSet from "../note_set.js"; import type SearchContext from "../search_context.js"; import Expression from "./expression.js"; @@ -52,6 +52,7 @@ export default class OCRContentExpression extends Expression { const params = this.tokens.map(token => `%${token}%`); // Find notes whose own blob matches + const sql = getSql(); const noteIds = sql.getColumn(` SELECT n.noteId FROM notes n diff --git a/apps/server/src/services/search/search_result_ocr.spec.ts b/packages/trilium-core/src/services/search/search_result_ocr.spec.ts similarity index 100% rename from apps/server/src/services/search/search_result_ocr.spec.ts rename to packages/trilium-core/src/services/search/search_result_ocr.spec.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8cde2fde17..38e910b583 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -467,7 +467,7 @@ importers: version: 0.2.1(mermaid@11.13.0) '@mind-elixir/node-menu': specifier: 5.0.1 - version: 5.0.1(mind-elixir@5.9.3) + version: 5.0.1(mind-elixir@5.10.0) '@popperjs/core': specifier: 2.11.8 version: 2.11.8 @@ -499,8 +499,8 @@ importers: specifier: workspace:* version: link:../../packages/splitjs '@zumer/snapdom': - specifier: 2.6.0 - version: 2.6.0 + specifier: 2.7.0 + version: 2.7.0 autocomplete.js: specifier: 0.38.1 version: 0.38.1 @@ -532,11 +532,11 @@ importers: specifier: 17.4.0 version: 17.4.0 i18next: - specifier: 25.10.10 - version: 25.10.10(typescript@6.0.2) + specifier: 26.0.3 + version: 26.0.3(typescript@6.0.2) i18next-http-backend: - specifier: 3.0.2 - version: 3.0.2(encoding@0.1.13) + specifier: 3.0.4 + version: 3.0.4(encoding@0.1.13) jquery: specifier: 4.0.0 version: 4.0.0 @@ -580,8 +580,8 @@ importers: specifier: 11.13.0 version: 11.13.0 mind-elixir: - specifier: 5.9.3 - version: 5.9.3 + specifier: 5.10.0 + version: 5.10.0 normalize.css: specifier: 8.0.1 version: 8.0.1 @@ -592,8 +592,8 @@ importers: specifier: 10.29.0 version: 10.29.0 react-i18next: - specifier: 17.0.0 - version: 17.0.0(i18next@25.10.10(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + specifier: 17.0.2 + version: 17.0.2(i18next@26.0.3(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) react-window: specifier: 2.2.7 version: 2.2.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -650,8 +650,8 @@ importers: specifier: 0.7.2 version: 0.7.2 vite-plugin-static-copy: - specifier: 3.4.0 - version: 3.4.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.0.0 + version: 4.0.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3)) apps/db-compare: dependencies: @@ -829,6 +829,12 @@ importers: html-to-text: specifier: 9.0.5 version: 9.0.5 + i18next: + specifier: 26.0.3 + version: 26.0.3(typescript@6.0.2) + i18next-fs-backend: + specifier: 2.6.3 + version: 2.6.3 js-yaml: specifier: 4.1.1 version: 4.1.1 @@ -1007,12 +1013,6 @@ importers: https-proxy-agent: specifier: 8.0.0 version: 8.0.0 - i18next: - specifier: 26.0.3 - version: 26.0.3(typescript@6.0.2) - i18next-fs-backend: - specifier: 2.6.3 - version: 2.6.3 image-type: specifier: 6.1.0 version: 6.1.0 @@ -1708,8 +1708,8 @@ importers: specifier: 1.0.3 version: 1.0.3 i18next: - specifier: 25.10.10 - version: 25.10.10(typescript@6.0.2) + specifier: 26.0.3 + version: 26.0.3(typescript@6.0.2) mime-types: specifier: 3.0.2 version: 3.0.2 @@ -6903,9 +6903,6 @@ packages: resolution: {integrity: sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'} - '@zumer/snapdom@2.6.0': - resolution: {integrity: sha512-JpPPkuMzozRVX6KArgCiMgLpgVW82kWgyoFk5DWGKE5msWGEshXEUdQHLLEyZRO7qioI1pI+yaBJz81tEP9gPg==} - '@zumer/snapdom@2.7.0': resolution: {integrity: sha512-ZiELKzDszeFOazPQ/ExXzgtdoW9jADVjDjInr5XDAlVdCx0RbNsFiG7RLyM48XnA7EyCA9yTvmXSc3ElDrTRqA==} @@ -7969,9 +7966,6 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - cross-fetch@4.1.0: resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} @@ -9761,20 +9755,9 @@ packages: i18next-fs-backend@2.6.3: resolution: {integrity: sha512-/5aW996nbolGh/qVU9urjAJ2QiXpiyGuhG8x/ZvvZQ3bMlrK+ouUdD6whS4e+sU9CCdUIzl7x/heEjsBh/3xtw==} - i18next-http-backend@3.0.2: - resolution: {integrity: sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g==} - i18next-http-backend@3.0.4: resolution: {integrity: sha512-udwrBIE6cNpqn1gRAqRULq3+7MzIIuaiKRWrz++dVz5SqWW2VwXmPJtAgkI0JtMLFaADC9qNmnZAxWAhsxXx2g==} - i18next@25.10.10: - resolution: {integrity: sha512-cqUW2Z3EkRx7NqSyywjkgCLK7KLCL6IFVFcONG7nVYIJ3ekZ1/N5jUsihHV6Bq37NfhgtczxJcxduELtjTwkuQ==} - peerDependencies: - typescript: ^5 || ^6 - peerDependenciesMeta: - typescript: - optional: true - i18next@26.0.3: resolution: {integrity: sha512-1571kXINxHKY7LksWp8wP+zP0YqHSSpl/OW0Y0owFEf2H3s8gCAffWaZivcz14rMkOvn3R/psiQxVsR9t2Nafg==} peerDependencies: @@ -11089,9 +11072,6 @@ packages: mind-elixir@5.10.0: resolution: {integrity: sha512-AY/tDXz8stMbx0MIutdn63Dz0uwY1VVMKIxCqOOA2hg5WGdCGm2qqEZF498deLDxoZbL+hDf1SwBWzvWADBoPA==} - mind-elixir@5.9.3: - resolution: {integrity: sha512-OTTO6ofvDuzN4fxuBngqhQLJmIqModr2NgQb4OY+5DGRt54B+YNAvNnlspYwUXXGq2Rbht1DhXgeU4dr4CUy6Q==} - minimatch@10.2.4: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} @@ -12374,22 +12354,6 @@ packages: peerDependencies: react: ^19.2.4 - react-i18next@17.0.0: - resolution: {integrity: sha512-L7aqwOePCExt6nlF7000lN2YKWnR7IpSpQId9sj01798Xn3LAncBdTHKl9lA/nr+YrG78BTqWPJxq9mlrrmH7Q==} - peerDependencies: - i18next: '>= 25.10.10' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - typescript: ^5 || ^6 - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - typescript: - optional: true - react-i18next@17.0.2: resolution: {integrity: sha512-shBftH2vaTWK2Bsp7FiL+cevx3xFJlvFxmsDFQSrJc+6twHkP0tv/bGa01VVWzpreUVVwU+3Hev5iFqRg65RwA==} peerDependencies: @@ -14257,12 +14221,6 @@ packages: vite: optional: true - vite-plugin-static-copy@3.4.0: - resolution: {integrity: sha512-ekryzCw0ouAOE8tw4RvVL/dfqguXzumsV3FBKoKso4MQ1MUUrUXtl5RI4KpJQUNGqFEsg9kxl4EvDl02YtA9VQ==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - vite-plugin-static-copy@4.0.0: resolution: {integrity: sha512-TTf6cVTV4M2pH2Wfr3zhevdRsIQezfm2ltDkSfkjqvvdryJHYQyNoPISvuytX3r9jFZV0yVeMYyGTsAvAH2XLw==} engines: {node: ^22.0.0 || >=24.0.0} @@ -17986,10 +17944,6 @@ snapshots: dependencies: mind-elixir: 5.10.0 - '@mind-elixir/node-menu@5.0.1(mind-elixir@5.9.3)': - dependencies: - mind-elixir: 5.9.3 - '@mixmark-io/domino@2.2.0': {} '@modelcontextprotocol/sdk@1.29.0(zod@4.3.6)': @@ -22177,8 +22131,6 @@ snapshots: '@zip.js/zip.js@2.8.11': {} - '@zumer/snapdom@2.6.0': {} - '@zumer/snapdom@2.7.0': {} abbrev@1.1.1: {} @@ -23438,12 +23390,6 @@ snapshots: dependencies: cross-spawn: 7.0.6 - cross-fetch@4.0.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - cross-fetch@4.1.0(encoding@0.1.13): dependencies: node-fetch: 2.7.0(encoding@0.1.13) @@ -25797,24 +25743,12 @@ snapshots: i18next-fs-backend@2.6.3: {} - i18next-http-backend@3.0.2(encoding@0.1.13): - dependencies: - cross-fetch: 4.0.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - i18next-http-backend@3.0.4(encoding@0.1.13): dependencies: cross-fetch: 4.1.0(encoding@0.1.13) transitivePeerDependencies: - encoding - i18next@25.10.10(typescript@6.0.2): - dependencies: - '@babel/runtime': 7.29.2 - optionalDependencies: - typescript: 6.0.2 - i18next@26.0.3(typescript@6.0.2): dependencies: '@babel/runtime': 7.29.2 @@ -27286,8 +27220,6 @@ snapshots: mind-elixir@5.10.0: {} - mind-elixir@5.9.3: {} - minimatch@10.2.4: dependencies: brace-expansion: 5.0.5 @@ -28645,17 +28577,6 @@ snapshots: react: 19.2.4 scheduler: 0.27.0 - react-i18next@17.0.0(i18next@25.10.10(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2): - dependencies: - '@babel/runtime': 7.29.2 - html-parse-stringify: 3.0.1 - i18next: 25.10.10(typescript@6.0.2) - react: 19.2.4 - use-sync-external-store: 1.6.0(react@19.2.4) - optionalDependencies: - react-dom: 19.2.4(react@19.2.4) - typescript: 6.0.2 - react-i18next@17.0.2(i18next@26.0.3(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2): dependencies: '@babel/runtime': 7.29.2 @@ -30843,14 +30764,6 @@ snapshots: - rollup - supports-color - vite-plugin-static-copy@3.4.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - chokidar: 3.6.0 - p-map: 7.0.4 - picocolors: 1.1.1 - tinyglobby: 0.2.15 - vite: 8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-static-copy@4.0.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3)): dependencies: chokidar: 3.6.0