Compare commits

...

17 Commits

Author SHA1 Message Date
Elian Doran
4c02d70dae fix(toc): not rendering math the first time 2026-04-13 00:08:40 +03:00
Elian Doran
9a427f4b9f chore(client): dev server not working due to prefresh bug
See https://github.com/preactjs/prefresh/issues/610
2026-04-12 17:32:03 +03:00
Elian Doran
6a83356cf7 chore(deps): update dependency @lezer/common to v1.5.2 (#9386) 2026-04-12 13:13:51 +03:00
Elian Doran
233c41acc0 fix(deps): update dependency i18next to v26.0.4 (#9388) 2026-04-12 13:13:12 +03:00
Elian Doran
3b0451da9e fix(deps): update dependency ai to v6.0.154 (#9387) 2026-04-12 13:11:26 +03:00
Elian Doran
e217a3146f chore(deps): update dependency @redocly/cli to v2.26.0 (#9389) 2026-04-12 13:10:41 +03:00
Elian Doran
97c42ef1cb fix(deps): update dependency @zumer/snapdom to v2.8.0 (#9391) 2026-04-12 13:09:06 +03:00
Elian Doran
b12a524de8 chore(deps): update dependency electron to v41.2.0 (#9390) 2026-04-12 11:56:45 +03:00
Elian Doran
ee37fee2c0 Revert "Update dependency minimatch@3>brace-expansion to v5" (#9393) 2026-04-12 11:35:35 +03:00
Elian Doran
ef5d9f980e Merge branch 'main' into revert-9307-renovate/minimatch3-brace-expansion-5.x 2026-04-12 11:35:27 +03:00
Elian Doran
ba816fc132 Revert "Update dependency minimatch@3>brace-expansion to v5" 2026-04-12 09:37:53 +03:00
renovate[bot]
ceb955b72b fix(deps): update dependency @zumer/snapdom to v2.8.0 2026-04-12 00:46:12 +00:00
renovate[bot]
43823bcb37 chore(deps): update dependency electron to v41.2.0 2026-04-12 00:45:14 +00:00
renovate[bot]
7984ada306 chore(deps): update dependency @redocly/cli to v2.26.0 2026-04-12 00:44:11 +00:00
renovate[bot]
d3e0c8d894 fix(deps): update dependency i18next to v26.0.4 2026-04-12 00:43:10 +00:00
renovate[bot]
cee1be11ab fix(deps): update dependency ai to v6.0.154 2026-04-12 00:42:06 +00:00
renovate[bot]
230b3207a5 chore(deps): update dependency @lezer/common to v1.5.2 2026-04-12 00:41:03 +00:00
12 changed files with 157 additions and 119 deletions

View File

@@ -16,7 +16,7 @@
"license": "AGPL-3.0-only",
"packageManager": "pnpm@10.33.0",
"devDependencies": {
"@redocly/cli": "2.25.4",
"@redocly/cli": "2.26.0",
"archiver": "7.0.1",
"fs-extra": "11.3.4",
"js-yaml": "4.1.1",

View File

@@ -42,7 +42,7 @@
"@univerjs/preset-sheets-note": "0.20.0",
"@univerjs/preset-sheets-sort": "0.20.0",
"@univerjs/presets": "0.20.0",
"@zumer/snapdom": "2.7.0",
"@zumer/snapdom": "2.8.0",
"autocomplete.js": "0.38.1",
"bootstrap": "5.3.8",
"boxicons": "2.1.4",
@@ -52,7 +52,7 @@
"dompurify": "3.3.3",
"draggabilly": "3.0.0",
"force-graph": "1.51.2",
"i18next": "26.0.3",
"i18next": "26.0.4",
"i18next-http-backend": "3.0.4",
"jquery": "4.0.0",
"jquery.fancytree": "2.38.5",

View File

@@ -1,5 +1,4 @@
import type { ComponentChildren, CSSProperties, RefObject } from "preact";
import { memo } from "preact/compat";
import { useMemo } from "preact/hooks";
import { CommandNames } from "../../components/app_context";
@@ -27,7 +26,7 @@ export interface ButtonProps {
title?: string;
}
const Button = memo(({ name, buttonRef, className, text, onClick, keyboardShortcut, icon, kind, disabled, size, style, triggerCommand, ...restProps }: ButtonProps) => {
function Button({ name, buttonRef, className, text, onClick, keyboardShortcut, icon, kind, disabled, size, style, triggerCommand, ...restProps }: ButtonProps) {
// Memoize classes array to prevent recreation
const classes = useMemo(() => {
const classList: string[] = ["btn"];
@@ -83,7 +82,7 @@ const Button = memo(({ name, buttonRef, className, text, onClick, keyboardShortc
{text} {shortcutElements}
</button>
);
});
}
export function ButtonGroup({ children }: { children: ComponentChildren }) {
return (

View File

@@ -1,7 +1,6 @@
import { Modal as BootstrapModal } from "bootstrap";
import clsx from "clsx";
import { ComponentChildren, CSSProperties, RefObject } from "preact";
import { memo } from "preact/compat";
import { useEffect, useMemo, useRef } from "preact/hooks";
import { openDialog } from "../../services/dialog";
@@ -186,7 +185,7 @@ export default function Modal({ children, className, size, title, customTitleBar
);
}
const ModalInner = memo(({ children, footer, footerAlignment, bodyStyle, footerStyle: _footerStyle }: Pick<ModalProps, "children" | "footer" | "footerAlignment" | "bodyStyle" | "footerStyle">) => {
function ModalInner({ children, footer, footerAlignment, bodyStyle, footerStyle: _footerStyle }: Pick<ModalProps, "children" | "footer" | "footerAlignment" | "bodyStyle" | "footerStyle">) {
// Memoize footer style
const footerStyle = useMemo<CSSProperties>(() => {
const style: CSSProperties = _footerStyle ?? {};
@@ -209,4 +208,4 @@ const ModalInner = memo(({ children, footer, footerAlignment, bodyStyle, footerS
)}
</>
);
});
}

View File

@@ -1447,24 +1447,29 @@ export function useColorScheme() {
export function useMathRendering(containerRef: RefObject<HTMLElement>, deps: unknown[]) {
useEffect(() => {
if (!containerRef.current) return;
// Support both read-only (.math-tex) and CKEditor editing view (.ck-math-tex) classes
const mathElements = containerRef.current.querySelectorAll(".math-tex, .ck-math-tex");
const mathElements = containerRef.current.querySelectorAll(".math-tex");
for (const mathEl of mathElements) {
// Skip if already rendered by KaTeX
if (mathEl.querySelector(".katex")) continue;
try {
let equation = mathEl.textContent || "";
// CKEditor's data format wraps the equation with \(...\) or \[...\]
// delimiters. katex.render() expects raw LaTeX without them.
const raw = mathEl.textContent?.trim() ?? "";
let equation: string;
let displayMode = false;
// CKEditor widgets store equation without delimiters, add them for KaTeX
if (mathEl.classList.contains("ck-math-tex")) {
// Check if it's display mode or inline
const isDisplay = mathEl.classList.contains("ck-math-tex-display");
equation = isDisplay ? `\\[${equation}\\]` : `\\(${equation}\\)`;
if (raw.startsWith("\\(") && raw.endsWith("\\)")) {
equation = raw.slice(2, -2);
} else if (raw.startsWith("\\[") && raw.endsWith("\\]")) {
equation = raw.slice(2, -2);
displayMode = true;
} else {
equation = raw;
}
math.render(equation, mathEl as HTMLElement);
math.render(equation, mathEl as HTMLElement, { displayMode });
} catch (e) {
console.warn("Failed to render math:", e);
}

View File

@@ -200,17 +200,34 @@ function extractTocFromTextEditor(editor: CKTextEditor) {
const level = Number(item.name.replace( 'heading', '' ));
// Convert model element to view, then to DOM to get HTML
// Convert model element to view, then to DOM to get HTML.
// Math UIElements render their KaTeX content asynchronously, so
// ck-math-tex spans may be empty at read time. Replace them with
// math-tex spans (the data format) using the equation from the model,
// so useMathRendering can render them synchronously in the sidebar.
const viewEl = editor.editing.mapper.toViewElement(item);
let text = '';
if (viewEl) {
const domEl = editor.editing.view.domConverter.mapViewToDom(viewEl);
if (domEl instanceof HTMLElement) {
text = domEl.innerHTML;
const clone = domEl.cloneNode(true) as HTMLElement;
const ckMathSpans = clone.querySelectorAll('.ck-math-tex');
let mathIdx = 0;
for (const child of item.getChildren()) {
if (!child.is('element', 'mathtex-inline')) continue;
if (mathIdx >= ckMathSpans.length) break;
const equation = String(child.getAttribute('equation') ?? '');
const span = document.createElement('span');
span.className = 'math-tex';
span.textContent = `\\(${equation}\\)`;
ckMathSpans[mathIdx].replaceWith(span);
mathIdx++;
}
text = clone.innerHTML;
}
}
// Fallback to plain text if conversion fails
// Fallback to plain text if DOM conversion fails
if (!text) {
text = Array.from( item.getChildren() )
.map( c => c.is( '$text' ) ? c.data : '' )

View File

@@ -44,7 +44,7 @@
"@triliumnext/server": "workspace:*",
"@types/electron-squirrel-startup": "1.0.2",
"copy-webpack-plugin": "14.0.0",
"electron": "41.1.1",
"electron": "41.2.0",
"prebuild-install": "7.1.3"
}
}

View File

@@ -12,7 +12,7 @@
"@triliumnext/desktop": "workspace:*",
"@types/fs-extra": "11.0.4",
"copy-webpack-plugin": "14.0.0",
"electron": "41.1.1",
"electron": "41.2.0",
"fs-extra": "11.3.4"
},
"scripts": {

View File

@@ -34,7 +34,7 @@
"@ai-sdk/google": "3.0.60",
"@ai-sdk/openai": "3.0.52",
"@modelcontextprotocol/sdk": "^1.12.1",
"ai": "6.0.153",
"ai": "6.0.154",
"better-sqlite3": "12.8.0",
"html-to-text": "9.0.5",
"js-yaml": "4.1.1",
@@ -88,7 +88,7 @@
"debounce": "3.0.0",
"debug": "4.4.3",
"ejs": "5.0.1",
"electron": "41.1.1",
"electron": "41.2.0",
"electron-window-state": "5.0.3",
"escape-html": "1.0.3",
"express": "5.2.1",
@@ -103,7 +103,7 @@
"html2plaintext": "2.1.4",
"http-proxy-agent": "9.0.0",
"https-proxy-agent": "9.0.0",
"i18next": "26.0.3",
"i18next": "26.0.4",
"i18next-fs-backend": "2.6.3",
"image-type": "6.1.0",
"ini": "6.0.0",

View File

@@ -9,7 +9,7 @@
"preview": "pnpm build && vite preview"
},
"dependencies": {
"i18next": "26.0.3",
"i18next": "26.0.4",
"preact": "10.29.1",
"preact-iso": "2.11.1",
"preact-render-to-string": "6.6.7",

View File

@@ -103,7 +103,7 @@
"overrides": {
"@codemirror/language": "6.12.3",
"@lezer/highlight": "1.2.3",
"@lezer/common": "1.5.1",
"@lezer/common": "1.5.2",
"mermaid": "11.14.0",
"preact": "10.29.1",
"roughjs": "4.6.6",
@@ -157,7 +157,7 @@
"handlebars@<4.7.9": ">=4.7.9",
"qs@<6.14.2": ">=6.14.2",
"minimatch@<3.1.4": "^3.1.4",
"minimatch@3>brace-expansion": "^5.0.0",
"minimatch@3>brace-expansion": "^1.1.13",
"serialize-javascript@<7.0.5": ">=7.0.5",
"webpack@<5.104.1": ">=5.104.1",
"file-type@>=13.0.0 <21.3.1": ">=21.3.1",

198
pnpm-lock.yaml generated
View File

@@ -7,7 +7,7 @@ settings:
overrides:
'@codemirror/language': 6.12.3
'@lezer/highlight': 1.2.3
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
mermaid: 11.14.0
preact: 10.29.1
roughjs: 4.6.6
@@ -61,7 +61,7 @@ overrides:
handlebars@<4.7.9: '>=4.7.9'
qs@<6.14.2: '>=6.14.2'
minimatch@<3.1.4: ^3.1.4
minimatch@3>brace-expansion: ^5.0.0
minimatch@3>brace-expansion: ^1.1.13
serialize-javascript@<7.0.5: '>=7.0.5'
webpack@<5.104.1: '>=5.104.1'
file-type@>=13.0.0 <21.3.1: '>=21.3.1'
@@ -187,8 +187,8 @@ importers:
apps/build-docs:
devDependencies:
'@redocly/cli':
specifier: 2.25.4
version: 2.25.4(@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.26.0
version: 2.26.0(@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
@@ -286,8 +286,8 @@ importers:
specifier: 0.20.0
version: 0.20.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)(rxjs@7.8.2)
'@zumer/snapdom':
specifier: 2.7.0
version: 2.7.0
specifier: 2.8.0
version: 2.8.0
autocomplete.js:
specifier: 0.38.1
version: 0.38.1
@@ -316,8 +316,8 @@ importers:
specifier: 1.51.2
version: 1.51.2
i18next:
specifier: 26.0.3
version: 26.0.3(typescript@6.0.2)
specifier: 26.0.4
version: 26.0.4(typescript@6.0.2)
i18next-http-backend:
specifier: 3.0.4
version: 3.0.4(encoding@0.1.13)
@@ -359,7 +359,7 @@ importers:
version: 10.29.1
react-i18next:
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)
version: 17.0.2(i18next@26.0.4(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)
@@ -438,7 +438,7 @@ importers:
dependencies:
'@electron/remote':
specifier: 2.1.3
version: 2.1.3(electron@41.1.1)
version: 2.1.3(electron@41.2.0)
better-sqlite3:
specifier: 12.8.0
version: 12.8.0
@@ -495,8 +495,8 @@ importers:
specifier: 14.0.0
version: 14.0.0(webpack@5.105.4(esbuild@0.28.0))
electron:
specifier: 41.1.1
version: 41.1.1
specifier: 41.2.0
version: 41.2.0
prebuild-install:
specifier: 7.1.3
version: 7.1.3
@@ -551,8 +551,8 @@ importers:
specifier: 14.0.0
version: 14.0.0(webpack@5.105.4(esbuild@0.28.0))
electron:
specifier: 41.1.1
version: 41.1.1
specifier: 41.2.0
version: 41.2.0
fs-extra:
specifier: 11.3.4
version: 11.3.4
@@ -581,8 +581,8 @@ importers:
specifier: ^1.12.1
version: 1.29.0(zod@4.3.6)
ai:
specifier: 6.0.153
version: 6.0.153(zod@4.3.6)
specifier: 6.0.154
version: 6.0.154(zod@4.3.6)
better-sqlite3:
specifier: 12.8.0
version: 12.8.0
@@ -607,7 +607,7 @@ importers:
version: 7.1.2
'@electron/remote':
specifier: 2.1.3
version: 2.1.3(electron@41.1.1)
version: 2.1.3(electron@41.2.0)
'@triliumnext/commons':
specifier: workspace:*
version: link:../../packages/commons
@@ -738,8 +738,8 @@ importers:
specifier: 5.0.1
version: 5.0.1
electron:
specifier: 41.1.1
version: 41.1.1
specifier: 41.2.0
version: 41.2.0
electron-window-state:
specifier: 5.0.3
version: 5.0.3
@@ -783,8 +783,8 @@ importers:
specifier: 9.0.0
version: 9.0.0
i18next:
specifier: 26.0.3
version: 26.0.3(typescript@6.0.2)
specifier: 26.0.4
version: 26.0.4(typescript@6.0.2)
i18next-fs-backend:
specifier: 2.6.3
version: 2.6.3
@@ -898,8 +898,8 @@ importers:
apps/website:
dependencies:
i18next:
specifier: 26.0.3
version: 26.0.3(typescript@6.0.2)
specifier: 26.0.4
version: 26.0.4(typescript@6.0.2)
preact:
specifier: 10.29.1
version: 10.29.1
@@ -911,7 +911,7 @@ importers:
version: 6.6.7(preact@10.29.1)
react-i18next:
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)
version: 17.0.2(i18next@26.0.4(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)
devDependencies:
'@preact/preset-vite':
specifier: 2.10.5
@@ -1330,7 +1330,7 @@ importers:
version: 6.5.3(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)
'@replit/codemirror-lang-nix':
specifier: 6.0.1
version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.1)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2)
version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.2)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2)
'@replit/codemirror-vim':
specifier: 6.3.0
version: 6.3.0(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)
@@ -1479,8 +1479,8 @@ packages:
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/gateway@3.0.93':
resolution: {integrity: sha512-8D6C9eEvDq6IgrdlWzpbniahDkoLiieTCrpzH8p/Hw63/0iPnZJ1uZcqxHrDIVDW/+aaGhBXqmx5C7HSd2eMmQ==}
'@ai-sdk/gateway@3.0.94':
resolution: {integrity: sha512-uDDwLZhCkvC89crVS3S90D5L7AcVN8WriGuYVNYgVAaVcvy3Mthy3R9ICfzG75BObhz6pm2FWnhxDfNRK+t69Q==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -3615,8 +3615,8 @@ packages:
'@keyv/serialize@1.1.1':
resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
'@lezer/common@1.5.1':
resolution: {integrity: sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==}
'@lezer/common@1.5.2':
resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==}
'@lezer/css@1.1.11':
resolution: {integrity: sha512-FuAnusbLBl1SEAtfN8NdShxYJiESKw9LAFysfea1T96jD3ydBn12oYjaSG1a04BQRIUd93/0D8e5CV1cUMkmQg==}
@@ -4797,27 +4797,27 @@ packages:
'@redocly/cli-otel@0.1.2':
resolution: {integrity: sha512-Bg7BoO5t1x3lVK+KhA5aGPmeXpQmdf6WtTYHhelKJCsQ+tRMiJoFAQoKHoBHAoNxXrhlS3K9lKFLHGmtxsFQfA==}
'@redocly/cli@2.25.4':
resolution: {integrity: sha512-ypBv8ZhckTzcOfsFH2VILsLqk00bJ1tI0POtlaEf8z0rDsnmD8auUETkMzw8wlUB+aQM7+VSzpSsmcmqeSgzWQ==}
'@redocly/cli@2.26.0':
resolution: {integrity: sha512-24S1ls0qvu3uaPiW4OImy06CpImAkUOd3h7OG+Hq9By5pPavjOE34KtdQTaaFso3e1qgzXYdQh6HPqEY1nTZgA==}
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.46.0':
resolution: {integrity: sha512-FZEprNEkmLITKKdv5blIai1qiCcc4dn5+96AjWnmFQmH/oz/OyBiXBSi752/M+Wmype7aH2uRywSCuYlu4CgVA==}
'@redocly/config@0.46.1':
resolution: {integrity: sha512-dSdkB2wRLtvl3f7ayRu9vqVhUMjjRaxZlHgRbgOtPPXxn4uI/ciDO87h4CJb7Iet+OVpevpAU6gU8bo5qVbQxg==}
'@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.25.4':
resolution: {integrity: sha512-zYdKQEsowPNtkTixrfbn5DySWBLQpTsISthVBBEPAa3OZC75UI76CbHXEamJ8Kmlead9IkD5RbgeJvxqJ5/H6Q==}
'@redocly/openapi-core@2.26.0':
resolution: {integrity: sha512-BjTPzSV1Gv430W9S/7i5T/dEZDK00GFk6ILCNTI+31pA9lEFJOXc0XRJT+V3v+m3nXIgGoo6GgqeLdAiM10rNg==}
engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'}
'@redocly/respect-core@2.25.4':
resolution: {integrity: sha512-0xMbcSft+9Q2sO1wSJMxo510Aqc/kGF/AmUK3OaLQvGvKUgOqq2Op/0aorNQJk6s8WBEH4UN4eFt7fUzUeXs8g==}
'@redocly/respect-core@2.26.0':
resolution: {integrity: sha512-mejFg26XNp8pqHwnL75QvI7MO4dhgFKa+v35OgOcVMrU9tGZ/VaFbplEyvdrRgjoonguXoLDoMN4Iw1rWlZg0g==}
engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'}
'@replit/codemirror-indentation-markers@6.5.3':
@@ -4834,7 +4834,7 @@ packages:
'@codemirror/language': 6.12.3
'@codemirror/state': ^6.0.0
'@codemirror/view': ^6.0.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': ^1.0.0
@@ -6548,8 +6548,8 @@ 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.7.0':
resolution: {integrity: sha512-ZiELKzDszeFOazPQ/ExXzgtdoW9jADVjDjInr5XDAlVdCx0RbNsFiG7RLyM48XnA7EyCA9yTvmXSc3ElDrTRqA==}
'@zumer/snapdom@2.8.0':
resolution: {integrity: sha512-NhztgFDNfOkFt8Ox9PIJ1IwggyMui5UDazysOgZD7FSGL0G7H8U+J3ft0iecxAS8daj5aC62i3blaTk7s2GcpA==}
abbrev@1.1.1:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
@@ -6630,8 +6630,8 @@ packages:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
ai@6.0.153:
resolution: {integrity: sha512-UlgBe4k0Ja1m1Eufn6FVSsHoF0sc7qwxX35ywJPDogIvBz0pHc+NOmCqiRY904DczNYIuwpZfKBLVz8HXgu3mg==}
ai@6.0.154:
resolution: {integrity: sha512-HfKJKCTJsDZxqrIUDSVnBQ7DpQlx5WI4ExqtLd7Bl70epLmvkpc/HYMzU1hP9W+g9VEAcvZo4fbMqc3v5D+9gQ==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -6870,6 +6870,9 @@ packages:
bail@2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
balanced-match@4.0.3:
resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==}
engines: {node: 20 || >=22}
@@ -6999,6 +7002,9 @@ packages:
bplist-creator@0.0.8:
resolution: {integrity: sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==}
brace-expansion@1.1.13:
resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==}
brace-expansion@5.0.5:
resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==}
engines: {node: 18 || 20 || >=22}
@@ -7467,6 +7473,9 @@ packages:
resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==}
engines: {node: '>= 0.8.0'}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
concat-stream@1.6.2:
resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
engines: {'0': node >= 0.8}
@@ -8175,8 +8184,8 @@ packages:
resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==}
engines: {node: '>=8.0.0'}
electron@41.1.1:
resolution: {integrity: sha512-8bgvDhBjli+3Z2YCKgzzoBPh6391pr7Xv2h/tTJG4ETgvPvUxZomObbZLs31mUzYb6VrlcDDd9cyWyNKtPm3tA==}
electron@41.2.0:
resolution: {integrity: sha512-0OKLiymqfV0WK68RBXqAm3Myad2TpI5wwxLCBEUcH5Nugo3YfSk7p1Js/AL9266qTz5xZioUnxt9hG8FFwax0g==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -9340,8 +9349,8 @@ packages:
i18next-http-backend@3.0.4:
resolution: {integrity: sha512-udwrBIE6cNpqn1gRAqRULq3+7MzIIuaiKRWrz++dVz5SqWW2VwXmPJtAgkI0JtMLFaADC9qNmnZAxWAhsxXx2g==}
i18next@26.0.3:
resolution: {integrity: sha512-1571kXINxHKY7LksWp8wP+zP0YqHSSpl/OW0Y0owFEf2H3s8gCAffWaZivcz14rMkOvn3R/psiQxVsR9t2Nafg==}
i18next@26.0.4:
resolution: {integrity: sha512-gXF7U9bfioXPLv7mw8Qt2nfO7vij5MyINvPgVv99pX3fL1Y01pw2mKBFrlYpRxRCl2wz3ISenj6VsMJT2isfuA==}
peerDependencies:
typescript: ^5 || ^6
peerDependenciesMeta:
@@ -14098,7 +14107,7 @@ snapshots:
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
zod: 4.3.6
'@ai-sdk/gateway@3.0.93(zod@4.3.6)':
'@ai-sdk/gateway@3.0.94(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
@@ -15336,28 +15345,28 @@ snapshots:
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@codemirror/commands@6.10.3':
dependencies:
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@codemirror/commands@6.8.1':
dependencies:
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@codemirror/lang-css@6.3.1':
dependencies:
'@codemirror/autocomplete': 6.18.6
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/css': 1.1.11
'@codemirror/lang-html@6.4.11':
@@ -15368,7 +15377,7 @@ snapshots:
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/css': 1.1.11
'@lezer/html': 1.3.12
@@ -15379,7 +15388,7 @@ snapshots:
'@codemirror/lint': 6.8.5
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/javascript': 1.5.1
'@codemirror/lang-json@6.0.2':
@@ -15394,7 +15403,7 @@ snapshots:
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/markdown': 1.4.3
'@codemirror/lang-markdown@6.5.0':
@@ -15404,7 +15413,7 @@ snapshots:
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/markdown': 1.4.3
'@codemirror/lang-php@6.0.2':
@@ -15412,7 +15421,7 @@ snapshots:
'@codemirror/lang-html': 6.4.11
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/php': 1.0.2
'@codemirror/lang-vue@0.1.3':
@@ -15420,7 +15429,7 @@ snapshots:
'@codemirror/lang-html': 6.4.11
'@codemirror/lang-javascript': 6.2.5
'@codemirror/language': 6.12.3
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
@@ -15430,14 +15439,14 @@ snapshots:
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/xml': 1.0.6
'@codemirror/language@6.12.3':
dependencies:
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
style-mod: 4.1.2
@@ -15952,9 +15961,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@electron/remote@2.1.3(electron@41.1.1)':
'@electron/remote@2.1.3(electron@41.2.0)':
dependencies:
electron: 41.1.1
electron: 41.2.0
'@electron/universal@2.0.2':
dependencies:
@@ -17161,54 +17170,54 @@ snapshots:
'@keyv/serialize@1.1.1': {}
'@lezer/common@1.5.1': {}
'@lezer/common@1.5.2': {}
'@lezer/css@1.1.11':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
'@lezer/highlight@1.2.3':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/html@1.3.12':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
'@lezer/javascript@1.5.1':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
'@lezer/json@1.0.3':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
'@lezer/lr@1.4.2':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/markdown@1.4.3':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/php@1.0.2':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
'@lezer/xml@1.0.6':
dependencies:
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
@@ -18390,15 +18399,15 @@ snapshots:
dependencies:
ulid: 2.4.0
'@redocly/cli@2.25.4(@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.26.0(@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/cli-otel': 0.1.2
'@redocly/openapi-core': 2.25.4
'@redocly/respect-core': 2.25.4
'@redocly/openapi-core': 2.26.0
'@redocly/respect-core': 2.26.0
abort-controller: 3.0.0
ajv: '@redocly/ajv@8.18.0'
ajv-formats: 3.0.1(@redocly/ajv@8.18.0)
@@ -18432,7 +18441,7 @@ snapshots:
'@redocly/config@0.22.2': {}
'@redocly/config@0.46.0':
'@redocly/config@0.46.1':
dependencies:
json-schema-to-ts: 2.7.2
@@ -18450,10 +18459,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@redocly/openapi-core@2.25.4':
'@redocly/openapi-core@2.26.0':
dependencies:
'@redocly/ajv': 8.18.0
'@redocly/config': 0.46.0
'@redocly/config': 0.46.1
ajv: '@redocly/ajv@8.18.0'
ajv-formats: 3.0.1(@redocly/ajv@8.18.0)
colorette: 1.4.0
@@ -18463,12 +18472,12 @@ snapshots:
pluralize: 8.0.0
yaml-ast-parser: 0.0.43
'@redocly/respect-core@2.25.4':
'@redocly/respect-core@2.26.0':
dependencies:
'@faker-js/faker': 7.6.0
'@noble/hashes': 1.8.0
'@redocly/ajv': 8.18.0
'@redocly/openapi-core': 2.25.4
'@redocly/openapi-core': 2.26.0
ajv: '@redocly/ajv@8.18.0'
better-ajv-errors: 1.2.0(@redocly/ajv@8.18.0)
colorette: 2.0.20
@@ -18484,13 +18493,13 @@ snapshots:
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.1)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2)':
'@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.2)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2)':
dependencies:
'@codemirror/autocomplete': 6.18.6
'@codemirror/language': 6.12.3
'@codemirror/state': 6.6.0
'@codemirror/view': 6.41.0
'@lezer/common': 1.5.1
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
@@ -21250,7 +21259,7 @@ snapshots:
'@zip.js/zip.js@2.8.11': {}
'@zumer/snapdom@2.7.0': {}
'@zumer/snapdom@2.8.0': {}
abbrev@1.1.1: {}
@@ -21313,9 +21322,9 @@ snapshots:
clean-stack: 2.2.0
indent-string: 4.0.0
ai@6.0.153(zod@4.3.6):
ai@6.0.154(zod@4.3.6):
dependencies:
'@ai-sdk/gateway': 3.0.93(zod@4.3.6)
'@ai-sdk/gateway': 3.0.94(zod@4.3.6)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
'@opentelemetry/api': 1.9.0
@@ -21588,6 +21597,8 @@ snapshots:
bail@2.0.2: {}
balanced-match@1.0.2: {}
balanced-match@4.0.3: {}
bare-events@2.7.0: {}
@@ -21728,6 +21739,11 @@ snapshots:
stream-buffers: 2.2.0
optional: true
brace-expansion@1.1.13:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
brace-expansion@5.0.5:
dependencies:
balanced-match: 4.0.3
@@ -22365,6 +22381,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
concat-map@0.0.1: {}
concat-stream@1.6.2:
dependencies:
buffer-from: 1.1.2
@@ -23152,10 +23170,10 @@ snapshots:
- supports-color
optional: true
electron@41.1.1:
electron@41.2.0:
dependencies:
'@electron/get': 2.0.3
'@types/node': 24.12.0
'@types/node': 24.12.2
extract-zip: 2.0.1
transitivePeerDependencies:
- supports-color
@@ -24791,7 +24809,7 @@ snapshots:
transitivePeerDependencies:
- encoding
i18next@26.0.3(typescript@6.0.2):
i18next@26.0.4(typescript@6.0.2):
dependencies:
'@babel/runtime': 7.29.2
optionalDependencies:
@@ -26242,7 +26260,7 @@ snapshots:
minimatch@3.1.5:
dependencies:
brace-expansion: 5.0.5
brace-expansion: 1.1.13
minimatch@5.1.9:
dependencies:
@@ -27433,11 +27451,11 @@ snapshots:
react: 19.2.4
scheduler: 0.27.0
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):
react-i18next@17.0.2(i18next@26.0.4(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: 26.0.3(typescript@6.0.2)
i18next: 26.0.4(typescript@6.0.2)
react: 19.2.4
use-sync-external-store: 1.6.0(react@19.2.4)
optionalDependencies: