Merge remote-tracking branch 'origin/main' into react/type_widgets

; Conflicts:
;	apps/client/src/widgets/type_widgets/read_only_code.ts
This commit is contained in:
Elian Doran
2025-10-04 18:18:11 +03:00
47 changed files with 970 additions and 382 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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",

View File

@@ -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",

View File

@@ -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", () => {

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -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": "대량 액션들이 성공적으로 실행되었습니다."
}
}

View File

@@ -51,6 +51,7 @@ const TAB_CONFIGURATION = numberObjectsInPlace<TabConfiguration>([
show: ({ note }) => note?.type === "text" && options.get("textNoteEditorType") === "ckeditor-classic",
toggleCommand: "toggleRibbonTabClassicEditor",
content: FormattingToolbar,
activate: true,
stayInDom: true
},
{

View File

@@ -90,6 +90,7 @@ export default function AppearanceSettings() {
{isElectron() && <ElectronIntegration /> }
<Performance />
<MaxContentWidth />
<RibbonOptions />
<RelatedSettings items={[
{
title: t("settings_appearance.related_code_blocks"),
@@ -305,3 +306,16 @@ function MaxContentWidth() {
</OptionsSection>
)
}
function RibbonOptions() {
const [ editedNotesOpenInRibbon, setEditedNotesOpenInRibbon ] = useTriliumOptionBool("editedNotesOpenInRibbon");
return (
<OptionsSection title={t('ribbon.widgets')}>
<FormCheckbox
label={t('ribbon.edited_notes_message')}
currentValue={editedNotesOpenInRibbon} onChange={setEditedNotesOpenInRibbon}
/>
</OptionsSection>
)
}

View File

@@ -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",

View File

@@ -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": {

View File

@@ -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",

View File

@@ -347,7 +347,7 @@
},
"notes": {
"new-note": "新しいノート",
"duplicate-note-suffix": "(複)",
"duplicate-note-suffix": "(複)",
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
},
"backend_log": {

View File

@@ -38,6 +38,7 @@
"activate-next-tab": "우측 탭 활성화",
"activate-previous-tab": "좌측 탭 활성화",
"open-new-window": "새 비어있는 창 열기",
"toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기"
"toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기",
"tabs-and-windows": "탭 & 창"
}
}

View File

@@ -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"
}
}

View File

@@ -5,6 +5,7 @@
<link rel="icon" type="image/svg+xml" href="/src/assets/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="color-scheme" content="light dark" />
<meta name="description" content="Trilium is an open-source solution for note-taking and personal knowledge bases. Use it locally or sync with your own server to access notes anywhere." />
<title>Trilium Notes</title>
</head>
<body>

View File

@@ -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",

View File

@@ -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.

View File

@@ -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 arent 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.

View File

@@ -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 (
<Link
className="social-button"
@@ -63,7 +63,9 @@ function SocialButton({ name, iconSvg, url, withText }: { name: string, iconSvg:
title={!withText ? name : undefined}
>
<Icon svg={iconSvg} />
{counter && <span class="counter">{counter}</span>}
{withText && name}
</Link>
)
}

View File

@@ -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;

View File

@@ -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,7 +60,17 @@ export function Header() {
<SocialButtons className="mobile-only" withText />
</nav>
<div class="desktop-only repository-button">
<SocialButton
name="GitHub"
iconSvg={githubIcon}
counter={(props.repoStargazersCount / 1000).toFixed(1) + "K+"}
url="https://github.com/TriliumNext/Trilium"
/>
</div>
<DownloadButton />
</div>
</header>
);

View File

@@ -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<number | null> {
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;
}

View File

@@ -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 (
<LocationProvider>
<Header />
<Header repoStargazersCount={props.repoStargazersCount} />
<main>
<Router>
<Route path="/" component={Home} />
@@ -26,9 +26,15 @@ export function App() {
}
if (typeof window !== 'undefined') {
hydrate(<App />, document.getElementById('app')!);
hydrate(<App repoStargazersCount={FALLBACK_STARGAZERS_COUNT} />, document.getElementById('app')!);
}
export async function prerender(data) {
return await ssr(<App {...data} />);
// 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(<App repoStargazersCount={stargazersCount} {...data} />);
}

View File

@@ -53,7 +53,7 @@ section.hero-section {
h1 {
line-height: 1.1;
font-weight: 100;
font-weight: 300;
color: var(--foreground-color);
}
}

View File

@@ -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;
}

View File

@@ -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 是一款免费且开源、跨平台的阶层式笔记应用程序,专注于建立大型个人知识库。

View File

@@ -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 是一款免費且開源、跨平台的階層式筆記應用程式,專注於建立大型個人知識庫。

View File

@@ -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.

View File

@@ -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.

View File

@@ -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)をご覧ください:

315
docs/README-ro.md vendored Normal file
View File

@@ -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):
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./docs/app.png" alt="Trilium Screenshot" width="1000"></a>
## 📚 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.

View File

@@ -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):

8
docs/README.md vendored
View File

@@ -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)

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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"
}
}

View File

@@ -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"
}

543
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff