mirror of
https://github.com/zadam/trilium.git
synced 2025-11-06 05:15:59 +01:00
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:
4
.github/workflows/nightly.yml
vendored
4
.github/workflows/nightly.yml
vendored
@@ -77,7 +77,7 @@ jobs:
|
|||||||
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
|
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
|
||||||
|
|
||||||
- name: Publish release
|
- 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' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
with:
|
with:
|
||||||
make_latest: false
|
make_latest: false
|
||||||
@@ -118,7 +118,7 @@ jobs:
|
|||||||
arch: ${{ matrix.arch }}
|
arch: ${{ matrix.arch }}
|
||||||
|
|
||||||
- name: Publish release
|
- 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' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
with:
|
with:
|
||||||
make_latest: false
|
make_latest: false
|
||||||
|
|||||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -127,7 +127,7 @@ jobs:
|
|||||||
path: upload
|
path: upload
|
||||||
|
|
||||||
- name: Publish stable release
|
- name: Publish stable release
|
||||||
uses: softprops/action-gh-release@v2.3.3
|
uses: softprops/action-gh-release@v2.3.4
|
||||||
with:
|
with:
|
||||||
draft: false
|
draft: false
|
||||||
body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md
|
body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md
|
||||||
|
|||||||
34
README.md
34
README.md
@@ -5,7 +5,7 @@
|
|||||||

|

