Compare commits

...

12 Commits

Author SHA1 Message Date
Elian Doran
a4b95b45ec
chore(readme): rewrite links 2025-12-08 11:52:28 +02:00
Elian Doran
59513962fe
chore(readme): add script to copy README into docs 2025-12-08 11:49:12 +02:00
Elian Doran
a201b43cde
fix(launch_bar): sync status not correctly rendered 2025-12-08 11:30:33 +02:00
Elian Doran
f98c77bd16
Translations update from Hosted Weblate (#7988) 2025-12-08 09:44:13 +02:00
green
2596359b25
Translated using Weblate (Japanese)
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-08 08:30:46 +01:00
minkipark
e0a0263607
Translated using Weblate (Korean)
Currently translated at 3.0% (50 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ko/
2025-12-08 08:30:45 +01:00
green
2d3feedb07
Translated using Weblate (Japanese)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ja/
2025-12-08 08:30:45 +01:00
Hosted Weblate
af392fad3d
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-08 08:30:44 +01:00
Elian Doran
ef74490c44
chore(deps): update dependency jsonc-eslint-parser to v2.4.2 (#7982) 2025-12-08 09:30:31 +02:00
Elian Doran
b6856e18a8
fix(deps): update dependency katex to v0.16.27 (#7983) 2025-12-08 09:30:08 +02:00
renovate[bot]
de1d4424d9
fix(deps): update dependency katex to v0.16.27 2025-12-08 01:03:42 +00:00
renovate[bot]
5ec45bb575
chore(deps): update dependency jsonc-eslint-parser to v2.4.2 2025-12-08 01:02:52 +00:00
11 changed files with 313 additions and 58 deletions

View File

@ -49,7 +49,7 @@
"jquery": "3.7.1",
"jquery.fancytree": "2.38.5",
"jsplumb": "2.15.6",
"katex": "0.16.25",
"katex": "0.16.27",
"knockout": "3.5.1",
"leaflet": "1.9.4",
"leaflet-gpx": "2.2.0",

View File

@ -290,7 +290,7 @@
"pasteNotes": "ノートをサブノートとしてアクティブノートに貼り付ける(コピーされたか切り取りされたかに よって、移動またはクローンになる)",
"deleteNotes": "ノート/サブツリーを削除",
"editingNotes": "ノート編集",
"editNoteTitle": "ツリーペインでEnterキーを押すと、ツリーペインからートタイトルに切り替わります。ートタイトルだとテキストエディタにフォーカスが切り替わります。<kbd>Ctrl+.</kbd> を押すと、エディタからツリーペインに戻ります。",
"editNoteTitle": "ツリーペインでEnterキーを押すと、ツリーペインからートタイトルに切り替わります。ートタイトルだとテキストエディタにフォーカスが切り替わります。<kbd>Ctrl+.</kbd> を押すと、エディタからツリーペインに戻ります。",
"createEditLink": "外部リンクの作成/編集",
"createInternalLink": "内部リンクの作成",
"followLink": "カーソル下のリンクをたどる",
@ -1011,7 +1011,8 @@
"info": {
"closeButton": "閉じる",
"modalTitle": "情報メッセージ",
"okButton": "OK"
"okButton": "OK",
"copy_to_clipboard": "クリップボードにコピー"
},
"protected_session_password": {
"close_label": "閉じる",
@ -1340,7 +1341,8 @@
"button_title": "図をPNG形式でエクスポート"
},
"svg": {
"export_to_png": "図をPNG形式でエクスポートできませんでした。"
"export_to_png": "図をPNG形式でエクスポートできませんでした。",
"export_to_svg": "図を SVG にエクスポートできませんでした。"
},
"code_theme": {
"title": "外観",
@ -1776,7 +1778,12 @@
"editable_text": {
"placeholder": "ここにノートの内容を入力...",
"auto-detect-language": "自動検出",
"keeps-crashing": "編集コンポーネントがクラッシュし続けます。Trilium を再起動してください。問題が解決しない場合は、バグレポートの作成をご検討ください。"
"keeps-crashing": "編集コンポーネントがクラッシュし続けます。Trilium を再起動してください。問題が解決しない場合は、バグレポートの作成をご検討ください。",
"editor_crashed_title": "テキストエディターがクラッシュしました",
"editor_crashed_content": "コンテンツは正常に復元されましたが、最近の変更の一部が保存されていない可能性があります。",
"editor_crashed_details_button": "詳細を見る...",
"editor_crashed_details_intro": "このエラーが何度も発生する場合は、以下の情報を貼り付けて GitHub に報告することを検討してください。",
"editor_crashed_details_title": "技術情報"
},
"empty": {
"open_note_instruction": "以下の入力欄にノートのタイトルを入力するか、ツリー内のノートを選択してノートを開きます。",
@ -2104,5 +2111,10 @@
},
"popup-editor": {
"maximize": "フルエディターに切り替え"
},
"server": {
"unknown_http_error_title": "サーバーとの通信エラー",
"unknown_http_error_content": "ステータスコード: {{statusCode}}\nURL: {{method}} {{url}}\nメッセージ: {{message}}",
"traefik_blocks_requests": "Traefik リバース プロキシを使用している場合、サーバーとの通信に影響する重大な変更が導入されました。"
}
}

View File

@ -50,12 +50,24 @@
"available_actions": "가능한 액션들",
"chosen_actions": "선택한 액션들",
"execute_bulk_actions": "대량 액션들 실행",
"bulk_actions_executed": "대량 액션들이 성공적으로 실행되었습니다."
"bulk_actions_executed": "대량 액션들이 성공적으로 실행되었습니다.",
"none_yet": "아직 없습니다... 위에 있는 가능한 작업 중 하나를 클릭하여 작업을 추가하세요.",
"labels": "라벨",
"relations": "관계",
"notes": "노트",
"other": "기타"
},
"i18n": {
"saturday": "토요일",
"sunday": "일요일",
"first-week-of-the-year": "일년의 첫째 주",
"first-week-contains-first-day": "첫 번째 주에는 올해의 첫날이 포함됩니다"
},
"clone_to": {
"clone_notes_to": "~로 노트 복제",
"help_on_links": "링크에 대한 도움말",
"notes_to_clone": "노트 클론 생성",
"target_parent_note": "부모 노트 타겟",
"search_for_note_by_its_name": "이름으로 노트 검색하기"
}
}

View File

@ -95,19 +95,21 @@ function useSyncStatus() {
// Determine if all changes were pushed.
const allChangesPushed = lastSyncedPush === ws.getMaxKnownEntityChangeSyncId();
let syncState: SyncState = "unknown";
if (message.type === "sync-pull-in-progress") {
syncState = "in-progress";
} else if (message.type === "sync-push-in-progress") {
syncState = "in-progress";
} else if (message.type === "sync-finished") {
syncState = allChangesPushed ? "connected-no-changes" : "connected-with-changes";
} else if (message.type === "sync-failed") {
syncState = allChangesPushed ? "disconnected-no-changes" : "disconnected-with-changes";
} else if (message.type === "frontend-update") {
switch (message.type) {
case "sync-pull-in-progress":
case "sync-push-in-progress":
setSyncState("in-progress");
break;
case "sync-finished":
setSyncState(allChangesPushed ? "connected-no-changes" : "connected-with-changes");
break;
case "sync-failed":
setSyncState(allChangesPushed ? "disconnected-no-changes" : "disconnected-with-changes");
break;
case "frontend-update":
lastSyncedPush = message.data.lastSyncedPush;
break;
}
setSyncState(syncState);
}
subscribeToMessages(onMessage);

View File

@ -40,7 +40,7 @@
},
"note_types": {
"text_title": "テキストノート",
"text_description": "ートはビジュアルWYSIWYGエディタで編集できます。表、画像、数式、構文ハイライト付きのコードブロックなど、様々な編集機能を備えています。Markdownのような構文やスラッシュコマンドを使って、テキストを素早くフォーマットできます。",
"text_description": "ートはビジュアルWYSIWYGエディタで編集できます。表、画像、数式、構文ハイライト付きのコードブロックなど、様々な編集機能を備えています。Markdownのような構文やスラッシュコマンドを使って、テキストを素早くフォーマットできます。",
"code_title": "Code ノート",
"code_description": "ソースコードやスクリプトの大きなサンプルでは、多くのプログラミング言語の構文ハイライト表示とさまざまなカラー テーマを備えた専用のエディターが使用できます。",
"file_title": "ファイルノート",

2
docs/README-ja.md vendored
View File

@ -242,7 +242,7 @@ pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32
Trilium は、その基盤となる技術なしには実現できませんでした:
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) -
テキストノートを補完するビジュアルエディタ。プレミアム機能を提供していただき、感謝いたします。
テキストノートを補完するビジュアルエディタ。プレミアム機能を提供していただき、感謝いたします。
* [CodeMirror](https://github.com/codemirror/CodeMirror) -
膨大な数の言語をサポートするコードエディター。
* [Excalidraw](https://github.com/excalidraw/excalidraw) - Canvas

230
docs/README.md vendored
View File

@ -1,32 +1,218 @@
# Trilium Notes Documentation
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
## 📚 Technical Documentation
<hr />
**NEW:** Comprehensive technical and architectural documentation is now available!
# Trilium Notes
- **[Technical Documentation Index](TECHNICAL_DOCUMENTATION.md)** - Complete index to all technical docs
- **[Architecture Overview](ARCHITECTURE.md)** - System design and core patterns
- **[Database Architecture](DATABASE.md)** - Complete database documentation
- **[Synchronization](SYNCHRONIZATION.md)** - Sync protocol and implementation
- **[Scripting System](SCRIPTING.md)** - User scripting guide and API
- **[Security Architecture](SECURITY_ARCHITECTURE.md)** - Security implementation details
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)
![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium)
![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/)
## 📖 User Documentation
[English](../README.md) | [Chinese (Simplified)](./README-ZH_CN.md) | [Chinese (Traditional)](./README-ZH_TW.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md)
Please see the [main documentation](index.md) or visit one of our translated versions:
Trilium Notes is a free and open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases.
- [Español](README-es.md)
- [Italiano](README-it.md)
- [日本語](README-ja.md)
- [Русский](README-ru.md)
- [简体中文](README-ZH_CN.md)
- [繁體中文](README-ZH_TW.md)
See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for quick overview:
## 🔧 Developer Documentation
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./app.png" alt="Trilium Screenshot" width="1000"></a>
- [Developer Guide](Developer%20Guide/Developer%20Guide/) - Development environment and contribution guide
- [Script API](Script%20API/) - Complete scripting API reference
## ⏬ Download
- [Latest release](https://github.com/TriliumNext/Trilium/releases/latest) stable version, recommended for most users.
- [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) unstable development version, updated daily with the latest features and fixes.
## 🔗 Additional Resources
## 📚 Documentation
For the full application README, please visit our [GitHub repository](https://github.com/triliumnext/trilium).
**Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)**
Our documentation is available in multiple formats:
- **Online Documentation**: Browse the full documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)
- **In-App Help**: Press `F1` within Trilium to access the same documentation directly in the application
- **GitHub**: Navigate through the [User Guide](./User%20Guide/User%20Guide/) in this repository
### Quick Links
- [Getting Started Guide](https://docs.triliumnotes.org/)
- [Installation Instructions](./User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md)
- [Docker Setup](./User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md)
- [Upgrading TriliumNext](./User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md)
- [Basic Concepts and Features](./User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md)
- [Patterns of Personal Knowledge Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge)
## 🎁 Features
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
* Rich WYSIWYG note editor including e.g. tables, images and [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
* Support for editing [notes with source code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax highlighting
* Fast and easy [navigation between notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text search and [note hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* Seamless [note versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be used for note organization, querying and advanced [scripting](https://triliumnext.github.io/Docs/Wiki/scripts)
* UI available in English, German, Spanish, French, Romanian, and Chinese (simplified and traditional)
* Direct [OpenID and TOTP integration](./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](./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](./User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along with a [Grafana Dashboard](./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.
* [Sarah Hussein](https://github.com/Sarah-Hussein) 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

@ -63,7 +63,7 @@
"happy-dom": "~20.0.0",
"http-server": "14.1.1",
"jiti": "2.6.1",
"jsonc-eslint-parser": "2.4.1",
"jsonc-eslint-parser": "2.4.2",
"react-refresh": "0.18.0",
"rollup-plugin-webpack-stats": "2.1.8",
"tslib": "2.8.1",

View File

@ -26,7 +26,7 @@
"dependencies": {
"boxicons": "2.1.4",
"fuse.js": "7.1.0",
"katex": "0.16.25",
"katex": "0.16.27",
"mermaid": "11.12.2"
},
"devDependencies": {

40
pnpm-lock.yaml generated
View File

@ -98,8 +98,8 @@ importers:
specifier: 2.6.1
version: 2.6.1
jsonc-eslint-parser:
specifier: 2.4.1
version: 2.4.1
specifier: 2.4.2
version: 2.4.2
react-refresh:
specifier: 0.18.0
version: 0.18.0
@ -257,8 +257,8 @@ importers:
specifier: 2.15.6
version: 2.15.6
katex:
specifier: 0.16.25
version: 0.16.25
specifier: 0.16.27
version: 0.16.27
knockout:
specifier: 3.5.1
version: 3.5.1
@ -1367,8 +1367,8 @@ importers:
specifier: 7.1.0
version: 7.1.0
katex:
specifier: 0.16.25
version: 0.16.25
specifier: 0.16.27
version: 0.16.27
mermaid:
specifier: 11.12.2
version: 11.12.2
@ -9545,8 +9545,8 @@ packages:
engines: {node: '>=6'}
hasBin: true
jsonc-eslint-parser@2.4.1:
resolution: {integrity: sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==}
jsonc-eslint-parser@2.4.2:
resolution: {integrity: sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
jsonfile@4.0.0:
@ -9602,8 +9602,8 @@ packages:
engines: {node: '>= 10'}
hasBin: true
katex@0.16.25:
resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==}
katex@0.16.27:
resolution: {integrity: sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==}
hasBin: true
kdbush@4.0.2:
@ -15285,6 +15285,8 @@ snapshots:
'@ckeditor/ckeditor5-core': 47.3.0
'@ckeditor/ckeditor5-utils': 47.3.0
ckeditor5: 47.3.0
transitivePeerDependencies:
- supports-color
'@ckeditor/ckeditor5-code-block@47.3.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)':
dependencies:
@ -15350,6 +15352,8 @@ snapshots:
'@ckeditor/ckeditor5-utils': 47.3.0
'@ckeditor/ckeditor5-watchdog': 47.3.0
es-toolkit: 1.39.5
transitivePeerDependencies:
- supports-color
'@ckeditor/ckeditor5-dev-build-tools@43.1.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)':
dependencies:
@ -15503,6 +15507,8 @@ snapshots:
'@ckeditor/ckeditor5-utils': 47.3.0
ckeditor5: 47.3.0
es-toolkit: 1.39.5
transitivePeerDependencies:
- supports-color
'@ckeditor/ckeditor5-editor-multi-root@47.3.0':
dependencies:
@ -15525,6 +15531,8 @@ snapshots:
'@ckeditor/ckeditor5-table': 47.3.0
'@ckeditor/ckeditor5-utils': 47.3.0
ckeditor5: 47.3.0
transitivePeerDependencies:
- supports-color
'@ckeditor/ckeditor5-emoji@47.3.0':
dependencies:
@ -16010,6 +16018,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.3.0
'@ckeditor/ckeditor5-utils': 47.3.0
ckeditor5: 47.3.0
transitivePeerDependencies:
- supports-color
'@ckeditor/ckeditor5-restricted-editing@47.3.0':
dependencies:
@ -16096,6 +16106,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.3.0
'@ckeditor/ckeditor5-utils': 47.3.0
ckeditor5: 47.3.0
transitivePeerDependencies:
- supports-color
'@ckeditor/ckeditor5-special-characters@47.3.0':
dependencies:
@ -25453,12 +25465,12 @@ snapshots:
json5@2.2.3: {}
jsonc-eslint-parser@2.4.1:
jsonc-eslint-parser@2.4.2:
dependencies:
acorn: 8.15.0
eslint-visitor-keys: 3.4.3
espree: 9.6.1
semver: 7.7.2
semver: 7.7.3
jsonfile@4.0.0:
optionalDependencies:
@ -25544,7 +25556,7 @@ snapshots:
- supports-color
- utf-8-validate
katex@0.16.25:
katex@0.16.27:
dependencies:
commander: 8.3.0
@ -26221,7 +26233,7 @@ snapshots:
dagre-d3-es: 7.0.13
dayjs: 1.11.19
dompurify: 3.2.5
katex: 0.16.25
katex: 0.16.27
khroma: 2.1.0
lodash-es: 4.17.21
marked: 16.4.2

View File

@ -0,0 +1,31 @@
import { readFile, writeFile } from "fs/promises";
import { join } from "path";
const rootDir = join(__dirname, "../..");
const docsDir = join(rootDir, "docs");
/**
* The base file is used by Weblate when generating new languages for the README file.
* The problem is that translated READMEs reside in `/docs/` while the main README is in `/`, which breaks all relative links.
* As such, we need to use a separate base file that is in `/docs` with the right relative paths.
* The README in the repo root remains the true base file, but it's a two-step process which requires the execution of this script.
*/
async function handleBaseFile() {
// Read the README at root level.
const readmePath = join(rootDir, "README.md");
let readme = await readFile(readmePath, "utf-8");
// Rewrite relative links.
readme = readme.replaceAll("./docs/", "./");
readme = readme.replaceAll("./README.md", "../README.md");
// Copy it into docs.
const outputPath = join(docsDir, "README.md");
await writeFile(outputPath, readme);
}
async function main() {
await handleBaseFile();
}
main();