diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 10d37fdda..15dd91acb 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -77,7 +77,7 @@ jobs: GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }} - name: Publish release - uses: softprops/action-gh-release@v2.3.3 + uses: softprops/action-gh-release@v2.3.4 if: ${{ github.event_name != 'pull_request' }} with: make_latest: false @@ -118,7 +118,7 @@ jobs: arch: ${{ matrix.arch }} - name: Publish release - uses: softprops/action-gh-release@v2.3.3 + uses: softprops/action-gh-release@v2.3.4 if: ${{ github.event_name != 'pull_request' }} with: make_latest: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6a0a38752..f73cdb54c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -127,7 +127,7 @@ jobs: path: upload - name: Publish stable release - uses: softprops/action-gh-release@v2.3.3 + uses: softprops/action-gh-release@v2.3.4 with: draft: false body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md diff --git a/README.md b/README.md index 1074cd9f5..b84fd1003 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ![GitHub Downloads (all assets, all releases)](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) [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | [Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README.ru.md) | [Japanese](./docs/README.ja.md) | [Italian](./docs/README.it.md) | [Spanish](./docs/README.es.md) +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | [Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) | [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | [Spanish](./docs/README-es.md) Trilium Notes is a free and open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases. @@ -166,16 +166,34 @@ Please view the [documentation guide](https://github.com/TriliumNext/Trilium/blo ## 👏 Shoutouts -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team -* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it. -* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages -* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) +* [zadam](https://github.com/zadam) for the original concept and implementation of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. Used in [relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) ## 🤝 Support -Support for the TriliumNext organization will be possible in the near future. For now, you can: -- Support continued development on TriliumNext by supporting our developers: [eliandoran](https://github.com/sponsors/eliandoran) (See the [repository insights]([developers]([url](https://github.com/TriliumNext/trilium/graphs/contributors))) for a full list) -- Show a token of gratitude to the original Trilium developer ([zadam](https://github.com/sponsors/zadam)) via [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). +Trilium is built and maintained with [hundreds of hours of work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your support keeps it open-source, improves features, and covers costs such as hosting. + +Consider supporting the main developer ([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) ## 🔑 License diff --git a/_regroup/package.json b/_regroup/package.json index f822dd805..b8cc7ce85 100644 --- a/_regroup/package.json +++ b/_regroup/package.json @@ -41,7 +41,7 @@ "@types/node": "22.18.8", "@types/yargs": "17.0.33", "@vitest/coverage-v8": "3.2.4", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-plugin-simple-import-sort": "12.1.1", "esm": "3.2.25", "jsdoc": "4.0.4", diff --git a/apps/client/package.json b/apps/client/package.json index 395953e87..6807c5275 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -15,7 +15,7 @@ "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" }, "dependencies": { - "@eslint/js": "9.36.0", + "@eslint/js": "9.37.0", "@excalidraw/excalidraw": "0.18.0", "@fullcalendar/core": "6.1.19", "@fullcalendar/daygrid": "6.1.19", @@ -46,7 +46,7 @@ "jquery": "3.7.1", "jquery.fancytree": "2.38.5", "jsplumb": "2.15.6", - "katex": "0.16.22", + "katex": "0.16.23", "knockout": "3.5.1", "leaflet": "1.9.4", "leaflet-gpx": "2.2.0", diff --git a/apps/client/src/services/shortcuts.spec.ts b/apps/client/src/services/shortcuts.spec.ts index 405c71359..87f8ae489 100644 --- a/apps/client/src/services/shortcuts.spec.ts +++ b/apps/client/src/services/shortcuts.spec.ts @@ -148,13 +148,21 @@ describe("shortcuts", () => { expect(matchesShortcut(event, "a")).toBe(false); }); - it("should match function keys even with no modifiers", () => { + it("should match some keys even with no modifiers", () => { + // Bare function keys let event = createKeyboardEvent({ key: "F1", code: "F1" }); expect(matchesShortcut(event, "F1")).toBeTruthy(); expect(matchesShortcut(event, "f1")).toBeTruthy(); + // Function keys with shift event = createKeyboardEvent({ key: "F1", code: "F1", shiftKey: true }); expect(matchesShortcut(event, "Shift+F1")).toBeTruthy(); + + // Special keys + for (const keyCode of [ "Delete", "Enter" ]) { + event = createKeyboardEvent({ key: keyCode, code: keyCode }); + expect(matchesShortcut(event, keyCode), `Key ${keyCode}`).toBeTruthy(); + } }); it("should handle alternative modifier names", () => { diff --git a/apps/client/src/services/shortcuts.ts b/apps/client/src/services/shortcuts.ts index a3362363d..363767b71 100644 --- a/apps/client/src/services/shortcuts.ts +++ b/apps/client/src/services/shortcuts.ts @@ -36,10 +36,19 @@ const keyMap: { [key: string]: string[] } = { }; // Function keys +const functionKeyCodes: string[] = []; for (let i = 1; i <= 19; i++) { - keyMap[`f${i}`] = [`F${i}`]; + const keyCode = `F${i}`; + functionKeyCodes.push(keyCode); + keyMap[`f${i}`] = [ keyCode ]; } +const KEYCODES_WITH_NO_MODIFIER = new Set([ + "Delete", + "Enter", + ...functionKeyCodes +]); + /** * Check if IME (Input Method Editor) is composing * This is used to prevent keyboard shortcuts from firing during IME composition @@ -173,8 +182,8 @@ export function matchesShortcut(e: KeyboardEvent, shortcut: string): boolean { const expectedMeta = modifiers.includes('meta') || modifiers.includes('cmd') || modifiers.includes('command'); // Refuse key combinations that don't include modifiers because they interfere with the normal usage of the application. - // Function keys are an exception. - if (!(expectedCtrl || expectedAlt || expectedShift || expectedMeta) && !/f\d+/.test(key)) { + // Some keys such as function keys are an exception. + if (!(expectedCtrl || expectedAlt || expectedShift || expectedMeta) && !KEYCODES_WITH_NO_MODIFIER.has(e.code)) { return false; } diff --git a/apps/client/src/stylesheets/print.css b/apps/client/src/stylesheets/print.css index f537911e5..114a52559 100644 --- a/apps/client/src/stylesheets/print.css +++ b/apps/client/src/stylesheets/print.css @@ -31,7 +31,7 @@ #center-pane > *:not(.split-note-container-widget), #right-pane, .title-row .note-icon-widget, -.title-row .button-widget, +.title-row .icon-action, .ribbon-container, .promoted-attributes-widget, .scroll-padding-widget, diff --git a/apps/client/src/translations/ko/translation.json b/apps/client/src/translations/ko/translation.json index 6f4a28b9b..6bbef5adb 100644 --- a/apps/client/src/translations/ko/translation.json +++ b/apps/client/src/translations/ko/translation.json @@ -29,9 +29,25 @@ "note": "노트", "search_note": "이름으로 노트 검색하기", "help_on_links": "링크 관련 도움말", - "link_title_mirrors": "링크 제목은 노트의 현재 제목을 반영합니다" + "link_title_mirrors": "링크 제목은 노트의 현재 제목을 반영합니다", + "link_title_arbitrary": "링크 제목은 임의로 변경될 수 있습니다", + "link_title": "링크 제목", + "button_add_link": "링크 추가" }, "branch_prefix": { - "save": "저장" + "save": "저장", + "edit_branch_prefix": "브랜치 접두사 편집", + "help_on_tree_prefix": "트리 접두사에 대한 도움말", + "prefix": "접두사: ", + "branch_prefix_saved": "브랜치 접두사가 저장되었습니다." + }, + "bulk_actions": { + "bulk_actions": "대량 작업", + "affected_notes": "영향을 받은 노트들", + "include_descendants": "선택한 노트의 자손 포함", + "available_actions": "가능한 액션들", + "chosen_actions": "선택한 액션들", + "execute_bulk_actions": "대량 액션들 실행", + "bulk_actions_executed": "대량 액션들이 성공적으로 실행되었습니다." } } diff --git a/apps/client/src/widgets/ribbon/Ribbon.tsx b/apps/client/src/widgets/ribbon/Ribbon.tsx index ff908f00f..e47a78aee 100644 --- a/apps/client/src/widgets/ribbon/Ribbon.tsx +++ b/apps/client/src/widgets/ribbon/Ribbon.tsx @@ -51,6 +51,7 @@ const TAB_CONFIGURATION = numberObjectsInPlace([ show: ({ note }) => note?.type === "text" && options.get("textNoteEditorType") === "ckeditor-classic", toggleCommand: "toggleRibbonTabClassicEditor", content: FormattingToolbar, + activate: true, stayInDom: true }, { diff --git a/apps/client/src/widgets/type_widgets/options/appearance.tsx b/apps/client/src/widgets/type_widgets/options/appearance.tsx index e3ba25440..233186ffe 100644 --- a/apps/client/src/widgets/type_widgets/options/appearance.tsx +++ b/apps/client/src/widgets/type_widgets/options/appearance.tsx @@ -90,6 +90,7 @@ export default function AppearanceSettings() { {isElectron() && } + ) } + +function RibbonOptions() { + const [ editedNotesOpenInRibbon, setEditedNotesOpenInRibbon ] = useTriliumOptionBool("editedNotesOpenInRibbon"); + + return ( + + + + ) +} diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 6f1fd0fcf..d4ad9fb21 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -34,7 +34,7 @@ "@triliumnext/commons": "workspace:*", "@triliumnext/server": "workspace:*", "copy-webpack-plugin": "13.0.1", - "electron": "38.2.0", + "electron": "38.2.1", "@electron-forge/cli": "7.9.0", "@electron-forge/maker-deb": "7.9.0", "@electron-forge/maker-dmg": "7.9.0", diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index bb664f634..2fb17e9ab 100644 --- a/apps/edit-docs/package.json +++ b/apps/edit-docs/package.json @@ -12,7 +12,7 @@ "@triliumnext/desktop": "workspace:*", "@types/fs-extra": "11.0.4", "copy-webpack-plugin": "13.0.1", - "electron": "38.2.0", + "electron": "38.2.1", "fs-extra": "11.3.2" }, "scripts": { diff --git a/apps/server/package.json b/apps/server/package.json index 052b59b57..1d10080dd 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -56,7 +56,7 @@ "@types/sanitize-html": "2.16.0", "@types/sax": "1.2.7", "@types/serve-favicon": "2.5.7", - "@types/serve-static": "1.15.8", + "@types/serve-static": "1.15.9", "@types/session-file-store": "1.2.5", "@types/stream-throttle": "0.1.4", "@types/supertest": "6.0.3", @@ -81,7 +81,7 @@ "debounce": "2.2.0", "debug": "4.4.3", "ejs": "3.1.10", - "electron": "38.2.0", + "electron": "38.2.1", "electron-debug": "4.1.0", "electron-window-state": "5.0.3", "escape-html": "1.0.3", diff --git a/apps/server/src/assets/translations/ja/server.json b/apps/server/src/assets/translations/ja/server.json index 1c19777aa..fcdde2f7e 100644 --- a/apps/server/src/assets/translations/ja/server.json +++ b/apps/server/src/assets/translations/ja/server.json @@ -347,7 +347,7 @@ }, "notes": { "new-note": "新しいノート", - "duplicate-note-suffix": "(重複)", + "duplicate-note-suffix": "(複製)", "duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}" }, "backend_log": { diff --git a/apps/server/src/assets/translations/ko/server.json b/apps/server/src/assets/translations/ko/server.json index addfca0cc..a8b421e81 100644 --- a/apps/server/src/assets/translations/ko/server.json +++ b/apps/server/src/assets/translations/ko/server.json @@ -38,6 +38,7 @@ "activate-next-tab": "우측 탭 활성화", "activate-previous-tab": "좌측 탭 활성화", "open-new-window": "새 비어있는 창 열기", - "toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기" + "toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기", + "tabs-and-windows": "탭 & 창" } } diff --git a/apps/server/src/assets/translations/nb-NO/server.json b/apps/server/src/assets/translations/nb-NO/server.json index 0967ef424..fa11d20d6 100644 --- a/apps/server/src/assets/translations/nb-NO/server.json +++ b/apps/server/src/assets/translations/nb-NO/server.json @@ -1 +1,11 @@ -{} +{ + "keyboard_actions": { + "back-in-note-history": "Naviger til forrige notat i historikken", + "forward-in-note-history": "Naviger til neste notat i historikken", + "open-jump-to-note-dialog": "Åpne \"gå til notat\"-dialogboksen", + "open-command-palette": "Åpne kommandopalett", + "scroll-to-active-note": "Skroll notat-treet til aktivt notat", + "quick-search": "Aktiver hurtigsøk-feltet", + "search-in-subtree": "Søk etter notater i det aktive notatets understruktur" + } +} diff --git a/apps/website/index.html b/apps/website/index.html index 59b5a1e3c..798ca14f9 100644 --- a/apps/website/index.html +++ b/apps/website/index.html @@ -5,6 +5,7 @@ + Trilium Notes diff --git a/apps/website/package.json b/apps/website/package.json index b6265c4f6..a818aba4d 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@preact/preset-vite": "2.10.2", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-preact": "2.0.0", "typescript": "5.9.3", "user-agent-data-types": "0.4.2", diff --git a/apps/website/src/assets/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf b/apps/website/src/assets/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf new file mode 100644 index 000000000..43ed4f5ee Binary files /dev/null and b/apps/website/src/assets/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf differ diff --git a/apps/website/src/assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf b/apps/website/src/assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf new file mode 100644 index 000000000..e31b51e3e Binary files /dev/null and b/apps/website/src/assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf differ diff --git a/apps/website/src/assets/fonts/Inter/OFL.txt b/apps/website/src/assets/fonts/Inter/OFL.txt new file mode 100644 index 000000000..63db4fa70 --- /dev/null +++ b/apps/website/src/assets/fonts/Inter/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/apps/website/src/assets/fonts/Inter/README.txt b/apps/website/src/assets/fonts/Inter/README.txt new file mode 100644 index 000000000..f7a47e8ee --- /dev/null +++ b/apps/website/src/assets/fonts/Inter/README.txt @@ -0,0 +1,118 @@ +Inter Variable Font +=================== + +This download contains Inter as both variable fonts and static fonts. + +Inter is a variable font with these axes: + opsz + wght + +This means all the styles are contained in these files: + Inter-VariableFont_opsz,wght.ttf + Inter-Italic-VariableFont_opsz,wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Inter: + static/Inter_18pt-Thin.ttf + static/Inter_18pt-ExtraLight.ttf + static/Inter_18pt-Light.ttf + static/Inter_18pt-Regular.ttf + static/Inter_18pt-Medium.ttf + static/Inter_18pt-SemiBold.ttf + static/Inter_18pt-Bold.ttf + static/Inter_18pt-ExtraBold.ttf + static/Inter_18pt-Black.ttf + static/Inter_24pt-Thin.ttf + static/Inter_24pt-ExtraLight.ttf + static/Inter_24pt-Light.ttf + static/Inter_24pt-Regular.ttf + static/Inter_24pt-Medium.ttf + static/Inter_24pt-SemiBold.ttf + static/Inter_24pt-Bold.ttf + static/Inter_24pt-ExtraBold.ttf + static/Inter_24pt-Black.ttf + static/Inter_28pt-Thin.ttf + static/Inter_28pt-ExtraLight.ttf + static/Inter_28pt-Light.ttf + static/Inter_28pt-Regular.ttf + static/Inter_28pt-Medium.ttf + static/Inter_28pt-SemiBold.ttf + static/Inter_28pt-Bold.ttf + static/Inter_28pt-ExtraBold.ttf + static/Inter_28pt-Black.ttf + static/Inter_18pt-ThinItalic.ttf + static/Inter_18pt-ExtraLightItalic.ttf + static/Inter_18pt-LightItalic.ttf + static/Inter_18pt-Italic.ttf + static/Inter_18pt-MediumItalic.ttf + static/Inter_18pt-SemiBoldItalic.ttf + static/Inter_18pt-BoldItalic.ttf + static/Inter_18pt-ExtraBoldItalic.ttf + static/Inter_18pt-BlackItalic.ttf + static/Inter_24pt-ThinItalic.ttf + static/Inter_24pt-ExtraLightItalic.ttf + static/Inter_24pt-LightItalic.ttf + static/Inter_24pt-Italic.ttf + static/Inter_24pt-MediumItalic.ttf + static/Inter_24pt-SemiBoldItalic.ttf + static/Inter_24pt-BoldItalic.ttf + static/Inter_24pt-ExtraBoldItalic.ttf + static/Inter_24pt-BlackItalic.ttf + static/Inter_28pt-ThinItalic.ttf + static/Inter_28pt-ExtraLightItalic.ttf + static/Inter_28pt-LightItalic.ttf + static/Inter_28pt-Italic.ttf + static/Inter_28pt-MediumItalic.ttf + static/Inter_28pt-SemiBoldItalic.ttf + static/Inter_28pt-BoldItalic.ttf + static/Inter_28pt-ExtraBoldItalic.ttf + static/Inter_28pt-BlackItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/apps/website/src/components/Footer.tsx b/apps/website/src/components/Footer.tsx index 3f00191d2..a652e524c 100644 --- a/apps/website/src/components/Footer.tsx +++ b/apps/website/src/components/Footer.tsx @@ -55,7 +55,7 @@ export function SocialButtons({ className, withText }: { className?: string, wit ) } -function SocialButton({ name, iconSvg, url, withText }: { name: string, iconSvg: string, url: string, withText?: boolean }) { +export function SocialButton({ name, iconSvg, url, withText, counter }: { name: string, iconSvg: string, url: string, withText?: boolean, counter?: string | undefined }) { return ( + {counter && {counter}} {withText && name} ) } + diff --git a/apps/website/src/components/Header.css b/apps/website/src/components/Header.css index 729194799..214a688cf 100644 --- a/apps/website/src/components/Header.css +++ b/apps/website/src/components/Header.css @@ -53,6 +53,20 @@ header { } } +.repository-button a { + display: flex; + color: currentColor; + + &:hover { + color: var(--brand-1); + text-decoration: none; + } + + .counter { + margin-inline-start: 4px; + } +} + @media (max-width: 719px) { :root { --header-height: 60px; diff --git a/apps/website/src/components/Header.tsx b/apps/website/src/components/Header.tsx index facb4089b..07c6a2cba 100644 --- a/apps/website/src/components/Header.tsx +++ b/apps/website/src/components/Header.tsx @@ -1,12 +1,13 @@ import "./Header.css"; +import { Link } from "./Button.js"; +import { SocialButtons, SocialButton } from "./Footer.js"; +import { useEffect, useMemo, useState } from "preact/hooks"; import { useLocation } from 'preact-iso'; import DownloadButton from './DownloadButton.js'; -import { Link } from "./Button.js"; +import githubIcon from "../assets/boxicons/bx-github.svg?raw"; import Icon from "./Icon.js"; import logoPath from "../assets/icon-color.svg"; import menuIcon from "../assets/boxicons/bx-menu.svg?raw"; -import { useState } from "preact/hooks"; -import { SocialButtons } from "./Footer.js"; interface HeaderLink { url: string; @@ -20,7 +21,7 @@ const HEADER_LINKS: HeaderLink[] = [ { url: "/support-us/", text: "Support us" } ] -export function Header() { +export function Header(props: {repoStargazersCount: number}) { const { url } = useLocation(); const [ mobileMenuShown, setMobileMenuShown ] = useState(false); @@ -59,8 +60,18 @@ export function Header() { +
+ +
+ + ); -} +} \ No newline at end of file diff --git a/apps/website/src/github-utils.ts b/apps/website/src/github-utils.ts new file mode 100644 index 000000000..1a816afb4 --- /dev/null +++ b/apps/website/src/github-utils.ts @@ -0,0 +1,28 @@ +export const FALLBACK_STARGAZERS_COUNT = 31862; // The count as of 2025-10-03 + +const API_URL = "https://api.github.com/repos/TriliumNext/Trilium"; + +let repoStargazersCount: number | null = null; + +/** Returns the number of stargazers of the Trilium's GitHub repository. */ +export async function getRepoStargazersCount() { + if (repoStargazersCount === null) { + repoStargazersCount = await fetchRepoStargazersCount() && FALLBACK_STARGAZERS_COUNT; + } + return repoStargazersCount; +} + +async function fetchRepoStargazersCount(): Promise { + console.log("\nFetching stargazers count from GitHub API... "); + const response = await fetch(API_URL); + + if (response.ok) { + const details = await response.json(); + if ("stargazers_count" in details) { + return details["stargazers_count"]; + } + } + + console.error("Failed to fetch stargazers count from GitHub API:", response.status, response.statusText); + return null; +} \ No newline at end of file diff --git a/apps/website/src/index.tsx b/apps/website/src/index.tsx index 9dc5edfb1..10680c4fa 100644 --- a/apps/website/src/index.tsx +++ b/apps/website/src/index.tsx @@ -1,17 +1,17 @@ -import { LocationProvider, Router, Route, hydrate, prerender as ssr } from 'preact-iso'; - +import './style.css'; +import { FALLBACK_STARGAZERS_COUNT, getRepoStargazersCount } from './github-utils.js'; import { Header } from './components/Header.jsx'; import { Home } from './pages/Home/index.jsx'; +import { LocationProvider, Router, Route, hydrate, prerender as ssr } from 'preact-iso'; import { NotFound } from './pages/_404.jsx'; -import './style.css'; import Footer from './components/Footer.js'; import GetStarted from './pages/GetStarted/get-started.js'; import SupportUs from './pages/SupportUs/SupportUs.js'; -export function App() { +export function App(props: {repoStargazersCount: number}) { return ( -
+
@@ -26,9 +26,15 @@ export function App() { } if (typeof window !== 'undefined') { - hydrate(, document.getElementById('app')!); + hydrate(, document.getElementById('app')!); } export async function prerender(data) { - return await ssr(); + // Fetch the stargazer count of the Trilium's GitHub repo on prerender to pass + // it to the App component for SSR. + // This ensures the GitHub API is not called on every page load in the client. + const stargazersCount = await getRepoStargazersCount(); + + return await ssr(); } + diff --git a/apps/website/src/pages/Home/index.css b/apps/website/src/pages/Home/index.css index 1de3b5f65..63af2d57b 100644 --- a/apps/website/src/pages/Home/index.css +++ b/apps/website/src/pages/Home/index.css @@ -53,7 +53,7 @@ section.hero-section { h1 { line-height: 1.1; - font-weight: 100; + font-weight: 300; color: var(--foreground-color); } } diff --git a/apps/website/src/style.css b/apps/website/src/style.css index 7533cc749..ca12a73d0 100644 --- a/apps/website/src/style.css +++ b/apps/website/src/style.css @@ -1,3 +1,8 @@ +@font-face { + font-family: "Inter"; + src: url(./assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf); +} + :root { --background-color: #fff; --foreground-color: black; @@ -26,7 +31,7 @@ html, body { margin: 0; line-height: 1.5; - font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; + font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; min-height: 100vh; } @@ -37,7 +42,6 @@ main { } body { - font-family: sans-serif; background: var(--background-color); color: var(--foreground-color); } @@ -69,7 +73,7 @@ section { h2 { text-align: center; - font-weight: 100; + font-weight: 300; margin-top: 0; margin-bottom: 1em; } diff --git a/docs/README-ZH_CN.md b/docs/README-ZH_CN.md index 818aa71aa..9a16b9274 100644 --- a/docs/README-ZH_CN.md +++ b/docs/README-ZH_CN.md @@ -5,7 +5,7 @@ ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total) [![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[英文](../README.md) | [简体中文](./README-ZH_CN.md) | [正体中文](./README-ZH_TW.md) | [俄文](./README.ru.md) | [日文](./README.ja.md) | [意大利文](./README.it.md) | [西班牙文](./README.es.md) +[英文](../README.md) | [简体中文](./README-ZH_CN.md) | [正体中文](./README-ZH_TW.md) | [俄文](./README-ru.md) | [日文](./README-ja.md) | [意大利文](./README-it.md) | [西班牙文](./README-es.md) Trilium Notes 是一款免费且开源、跨平台的阶层式笔记应用程序,专注于建立大型个人知识库。 diff --git a/docs/README-ZH_TW.md b/docs/README-ZH_TW.md index 085871d61..53a86abd5 100644 --- a/docs/README-ZH_TW.md +++ b/docs/README-ZH_TW.md @@ -5,7 +5,7 @@ ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total) [![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[英文](../README.md) | [簡體中文](./README-ZH_CN.md) | [正體中文](./README-ZH_TW.md) | [俄文](./README.ru.md) | [日文](./README.ja.md) | [義大利文](./README.it.md) | [西班牙文](./README.es.md) +[英文](../README.md) | [簡體中文](./README-ZH_CN.md) | [正體中文](./README-ZH_TW.md) | [俄文](./README-ru.md) | [日文](./README-ja.md) | [義大利文](./README-it.md) | [西班牙文](./README-es.md) Trilium Notes 是一款免費且開源、跨平台的階層式筆記應用程式,專注於建立大型個人知識庫。 diff --git a/docs/README.es.md b/docs/README-es.md similarity index 98% rename from docs/README.es.md rename to docs/README-es.md index 474239a8d..f8a01b06a 100644 --- a/docs/README.es.md +++ b/docs/README-es.md @@ -1,6 +1,6 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md) +[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) Trilium Notes es una aplicación de toma de notas jerárquicas multi-plataforma y de código libre con un enfoque en la construcción de grandes bases de conocimiento personal. diff --git a/docs/README.it.md b/docs/README-it.md similarity index 98% rename from docs/README.it.md rename to docs/README-it.md index 5c8a15424..25c369aba 100644 --- a/docs/README.it.md +++ b/docs/README-it.md @@ -1,6 +1,6 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md) +[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) Trilium Notes è un'applicazione per appunti ad organizzazione gerarchica, studiata per la costruzione di archivi di conoscenza personali di grandi dimensioni. diff --git a/docs/README.ja.md b/docs/README-ja.md similarity index 98% rename from docs/README.ja.md rename to docs/README-ja.md index 47ff29059..bef53ec5e 100644 --- a/docs/README.ja.md +++ b/docs/README-ja.md @@ -1,6 +1,6 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md) +[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://triliumnext.github.io/Docs/Wiki/screenshot-tour)をご覧ください: diff --git a/docs/README-ro.md b/docs/README-ro.md new file mode 100644 index 000000000..4a4aa80c2 --- /dev/null +++ b/docs/README-ro.md @@ -0,0 +1,315 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![Donatori +pe LiberaPay](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Descărcări pe Docker](https://img.shields.io/docker/pulls/triliumnext/trilium) +![Descărcări pe GitHub (toate variantele, toate +release-urile)](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) +[![Starea +traducerilor](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes este o aplicație gratuită și open-source pentru notițe structurate +ierarhic cu scopul de a crea o bază de date de cunoștințe personală, de mari +dimensiuni. + +Prezentare generală prin [capturi de +ecran](https://triliumnext.github.io/Docs/Wiki/screenshot-tour): + +Trilium Screenshot + +## 📚 Documentație + +**Vizitați documentația noastră detaliată la +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Documentația este disponibilă în mai multe formate: +- **Documentație online**: vizualizați întreaga documentație la + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **Ghid în aplicație**: Apăsați `F1` în Trilium pentru a accesa aceeași + documentație local, direct din aplicație +- **GitHub**: Navigați [ghidul de utilizator](./docs/User%20Guide/User%20Guide/) + direct din acest repository + +### Linkuri rapide +- [Ghid rapid](https://docs.triliumnotes.org/) +- [Instrucțiuni de + instalare](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Instalare prin + Docker](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Procesul de + actualizare](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Concepte de bază și + funcții](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Concepte pentru o bază de date de cunoștințe + personală](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Funcții + +* Notițele pot fi aranjate într-o structură ierarhică cu o adâncime nelimitată. + O singură notiță poate fi plasată în mai multe locuri în abore (vedeți + [procesul de clonare](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Editor vizual de notițe cu suport de tabele, imagini și [ecuații + matematice](https://triliumnext.github.io/Docs/Wiki/text-notes) și + [autoformatare în stil + Markdown](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Suport pentru editarea [notițelor de tip cod + sursă](https://triliumnext.github.io/Docs/Wiki/code-notes), inclusiv cu + evidențierea sintaxei +* [Navigare rapidă printre + notițe](https://triliumnext.github.io/Docs/Wiki/note-navigation), căutare în + conținutul notițelor și [focalizarea + notițelor](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Salvarea transparentă a [reviziilor + notițelor](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* [Atribute](https://triliumnext.github.io/Docs/Wiki/attributes) pentru + organizarea și căutarea notițelor, dar și posibilitatea + [script-uri](https://triliumnext.github.io/Docs/Wiki/scripts) avansate +* Interfața grafică este disponibilă în mai multe limbi, dintre care și limba + română +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for 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 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. diff --git a/docs/README.ru.md b/docs/README-ru.md similarity index 98% rename from docs/README.ru.md rename to docs/README-ru.md index af15fcab9..b51c333d8 100644 --- a/docs/README.ru.md +++ b/docs/README-ru.md @@ -1,6 +1,6 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md) +[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://triliumnext.github.io/Docs/Wiki/screenshot-tour): diff --git a/docs/README.md b/docs/README.md index 5675758ee..be65024ee 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,10 +2,10 @@ Please see the [main documentation](index.md) or visit one of our translated versions: -- [Español](README.es.md) -- [Italiano](README.it.md) -- [日本語](README.ja.md) -- [Русский](README.ru.md) +- [Español](README-es.md) +- [Italiano](README-it.md) +- [日本語](README-ja.md) +- [Русский](README-ru.md) - [简体中文](README-ZH_CN.md) - [繁體中文](README-ZH_TW.md) diff --git a/package.json b/package.json index f5a4adf7d..285c4bdad 100644 --- a/package.json +++ b/package.json @@ -47,10 +47,10 @@ "cross-env": "10.1.0", "dpdm": "3.14.0", "esbuild": "0.25.10", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-playwright": "2.2.2", - "eslint-plugin-react-hooks": "6.1.0", + "eslint-plugin-react-hooks": "6.1.1", "happy-dom": "~19.0.0", "jiti": "2.6.1", "jsonc-eslint-parser": "2.4.1", diff --git a/packages/ckeditor5-admonition/package.json b/packages/ckeditor5-admonition/package.json index d15157146..29799cc62 100644 --- a/packages/ckeditor5-admonition/package.json +++ b/packages/ckeditor5-admonition/package.json @@ -29,11 +29,11 @@ "@vitest/browser": "3.2.4", "@vitest/coverage-istanbul": "3.2.4", "ckeditor5": "47.0.0", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.3", - "stylelint": "16.24.0", + "stylelint": "16.25.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", diff --git a/packages/ckeditor5-footnotes/package.json b/packages/ckeditor5-footnotes/package.json index fa452a336..845638643 100644 --- a/packages/ckeditor5-footnotes/package.json +++ b/packages/ckeditor5-footnotes/package.json @@ -30,11 +30,11 @@ "@vitest/browser": "3.2.4", "@vitest/coverage-istanbul": "3.2.4", "ckeditor5": "47.0.0", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.3", - "stylelint": "16.24.0", + "stylelint": "16.25.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", diff --git a/packages/ckeditor5-keyboard-marker/package.json b/packages/ckeditor5-keyboard-marker/package.json index fda4c2690..fec43d3bd 100644 --- a/packages/ckeditor5-keyboard-marker/package.json +++ b/packages/ckeditor5-keyboard-marker/package.json @@ -32,11 +32,11 @@ "@vitest/browser": "3.2.4", "@vitest/coverage-istanbul": "3.2.4", "ckeditor5": "47.0.0", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.3", - "stylelint": "16.24.0", + "stylelint": "16.25.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json index 27e4dec4f..b9fc2fd69 100644 --- a/packages/ckeditor5-math/package.json +++ b/packages/ckeditor5-math/package.json @@ -33,11 +33,11 @@ "@vitest/browser": "3.2.4", "@vitest/coverage-istanbul": "3.2.4", "ckeditor5": "47.0.0", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.3", - "stylelint": "16.24.0", + "stylelint": "16.25.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", diff --git a/packages/ckeditor5-mermaid/package.json b/packages/ckeditor5-mermaid/package.json index d7020971d..ab4e097aa 100644 --- a/packages/ckeditor5-mermaid/package.json +++ b/packages/ckeditor5-mermaid/package.json @@ -32,11 +32,11 @@ "@vitest/browser": "3.2.4", "@vitest/coverage-istanbul": "3.2.4", "ckeditor5": "47.0.0", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", "lint-staged": "16.2.3", - "stylelint": "16.24.0", + "stylelint": "16.25.0", "stylelint-config-ckeditor5": ">=9.1.0", "ts-node": "10.9.2", "typescript": "5.9.3", diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index e9c579f6b..227618ec2 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -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.36.0" + "eslint-linter-browserify": "9.37.0" } } diff --git a/packages/share-theme/package.json b/packages/share-theme/package.json index 17226466c..d76faaaf7 100644 --- a/packages/share-theme/package.json +++ b/packages/share-theme/package.json @@ -28,7 +28,7 @@ "@typescript-eslint/parser": "8.45.0", "dotenv": "17.2.3", "esbuild": "0.25.10", - "eslint": "9.36.0", + "eslint": "9.37.0", "highlight.js": "11.11.1", "typescript": "5.9.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6c5d014c3..f9074b073 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,17 +71,17 @@ importers: specifier: 0.25.10 version: 0.25.10 eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.1)) + version: 10.1.8(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-playwright: specifier: 2.2.2 - version: 2.2.2(eslint@9.36.0(jiti@2.6.1)) + version: 2.2.2(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-react-hooks: - specifier: 6.1.0 - version: 6.1.0(eslint@9.36.0(jiti@2.6.1)) + specifier: 6.1.1 + version: 6.1.1(eslint@9.37.0(jiti@2.6.1)) happy-dom: specifier: ~19.0.0 version: 19.0.2 @@ -108,7 +108,7 @@ importers: version: 5.9.3 typescript-eslint: specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) upath: specifier: 2.0.1 version: 2.0.1 @@ -125,8 +125,8 @@ importers: apps/client: dependencies: '@eslint/js': - specifier: 9.36.0 - version: 9.36.0 + specifier: 9.37.0 + version: 9.37.0 '@excalidraw/excalidraw': specifier: 0.18.0 version: 0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) @@ -218,8 +218,8 @@ importers: specifier: 2.15.6 version: 2.15.6 katex: - specifier: 0.16.22 - version: 0.16.22 + specifier: 0.16.23 + version: 0.16.23 knockout: specifier: 3.5.1 version: 3.5.1 @@ -322,7 +322,7 @@ importers: dependencies: '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@38.2.0) + version: 2.1.3(electron@38.2.1) better-sqlite3: specifier: 12.4.1 version: 12.4.1 @@ -379,8 +379,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) electron: - specifier: 38.2.0 - version: 38.2.0 + specifier: 38.2.1 + version: 38.2.1 prebuild-install: specifier: 7.1.3 version: 7.1.3 @@ -435,8 +435,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) electron: - specifier: 38.2.0 - version: 38.2.0 + specifier: 38.2.1 + version: 38.2.1 fs-extra: specifier: 11.3.2 version: 11.3.2 @@ -458,7 +458,7 @@ importers: version: 7.1.1 '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@38.2.0) + version: 2.1.3(electron@38.2.1) '@preact/preset-vite': specifier: 2.10.2 version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.9(@types/node@24.6.0)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) @@ -532,8 +532,8 @@ importers: specifier: 2.5.7 version: 2.5.7 '@types/serve-static': - specifier: 1.15.8 - version: 1.15.8 + specifier: 1.15.9 + version: 1.15.9 '@types/session-file-store': specifier: 1.2.5 version: 1.2.5 @@ -607,8 +607,8 @@ importers: specifier: 3.1.10 version: 3.1.10 electron: - specifier: 38.2.0 - version: 38.2.0 + specifier: 38.2.1 + version: 38.2.1 electron-debug: specifier: 4.1.0 version: 4.1.0 @@ -779,11 +779,11 @@ importers: specifier: 2.10.2 version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.9(@types/node@24.6.0)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-preact: specifier: 2.0.0 - version: 2.0.0(eslint@9.36.0(jiti@2.6.1)) + version: 2.0.0(eslint@9.37.0(jiti@2.6.1)) typescript: specifier: 5.9.3 version: 5.9.3 @@ -838,10 +838,10 @@ importers: version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) @@ -852,11 +852,11 @@ importers: specifier: 47.0.0 version: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 12.1.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -864,11 +864,11 @@ importers: specifier: 16.2.3 version: 16.2.3 stylelint: - specifier: 16.24.0 - version: 16.24.0(typescript@5.9.3) + specifier: 16.25.0 + version: 16.25.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(stylelint@16.24.0(typescript@5.9.3)) + version: 12.1.1(stylelint@16.25.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@22.18.8)(typescript@5.9.3) @@ -898,10 +898,10 @@ importers: version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) @@ -912,11 +912,11 @@ importers: specifier: 47.0.0 version: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 12.1.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -924,11 +924,11 @@ importers: specifier: 16.2.3 version: 16.2.3 stylelint: - specifier: 16.24.0 - version: 16.24.0(typescript@5.9.3) + specifier: 16.25.0 + version: 16.25.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(stylelint@16.24.0(typescript@5.9.3)) + version: 12.1.1(stylelint@16.25.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@22.18.8)(typescript@5.9.3) @@ -958,10 +958,10 @@ importers: version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) @@ -972,11 +972,11 @@ importers: specifier: 47.0.0 version: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 12.1.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -984,11 +984,11 @@ importers: specifier: 16.2.3 version: 16.2.3 stylelint: - specifier: 16.24.0 - version: 16.24.0(typescript@5.9.3) + specifier: 16.25.0 + version: 16.25.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(stylelint@16.24.0(typescript@5.9.3)) + version: 12.1.1(stylelint@16.25.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@22.18.8)(typescript@5.9.3) @@ -1025,10 +1025,10 @@ importers: version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) @@ -1039,11 +1039,11 @@ importers: specifier: 47.0.0 version: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 12.1.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -1051,11 +1051,11 @@ importers: specifier: 16.2.3 version: 16.2.3 stylelint: - specifier: 16.24.0 - version: 16.24.0(typescript@5.9.3) + specifier: 16.25.0 + version: 16.25.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(stylelint@16.24.0(typescript@5.9.3)) + version: 12.1.1(stylelint@16.25.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@22.18.8)(typescript@5.9.3) @@ -1092,10 +1092,10 @@ importers: version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) @@ -1106,11 +1106,11 @@ importers: specifier: 47.0.0 version: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 12.1.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -1118,11 +1118,11 @@ importers: specifier: 16.2.3 version: 16.2.3 stylelint: - specifier: 16.24.0 - version: 16.24.0(typescript@5.9.3) + specifier: 16.25.0 + version: 16.25.0(typescript@5.9.3) stylelint-config-ckeditor5: specifier: '>=9.1.0' - version: 12.1.1(stylelint@16.24.0(typescript@5.9.3)) + version: 12.1.1(stylelint@16.25.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@22.18.8)(typescript@5.9.3) @@ -1277,8 +1277,8 @@ importers: specifier: 0.5.0 version: 0.5.0 eslint-linter-browserify: - specifier: 9.36.0 - version: 9.36.0 + specifier: 9.37.0 + version: 9.37.0 packages/commons: {} @@ -1316,10 +1316,10 @@ importers: version: 5.21.1 '@typescript-eslint/eslint-plugin': specifier: 8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) dotenv: specifier: 17.2.3 version: 17.2.3 @@ -1327,8 +1327,8 @@ importers: specifier: 0.25.10 version: 0.25.10 eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) highlight.js: specifier: 11.11.1 version: 11.11.1 @@ -1536,20 +1536,10 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.3': - resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -1560,24 +1550,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -1604,13 +1580,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-proposal-private-methods@7.18.6': - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-class-properties@7.12.13': resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -2448,8 +2417,8 @@ packages: resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.1': - resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} + '@eslint/config-helpers@0.4.0': + resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.14.0': @@ -2460,12 +2429,16 @@ packages: resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.16.0': + resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + 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/js@9.36.0': - resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==} + '@eslint/js@9.37.0': + resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/markdown@6.6.0': @@ -2480,6 +2453,10 @@ packages: resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.4.0': + resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@excalidraw/excalidraw@0.18.0': resolution: {integrity: sha512-QkIiS+5qdy8lmDWTKsuy0sK/fen/LRDtbhm2lc2xcFcqhv2/zdg95bYnl+wnwwXGHo7kEmP65BSiMHE7PJ3Zpw==} peerDependencies: @@ -4861,9 +4838,6 @@ packages: '@types/node@22.15.30': resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} - '@types/node@22.18.6': - resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} - '@types/node@22.18.8': resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} @@ -4914,9 +4888,6 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -4926,8 +4897,8 @@ packages: '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.8': - resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/serve-static@1.15.9': + resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} '@types/session-file-store@1.2.5': resolution: {integrity: sha512-xjIyh40IznXLrvbAY/nmxu5cMcPcE3ZoDrSDvd02m6p8UjUgOtZAGI7Os5DDd6THuxClLWNhFo/awy1tYp64Bg==} @@ -7195,8 +7166,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@38.2.0: - resolution: {integrity: sha512-Cw5Mb+N5NxsG0Hc1qr8I65Kt5APRrbgTtEEn3zTod30UNJRnAE1xbGk/1NOaDn3ODzI/MYn6BzT9T9zreP7xWA==} + electron@38.2.1: + resolution: {integrity: sha512-P4pE2RpRg3kM8IeOK+heg6iAxR5wcXnNHrbVchn7M3GBnYAhjfJRkROusdOro5PlKzdtfKjesbbqaG4MqQXccg==} engines: {node: '>= 12.20.55'} hasBin: true @@ -7397,8 +7368,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-linter-browserify@9.36.0: - resolution: {integrity: sha512-hiN1gq8eR+zHHdXE6uyvfScaN/cCrjaCckLqSIZ89A3636peovLiZLZ2+E7mqGgiAUX+ltLgyX4AcCJZUzUymw==} + eslint-linter-browserify@9.37.0: + resolution: {integrity: sha512-Wko9253V/vjQJt/R3tdUi5nsZZRS+G6Uyrlu/OCEdHitWI427jMo6jMFBmxuxHofbjd5gPx3WbrBEF1Qxfr9rw==} eslint-plugin-ckeditor5-rules@12.1.1: resolution: {integrity: sha512-e0PhbA3sNWy4Djs6r+kVfWNvu6urJXucIUfqI2GKjgOfqYOhmpLNaudH6FHKAg/OM8g0ETb7TbG3Bc375ru+sg==} @@ -7426,8 +7397,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-hooks@6.1.0: - resolution: {integrity: sha512-72mucw/WLzEqGvL2vwE6fWR6geO6UbmDjz3eAb3pezxTpFzgbfyUeFKzmZKr9LhwUWMXfTVh1g0rKEJoyKNdoA==} + eslint-plugin-react-hooks@6.1.1: + resolution: {integrity: sha512-St9EKZzOAQF704nt2oJvAKZHjhrpg25ClQoaAlHmPZuajFldVLqRDW4VBNAS01NzeiQF0m0qhG1ZA807K6aVaQ==} engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -7458,8 +7429,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.36.0: - resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==} + eslint@9.37.0: + resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -8228,12 +8199,6 @@ packages: resolution: {integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==} engines: {node: '>=18.0.0'} - hermes-estree@0.25.1: - resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - - hermes-parser@0.25.1: - resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - highlight.js@11.11.1: resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} @@ -9025,8 +8990,8 @@ packages: resolution: {integrity: sha512-4+5mNNf4vZDSwPhKprKwz3330iisPrb08JyMgbsdFrimBCKNHecua/WBwvVg3n7vwx0C1ARjfhwIpbrbd9n5wg==} engines: {node: '>=12'} - katex@0.16.22: - resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} + katex@0.16.23: + resolution: {integrity: sha512-7VlC1hsEEolL9xNO05v9VjrvWZePkCVBJqj8ruICxYjZfHaHbaU53AlP+PODyFIXEnaEIEWi3wJy7FPZ95JAVg==} hasBin: true kdbush@4.0.2: @@ -12600,8 +12565,8 @@ packages: peerDependencies: stylelint: '>=16.0.0' - stylelint@16.24.0: - resolution: {integrity: sha512-7ksgz3zJaSbTUGr/ujMXvLVKdDhLbGl3R/3arNudH7z88+XZZGNLMTepsY28WlnvEFcuOmUe7fg40Q3lfhOfSQ==} + stylelint@16.25.0: + resolution: {integrity: sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==} engines: {node: '>=18.12.0'} hasBin: true @@ -14328,11 +14293,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.28.4(@babel/core@7.28.0)(eslint@9.36.0(jiti@2.6.1))': + '@babel/eslint-parser@7.28.4(@babel/core@7.28.0)(eslint@9.37.0(jiti@2.6.1))': dependencies: '@babel/core': 7.28.0 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 2.1.0 semver: 6.3.1 @@ -14356,28 +14321,8 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.4 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': - dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 @@ -14394,28 +14339,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.28.4 - '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 - transitivePeerDependencies: - - supports-color - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} @@ -14435,14 +14360,6 @@ snapshots: dependencies: '@babel/types': 7.28.4 - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -14658,6 +14575,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-block-quote@47.0.0': dependencies: @@ -14668,6 +14587,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-bookmark@47.0.0': dependencies: @@ -14730,6 +14651,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-code-block@47.0.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -14946,6 +14869,8 @@ snapshots: '@ckeditor/ckeditor5-upload': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-balloon@47.0.0': dependencies: @@ -15385,8 +15310,8 @@ snapshots: process: 0.11.10 raw-loader: 4.0.2(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) style-loader: 2.0.0(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) - stylelint: 16.24.0(typescript@5.0.4) - stylelint-config-ckeditor5: 2.0.1(stylelint@16.24.0(typescript@5.9.3)) + stylelint: 16.25.0(typescript@5.0.4) + stylelint-config-ckeditor5: 2.0.1(stylelint@16.25.0(typescript@5.9.3)) terser-webpack-plugin: 5.3.14(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) 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.25.10)) ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.0.4) @@ -16306,9 +16231,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/remote@2.1.3(electron@38.2.0)': + '@electron/remote@2.1.3(electron@38.2.1)': dependencies: - electron: 38.2.0 + electron: 38.2.1 '@electron/universal@2.0.2': dependencies: @@ -16436,9 +16361,9 @@ snapshots: '@esbuild/win32-x64@0.25.10': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.1))': dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -16451,7 +16376,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.1': {} + '@eslint/config-helpers@0.4.0': + dependencies: + '@eslint/core': 0.16.0 '@eslint/core@0.14.0': dependencies: @@ -16461,6 +16388,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@0.16.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -16475,7 +16406,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.36.0': {} + '@eslint/js@9.37.0': {} '@eslint/markdown@6.6.0': dependencies: @@ -16497,6 +16428,11 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 + '@eslint/plugin-kit@0.4.0': + dependencies: + '@eslint/core': 0.16.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.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@braintree/sanitize-url': 6.0.2 @@ -18644,10 +18580,10 @@ snapshots: '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@stylistic/eslint-plugin@4.4.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@stylistic/eslint-plugin@4.4.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.44.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -18656,7 +18592,7 @@ snapshots: - supports-color - typescript - '@stylistic/stylelint-plugin@3.1.3(stylelint@16.24.0(typescript@5.9.3))': + '@stylistic/stylelint-plugin@3.1.3(stylelint@16.25.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 @@ -18666,7 +18602,7 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 style-search: 0.1.0 - stylelint: 16.24.0(typescript@5.9.3) + stylelint: 16.25.0(typescript@5.9.3) '@swc/core-darwin-arm64@1.11.29': optional: true @@ -19032,13 +18968,13 @@ snapshots: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 5.0.7 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.9 '@types/express@5.0.3': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 5.0.7 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.9 '@types/fs-extra@11.0.4': dependencies: @@ -19161,10 +19097,6 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@22.18.6': - dependencies: - undici-types: 6.21.0 - '@types/node@22.18.8': dependencies: undici-types: 6.21.0 @@ -19218,11 +19150,6 @@ snapshots: dependencies: '@types/node': 22.15.21 - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 22.18.8 - '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 @@ -19236,11 +19163,11 @@ snapshots: dependencies: '@types/express': 5.0.3 - '@types/serve-static@1.15.8': + '@types/serve-static@1.15.9': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.15.30 - '@types/send': 0.17.4 + '@types/node': 22.18.8 + '@types/send': 0.17.5 '@types/session-file-store@1.2.5': dependencies: @@ -19281,7 +19208,7 @@ snapshots: '@types/swagger-ui-express@4.1.8': dependencies: '@types/express': 5.0.3 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.9 '@types/swagger-ui@5.21.1': {} @@ -19330,15 +19257,15 @@ snapshots: '@types/node': 22.18.8 optional: true - '@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.40.0 - '@typescript-eslint/type-utils': 8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.40.0 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -19347,15 +19274,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -19364,26 +19291,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.40.0 '@typescript-eslint/types': 8.40.0 '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.40.0 debug: 4.4.3(supports-color@6.0.0) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@6.0.0) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -19442,25 +19369,25 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.40.0 '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@6.0.0) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@6.0.0) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -19520,35 +19447,35 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.40.0 '@typescript-eslint/types': 8.40.0 '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.44.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.44.1 '@typescript-eslint/types': 8.44.1 '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -22196,10 +22123,10 @@ snapshots: - supports-color optional: true - electron@38.2.0: + electron@38.2.1: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.18.6 + '@types/node': 22.18.8 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -22514,40 +22441,40 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-ckeditor5@12.1.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + eslint-config-ckeditor5@12.1.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@eslint/js': 9.36.0 + '@eslint/js': 9.37.0 '@eslint/markdown': 6.6.0 - '@stylistic/eslint-plugin': 4.4.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@stylistic/eslint-plugin': 4.4.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) eslint-plugin-ckeditor5-rules: 12.1.1 - eslint-plugin-mocha: 11.1.0(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-mocha: 11.1.0(eslint@9.37.0(jiti@2.6.1)) globals: 16.4.0 typescript: 5.9.3 - typescript-eslint: 8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color - eslint-config-preact@2.0.0(eslint@9.36.0(jiti@2.6.1)): + eslint-config-preact@2.0.0(eslint@9.37.0(jiti@2.6.1)): dependencies: '@babel/core': 7.28.0 - '@babel/eslint-parser': 7.28.4(@babel/core@7.28.0)(eslint@9.36.0(jiti@2.6.1)) + '@babel/eslint-parser': 7.28.4(@babel/core@7.28.0)(eslint@9.37.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.36.0 - eslint: 9.36.0(jiti@2.6.1) - eslint-plugin-compat: 6.0.2(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint/js': 9.37.0 + eslint: 9.37.0(jiti@2.6.1) + eslint-plugin-compat: 6.0.2(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.37.0(jiti@2.6.1)) globals: 16.4.0 transitivePeerDependencies: - supports-color - eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) - eslint-linter-browserify@9.36.0: {} + eslint-linter-browserify@9.37.0: {} eslint-plugin-ckeditor5-rules@12.1.1: dependencies: @@ -22559,46 +22486,44 @@ snapshots: validate-npm-package-name: 6.0.2 yaml: 2.8.1 - eslint-plugin-compat@6.0.2(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-compat@6.0.2(eslint@9.37.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.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) find-up: 5.0.0 globals: 15.15.0 lodash.memoize: 4.1.2 semver: 7.7.2 - eslint-plugin-mocha@11.1.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-mocha@11.1.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) - eslint: 9.36.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) globals: 15.15.0 - eslint-plugin-playwright@2.2.2(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-playwright@2.2.2(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) globals: 13.24.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) - eslint-plugin-react-hooks@6.1.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-react-hooks@6.1.1(eslint@9.37.0(jiti@2.6.1)): dependencies: '@babel/core': 7.28.0 '@babel/parser': 7.28.4 - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.0) - eslint: 9.36.0(jiti@2.6.1) - hermes-parser: 0.25.1 + eslint: 9.37.0(jiti@2.6.1) zod: 3.24.4 zod-validation-error: 3.5.3(zod@3.24.4) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@9.37.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -22606,7 +22531,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -22636,16 +22561,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.36.0(jiti@2.6.1): + eslint@9.37.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.1 - '@eslint/core': 0.15.2 + '@eslint/config-helpers': 0.4.0 + '@eslint/core': 0.16.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.36.0 - '@eslint/plugin-kit': 0.3.5 + '@eslint/js': 9.37.0 + '@eslint/plugin-kit': 0.4.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -23669,12 +23594,6 @@ snapshots: helmet@8.1.0: {} - hermes-estree@0.25.1: {} - - hermes-parser@0.25.1: - dependencies: - hermes-estree: 0.25.1 - highlight.js@11.11.1: {} highlightjs-cobol@0.3.3: @@ -24534,7 +24453,7 @@ snapshots: dependencies: lodash-es: 4.17.21 - katex@0.16.22: + katex@0.16.23: dependencies: commander: 8.3.0 @@ -25173,7 +25092,7 @@ snapshots: dagre-d3-es: 7.0.11 dayjs: 1.11.18 dompurify: 3.2.5 - katex: 0.16.22 + katex: 0.16.23 khroma: 2.1.0 lodash-es: 4.17.21 marked: 16.3.0 @@ -28827,31 +28746,31 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - stylelint-config-ckeditor5@12.1.1(stylelint@16.24.0(typescript@5.9.3)): + stylelint-config-ckeditor5@12.1.1(stylelint@16.25.0(typescript@5.9.3)): dependencies: - '@stylistic/stylelint-plugin': 3.1.3(stylelint@16.24.0(typescript@5.9.3)) - stylelint: 16.24.0(typescript@5.9.3) - stylelint-config-recommended: 16.0.0(stylelint@16.24.0(typescript@5.9.3)) - stylelint-plugin-ckeditor5-rules: 12.1.1(stylelint@16.24.0(typescript@5.9.3)) + '@stylistic/stylelint-plugin': 3.1.3(stylelint@16.25.0(typescript@5.9.3)) + stylelint: 16.25.0(typescript@5.9.3) + stylelint-config-recommended: 16.0.0(stylelint@16.25.0(typescript@5.9.3)) + stylelint-plugin-ckeditor5-rules: 12.1.1(stylelint@16.25.0(typescript@5.9.3)) - stylelint-config-ckeditor5@2.0.1(stylelint@16.24.0(typescript@5.9.3)): + stylelint-config-ckeditor5@2.0.1(stylelint@16.25.0(typescript@5.9.3)): dependencies: - stylelint: 16.24.0(typescript@5.9.3) - stylelint-config-recommended: 3.0.0(stylelint@16.24.0(typescript@5.9.3)) + stylelint: 16.25.0(typescript@5.9.3) + stylelint-config-recommended: 3.0.0(stylelint@16.25.0(typescript@5.9.3)) - stylelint-config-recommended@16.0.0(stylelint@16.24.0(typescript@5.9.3)): + stylelint-config-recommended@16.0.0(stylelint@16.25.0(typescript@5.9.3)): dependencies: - stylelint: 16.24.0(typescript@5.9.3) + stylelint: 16.25.0(typescript@5.9.3) - stylelint-config-recommended@3.0.0(stylelint@16.24.0(typescript@5.9.3)): + stylelint-config-recommended@3.0.0(stylelint@16.25.0(typescript@5.9.3)): dependencies: - stylelint: 16.24.0(typescript@5.9.3) + stylelint: 16.25.0(typescript@5.9.3) - stylelint-plugin-ckeditor5-rules@12.1.1(stylelint@16.24.0(typescript@5.9.3)): + stylelint-plugin-ckeditor5-rules@12.1.1(stylelint@16.25.0(typescript@5.9.3)): dependencies: - stylelint: 16.24.0(typescript@5.9.3) + stylelint: 16.25.0(typescript@5.9.3) - stylelint@16.24.0(typescript@5.0.4): + stylelint@16.25.0(typescript@5.0.4): dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -28895,7 +28814,7 @@ snapshots: - supports-color - typescript - stylelint@16.24.0(typescript@5.9.3): + stylelint@16.25.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 @@ -29508,24 +29427,24 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.40.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -30059,7 +29978,7 @@ snapshots: '@types/express': 4.17.23 '@types/express-serve-static-core': 5.0.7 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.9 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8