|
||||||
[](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [](https://hosted.weblate.org/engage/trilium/)
|
[](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [](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.
|
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
|
## 👏 Shoutouts
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team
|
* [zadam](https://github.com/zadam) for the original concept and implementation of the application.
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it.
|
* [Larsa](https://github.com/LarsaSara) for designing the application icon.
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
|
* [nriver](https://github.com/nriver) for his work on internationalization.
|
||||||
* [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)
|
* [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
|
||||||
|
|
||||||
Support for the TriliumNext organization will be possible in the near future. For now, you can:
|
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.
|
||||||
- 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).
|
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
|
## 🔑 License
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
"@types/node": "22.18.8",
|
"@types/node": "22.18.8",
|
||||||
"@types/yargs": "17.0.33",
|
"@types/yargs": "17.0.33",
|
||||||
"@vitest/coverage-v8": "3.2.4",
|
"@vitest/coverage-v8": "3.2.4",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-plugin-simple-import-sort": "12.1.1",
|
"eslint-plugin-simple-import-sort": "12.1.1",
|
||||||
"esm": "3.2.25",
|
"esm": "3.2.25",
|
||||||
"jsdoc": "4.0.4",
|
"jsdoc": "4.0.4",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
"circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
|
"circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/js": "9.36.0",
|
"@eslint/js": "9.37.0",
|
||||||
"@excalidraw/excalidraw": "0.18.0",
|
"@excalidraw/excalidraw": "0.18.0",
|
||||||
"@fullcalendar/core": "6.1.19",
|
"@fullcalendar/core": "6.1.19",
|
||||||
"@fullcalendar/daygrid": "6.1.19",
|
"@fullcalendar/daygrid": "6.1.19",
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
"jquery": "3.7.1",
|
"jquery": "3.7.1",
|
||||||
"jquery.fancytree": "2.38.5",
|
"jquery.fancytree": "2.38.5",
|
||||||
"jsplumb": "2.15.6",
|
"jsplumb": "2.15.6",
|
||||||
"katex": "0.16.22",
|
"katex": "0.16.23",
|
||||||
"knockout": "3.5.1",
|
"knockout": "3.5.1",
|
||||||
"leaflet": "1.9.4",
|
"leaflet": "1.9.4",
|
||||||
"leaflet-gpx": "2.2.0",
|
"leaflet-gpx": "2.2.0",
|
||||||
|
|||||||
@@ -148,13 +148,21 @@ describe("shortcuts", () => {
|
|||||||
expect(matchesShortcut(event, "a")).toBe(false);
|
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" });
|
let event = createKeyboardEvent({ key: "F1", code: "F1" });
|
||||||
expect(matchesShortcut(event, "F1")).toBeTruthy();
|
expect(matchesShortcut(event, "F1")).toBeTruthy();
|
||||||
expect(matchesShortcut(event, "f1")).toBeTruthy();
|
expect(matchesShortcut(event, "f1")).toBeTruthy();
|
||||||
|
|
||||||
|
// Function keys with shift
|
||||||
event = createKeyboardEvent({ key: "F1", code: "F1", shiftKey: true });
|
event = createKeyboardEvent({ key: "F1", code: "F1", shiftKey: true });
|
||||||
expect(matchesShortcut(event, "Shift+F1")).toBeTruthy();
|
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", () => {
|
it("should handle alternative modifier names", () => {
|
||||||
|
|||||||
@@ -36,10 +36,19 @@ const keyMap: { [key: string]: string[] } = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Function keys
|
// Function keys
|
||||||
|
const functionKeyCodes: string[] = [];
|
||||||
for (let i = 1; i <= 19; i++) {
|
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
|
* Check if IME (Input Method Editor) is composing
|
||||||
* This is used to prevent keyboard shortcuts from firing during IME composition
|
* 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');
|
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.
|
// Refuse key combinations that don't include modifiers because they interfere with the normal usage of the application.
|
||||||
// Function keys are an exception.
|
// Some keys such as function keys are an exception.
|
||||||
if (!(expectedCtrl || expectedAlt || expectedShift || expectedMeta) && !/f\d+/.test(key)) {
|
if (!(expectedCtrl || expectedAlt || expectedShift || expectedMeta) && !KEYCODES_WITH_NO_MODIFIER.has(e.code)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
#center-pane > *:not(.split-note-container-widget),
|
#center-pane > *:not(.split-note-container-widget),
|
||||||
#right-pane,
|
#right-pane,
|
||||||
.title-row .note-icon-widget,
|
.title-row .note-icon-widget,
|
||||||
.title-row .button-widget,
|
.title-row .icon-action,
|
||||||
.ribbon-container,
|
.ribbon-container,
|
||||||
.promoted-attributes-widget,
|
.promoted-attributes-widget,
|
||||||
.scroll-padding-widget,
|
.scroll-padding-widget,
|
||||||
|
|||||||
@@ -29,9 +29,25 @@
|
|||||||
"note": "노트",
|
"note": "노트",
|
||||||
"search_note": "이름으로 노트 검색하기",
|
"search_note": "이름으로 노트 검색하기",
|
||||||
"help_on_links": "링크 관련 도움말",
|
"help_on_links": "링크 관련 도움말",
|
||||||
"link_title_mirrors": "링크 제목은 노트의 현재 제목을 반영합니다"
|
"link_title_mirrors": "링크 제목은 노트의 현재 제목을 반영합니다",
|
||||||
|
"link_title_arbitrary": "링크 제목은 임의로 변경될 수 있습니다",
|
||||||
|
"link_title": "링크 제목",
|
||||||
|
"button_add_link": "링크 추가"
|
||||||
},
|
},
|
||||||
"branch_prefix": {
|
"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": "대량 액션들이 성공적으로 실행되었습니다."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ const TAB_CONFIGURATION = numberObjectsInPlace<TabConfiguration>([
|
|||||||
show: ({ note }) => note?.type === "text" && options.get("textNoteEditorType") === "ckeditor-classic",
|
show: ({ note }) => note?.type === "text" && options.get("textNoteEditorType") === "ckeditor-classic",
|
||||||
toggleCommand: "toggleRibbonTabClassicEditor",
|
toggleCommand: "toggleRibbonTabClassicEditor",
|
||||||
content: FormattingToolbar,
|
content: FormattingToolbar,
|
||||||
|
activate: true,
|
||||||
stayInDom: true
|
stayInDom: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ export default function AppearanceSettings() {
|
|||||||
{isElectron() && <ElectronIntegration /> }
|
{isElectron() && <ElectronIntegration /> }
|
||||||
<Performance />
|
<Performance />
|
||||||
<MaxContentWidth />
|
<MaxContentWidth />
|
||||||
|
<RibbonOptions />
|
||||||
<RelatedSettings items={[
|
<RelatedSettings items={[
|
||||||
{
|
{
|
||||||
title: t("settings_appearance.related_code_blocks"),
|
title: t("settings_appearance.related_code_blocks"),
|
||||||
@@ -305,3 +306,16 @@ function MaxContentWidth() {
|
|||||||
</OptionsSection>
|
</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>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
"@triliumnext/commons": "workspace:*",
|
"@triliumnext/commons": "workspace:*",
|
||||||
"@triliumnext/server": "workspace:*",
|
"@triliumnext/server": "workspace:*",
|
||||||
"copy-webpack-plugin": "13.0.1",
|
"copy-webpack-plugin": "13.0.1",
|
||||||
"electron": "38.2.0",
|
"electron": "38.2.1",
|
||||||
"@electron-forge/cli": "7.9.0",
|
"@electron-forge/cli": "7.9.0",
|
||||||
"@electron-forge/maker-deb": "7.9.0",
|
"@electron-forge/maker-deb": "7.9.0",
|
||||||
"@electron-forge/maker-dmg": "7.9.0",
|
"@electron-forge/maker-dmg": "7.9.0",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"@triliumnext/desktop": "workspace:*",
|
"@triliumnext/desktop": "workspace:*",
|
||||||
"@types/fs-extra": "11.0.4",
|
"@types/fs-extra": "11.0.4",
|
||||||
"copy-webpack-plugin": "13.0.1",
|
"copy-webpack-plugin": "13.0.1",
|
||||||
"electron": "38.2.0",
|
"electron": "38.2.1",
|
||||||
"fs-extra": "11.3.2"
|
"fs-extra": "11.3.2"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
"@types/sanitize-html": "2.16.0",
|
"@types/sanitize-html": "2.16.0",
|
||||||
"@types/sax": "1.2.7",
|
"@types/sax": "1.2.7",
|
||||||
"@types/serve-favicon": "2.5.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/session-file-store": "1.2.5",
|
||||||
"@types/stream-throttle": "0.1.4",
|
"@types/stream-throttle": "0.1.4",
|
||||||
"@types/supertest": "6.0.3",
|
"@types/supertest": "6.0.3",
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
"debounce": "2.2.0",
|
"debounce": "2.2.0",
|
||||||
"debug": "4.4.3",
|
"debug": "4.4.3",
|
||||||
"ejs": "3.1.10",
|
"ejs": "3.1.10",
|
||||||
"electron": "38.2.0",
|
"electron": "38.2.1",
|
||||||
"electron-debug": "4.1.0",
|
"electron-debug": "4.1.0",
|
||||||
"electron-window-state": "5.0.3",
|
"electron-window-state": "5.0.3",
|
||||||
"escape-html": "1.0.3",
|
"escape-html": "1.0.3",
|
||||||
|
|||||||
@@ -347,7 +347,7 @@
|
|||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"new-note": "新しいノート",
|
"new-note": "新しいノート",
|
||||||
"duplicate-note-suffix": "(重複)",
|
"duplicate-note-suffix": "(複製)",
|
||||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||||
},
|
},
|
||||||
"backend_log": {
|
"backend_log": {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
"activate-next-tab": "우측 탭 활성화",
|
"activate-next-tab": "우측 탭 활성화",
|
||||||
"activate-previous-tab": "좌측 탭 활성화",
|
"activate-previous-tab": "좌측 탭 활성화",
|
||||||
"open-new-window": "새 비어있는 창 열기",
|
"open-new-window": "새 비어있는 창 열기",
|
||||||
"toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기"
|
"toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기",
|
||||||
|
"tabs-and-windows": "탭 & 창"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
<link rel="icon" type="image/svg+xml" href="/src/assets/favicon.ico" />
|
<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="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="color-scheme" content="light dark" />
|
<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>
|
<title>Trilium Notes</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@preact/preset-vite": "2.10.2",
|
"@preact/preset-vite": "2.10.2",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-config-preact": "2.0.0",
|
"eslint-config-preact": "2.0.0",
|
||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
"user-agent-data-types": "0.4.2",
|
"user-agent-data-types": "0.4.2",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
93
apps/website/src/assets/fonts/Inter/OFL.txt
Normal file
93
apps/website/src/assets/fonts/Inter/OFL.txt
Normal 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.
|
||||||
118
apps/website/src/assets/fonts/Inter/README.txt
Normal file
118
apps/website/src/assets/fonts/Inter/README.txt
Normal 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 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.
|
||||||
@@ -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 (
|
return (
|
||||||
<Link
|
<Link
|
||||||
className="social-button"
|
className="social-button"
|
||||||
@@ -63,7 +63,9 @@ function SocialButton({ name, iconSvg, url, withText }: { name: string, iconSvg:
|
|||||||
title={!withText ? name : undefined}
|
title={!withText ? name : undefined}
|
||||||
>
|
>
|
||||||
<Icon svg={iconSvg} />
|
<Icon svg={iconSvg} />
|
||||||
|
{counter && <span class="counter">{counter}</span>}
|
||||||
{withText && name}
|
{withText && name}
|
||||||
</Link>
|
</Link>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
@media (max-width: 719px) {
|
||||||
:root {
|
:root {
|
||||||
--header-height: 60px;
|
--header-height: 60px;
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import "./Header.css";
|
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 { useLocation } from 'preact-iso';
|
||||||
import DownloadButton from './DownloadButton.js';
|
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 Icon from "./Icon.js";
|
||||||
import logoPath from "../assets/icon-color.svg";
|
import logoPath from "../assets/icon-color.svg";
|
||||||
import menuIcon from "../assets/boxicons/bx-menu.svg?raw";
|
import menuIcon from "../assets/boxicons/bx-menu.svg?raw";
|
||||||
import { useState } from "preact/hooks";
|
|
||||||
import { SocialButtons } from "./Footer.js";
|
|
||||||
|
|
||||||
interface HeaderLink {
|
interface HeaderLink {
|
||||||
url: string;
|
url: string;
|
||||||
@@ -20,7 +21,7 @@ const HEADER_LINKS: HeaderLink[] = [
|
|||||||
{ url: "/support-us/", text: "Support us" }
|
{ url: "/support-us/", text: "Support us" }
|
||||||
]
|
]
|
||||||
|
|
||||||
export function Header() {
|
export function Header(props: {repoStargazersCount: number}) {
|
||||||
const { url } = useLocation();
|
const { url } = useLocation();
|
||||||
const [ mobileMenuShown, setMobileMenuShown ] = useState(false);
|
const [ mobileMenuShown, setMobileMenuShown ] = useState(false);
|
||||||
|
|
||||||
@@ -59,7 +60,17 @@ export function Header() {
|
|||||||
<SocialButtons className="mobile-only" withText />
|
<SocialButtons className="mobile-only" withText />
|
||||||
</nav>
|
</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 />
|
<DownloadButton />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
);
|
);
|
||||||
|
|||||||
28
apps/website/src/github-utils.ts
Normal file
28
apps/website/src/github-utils.ts
Normal 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;
|
||||||
|
}
|
||||||
@@ -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 { Header } from './components/Header.jsx';
|
||||||
import { Home } from './pages/Home/index.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 { NotFound } from './pages/_404.jsx';
|
||||||
import './style.css';
|
|
||||||
import Footer from './components/Footer.js';
|
import Footer from './components/Footer.js';
|
||||||
import GetStarted from './pages/GetStarted/get-started.js';
|
import GetStarted from './pages/GetStarted/get-started.js';
|
||||||
import SupportUs from './pages/SupportUs/SupportUs.js';
|
import SupportUs from './pages/SupportUs/SupportUs.js';
|
||||||
|
|
||||||
export function App() {
|
export function App(props: {repoStargazersCount: number}) {
|
||||||
return (
|
return (
|
||||||
<LocationProvider>
|
<LocationProvider>
|
||||||
<Header />
|
<Header repoStargazersCount={props.repoStargazersCount} />
|
||||||
<main>
|
<main>
|
||||||
<Router>
|
<Router>
|
||||||
<Route path="/" component={Home} />
|
<Route path="/" component={Home} />
|
||||||
@@ -26,9 +26,15 @@ export function App() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
hydrate(<App />, document.getElementById('app')!);
|
hydrate(<App repoStargazersCount={FALLBACK_STARGAZERS_COUNT} />, document.getElementById('app')!);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function prerender(data) {
|
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} />);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ section.hero-section {
|
|||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
font-weight: 100;
|
font-weight: 300;
|
||||||
color: var(--foreground-color);
|
color: var(--foreground-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "Inter";
|
||||||
|
src: url(./assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf);
|
||||||
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--background-color: #fff;
|
--background-color: #fff;
|
||||||
--foreground-color: black;
|
--foreground-color: black;
|
||||||
@@ -26,7 +31,7 @@ html,
|
|||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: 1.5;
|
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;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +42,6 @@ main {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: sans-serif;
|
|
||||||
background: var(--background-color);
|
background: var(--background-color);
|
||||||
color: var(--foreground-color);
|
color: var(--foreground-color);
|
||||||
}
|
}
|
||||||
@@ -69,7 +73,7 @@ section {
|
|||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-weight: 100;
|
font-weight: 300;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
}
|
}
|
||||||
|
|||||||
2
docs/README-ZH_CN.md
vendored
2
docs/README-ZH_CN.md
vendored
@@ -5,7 +5,7 @@
|
|||||||

|

|
||||||
[](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [](https://hosted.weblate.org/engage/trilium/)
|
[](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [](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 是一款免费且开源、跨平台的阶层式笔记应用程序,专注于建立大型个人知识库。
|
Trilium Notes 是一款免费且开源、跨平台的阶层式笔记应用程序,专注于建立大型个人知识库。
|
||||||
|
|
||||||
|
|||||||
2
docs/README-ZH_TW.md
vendored
2
docs/README-ZH_TW.md
vendored
@@ -5,7 +5,7 @@
|
|||||||

|

|
||||||
[](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [](https://hosted.weblate.org/engage/trilium/)
|
[](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [](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 是一款免費且開源、跨平台的階層式筆記應用程式,專注於建立大型個人知識庫。
|
Trilium Notes 是一款免費且開源、跨平台的階層式筆記應用程式,專注於建立大型個人知識庫。
|
||||||
|
|
||||||
|
|||||||
2
docs/README.es.md → docs/README-es.md
vendored
2
docs/README.es.md → docs/README-es.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
# Trilium Notes
|
# 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.
|
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.
|
||||||
|
|
||||||
2
docs/README.it.md → docs/README-it.md
vendored
2
docs/README.it.md → docs/README-it.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
# Trilium Notes
|
# 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.
|
Trilium Notes è un'applicazione per appunti ad organizzazione gerarchica, studiata per la costruzione di archivi di conoscenza personali di grandi dimensioni.
|
||||||
|
|
||||||
2
docs/README.ja.md → docs/README-ja.md
vendored
2
docs/README.ja.md → docs/README-ja.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
# Trilium Notes
|
# 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)をご覧ください:
|
Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://triliumnext.github.io/Docs/Wiki/screenshot-tour)をご覧ください:
|
||||||
|
|
||||||
315
docs/README-ro.md
vendored
Normal file
315
docs/README-ro.md
vendored
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
# Trilium Notes
|
||||||
|
|
||||||
|
 \
|
||||||
|

|
||||||
|
\
|
||||||
|
[](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp)
|
||||||
|
[](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.
|
||||||
|
|
||||||
|
[](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:
|
||||||
|
|
||||||
|
[](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.
|
||||||
2
docs/README.ru.md → docs/README-ru.md
vendored
2
docs/README.ru.md → docs/README-ru.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
# Trilium Notes
|
# 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):
|
Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://triliumnext.github.io/Docs/Wiki/screenshot-tour):
|
||||||
|
|
||||||
8
docs/README.md
vendored
8
docs/README.md
vendored
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
Please see the [main documentation](index.md) or visit one of our translated versions:
|
Please see the [main documentation](index.md) or visit one of our translated versions:
|
||||||
|
|
||||||
- [Español](README.es.md)
|
- [Español](README-es.md)
|
||||||
- [Italiano](README.it.md)
|
- [Italiano](README-it.md)
|
||||||
- [日本語](README.ja.md)
|
- [日本語](README-ja.md)
|
||||||
- [Русский](README.ru.md)
|
- [Русский](README-ru.md)
|
||||||
- [简体中文](README-ZH_CN.md)
|
- [简体中文](README-ZH_CN.md)
|
||||||
- [繁體中文](README-ZH_TW.md)
|
- [繁體中文](README-ZH_TW.md)
|
||||||
|
|
||||||
|
|||||||
@@ -47,10 +47,10 @@
|
|||||||
"cross-env": "10.1.0",
|
"cross-env": "10.1.0",
|
||||||
"dpdm": "3.14.0",
|
"dpdm": "3.14.0",
|
||||||
"esbuild": "0.25.10",
|
"esbuild": "0.25.10",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-config-prettier": "10.1.8",
|
"eslint-config-prettier": "10.1.8",
|
||||||
"eslint-plugin-playwright": "2.2.2",
|
"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",
|
"happy-dom": "~19.0.0",
|
||||||
"jiti": "2.6.1",
|
"jiti": "2.6.1",
|
||||||
"jsonc-eslint-parser": "2.4.1",
|
"jsonc-eslint-parser": "2.4.1",
|
||||||
|
|||||||
@@ -29,11 +29,11 @@
|
|||||||
"@vitest/browser": "3.2.4",
|
"@vitest/browser": "3.2.4",
|
||||||
"@vitest/coverage-istanbul": "3.2.4",
|
"@vitest/coverage-istanbul": "3.2.4",
|
||||||
"ckeditor5": "47.0.0",
|
"ckeditor5": "47.0.0",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-config-ckeditor5": ">=9.1.0",
|
"eslint-config-ckeditor5": ">=9.1.0",
|
||||||
"http-server": "14.1.1",
|
"http-server": "14.1.1",
|
||||||
"lint-staged": "16.2.3",
|
"lint-staged": "16.2.3",
|
||||||
"stylelint": "16.24.0",
|
"stylelint": "16.25.0",
|
||||||
"stylelint-config-ckeditor5": ">=9.1.0",
|
"stylelint-config-ckeditor5": ">=9.1.0",
|
||||||
"ts-node": "10.9.2",
|
"ts-node": "10.9.2",
|
||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
|
|||||||
@@ -30,11 +30,11 @@
|
|||||||
"@vitest/browser": "3.2.4",
|
"@vitest/browser": "3.2.4",
|
||||||
"@vitest/coverage-istanbul": "3.2.4",
|
"@vitest/coverage-istanbul": "3.2.4",
|
||||||
"ckeditor5": "47.0.0",
|
"ckeditor5": "47.0.0",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-config-ckeditor5": ">=9.1.0",
|
"eslint-config-ckeditor5": ">=9.1.0",
|
||||||
"http-server": "14.1.1",
|
"http-server": "14.1.1",
|
||||||
"lint-staged": "16.2.3",
|
"lint-staged": "16.2.3",
|
||||||
"stylelint": "16.24.0",
|
"stylelint": "16.25.0",
|
||||||
"stylelint-config-ckeditor5": ">=9.1.0",
|
"stylelint-config-ckeditor5": ">=9.1.0",
|
||||||
"ts-node": "10.9.2",
|
"ts-node": "10.9.2",
|
||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
|
|||||||
@@ -32,11 +32,11 @@
|
|||||||
"@vitest/browser": "3.2.4",
|
"@vitest/browser": "3.2.4",
|
||||||
"@vitest/coverage-istanbul": "3.2.4",
|
"@vitest/coverage-istanbul": "3.2.4",
|
||||||
"ckeditor5": "47.0.0",
|
"ckeditor5": "47.0.0",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-config-ckeditor5": ">=9.1.0",
|
"eslint-config-ckeditor5": ">=9.1.0",
|
||||||
"http-server": "14.1.1",
|
"http-server": "14.1.1",
|
||||||
"lint-staged": "16.2.3",
|
"lint-staged": "16.2.3",
|
||||||
"stylelint": "16.24.0",
|
"stylelint": "16.25.0",
|
||||||
"stylelint-config-ckeditor5": ">=9.1.0",
|
"stylelint-config-ckeditor5": ">=9.1.0",
|
||||||
"ts-node": "10.9.2",
|
"ts-node": "10.9.2",
|
||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
|
|||||||
@@ -33,11 +33,11 @@
|
|||||||
"@vitest/browser": "3.2.4",
|
"@vitest/browser": "3.2.4",
|
||||||
"@vitest/coverage-istanbul": "3.2.4",
|
"@vitest/coverage-istanbul": "3.2.4",
|
||||||
"ckeditor5": "47.0.0",
|
"ckeditor5": "47.0.0",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-config-ckeditor5": ">=9.1.0",
|
"eslint-config-ckeditor5": ">=9.1.0",
|
||||||
"http-server": "14.1.1",
|
"http-server": "14.1.1",
|
||||||
"lint-staged": "16.2.3",
|
"lint-staged": "16.2.3",
|
||||||
"stylelint": "16.24.0",
|
"stylelint": "16.25.0",
|
||||||
"stylelint-config-ckeditor5": ">=9.1.0",
|
"stylelint-config-ckeditor5": ">=9.1.0",
|
||||||
"ts-node": "10.9.2",
|
"ts-node": "10.9.2",
|
||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
|
|||||||
@@ -32,11 +32,11 @@
|
|||||||
"@vitest/browser": "3.2.4",
|
"@vitest/browser": "3.2.4",
|
||||||
"@vitest/coverage-istanbul": "3.2.4",
|
"@vitest/coverage-istanbul": "3.2.4",
|
||||||
"ckeditor5": "47.0.0",
|
"ckeditor5": "47.0.0",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"eslint-config-ckeditor5": ">=9.1.0",
|
"eslint-config-ckeditor5": ">=9.1.0",
|
||||||
"http-server": "14.1.1",
|
"http-server": "14.1.1",
|
||||||
"lint-staged": "16.2.3",
|
"lint-staged": "16.2.3",
|
||||||
"stylelint": "16.24.0",
|
"stylelint": "16.25.0",
|
||||||
"stylelint-config-ckeditor5": ">=9.1.0",
|
"stylelint-config-ckeditor5": ">=9.1.0",
|
||||||
"ts-node": "10.9.2",
|
"ts-node": "10.9.2",
|
||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
|
|||||||
@@ -50,6 +50,6 @@
|
|||||||
"codemirror-lang-elixir": "4.0.0",
|
"codemirror-lang-elixir": "4.0.0",
|
||||||
"codemirror-lang-hcl": "0.1.0",
|
"codemirror-lang-hcl": "0.1.0",
|
||||||
"codemirror-lang-mermaid": "0.5.0",
|
"codemirror-lang-mermaid": "0.5.0",
|
||||||
"eslint-linter-browserify": "9.36.0"
|
"eslint-linter-browserify": "9.37.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
"@typescript-eslint/parser": "8.45.0",
|
"@typescript-eslint/parser": "8.45.0",
|
||||||
"dotenv": "17.2.3",
|
"dotenv": "17.2.3",
|
||||||
"esbuild": "0.25.10",
|
"esbuild": "0.25.10",
|
||||||
"eslint": "9.36.0",
|
"eslint": "9.37.0",
|
||||||
"highlight.js": "11.11.1",
|
"highlight.js": "11.11.1",
|
||||||
"typescript": "5.9.3"
|
"typescript": "5.9.3"
|
||||||
}
|
}
|
||||||
|
|||||||
543
pnpm-lock.yaml
generated
543
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user