Compare commits

...

63 Commits

Author SHA1 Message Date
Elian Doran
21f8a29761 Bump to v0.90.8 2024-10-19 09:44:34 +03:00
Elian Doran
f38870b27d i18next: 23.15.2 -> 23.16.0 2024-10-17 23:15:46 +03:00
Elian Doran
56a6d27240 client: mind-elixir: 4.1.5 -> 4.2.0 2024-10-17 23:12:43 +03:00
Elian Doran
38e5ef2c7d i18n: Translate some more Romanian messages 2024-10-17 22:50:20 +03:00
Elian Doran
e29d600517 Merge pull request #489 from TriliumNext/add-stable-tag-to-containers
Introduce `stable` tag on containers
2024-10-17 22:43:04 +03:00
Elian Doran
42605fbbad Merge pull request #495 from Potjoe-97/develop
i18n : Add fr translation (2/2)
2024-10-17 22:42:01 +03:00
Elian Doran
11ca427a28 Merge pull request #496 from hasecilu/i18n/Spanish_more
Continue Spanish translation
2024-10-17 22:40:34 +03:00
hasecilu
28d8088763 i18n: Create script to create PO files for translation
Script for translators
2024-10-17 13:34:40 -06:00
hasecilu
664c4789c0 i18n: Update Spanish translation 2024-10-17 12:30:36 -06:00
Potjoe-97
7c5667b457 Minor fixes 2024-10-17 15:54:42 +02:00
Potjoe-97
0afd22e196 Edited French option to display native spelling 2024-10-17 15:12:51 +02:00
Potjoe-97
b3abee71b7 Major overhaul fr translation
Corrections & Consistency
2024-10-17 13:33:28 +02:00
Elian Doran
9bd5596b2a i18n: Set up French 2024-10-16 20:29:42 +03:00
Elian Doran
e0e3c15e6e Merge pull request #493 from Potjoe-97/develop
Add french translation
2024-10-16 20:28:38 +03:00
Potjoe-97
31396264fa Corrections i18n : {} attribute detail 2024-10-16 14:52:05 +02:00
Potjoe-97
b1aada22b5 Corrections in /src/public/translations/fr 2024-10-16 11:32:34 +02:00
Elian Doran
d7eaf72a6d Merge pull request #491 from TriliumNext/feature/i18n-part6
Feature/i18n part6
2024-10-16 12:13:28 +03:00
Potjoe-97
59df442676 Corrections /src/public/translations/fr
Consistency in translations/server.json
2024-10-15 20:29:34 +02:00
Potjoe-97
9770db7f3c Consistency : "étiquette" now translated into "label" 2024-10-15 18:52:34 +02:00
Potjoe-97
8c36cea71b src/public/translations/fr : First draft 2024-10-15 18:16:39 +02:00
Potjoe-97
b03f40f1f9 Edit french translation 2024-10-15 15:48:11 +02:00
Potjoe-97
00dba7bef4 Add french translation 2024-10-15 15:20:04 +02:00
Nriver
4186f3d136 add translation for app_context.js 2024-10-15 15:46:34 +08:00
Nriver
529502524d add missing context menu translation 2024-10-15 15:24:01 +08:00
Nriver
7c518e9512 add translation for watched_file_update_status.js 2024-10-15 15:19:09 +08:00
Nriver
5e2d1bc124 add translation for toc.js 2024-10-15 15:12:09 +08:00
Nriver
7dfe6f276e update Chinese translation and synchronize with English 2024-10-15 15:05:48 +08:00
Nriver
858db68d66 add translation for tab_row.js 2024-10-15 14:51:26 +08:00
Jon Fuller
b72f46f108 Don't add stable if pushed tag has - 2024-10-14 14:06:55 -07:00
Elian Doran
83dbe0539e client: Highlight content links on hover 2024-10-14 22:47:16 +03:00
Jon Fuller
87e0cf55f1 Introduce stable tag on containers
Closes #488
2024-10-14 12:18:29 -07:00
Elian Doran
8315d5c778 Update package-lock 2024-10-14 22:13:04 +03:00
Elian Doran
61bd7dca18 client: Fix underlines for all links (closes #485) 2024-10-14 22:12:48 +03:00
Elian Doran
4faf27364f Merge branch 'develop' of ssh://github.com/TriliumNext/Notes into develop 2024-10-13 15:45:48 +03:00
Elian Doran
52a6d0b48a Bump version to 0.90.7-beta 2024-10-13 15:45:40 +03:00
Elian Doran
cddc9a7b6a i18n: Mark mind map as beta 2024-10-13 14:43:50 +03:00
Elian Doran
75d019863f server: Disable debug mode for i18n 2024-10-13 14:40:07 +03:00
Elian Doran
849a6a3aef electron: Solve server translation loading on macOS 2024-10-13 14:24:46 +03:00
Elian Doran
e7378306a2 Merge branch 'develop' of ssh://github.com/TriliumNext/Notes into develop 2024-10-13 13:52:39 +03:00
Elian Doran
1277dfc5d5 electron: Add back server translations 2024-10-13 12:31:37 +03:00
Elian Doran
ae680847dc vscode: Pin nightly GitHub Action 2024-10-13 12:28:05 +03:00
Elian Doran
a5fd57308a server: Fix translations in standalone build 2024-10-13 12:09:36 +03:00
Elian Doran
fa769df7b0 client: Fix table background on dark mode 2024-10-13 11:20:26 +03:00
Elian Doran
8136a2972e Merge pull request #465 from quantum5/pwa-icon-fix
server: fix blurry PWA icon
2024-10-13 10:51:00 +03:00
Elian Doran
8c8c3974f3 Merge pull request #480 from hasecilu/i18n/Spanish_server
i18n: Add more Spanish translations
2024-10-13 10:07:39 +03:00
hasecilu
e81bfa3693 i18n: Add more Spanish translations 2024-10-12 17:30:59 -06:00
Elian Doran
a857f4816f codemirror: 5.65.15 -> 5.65.18 2024-10-12 20:48:39 +03:00
Elian Doran
ade34f9745 client: Use CodeMirror from package.json 2024-10-12 20:41:50 +03:00
Elian Doran
fd66cb930d electron: Update electron-forge to latest 2024-10-12 20:22:18 +03:00
Elian Doran
182d9afac1 tools: Update development tools 2024-10-12 20:18:44 +03:00
Elian Doran
4e6ef0be95 i18next: 23.15.1 -> 23.15.2 + http-backend 2024-10-12 20:16:23 +03:00
Elian Doran
88961ea93f mermaid: 11.2.0 -> 11.3.0 2024-10-12 20:14:46 +03:00
Elian Doran
a3f2946a17 mind-elixir: 4.1.1 -> 4.1.5 2024-10-12 20:12:45 +03:00
Elian Doran
8ae5f9ea9b electron: Fix translations in packaged builds 2024-10-12 19:40:54 +03:00
Elian Doran
9ec2508f09 i18n: Add more Romanian translations 2024-10-12 18:53:24 +03:00
Elian Doran
bae63b08a2 server, electron: Fix crash if locale is undefined 2024-10-12 18:24:10 +03:00
Elian Doran
729a188528 docker: Fix server translation initialization (closes #439) 2024-10-12 10:53:30 +03:00
Elian Doran
2c5a5acffa server: Improve type for keyboard shortcut scope 2024-10-12 10:31:12 +03:00
Elian Doran
e45c5f429d server: Fix crash when starting server in Docker due to translations 2024-10-12 10:29:50 +03:00
Elian Doran
5c44ac5ad8 ci: Fix permissions for nightly 2024-10-11 22:15:50 +03:00
Elian Doran
b44c2f5ebf ci: Configure nightly deployment 2024-10-11 22:07:22 +03:00
Elian Doran
0a69189b9b i18n: Reach 100% for Romanian 2024-10-09 22:04:00 +03:00
Quantum
d46963e496 server: fix blurry PWA icon 2024-10-08 20:32:17 -04:00
35 changed files with 2897 additions and 10748 deletions

View File

@@ -242,6 +242,18 @@ jobs:
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
-t ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${REF_NAME} \
$(printf '${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
# If the ref is a tag, also tag the image as stable as this is part of a 'release'
# and only go in the `if` if there is NOT a `-` in the tag's name, due to tagging of `-alpha`, `-beta`, etc...
if [[ "${GITHUB_REF}" == refs/tags/* && ! "${REF_NAME}" =~ - ]]; then
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
-t ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:stable \
$(printf '${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
-t ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:stable \
$(printf '${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
fi
- name: Inspect image
run: |

View File

@@ -5,10 +5,14 @@ on:
- cron: '0 2 * * *' # run at 2 AM UTC
# This can be used to allow manually triggering nightlies from the web interface
workflow_dispatch:
env:
GITHUB_UPLOAD_URL: https://uploads.github.com/repos/TriliumNext/Notes/releases/179589950/assets{?name,label}
GITHUB_RELEASE_ID: 179589950
permissions:
contents: write
jobs:
nightly-electron:
name: Deploy nightly
name: Deploy nightly
strategy:
fail-fast: false
matrix:
@@ -23,7 +27,7 @@ jobs:
- name: windows
image: windows-latest
extension: exe
runs-on: ${{ matrix.os.image }}
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v4
- name: Set up node & dependencies
@@ -71,16 +75,16 @@ jobs:
- name: Deploy release
uses: WebFreak001/deploy-nightly@v3.1.0
with:
# upload_url: # find out this value by opening https://api.github.com/repos/<owner>/<repo>/releases in your browser and copy the full "upload_url" value including the {?name,label} part
# release_id: # same as above (id can just be taken out the upload_url, it's used to find old releases)
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
release_id: ${{ env.GITHUB_RELEASE_ID }}
asset_path: upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.zip # path to archive to upload
asset_name: TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-nightly.zip # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
asset_content_type: application/zip # required by GitHub API
- name: Deploy installer release
uses: WebFreak001/deploy-nightly@v3.1.0
with:
# upload_url: # find out this value by opening https://api.github.com/repos/<owner>/<repo>/releases in your browser and copy the full "upload_url" value including the {?name,label} part
# release_id: # same as above (id can just be taken out the upload_url, it's used to find old releases)
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
release_id: ${{ env.GITHUB_RELEASE_ID }}
asset_path: upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }} # path to archive to upload
asset_name: TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-nightly.${{ matrix.os.extension }} # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
asset_content_type: application/zip # required by GitHub API
@@ -115,8 +119,8 @@ jobs:
- name: Deploy release
uses: WebFreak001/deploy-nightly@v3.1.0
with:
# upload_url: # find out this value by opening https://api.github.com/repos/<owner>/<repo>/releases in your browser and copy the full "upload_url" value including the {?name,label} part
# release_id: # same as above (id can just be taken out the upload_url, it's used to find old releases)
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
release_id: ${{ env.GITHUB_RELEASE_ID }}
asset_path: upload/TriliumNextNotes-linux-x64-${{ github.ref_name }}.tar.xz # path to archive to upload
asset_name: TriliumNextNotes-linux-x64-nightly.zip # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
asset_content_type: application/zip # required by GitHub API

1
.gitignore vendored
View File

@@ -5,6 +5,7 @@ build/
src/public/app-dist/
npm-debug.log
yarn-error.log
po-*/
*.db
!integration-tests/db/document.db

View File

@@ -5,3 +5,16 @@ reviews:
description: >-
Describes the shortcut which triggers a search within the current
page/note only
add_label.to_value:
locales:
fr:
comments:
- user:
name: Potjoe-97
email: giann@LAPTOPT490-GF
id: QXec0JUoxfGmMlpch-B1S
comment: ''
suggestion: vers la valeur
type: request_change
time: '2024-10-15T16:57:06.188Z'
resolved: true

View File

@@ -18,4 +18,7 @@
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"github-actions.workflows.pinned.workflows": [
".github/workflows/nightly.yml"
],
}

View File

@@ -24,11 +24,12 @@ rm -r $PKG_DIR/node/include/node
rm -r $PKG_DIR/node_modules/electron*
rm -r $PKG_DIR/electron*.js
printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh
printf "#!/bin/sh\n./node/bin/node src/main" > $PKG_DIR/trilium.sh
chmod 755 $PKG_DIR/trilium.sh
cp bin/tpl/anonymize-database.sql $PKG_DIR/
cp -r translations $PKG_DIR/
cp -r dump-db $PKG_DIR/
rm -rf $PKG_DIR/dump-db/node_modules

View File

@@ -35,7 +35,7 @@ const copy = async () => {
await fs.copy(file, path.join(DEST_DIR, file));
}
const dirsToCopy = ["images", "libraries", "db"];
const dirsToCopy = ["images", "libraries", "translations", "db"];
for (const dir of dirsToCopy) {
log(`Copying ${dir}`);
await fs.copy(dir, path.join(DEST_DIR, dir));

98
bin/translation.sh Executable file
View File

@@ -0,0 +1,98 @@
#!/usr/bin/env bash
# --------------------------------------------------------------------------------------------------
#
# Create PO files to make easier the labor of translation.
#
# Info:
# https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html
# https://docs.translatehouse.org/projects/translate-toolkit/en/latest/commands/json2po.html
#
# Dependencies:
# jq
# translate-toolkit
# python-wcwidth
#
# Created by @hasecilu
#
# --------------------------------------------------------------------------------------------------
stats() {
# Print the number of existing strings on the JSON files for each locale
s=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[0]}/en/server.json" | wc -l)
c=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[1]}/en/translation.json" | wc -l)
echo "|locale |server strings |client strings |"
echo "|-------|---------------|---------------|"
echo "| en | ${s} | ${c} |"
for locale in "${locales[@]}"; do
s=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[0]}/${locale}/server.json" | wc -l)
c=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[1]}/${locale}/translation.json" | wc -l)
echo "| ${locale} | ${s} | ${c} |"
done
}
help() {
echo -e "\nDescription:"
echo -e "\tCreate PO files to make easier the labor of translation"
echo -e "\nUsage:"
echo -e "\t./translation.sh [--stats] [--update <OPT_LOCALE>] [--update2 <OPT_LOCALE>]"
echo -e "\nFlags:"
echo -e " --clear\n\tClear all po-* directories"
echo -e " --stats\n\tPrint the number of existing strings on the JSON files for each locale"
echo -e " --update <LOCALE>\n\tUpdate PO files from English and localized JSON files as source"
echo -e " --update2 <LOCALE>\n\tRecover translation from PO files to localized JSON files"
}
# Main function ------------------------------------------------------------------------------------
# Get script directory to set file path relative to it
file_path="$(
cd -- "$(dirname "${0}")" >/dev/null 2>&1 || exit
pwd -P
)"
paths=("${file_path}/../translations/" "${file_path}/../src/public/translations/")
locales=(cn es fr ro)
if [ $# -eq 1 ]; then
if [ "$1" == "--clear" ]; then
for path in "${paths[@]}"; do
for locale in "${locales[@]}"; do
[ -d "${path}/po-${locale}" ] && rm -r "${path}/po-${locale}"
done
done
elif [ "$1" == "--stats" ]; then
stats
elif [ "$1" == "--update" ]; then
# Update PO files from English and localized JSON files as source
for path in "${paths[@]}"; do
for locale in "${locales[@]}"; do
json2po -t "${path}/en" "${path}/${locale}" "${path}/po-${locale}"
done
done
elif [ "$1" == "--update2" ]; then
# Recover translation from PO files to localized JSON files
for path in "${paths[@]}"; do
for locale in "${locales[@]}"; do
po2json -t "${path}/en" "${path}/po-${locale}" "${path}/${locale}"
done
done
else
help
fi
elif [ $# -eq 2 ]; then
if [ "$1" == "--update" ]; then
locale="$2"
for path in "${paths[@]}"; do
json2po -t "${path}/en" "${path}/${locale}" "${path}/po-${locale}"
done
elif [ "$1" == "--update2" ]; then
locale="$2"
for path in "${paths[@]}"; do
po2json -t "${path}/en" "${path}/po-${locale}" "${path}/${locale}"
done
else
help
fi
else
help
fi

View File

@@ -10,7 +10,13 @@ module.exports = {
overwrite: true,
asar: true,
icon: "./images/app-icons/icon",
extraResource: getExtraResourcesForPlatform(),
extraResource: [
// Moved to root
...getExtraResourcesForPlatform(),
// Moved to resources (TriliumNext Notes.app/Contents/Resources on macOS)
"translations/"
],
afterComplete: [(buildPath, _electronVersion, platform, _arch, callback) => {
const extraResources = getExtraResourcesForPlatform();
for (const resource of extraResources) {
@@ -75,7 +81,10 @@ module.exports = {
function getExtraResourcesForPlatform() {
let resources = ['dump-db/', './bin/tpl/anonymize-database.sql']
let resources = [
'dump-db/',
'./bin/tpl/anonymize-database.sql'
];
const scripts = ['trilium-portable', 'trilium-safe-mode', 'trilium-no-cert-check']
switch (process.platform) {
case 'win32':

File diff suppressed because it is too large Load Diff

368
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "trilium",
"version": "0.90.6-beta",
"version": "0.90.8",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "trilium",
"version": "0.90.6-beta",
"version": "0.90.8",
"license": "AGPL-3.0-only",
"dependencies": {
"@braintree/sanitize-url": "7.1.0",
@@ -21,7 +21,7 @@
"boxicons": "2.1.4",
"chokidar": "3.6.0",
"cls-hooked": "4.2.2",
"codemirror": "5.65.17",
"codemirror": "5.65.18",
"compression": "1.7.4",
"cookie-parser": "1.4.6",
"csurf": "1.11.0",
@@ -46,9 +46,9 @@
"html2plaintext": "2.1.4",
"http-proxy-agent": "7.0.2",
"https-proxy-agent": "7.0.5",
"i18next": "23.15.1",
"i18next": "23.16.0",
"i18next-fs-backend": "2.3.2",
"i18next-http-backend": "2.6.1",
"i18next-http-backend": "2.6.2",
"image-type": "4.1.0",
"ini": "5.0.0",
"is-animated": "2.0.2",
@@ -64,9 +64,9 @@
"knockout": "3.5.1",
"mark.js": "8.11.1",
"marked": "14.1.2",
"mermaid": "11.2.0",
"mermaid": "11.3.0",
"mime-types": "2.1.35",
"mind-elixir": "4.1.1",
"mind-elixir": "4.2.0",
"multer": "1.4.5-lts.1",
"node-abi": "3.67.0",
"normalize-strings": "1.1.1",
@@ -101,12 +101,12 @@
"trilium": "src/main.js"
},
"devDependencies": {
"@electron-forge/cli": "7.4.0",
"@electron-forge/maker-deb": "7.4.0",
"@electron-forge/maker-dmg": "7.4.0",
"@electron-forge/maker-squirrel": "7.4.0",
"@electron-forge/maker-zip": "7.4.0",
"@electron-forge/plugin-auto-unpack-natives": "7.4.0",
"@electron-forge/cli": "7.5.0",
"@electron-forge/maker-deb": "7.5.0",
"@electron-forge/maker-dmg": "7.5.0",
"@electron-forge/maker-squirrel": "7.5.0",
"@electron-forge/maker-zip": "7.5.0",
"@electron-forge/plugin-auto-unpack-natives": "7.5.0",
"@playwright/test": "1.47.1",
"@types/archiver": "6.0.2",
"@types/better-sqlite3": "7.6.11",
@@ -145,17 +145,17 @@
"electron-rebuild": "3.2.9",
"esm": "3.2.25",
"iconsur": "1.7.0",
"jasmine": "5.3.0",
"jasmine": "5.3.1",
"jsdoc": "4.0.3",
"lorem-ipsum": "2.0.8",
"nodemon": "3.1.4",
"nodemon": "3.1.7",
"rcedit": "4.0.1",
"rimraf": "6.0.1",
"ts-node": "10.9.2",
"tslib": "2.7.0",
"tsx": "4.19.1",
"typescript": "5.6.2",
"webpack": "5.94.0",
"typescript": "5.6.3",
"webpack": "5.95.0",
"webpack-cli": "5.1.4"
}
},
@@ -278,9 +278,9 @@
}
},
"node_modules/@electron-forge/cli": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.4.0.tgz",
"integrity": "sha512-a+zZv3ja/IxkJzNyx4sOHSZv6DPV85S0PEVF6pcRjUpbDL5r+DxjRFsNc0Nq4UIWyFm1nw7RWoPdd9uDst4Tvg==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.5.0.tgz",
"integrity": "sha512-dlxr4ac5ONWs1Wmbgh18rclxcp9Fe5SzCF9ookp08Z1w4YP9FbQd1SHs0oLKWLF6qH9qdX8H2EWB9Nt6tOzC5g==",
"dev": true,
"funding": [
{
@@ -293,8 +293,8 @@
}
],
"dependencies": {
"@electron-forge/core": "7.4.0",
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/core": "7.5.0",
"@electron-forge/shared-types": "7.5.0",
"@electron/get": "^3.0.0",
"chalk": "^4.0.0",
"commander": "^4.1.1",
@@ -419,9 +419,9 @@
}
},
"node_modules/@electron-forge/core": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.4.0.tgz",
"integrity": "sha512-pYHKpB2CKeQgWsb+gox+FPkEvP+6Q2zGj2eZtgZRtKppoWIXrHIpOtcm6FllJ/gZ5u4AsQzVIYReAHGaBa0osw==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.5.0.tgz",
"integrity": "sha512-Hg/fXabRZtMbyrtnpzpb3i49qNai+juCg+6bgyjYfWgJGr5VGH947lWd7skujH5qJ+Y7FgvANDGnenZuQwxZNw==",
"dev": true,
"funding": [
{
@@ -434,19 +434,19 @@
}
],
"dependencies": {
"@electron-forge/core-utils": "7.4.0",
"@electron-forge/maker-base": "7.4.0",
"@electron-forge/plugin-base": "7.4.0",
"@electron-forge/publisher-base": "7.4.0",
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/template-base": "7.4.0",
"@electron-forge/template-vite": "7.4.0",
"@electron-forge/template-vite-typescript": "7.4.0",
"@electron-forge/template-webpack": "7.4.0",
"@electron-forge/template-webpack-typescript": "7.4.0",
"@electron-forge/tracer": "7.4.0",
"@electron-forge/core-utils": "7.5.0",
"@electron-forge/maker-base": "7.5.0",
"@electron-forge/plugin-base": "7.5.0",
"@electron-forge/publisher-base": "7.5.0",
"@electron-forge/shared-types": "7.5.0",
"@electron-forge/template-base": "7.5.0",
"@electron-forge/template-vite": "7.5.0",
"@electron-forge/template-vite-typescript": "7.5.0",
"@electron-forge/template-webpack": "7.5.0",
"@electron-forge/template-webpack-typescript": "7.5.0",
"@electron-forge/tracer": "7.5.0",
"@electron/get": "^3.0.0",
"@electron/packager": "^18.3.1",
"@electron/packager": "^18.3.5",
"@electron/rebuild": "^3.2.10",
"@malept/cross-spawn-promise": "^2.0.0",
"chalk": "^4.0.0",
@@ -475,12 +475,12 @@
}
},
"node_modules/@electron-forge/core-utils": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.4.0.tgz",
"integrity": "sha512-9RLG0F9SX466TpkaTcW+V15KmnGuTpmr7NKMRlngtHXmnkBUJz4Mxp1x33WZLgL90dJrxrRgHSfVBtA4lstDPw==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.5.0.tgz",
"integrity": "sha512-PtyQT6qeOEJsi4ltoB7Jb6YUUCwK3gDt5gVyAF2aJ8eZi9rJ0hasHc5vjcmBaz9FwDMjYZrBD8oRBhNgbhEakQ==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/shared-types": "7.5.0",
"@electron/rebuild": "^3.2.10",
"@malept/cross-spawn-promise": "^2.0.0",
"chalk": "^4.0.0",
@@ -794,12 +794,12 @@
}
},
"node_modules/@electron-forge/maker-base": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.4.0.tgz",
"integrity": "sha512-LwWS4VPdwjISl1KpLhmM1Qr1M3sRTTQ/RsX+GlFd7cQ1W/FsgxMjaTG4Od1d+a5CGVTh3s6X2g99TSUfxjOveg==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.5.0.tgz",
"integrity": "sha512-+jluKW2UPxaI1+qQQ8fqaUVVbZohRjOSF0Iti7STRFbgJKJitzPB24Cjji9qJCKIx5klMeEiwp0YPAE/d9Xt8g==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/shared-types": "7.5.0",
"fs-extra": "^10.0.0",
"which": "^2.0.2"
},
@@ -843,14 +843,13 @@
}
},
"node_modules/@electron-forge/maker-deb": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.4.0.tgz",
"integrity": "sha512-npWea3IpGeu96xNqJpsCOYX6V4E+HY6u/okeTUzUOMX96UteT14MecdUefMam158glRTX84k2ryh7WcBoOa4mg==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.5.0.tgz",
"integrity": "sha512-rMXYJzu2LuyDQ5TX4VzQ2OSWDFC7Y1nJpBoyJvXfkA5fF5NNScOFYPv1YzEYAXMcG5hCOVLorsG9HDTEC8uh9g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/maker-base": "7.4.0",
"@electron-forge/shared-types": "7.4.0"
"@electron-forge/maker-base": "7.5.0",
"@electron-forge/shared-types": "7.5.0"
},
"engines": {
"node": ">= 16.4.0"
@@ -860,21 +859,20 @@
}
},
"node_modules/@electron-forge/maker-dmg": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-7.4.0.tgz",
"integrity": "sha512-xRCMNtnpvQNwrDYvwbVFegnErnIMpHGZANrjwushlH9+Fsu60DFvf5s3AVkgsYdQTqlY7wYRG1mziYZmRlPAIw==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-7.5.0.tgz",
"integrity": "sha512-OcySukBT6FQJRbb0CKXnre4e0JinJfDGteCOLypB8UsN5Wg/4lIDB0hMhBmWGPJkZXKUDGkB1lhkdcLKbzT50Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/maker-base": "7.4.0",
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/maker-base": "7.5.0",
"@electron-forge/shared-types": "7.5.0",
"fs-extra": "^10.0.0"
},
"engines": {
"node": ">= 16.4.0"
},
"optionalDependencies": {
"electron-installer-dmg": "^4.0.0"
"electron-installer-dmg": "^5.0.1"
}
},
"node_modules/@electron-forge/maker-dmg/node_modules/fs-extra": {
@@ -916,13 +914,13 @@
}
},
"node_modules/@electron-forge/maker-squirrel": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.4.0.tgz",
"integrity": "sha512-mCQyufnSNfjffiKho59ZqVg4W601zGOl6h01OyfDwjOU/G4iQtpnnDEOXGe26q7OVT5ORb1WDnfyGgBeJ6Ge7g==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.5.0.tgz",
"integrity": "sha512-fz3vbp1BnbQWeZVVM3lKOGhrCVKLjAXKDTntBL2+8Rz02a63eozGjOtC5KZYXax6nM4TF6LvwjagY/qTs5jFag==",
"dev": true,
"dependencies": {
"@electron-forge/maker-base": "7.4.0",
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/maker-base": "7.5.0",
"@electron-forge/shared-types": "7.5.0",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -968,14 +966,13 @@
}
},
"node_modules/@electron-forge/maker-zip": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.4.0.tgz",
"integrity": "sha512-UGbMdpuK/P29x1FFRWNOs3bNz+7QNFWVWyTM5hcWqib66cNuUmoaPifQyuwW2POIrIohrxlzLK87/i9Zc8g4dA==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.5.0.tgz",
"integrity": "sha512-gIO3bEbubOJqWV6kd0b9nBwTrFfFQv/K8PAqg6e0uSZiy7QuSCFZVAZse02gO3AzxVDSVjjTQ4nmXBXC4Glh1A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/maker-base": "7.4.0",
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/maker-base": "7.5.0",
"@electron-forge/shared-types": "7.5.0",
"cross-zip": "^4.0.0",
"fs-extra": "^10.0.0",
"got": "^11.8.5"
@@ -1023,50 +1020,50 @@
}
},
"node_modules/@electron-forge/plugin-auto-unpack-natives": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.4.0.tgz",
"integrity": "sha512-jJ/v2blH32bcvdlJbeeW/yO99K9SduW8yrS7zuFN6y+B1cmzLd+S7L8oCcOghFDMAlYjQaBlnCe/nMJbT9mN4g==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.5.0.tgz",
"integrity": "sha512-cT/yTAr5Zd81HANi5bdyCoSG9nzIrB1WIEkFA7sWuyATiOjk9SGKn1aM543XWJ/TFkTg0800JpyocsSC9wOzEg==",
"dev": true,
"dependencies": {
"@electron-forge/plugin-base": "7.4.0",
"@electron-forge/shared-types": "7.4.0"
"@electron-forge/plugin-base": "7.5.0",
"@electron-forge/shared-types": "7.5.0"
},
"engines": {
"node": ">= 16.4.0"
}
},
"node_modules/@electron-forge/plugin-base": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.4.0.tgz",
"integrity": "sha512-LcTNtEc2YaWvhhqWVIfdJ+J0/krSgc2dqYAHhOH2aLUSm9End3dKO/PZ1Y6DPsiPiJKHnSLBJ/XBN/16NY4Sjw==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.5.0.tgz",
"integrity": "sha512-44AbXSb5lDY8uHIo0mJ91atOSWgxv3iuECk07/gDBiuMPX62dwHnLteEjQF4GBXJZTpnV7SxhD+d2AUBQmoojw==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0"
"@electron-forge/shared-types": "7.5.0"
},
"engines": {
"node": ">= 16.4.0"
}
},
"node_modules/@electron-forge/publisher-base": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.4.0.tgz",
"integrity": "sha512-PiJk4RfaC55SnVnteLW2ZIQNM9DpGOi6YoUn5t8i9UcVp2rFIdya7bJY/b9u1hwubm4d5+TdypMVEuJjM44CJQ==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.5.0.tgz",
"integrity": "sha512-PcF3jWA+oXRwNVWjKW6GxHJywJ62QXpYF/8SMs7kgKzBDzLqrbUnWuaXoCP5kCP+AxM495ZU5L2dyJek1eM+VA==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0"
"@electron-forge/shared-types": "7.5.0"
},
"engines": {
"node": ">= 16.4.0"
}
},
"node_modules/@electron-forge/shared-types": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.4.0.tgz",
"integrity": "sha512-5Ehy6enUjBaU08odf9u9TOhmOVXlqobzMvKUixtkdAWgV1XZAUJmn+p21xhj0IkO92MQiXMGv66w9pDNjRT8uQ==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.5.0.tgz",
"integrity": "sha512-VXuLVGYa3ZulBlmjA40ZEpk+iPH5ebN0v7t27wDt3rm23bph2aQrL7uSTLXhobenXYBVKggXnQt6rJ9A7FCDNQ==",
"dev": true,
"dependencies": {
"@electron-forge/tracer": "7.4.0",
"@electron/packager": "^18.3.1",
"@electron-forge/tracer": "7.5.0",
"@electron/packager": "^18.3.5",
"@electron/rebuild": "^3.2.10",
"listr2": "^7.0.2"
},
@@ -1075,12 +1072,12 @@
}
},
"node_modules/@electron-forge/template-base": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.4.0.tgz",
"integrity": "sha512-3YWdRSGzQfQPQkQxStn2wkJ/SuNGGKo9slwFJGvqMV+Pbx3/M/hYi9sMXOuaqVZgeaBp8Ap27yFPxaIIOC3vcA==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.5.0.tgz",
"integrity": "sha512-wEz4FI90jje4FdwJ4FzqUejodfioNcJjlgG2Ci1FiRn4Qv0jX4MP8SEgKmnD44181/44HgMa429zxRv/fDYzOw==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/shared-types": "7.5.0",
"@malept/cross-spawn-promise": "^2.0.0",
"debug": "^4.3.1",
"fs-extra": "^10.0.0",
@@ -1148,13 +1145,13 @@
}
},
"node_modules/@electron-forge/template-vite": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.4.0.tgz",
"integrity": "sha512-YPVyCGiBKmZPCxK/Bd2louV3PBcxI2nT2+tRKP+mlEHOWrxbZIfmZSR2lIAFvK/ALKlwUKROdmlwyi7ZcdT7JQ==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.5.0.tgz",
"integrity": "sha512-AkMO5nW5jC8ijCYeoAK7hu+K5o7NMoHNsn71eepJ/kjOnSxXjJeBVGmP4DgzF2zc6AgeRz2TCKx6P8GUtFG5cw==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/template-base": "7.4.0",
"@electron-forge/shared-types": "7.5.0",
"@electron-forge/template-base": "7.5.0",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -1162,13 +1159,13 @@
}
},
"node_modules/@electron-forge/template-vite-typescript": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.4.0.tgz",
"integrity": "sha512-wdByG807VWcUd81E6572b/G/Ki8gb+GrCIWxO7Cl3qBa+yNaU1sHhBwB1RyTbQy1r8ubSBtsWrRD1J/yzHKWoQ==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.5.0.tgz",
"integrity": "sha512-bD9QQ6uEsDHp6/V7odCkoK53egy0A4LEh++F1VYFt7SWJ5+InkcSLww7ELz2hrNmpmXb+euRrNagL1gorPToSA==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/template-base": "7.4.0",
"@electron-forge/shared-types": "7.5.0",
"@electron-forge/template-base": "7.5.0",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -1246,13 +1243,13 @@
}
},
"node_modules/@electron-forge/template-webpack": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.4.0.tgz",
"integrity": "sha512-W558AEGwQrwEtKIbIJPPs0LIsaC/1Vncj5NgqKehEMJjBb0KQq4hwBu/6dauQrfun4jRCOp7LV+OVrf5XPJ7QA==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.5.0.tgz",
"integrity": "sha512-Il9dO4VMhxibsYTsKRkccWUN3WFg55PEQFL93oarFcEtAT3sjMx/1bZDj/2AIHqbwIf7IrCylPKiPP2uUNOM9Q==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/template-base": "7.4.0",
"@electron-forge/shared-types": "7.5.0",
"@electron-forge/template-base": "7.5.0",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -1260,13 +1257,13 @@
}
},
"node_modules/@electron-forge/template-webpack-typescript": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.4.0.tgz",
"integrity": "sha512-O5gwjNSGFNRdJWyiCtevcOBDPAMhgOPvLORh9qR1GcjyTutWwHWmZzycqH+MmkhpQPgrAYDEeipXcOQhSbzNZA==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.5.0.tgz",
"integrity": "sha512-Q11xAzFxWtES0bwykMd8MAzrVRtmSruXQxQIvqM7Qf3VmU8joq8v5njmn13LeCDkcRGjALiJqO8EsgsW3bttNw==",
"dev": true,
"dependencies": {
"@electron-forge/shared-types": "7.4.0",
"@electron-forge/template-base": "7.4.0",
"@electron-forge/shared-types": "7.5.0",
"@electron-forge/template-base": "7.5.0",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -1344,11 +1341,10 @@
}
},
"node_modules/@electron-forge/tracer": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.4.0.tgz",
"integrity": "sha512-F4jbnDn4yIZjmky1FZ6rgBKTM05AZQQfHkyJW2hdS4pDKJjdKAqWytoZKDi1/S6Cr6tN+DD0TFGD3V0i6HPHYQ==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.5.0.tgz",
"integrity": "sha512-1dE0wKCmv/K3BXCH70o2jp/y2kXgZQm73gIvzyadySXYwu2L4BWxhAO+Q+JsnbUk+nclHEup5ph4D0JoPIWLcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"chrome-trace-event": "^1.0.3"
},
@@ -1357,12 +1353,12 @@
}
},
"node_modules/@electron/asar": {
"version": "3.2.10",
"resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz",
"integrity": "sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==",
"version": "3.2.13",
"resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.13.tgz",
"integrity": "sha512-pY5z2qQSwbFzJsBdgfJIzXf5ElHTVMutC2dxh0FD60njknMu3n1NnTABOcQwbb5/v5soqE79m9UjaJryBf3epg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/glob": "^7.1.0",
"commander": "^5.0.0",
"glob": "^7.1.6",
"minimatch": "^3.0.4"
@@ -1533,13 +1529,12 @@
}
},
"node_modules/@electron/packager": {
"version": "18.3.3",
"resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.3.3.tgz",
"integrity": "sha512-hGXzwbUdxv49XvlYwlVPC6W6j6WaXUAzKkYyyTeiwdhxvHFMfQSEJxVHsQpqMFzZZ7wrr7iqiokOFZ/qkgEzUQ==",
"version": "18.3.5",
"resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.3.5.tgz",
"integrity": "sha512-ClgTxXTt3MesWAcjIxIkgxELjTcllw1FRoVsihP7uT48kpDMqI71p4XvnMWbq8PvU57TcrKICAaLkxRhbc+/wQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"@electron/asar": "^3.2.1",
"@electron/asar": "^3.2.13",
"@electron/get": "^3.0.0",
"@electron/notarize": "^2.1.0",
"@electron/osx-sign": "^1.0.5",
@@ -3228,6 +3223,16 @@
"resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-21.0.0.tgz",
"integrity": "sha512-qVfOiFh0U8ZSkLgA6tf7kj2MciqRbSCWaJZRwftVO7UbtVDNsZAXpWXqvCDtIefvjC83UJB+vHTDOGm5ibXjEA=="
},
"node_modules/@types/appdmg": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/@types/appdmg/-/appdmg-0.5.5.tgz",
"integrity": "sha512-G+n6DgZTZFOteITE30LnWj+HRVIGr7wMlAiLWOO02uJFWVEitaPU9JVXm9wJokkgshBawb2O1OykdcsmkkZfgg==",
"dev": true,
"optional": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/archiver": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.2.tgz",
@@ -3390,7 +3395,6 @@
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
"dev": true,
"optional": true,
"dependencies": {
"@types/minimatch": "*",
"@types/node": "*"
@@ -3512,8 +3516,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
"dev": true,
"optional": true
"dev": true
},
"node_modules/@types/multer": {
"version": "1.4.12",
@@ -4203,7 +4206,6 @@
"resolved": "https://registry.npmjs.org/appdmg/-/appdmg-0.6.6.tgz",
"integrity": "sha512-GRmFKlCG+PWbcYF4LUNonTYmy0GjguDy6Jh9WP8mpd0T6j80XIJyXBiWlD0U+MLNhqV9Nhx49Gl9GpVToulpLg==",
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -4233,7 +4235,6 @@
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
"integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/appdmg/node_modules/path-exists": {
@@ -4241,7 +4242,6 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"license": "MIT",
"optional": true,
"engines": {
"node": ">=8"
@@ -4720,7 +4720,6 @@
"resolved": "https://registry.npmjs.org/base32-encode/-/base32-encode-1.2.0.tgz",
"integrity": "sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"to-data-view": "^1.1.0"
@@ -4966,7 +4965,6 @@
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
"integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"stream-buffers": "~2.2.0"
@@ -5663,10 +5661,9 @@
}
},
"node_modules/codemirror": {
"version": "5.65.17",
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
"integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==",
"license": "MIT"
"version": "5.65.18",
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.18.tgz",
"integrity": "sha512-Gaz4gHnkbHMGgahNt3CA5HBk5lLQBqmD/pBgeB4kQU6OedZmqMBjlRF0LSrp2tJ4wlLNPm2FfaUd1pDy0mdlpA=="
},
"node_modules/color-convert": {
"version": "2.0.1",
@@ -7060,7 +7057,6 @@
"resolved": "https://registry.npmjs.org/ds-store/-/ds-store-0.1.6.tgz",
"integrity": "sha512-kY21M6Lz+76OS3bnCzjdsJSF7LBpLYGCVfavW8TgQD2XkcqIZ86W0y9qUDZu6fp7SIZzqosMDW2zi7zVFfv4hw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"bplist-creator": "~0.0.3",
@@ -7311,21 +7307,21 @@
}
},
"node_modules/electron-installer-dmg": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/electron-installer-dmg/-/electron-installer-dmg-4.0.0.tgz",
"integrity": "sha512-g3W6XnyUa7QGrAF7ViewHdt6bXV2KYU1Pm1CY3pZpp+H6mOjCHHAhf/iZAxtaX1ERCb+SQHz7xSsAHuNH9I8ZQ==",
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/electron-installer-dmg/-/electron-installer-dmg-5.0.1.tgz",
"integrity": "sha512-qOa1aAQdX57C+vzhDk3549dd/PRlNL4F8y736MTD1a43qptD+PvHY97Bo9gSf+OZ8iUWE7BrYSpk/FgLUe40EA==",
"dev": true,
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@types/appdmg": "^0.5.5",
"debug": "^4.3.2",
"minimist": "^1.1.1"
"minimist": "^1.2.7"
},
"bin": {
"electron-installer-dmg": "bin/electron-installer-dmg.js"
"electron-installer-dmg": "dist/electron-installer-dmg-bin.js"
},
"engines": {
"node": ">= 12.13.0"
"node": ">= 16"
},
"optionalDependencies": {
"appdmg": "^0.6.4"
@@ -7616,7 +7612,6 @@
"resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/encodeurl": {
@@ -8815,7 +8810,6 @@
"resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz",
"integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"imul": "^1.0.0"
@@ -8981,7 +8975,6 @@
"resolved": "https://registry.npmjs.org/fs-temp/-/fs-temp-1.2.1.tgz",
"integrity": "sha512-okTwLB7/Qsq82G6iN5zZJFsOfZtx2/pqrA7Hk/9fvy+c+eJS9CvgGXT2uNxwnI14BDY9L/jQPkaBgSvlKfSW9w==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"random-path": "^0.1.0"
@@ -8993,7 +8986,6 @@
"integrity": "sha512-UVqkrEW0GfDabw4C3HOrFlxKfx0eeigfRne69FxSBdHIP8Qt5Sq6Pu3RM9KmMlkygtC4pPKkj5CiPO5USnj2GA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"!win32"
@@ -9091,7 +9083,6 @@
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"is-property": "^1.0.2"
@@ -9102,7 +9093,6 @@
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"is-property": "^1.0.0"
@@ -9725,9 +9715,9 @@
}
},
"node_modules/i18next": {
"version": "23.15.1",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.15.1.tgz",
"integrity": "sha512-wB4abZ3uK7EWodYisHl/asf8UYEhrI/vj/8aoSsrj/ZDxj4/UXPOa1KvFt1Fq5hkUHquNqwFlDprmjZ8iySgYA==",
"version": "23.16.0",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.0.tgz",
"integrity": "sha512-Ni3CG6c14teOogY19YNRl+kYaE/Rb59khy0VyHVn4uOZ97E2E/Yziyi6r3C3s9+wacjdLZiq/LLYyx+Cgd+FCw==",
"funding": [
{
"type": "individual",
@@ -9752,9 +9742,9 @@
"integrity": "sha512-LIwUlkqDZnUI8lnUxBnEj8K/FrHQTT/Sc+1rvDm9E8YvvY5YxzoEAASNx+W5M9DfD5s77lI5vSAFWeTp26B/3Q=="
},
"node_modules/i18next-http-backend": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.6.1.tgz",
"integrity": "sha512-rCilMAnlEQNeKOZY1+x8wLM5IpYOj10guGvEpeC59tNjj6MMreLIjIW8D1RclhD3ifLwn6d/Y9HEM1RUE6DSog==",
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.6.2.tgz",
"integrity": "sha512-Hp/kd8/VuoxIHmxsknJXjkTYYHzivAyAF15pzliKzk2TiXC25rZCEerb1pUFoxz4IVrG3fCvQSY51/Lu4ECV4A==",
"dependencies": {
"cross-fetch": "4.0.0"
}
@@ -10359,7 +10349,6 @@
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz",
"integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==",
"dev": true,
"license": "MIT",
"optional": true,
"bin": {
"image-size": "bin/image-size.js"
@@ -10439,7 +10428,6 @@
"resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz",
"integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==",
"dev": true,
"license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -10647,7 +10635,6 @@
"resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz",
"integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/is-my-json-valid": {
@@ -10655,7 +10642,6 @@
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz",
"integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"generate-function": "^2.0.0",
@@ -10708,7 +10694,6 @@
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/is-stream": {
@@ -10843,9 +10828,9 @@
}
},
"node_modules/jasmine": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.3.0.tgz",
"integrity": "sha512-Vrv5VWTXVZ/5xcNawlYCmE24pOaZu3KduLr9iAaENoMJ8W8Ryvhfpw2cf3rI4Unc2ajvu2t4tCKjS72TnraBGQ==",
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.3.1.tgz",
"integrity": "sha512-3zeUCfr3d1iga3s+NgDpggCP+ex5sdbNgqNn+Tq4yw/QfnwGrWC/ZvXX1IRm5deSIZ1LnvoeGY55F/ztbVOXPQ==",
"dev": true,
"dependencies": {
"glob": "^10.2.2",
@@ -11220,7 +11205,6 @@
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
"integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
"dev": true,
"license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -11698,7 +11682,6 @@
"integrity": "sha512-zIUs3+qpml+w3wiRuADutd7XIO8UABqksot10Utl/tji4UxZzLG4fWDC+yJZoO8/Ehg5RqsvSRE/6TS5AEOeWw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -11920,9 +11903,9 @@
}
},
"node_modules/mermaid": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.2.0.tgz",
"integrity": "sha512-ZinOa063lk81lujX8vkINNqmFaNMk1A95Z4kCL7fE6QLAi01CxeiUJVw+tpXU+lAM73utO39G+2PLjxS2GYS/w==",
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.3.0.tgz",
"integrity": "sha512-fFmf2gRXLtlGzug4wpIGN+rQdZ30M8IZEB1D3eZkXNqC7puhqeURBcD/9tbwXsqBO+A6Nzzo3MSSepmnw5xSeg==",
"dependencies": {
"@braintree/sanitize-url": "^7.0.1",
"@iconify/utils": "^2.1.32",
@@ -11934,7 +11917,7 @@
"d3-sankey": "^0.12.3",
"dagre-d3-es": "7.0.10",
"dayjs": "^1.11.10",
"dompurify": "^3.0.11",
"dompurify": "^3.0.11 <3.1.7",
"katex": "^0.16.9",
"khroma": "^2.1.0",
"lodash-es": "^4.17.21",
@@ -12045,9 +12028,9 @@
}
},
"node_modules/mind-elixir": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/mind-elixir/-/mind-elixir-4.1.1.tgz",
"integrity": "sha512-nLJojevBmkLNQ+bDMqeQWrRhGcCQnhkpjoNkFijzv/HczMkw4vHqqCte/3i3FekghQAtJA8pykLaVG+12NEmYg=="
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/mind-elixir/-/mind-elixir-4.2.0.tgz",
"integrity": "sha512-FBmTri+lfuScRtaBQGh6WNFU1Bbqp2IDq6dF9coxv5aj34wuTsacR8fwyTaK79Wh8A5mUL/D/HO/KvSMBKJBqg=="
},
"node_modules/minimalistic-assert": {
"version": "1.0.1",
@@ -12217,7 +12200,6 @@
"resolved": "https://registry.npmjs.org/murmur-32/-/murmur-32-0.2.0.tgz",
"integrity": "sha512-ZkcWZudylwF+ir3Ld1n7gL6bI2mQAzXvSobPwVtu8aYi2sbXeipeSkdcanRLzIofLcM5F53lGaKm2dk7orBi7Q==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"encode-utf8": "^1.0.3",
@@ -12226,11 +12208,10 @@
}
},
"node_modules/nan": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz",
"integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==",
"version": "2.22.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz",
"integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/nanoid": {
@@ -12456,9 +12437,9 @@
"dev": true
},
"node_modules/nodemon": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz",
"integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==",
"version": "3.1.7",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz",
"integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==",
"dev": true,
"dependencies": {
"chokidar": "^3.5.2",
@@ -12952,7 +12933,6 @@
"resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
"integrity": "sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"color-convert": "~0.5.0"
@@ -13579,7 +13559,6 @@
"resolved": "https://registry.npmjs.org/random-path/-/random-path-0.1.2.tgz",
"integrity": "sha512-4jY0yoEaQ5v9StCl5kZbNIQlg1QheIDBrdkDn53EynpPb9FgO6//p3X/tgMnrC45XN6QZCzU1Xz/+pSSsJBpRw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"base32-encode": "^0.1.0 || ^1.0.0",
@@ -13899,7 +13878,6 @@
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
"dev": true,
"license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10"
@@ -15013,7 +14991,6 @@
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
"integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==",
"dev": true,
"license": "Unlicense",
"optional": true,
"engines": {
"node": ">= 0.10.0"
@@ -15470,7 +15447,6 @@
"resolved": "https://registry.npmjs.org/tn1150/-/tn1150-0.1.0.tgz",
"integrity": "sha512-DbplOfQFkqG5IHcDyyrs/lkvSr3mPUVsFf/RbDppOshs22yTPnSJWEe6FkYd1txAwU/zcnR905ar2fi4kwF29w==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"unorm": "^1.4.1"
@@ -15484,7 +15460,6 @@
"resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz",
"integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/to-regex-range": {
@@ -15791,9 +15766,9 @@
}
},
"node_modules/typescript": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
"integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -15884,7 +15859,6 @@
"resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz",
"integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==",
"dev": true,
"license": "MIT or GPL-2.0",
"optional": true,
"engines": {
"node": ">= 0.4.0"
@@ -15963,9 +15937,9 @@
}
},
"node_modules/uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dependencies": {
"punycode": "^2.1.0"
}
@@ -16177,9 +16151,9 @@
}
},
"node_modules/webpack": {
"version": "5.94.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
"integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"version": "5.95.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz",
"integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==",
"dev": true,
"dependencies": {
"@types/estree": "^1.0.5",

View File

@@ -2,7 +2,7 @@
"name": "trilium",
"productName": "TriliumNext Notes",
"description": "Build your personal knowledge base with TriliumNext Notes",
"version": "0.90.6-beta",
"version": "0.90.8",
"license": "AGPL-3.0-only",
"main": "./dist/electron-main.js",
"author": {
@@ -61,7 +61,7 @@
"boxicons": "2.1.4",
"chokidar": "3.6.0",
"cls-hooked": "4.2.2",
"codemirror": "5.65.17",
"codemirror": "5.65.18",
"compression": "1.7.4",
"cookie-parser": "1.4.6",
"csurf": "1.11.0",
@@ -86,9 +86,9 @@
"html2plaintext": "2.1.4",
"http-proxy-agent": "7.0.2",
"https-proxy-agent": "7.0.5",
"i18next": "23.15.1",
"i18next": "23.16.0",
"i18next-fs-backend": "2.3.2",
"i18next-http-backend": "2.6.1",
"i18next-http-backend": "2.6.2",
"image-type": "4.1.0",
"ini": "5.0.0",
"is-animated": "2.0.2",
@@ -104,9 +104,9 @@
"knockout": "3.5.1",
"mark.js": "8.11.1",
"marked": "14.1.2",
"mermaid": "11.2.0",
"mermaid": "11.3.0",
"mime-types": "2.1.35",
"mind-elixir": "4.1.1",
"mind-elixir": "4.2.0",
"multer": "1.4.5-lts.1",
"node-abi": "3.67.0",
"normalize-strings": "1.1.1",
@@ -138,12 +138,12 @@
"yauzl": "3.1.3"
},
"devDependencies": {
"@electron-forge/cli": "7.4.0",
"@electron-forge/maker-deb": "7.4.0",
"@electron-forge/maker-dmg": "7.4.0",
"@electron-forge/maker-squirrel": "7.4.0",
"@electron-forge/maker-zip": "7.4.0",
"@electron-forge/plugin-auto-unpack-natives": "7.4.0",
"@electron-forge/cli": "7.5.0",
"@electron-forge/maker-deb": "7.5.0",
"@electron-forge/maker-dmg": "7.5.0",
"@electron-forge/maker-squirrel": "7.5.0",
"@electron-forge/maker-zip": "7.5.0",
"@electron-forge/plugin-auto-unpack-natives": "7.5.0",
"@playwright/test": "1.47.1",
"@types/archiver": "6.0.2",
"@types/better-sqlite3": "7.6.11",
@@ -182,17 +182,17 @@
"electron-rebuild": "3.2.9",
"esm": "3.2.25",
"iconsur": "1.7.0",
"jasmine": "5.3.0",
"jasmine": "5.3.1",
"jsdoc": "4.0.3",
"lorem-ipsum": "2.0.8",
"nodemon": "3.1.4",
"nodemon": "3.1.7",
"rcedit": "4.0.1",
"rimraf": "6.0.1",
"ts-node": "10.9.2",
"tslib": "2.7.0",
"tsx": "4.19.1",
"typescript": "5.6.2",
"webpack": "5.94.0",
"typescript": "5.6.3",
"webpack": "5.95.0",
"webpack-cli": "5.1.4"
}
}

View File

@@ -53,6 +53,7 @@ app.use(cookieParser());
app.use(express.static(path.join(scriptDir, 'public/root')));
app.use(`/manifest.webmanifest`, express.static(path.join(scriptDir, 'public/manifest.webmanifest')));
app.use(`/robots.txt`, express.static(path.join(scriptDir, 'public/robots.txt')));
app.use(`/icon.png`, express.static(path.join(scriptDir, 'public/icon.png')));
app.use(sessionParser);
app.use(favicon(`${scriptDir}/../images/app-icons/icon.ico`));

View File

@@ -13,7 +13,7 @@ import MobileScreenSwitcherExecutor from "./mobile_screen_switcher.js";
import MainTreeExecutors from "./main_tree_executors.js";
import toast from "../services/toast.js";
import ShortcutComponent from "./shortcut_component.js";
import { initLocale } from "../services/i18n.js";
import { t, initLocale } from "../services/i18n.js";
class AppContext extends Component {
constructor(isMainWindow) {
@@ -33,11 +33,11 @@ class AppContext extends Component {
await initLocale();
}
setLayout(layout) {
setLayout(layout) {
this.layout = layout;
}
async start() {
async start() {
this.initComponents();
this.renderWidgets();
@@ -151,7 +151,7 @@ $(window).on('beforeunload', () => {
if (!component.beforeUnloadEvent()) {
console.log(`Component ${component.componentId} is not finished saving its state.`);
toast.showMessage("Please wait for a couple of seconds for the save to finish, then you can try again.", 10000);
toast.showMessage(t("app_context.please_wait_for_save"), 10000);
allSaved = false;
}

View File

@@ -62,8 +62,8 @@ export default class TreeContextMenu {
{ title: "----" },
{ title: `${t("tree-context-menu.search-in-subtree")} <kbd data-command="searchInSubtree"></kbd>`, command: "searchInSubtree", uiIcon: "bx bx-search",
enabled: notSearch && noSelectedNotes },
isHoisted ? null : { title: 'Hoist note <kbd data-command="toggleNoteHoisting"></kbd>', command: "toggleNoteHoisting", uiIcon: "bx bx-empty", enabled: noSelectedNotes && notSearch },
!isHoisted || !isNotRoot ? null : { title: 'Unhoist note <kbd data-command="toggleNoteHoisting"></kbd>', command: "toggleNoteHoisting", uiIcon: "bx bx-door-open" },
isHoisted ? null : { title: `${t("tree-context-menu.hoist-note")} <kbd data-command="toggleNoteHoisting"></kbd>`, command: "toggleNoteHoisting", uiIcon: "bx bx-empty", enabled: noSelectedNotes && notSearch },
!isHoisted || !isNotRoot ? null : { title: `${t("tree-context-menu.unhoist-note")} <kbd data-command="toggleNoteHoisting"></kbd>`, command: "toggleNoteHoisting", uiIcon: "bx bx-door-open" },
{ title: `${t("tree-context-menu.edit-branch-prefix")} <kbd data-command="editBranchPrefix"></kbd>`, command: "editBranchPrefix", uiIcon: "bx bx-empty",
enabled: isNotRoot && parentNotSearch && noSelectedNotes && notOptions },
{ title: t("tree-context-menu.advanced"), uiIcon: "bx bx-empty", enabled: true, items: [

View File

@@ -2,8 +2,7 @@ const CKEDITOR = {"js": ["libraries/ckeditor/ckeditor.js"]};
const CODE_MIRROR = {
js: [
"libraries/codemirror/codemirror.js",
// "node_modules/codemirror/lib/codemirror.js",
"node_modules/codemirror/lib/codemirror.js",
"node_modules/codemirror/addon/display/placeholder.js",
"node_modules/codemirror/addon/edit/matchbrackets.js",
"node_modules/codemirror/addon/edit/matchtags.js",

View File

@@ -1,3 +1,4 @@
import { t } from "../services/i18n.js";
import BasicWidget from "./basic_widget.js";
import contextMenu from "../menus/context_menu.js";
import utils from "../services/utils.js";
@@ -37,11 +38,11 @@ const TAB_TPL = `
<div class="note-tab-drag-handle"></div>
<div class="note-tab-icon"></div>
<div class="note-tab-title"></div>
<div class="note-tab-close bx bx-x" title="Close tab" data-trigger-command="closeActiveTab"></div>
<div class="note-tab-close bx bx-x" title="${t('tab_row.close_tab')}" data-trigger-command="closeActiveTab"></div>
</div>
</div>`;
const NEW_TAB_BUTTON_TPL = `<div class="note-new-tab" data-trigger-command="openNewTab" title="Add new tab">+</div>`;
const NEW_TAB_BUTTON_TPL = `<div class="note-new-tab" data-trigger-command="openNewTab" title="${t('tab_row.add_new_tab')}">+</div>`;
const FILLER_TPL = `<div class="tab-row-filler"></div>`;
const TAB_ROW_TPL = `
@@ -258,10 +259,10 @@ export default class TabRowWidget extends BasicWidget {
x: e.pageX,
y: e.pageY,
items: [
{title: "Close", command: "closeTab", uiIcon: "bx bx-x"},
{title: "Close other tabs", command: "closeOtherTabs", uiIcon: "bx bx-x"},
{title: "Close all tabs", command: "closeAllTabs", uiIcon: "bx bx-x"},
{title: "Move this tab to a new window", command: "moveTabToNewWindow", uiIcon: "bx bx-window-open"}
{title: t('tab_row.close'), command: "closeTab", uiIcon: "bx bx-x"},
{title: t('tab_row.close_other_tabs'), command: "closeOtherTabs", uiIcon: "bx bx-x"},
{title: t('tab_row.close_all_tabs'), command: "closeAllTabs", uiIcon: "bx bx-x"},
{title: t('tab_row.move_tab_to_new_window'), command: "moveTabToNewWindow", uiIcon: "bx bx-window-open"}
],
selectMenuItemHandler: ({command}) => {
this.triggerCommand(command, {ntxId});
@@ -387,7 +388,7 @@ export default class TabRowWidget extends BasicWidget {
this.$newTab.before($tab);
this.setVisibility();
this.setTabCloseEvent($tab);
this.updateTitle($tab, 'New tab');
this.updateTitle($tab, t('tab_row.new_tab'));
this.cleanUpPreviouslyDraggedTabs();
this.layoutTabs();
this.setupDraggabilly();
@@ -672,7 +673,7 @@ export default class TabRowWidget extends BasicWidget {
const {note} = noteContext;
if (!note) {
this.updateTitle($tab, 'New tab');
this.updateTitle($tab, t('tab_row.new_tab'));
return;
}

View File

@@ -13,7 +13,7 @@
* to the wrong heading (although what "right" means in those cases is not
* clear), but it won't crash.
*/
import { t } from "../services/i18n.js";
import attributeService from "../services/attributes.js";
import RightPanelWidget from "./right_panel_widget.js";
import options from "../services/options.js";
@@ -55,14 +55,14 @@ const TPL = `<div class="toc-widget">
export default class TocWidget extends RightPanelWidget {
get widgetTitle() {
return "Table of Contents";
return t("toc.table_of_contents");
}
get widgetButtons() {
return [
new OnClickButtonWidget()
.icon("bx-cog")
.title("Options")
.title(t("toc.options"))
.titlePlacement("left")
.onClick(() => appContext.tabManager.openContextWithNote('_optionsTextNotes', {activate: true}))
.class("icon-action"),
@@ -125,18 +125,18 @@ export default class TocWidget extends RightPanelWidget {
*
* @param {string} html Note's html content
* @returns {string} The HTML content with mathematical formulas rendered by KaTeX.
*/
*/
async replaceMathTextWithKatax(html) {
const mathTextRegex = /<span class="math-tex">\\\(([\s\S]*?)\\\)<\/span>/g;
var matches = [...html.matchAll(mathTextRegex)];
let modifiedText = html;
if (matches.length > 0) {
// Process all matches asynchronously
for (const match of matches) {
let latexCode = match[1];
let rendered;
try {
rendered = katex.renderToString(latexCode, {
throwOnError: false
@@ -158,7 +158,7 @@ export default class TocWidget extends RightPanelWidget {
rendered = match[0]; // Fall back to original on error
}
}
// Replace the matched formula in the modified text
modifiedText = modifiedText.replace(match[0], rendered);
}

View File

@@ -1,3 +1,4 @@
import { t } from "../services/i18n.js";
import NoteContextAwareWidget from "./note_context_aware_widget.js";
import server from "../services/server.js";
import fileWatcher from "../services/file_watcher.js";
@@ -11,12 +12,12 @@ const TPL = `
}
</style>
<p>File <code class="file-path"></code> has been last modified on <span class="file-last-modified"></span>.</p>
<p>${t("watched_file_update_status.file_last_modified", { count: '' })}</p>
<div style="display: flex; flex-direction: row; justify-content: space-evenly;">
<button class="btn btn-sm file-upload-button">Upload modified file</button>
<button class="btn btn-sm file-upload-button">${t("watched_file_update_status.upload_modified_file")}</button>
<button class="btn btn-sm ignore-this-change-button">Ignore this change</button>
<button class="btn btn-sm ignore-this-change-button">${t("watched_file_update_status.ignore_this_change")}</button>
</div>
</div>`;

BIN
src/public/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -9,9 +9,9 @@
"start_url": "/",
"icons": [
{
"src": "favicon.ico",
"sizes": "180x180 512x512",
"type": "image/x-icon"
"src": "icon.png",
"sizes": "512x512",
"type": "image/png"
}
]
}

View File

@@ -15,6 +15,10 @@
src: url(../fonts/JetBrainsMono-Light.woff2) format('woff');
}
.table {
--bs-table-bg: transparent !important;
}
html {
/* this fixes FF filter vs. position fixed bug: https://github.com/zadam/trilium/issues/233 */
height: 100%;
@@ -32,6 +36,10 @@ body {
font-size: var(--main-font-size);
}
a {
text-decoration: none;
}
a, a:visited, a:hover {
color: var(--link-color);
}
@@ -728,6 +736,10 @@ div[data-notify="container"] {
margin: 0 !important;
}
.ck-content a:hover {
text-decoration: underline;
}
#options-dialog input[type=number] {
text-align: right;
}

View File

@@ -247,6 +247,9 @@
"revisions_deleted": "笔记历史版本已删除。",
"revision_restored": "笔记历史版本已恢复。",
"revision_deleted": "笔记历史版本已删除。",
"snapshot_interval": "笔记快照保存间隔: {{seconds}}秒。",
"maximum_revisions": "当前笔记的最历史数量: {{number}}。",
"settings": "笔记历史设置",
"download_button": "下载",
"mime": "MIME类型",
"file_size": "文件大小:",
@@ -1090,6 +1093,13 @@
"note_revisions_snapshot_description": "笔记修改快照时间间隔是指经过多少秒后会为笔记创建新的修改历史。更多信息请参见<a href=\"https://triliumnext.github.io/Docs/Wiki/note-revisions.html\" class=\"external\">wiki</a>。",
"snapshot_time_interval_label": "笔记修改快照时间间隔(单位:秒)"
},
"revisions_snapshot_limit": {
"note_revisions_snapshot_limit_title": "笔记历史快照限制",
"note_revisions_snapshot_limit_description": "笔记历史快照数限制指的是每个笔记可以保存的最大历史记录数量。其中 -1 表示没有限制0 表示删除所有历史记录。你可以通过 #versioningLimit 标签设置单个笔记的最大历史记录数量。",
"snapshot_number_limit_label": "笔记历史快照数量限制:",
"erase_excess_revision_snapshots": "立即删除多余的历史快照",
"erase_excess_revision_snapshots_prompt": "多余的历史快照已被删除。"
},
"search_engine": {
"title": "搜索引擎",
"custom_search_engine_info": "自定义搜索引擎需要设置名称和URL。如果这两者之一未设置将默认使用DuckDuckGo作为搜索引擎。",
@@ -1280,6 +1290,8 @@
"insert-child-note": "插入子笔记",
"delete": "删除",
"search-in-subtree": "在子树中搜索",
"hoist-note": "提升笔记",
"unhoist-note": "取消提升笔记",
"edit-branch-prefix": "编辑分支前缀",
"advanced": "高级",
"expand-subtree": "展开子树",
@@ -1391,5 +1403,26 @@
},
"sql_table_schemas": {
"tables": "表"
},
"tab_row": {
"close_tab": "关闭标签页",
"add_new_tab": "添加新标签页",
"close": "关闭",
"close_other_tabs": "关闭其他标签页",
"close_all_tabs": "关闭所有标签页",
"move_tab_to_new_window": "将此标签页移动到新窗口",
"new_tab": "新标签页"
},
"toc": {
"table_of_contents": "目录",
"options": "选项"
},
"watched_file_update_status": {
"file_last_modified": "文件 <code class=\"file-path\"></code> 最后修改时间为 <span class=\"file-last-modified\"></span>。",
"upload_modified_file": "上传修改的文件",
"ignore_this_change": "忽略此更改"
},
"app_context": {
"please_wait_for_save": "请等待几秒钟以完成保存,然后您可以尝试再操作一次。"
}
}

View File

@@ -247,9 +247,9 @@
"revisions_deleted": "Note revisions has been deleted.",
"revision_restored": "Note revision has been restored.",
"revision_deleted": "Note revision has been deleted.",
"snapshot_interval":"Note Revisions Snapshot Interval: {{seconds}}s.",
"maximum_revisions":"Maximum revisions for current note: {{number}}.",
"settings":"Settings for Note revisions.",
"snapshot_interval": "Note Revisions Snapshot Interval: {{seconds}}s.",
"maximum_revisions": "Maximum revisions for current note: {{number}}.",
"settings": "Settings for Note revisions",
"download_button": "Download",
"mime": "MIME: ",
"file_size": "File size:",
@@ -1290,6 +1290,8 @@
"insert-child-note": "Insert child note",
"delete": "Delete",
"search-in-subtree": "Search in subtree",
"hoist-note": "Hoist note",
"unhoist-note": "Unhoist note",
"edit-branch-prefix": "Edit branch prefix",
"advanced": "Advanced",
"expand-subtree": "Expand subtree",
@@ -1327,7 +1329,7 @@
"mermaid-diagram": "Mermaid Diagram",
"canvas": "Canvas",
"web-view": "Web View",
"mind-map": "Mind Map",
"mind-map": "Mind Map (Beta)",
"file": "File",
"image": "Image",
"launcher": "Launcher",
@@ -1401,5 +1403,26 @@
},
"sql_table_schemas": {
"tables": "Tables"
},
"tab_row": {
"close_tab": "Close tab",
"add_new_tab": "Add new tab",
"close": "Close",
"close_other_tabs": "Close other tabs",
"close_all_tabs": "Close all tabs",
"move_tab_to_new_window": "Move this tab to a new window",
"new_tab": "New tab"
},
"toc": {
"table_of_contents": "Table of Contents",
"options": "Options"
},
"watched_file_update_status": {
"file_last_modified": "File <code class=\"file-path\"></code> has been last modified on <span class=\"file-last-modified\"></span>.",
"upload_modified_file": "Upload modified file",
"ignore_this_change": "Ignore this change"
},
"app_context": {
"please_wait_for_save": "Please wait for a couple of seconds for the save to finish, then you can try again."
}
}

View File

@@ -247,6 +247,9 @@
"revisions_deleted": "Se han eliminado las revisiones de nota.",
"revision_restored": "Se ha restaurado la revisión de nota.",
"revision_deleted": "Se ha eliminado la revisión de la nota.",
"snapshot_interval": "Intervalo de respaldo de revisiones de nota: {{seconds}}s.",
"maximum_revisions": "Máximo de revisiones para la nota actual: {{number}}.",
"settings": "Ajustes para revisiones de nota",
"download_button": "Descargar",
"mime": "MIME: ",
"file_size": "Tamaño del archivo:",
@@ -344,13 +347,13 @@
"widget": "marca esta nota como un widget personalizado que se agregará al árbol de componentes de Trilium",
"workspace": "marca esta nota como un espacio de trabajo que permite un fácil levantamiento",
"workspace_icon_class": "define la clase CSS del ícono de cuadro que se usará en la pestaña cuando se levante a esta nota",
"workspace_tab_background_color": "color CSS utilizado en la pestaña de nota cuando se eleva a esta nota",
"workspace_tab_background_color": "color CSS utilizado en la pestaña de nota cuando se ancla a esta nota",
"workspace_calendar_root": "Define la raíz del calendario por cada espacio de trabajo",
"workspace_template": "Esta nota aparecerá en la selección de plantillas disponibles al crear una nueva nota, pero solo cuando se levante a un espacio de trabajo que contenga esta plantilla",
"search_home": "se crearán nuevas notas de búsqueda como hijas de esta nota",
"workspace_search_home": "se crearán nuevas notas de búsqueda como hijo de esta nota cuando se elevan a algún antecesor de esta nota del espacio de trabajo",
"workspace_search_home": "se crearán nuevas notas de búsqueda como hijo de esta nota cuando se anclan a algún antecesor de esta nota del espacio de trabajo",
"inbox": "ubicación predeterminada de la bandeja de entrada para nuevas notas - cuando crea una nota usando el botón \"nueva nota\" en la barra lateral, las notas serán creadas como notas hijo de la nota marcada con la etiqueta <code>#inbox</code>.",
"workspace_inbox": "ubicación predeterminada de la bandeja de entrada para nuevas notas cuando se elevan a algún antecesor de esta nota del espacio de trabajo",
"workspace_inbox": "ubicación predeterminada de la bandeja de entrada para nuevas notas cuando se anclan a algún antecesor de esta nota del espacio de trabajo",
"sql_console_home": "ubicación predeterminada de las notas de la consola SQL",
"bookmark_folder": "la nota con esta etiqueta aparecerá en los marcadores como carpeta (permitiendo el acceso a sus elementos hijos).",
"share_hidden_from_tree": "esta nota está oculta en el árbol de navegación izquierdo, pero aún se puede acceder a ella con su URL",
@@ -370,7 +373,7 @@
"toc": "<code>#toc</code> o <code>#toc=show</code> forzará que se muestre la tabla de contenido, <code>#toc=hide</code> forzará a ocultarla. Si la etiqueta no existe, se observa la configuración global",
"color": "define el color de la nota en el árbol de notas, enlaces, etc. Utilice cualquier valor de color CSS válido como 'red' o #a13d5f",
"keyboard_shortcut": "Define un atajo de teclado que saltará inmediatamente a esta nota. Ejemplo: 'ctrl+alt+e'. Es necesario recargar la interfaz para que el cambio surta efecto.",
"keep_current_hoisting": "Abrir este enlace no cambiará la elevación incluso si la nota no se puede mostrar en el subárbol elevado actual.",
"keep_current_hoisting": "Abrir este enlace no cambiará el anclaje incluso si la nota no se puede mostrar en el subárbol anclado actualmente.",
"execute_button": "Título del botón que ejecutará la nota de código actual",
"execute_description": "Descripción más larga de la nota de código actual que se muestra junto con el botón de ejecución",
"exclude_from_note_map": "Las notas con esta etiqueta se ocultarán del Mapa de notas",
@@ -759,7 +762,7 @@
"clone_button": "Clonar nota a nueva ubicación...",
"intro_placed": "Esta nota está colocada en las siguientes rutas:",
"intro_not_placed": "Esta nota aún no se ha colocado en el árbol de notas.",
"outside_hoisted": "Esta ruta está fuera de la nota elevada y habría que bajarla.",
"outside_hoisted": "Esta ruta está fuera de la nota anclada y habría que bajarla.",
"archived": "Archivado",
"search": "Buscar"
},
@@ -1090,6 +1093,13 @@
"note_revisions_snapshot_description": "El intervalo de tiempo de la instantánea de revisión de nota es el tiempo en segundos después de lo cual se creará una nueva revisión para la nota. Ver <a href=\"https://triliumnext.github.io/docs/wiki/note-revisions.html\" class=\"external\"> wiki </a> para obtener más información.",
"snapshot_time_interval_label": "Intervalo de tiempo de la instantánea de revisión de notas (en segundos)"
},
"revisions_snapshot_limit": {
"note_revisions_snapshot_limit_title": "Límite de respaldos de revisiones de nota",
"note_revisions_snapshot_limit_description": "El límite de número de respaldos de revisiones de notas se refiere al número máximo de revisiones que pueden guardarse para cada nota. Donde -1 significa sin límite, 0 significa borrar todas las revisiones. Puede establecer el máximo de revisiones para una sola nota a través de la etiqueta #versioningLimit.",
"snapshot_number_limit_label": "Número límite de respaldos de revisiones de nota:",
"erase_excess_revision_snapshots": "Eliminar el exceso de respaldos de revisiones ahora",
"erase_excess_revision_snapshots_prompt": "El exceso de respaldos de revisiones han sido eliminadas."
},
"search_engine": {
"title": "Motor de búsqueda",
"custom_search_engine_info": "El motor de búsqueda personalizado requiere que se establezcan un nombre y una URL. Si alguno de estos no está configurado, DuckDuckGo se utilizará como motor de búsqueda predeterminado.",
@@ -1189,7 +1199,7 @@
"password": {
"heading": "Contraseña",
"alert_message": "Tenga cuidado de recordar su nueva contraseña. La contraseña se utiliza para iniciar sesión en la interfaz web y cifrar las notas protegidas. Si olvida su contraseña, todas sus notas protegidas se perderán para siempre.",
"reset_link": "haga clic aquí para restablecerla.",
"reset_link": " clic aquí para restablecerla.",
"old_password": "Contraseña anterior",
"new_password": "Nueva contraseña",
"new_password_confirmation": "Confirmación de nueva contraseña",
@@ -1280,6 +1290,8 @@
"insert-child-note": "Insertar nota hijo",
"delete": "Eliminar",
"search-in-subtree": "Buscar en subárbol",
"hoist-note": "Anclar nota",
"unhoist-note": "Desanclar nota",
"edit-branch-prefix": "Editar prefijo de rama",
"advanced": "Avanzado",
"expand-subtree": "Expandir subárbol",
@@ -1317,7 +1329,7 @@
"mermaid-diagram": "Diagrama Mermaid",
"canvas": "Lienzo",
"web-view": "Vista Web",
"mind-map": "Mapa Mental",
"mind-map": "Mapa Mental (beta)",
"file": "Archivo",
"image": "Imagen",
"launcher": "Lanzador",
@@ -1391,5 +1403,26 @@
},
"sql_table_schemas": {
"tables": "Tablas"
},
"tab_row": {
"close_tab": "Cerrar pestaña",
"add_new_tab": "Agregar nueva pestaña",
"close": "Cerrar",
"close_other_tabs": "Cerrar otras pestañas",
"close_all_tabs": "Cerras todas las pestañas",
"move_tab_to_new_window": "Mover esta pestaña a una nueva ventana",
"new_tab": "Nueva pestaña"
},
"toc": {
"table_of_contents": "Tabla de contenido",
"options": "Opciones"
},
"watched_file_update_status": {
"file_last_modified": "Archivo <code class=\"file-path\"></code> ha sido modificado por última vez en<span class=\"file-last-modified\"></span>.",
"upload_modified_file": "Subir archivo modificado",
"ignore_this_change": "Ignorar este cambio"
},
"app_context": {
"please_wait_for_save": "Por favor espere algunos segundos a que se termine de guardar, después intente de nuevo."
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -998,7 +998,10 @@
"revision_deleted": "Revizia notiței a fost ștearsă.",
"revision_last_edited": "Revizia a fost ultima oară modificată pe {{date}}",
"revision_restored": "Revizia notiței a fost restaurată.",
"revisions_deleted": "Notița reviziei a fost ștearsă."
"revisions_deleted": "Notița reviziei a fost ștearsă.",
"maximum_revisions": "Numărul maxim de revizii pentru notița curentă: {{number}}.",
"settings": "Setări revizii ale notițelor",
"snapshot_interval": "Intervalul de creare a reviziilor pentru notițe: {{seconds}}s."
},
"revisions_button": {
"note_revisions": "Revizii ale notiței"
@@ -1276,7 +1279,9 @@
"recent-changes-in-subtree": "Schimbări recente în ierarhie",
"search-in-subtree": "Caută în ierarhie",
"sort-by": "Ordonare după...",
"unprotect-subtree": "Deprotejează ierarhia"
"unprotect-subtree": "Deprotejează ierarhia",
"hoist-note": "Focalizează notița",
"unhoist-note": "Defocalizează notița"
},
"shared_info": {
"help_link": "Pentru informații vizitați <a href=\"https://triliumnext.github.io/Docs/Wiki/sharing.html\">wiki-ul</a>.",
@@ -1288,7 +1293,7 @@
"canvas": "Schiță",
"code": "Cod sursă",
"mermaid-diagram": "Diagramă Mermaid",
"mind-map": "Hartă mentală",
"mind-map": "Hartă mentală (beta)",
"note-map": "Hartă notițe",
"relation-map": "Hartă relații",
"render-note": "Randare notiță",
@@ -1369,5 +1374,55 @@
},
"title_bar_buttons": {
"window-on-top": "Menține fereastra mereu vizibilă"
},
"note_detail": {
"could_not_find_typewidget": "Nu s-a putut găsi widget-ul corespunzător tipului „{{type}}”"
},
"note_title": {
"placeholder": "introduceți titlul notiței aici..."
},
"revisions_snapshot_limit": {
"erase_excess_revision_snapshots": "Șterge acum reviziile excesive",
"erase_excess_revision_snapshots_prompt": "Reviziile excesive au fost șterse.",
"note_revisions_snapshot_limit_description": "Limita numărului de revizii se referă la numărul maxim de revizii pentru fiecare notiță. -1 reprezintă nicio limită, 0 înseamnă ștergerea tuturor reviziilor. Se poate seta valoarea individual pentru o notiță prin eticheta #versioningLimit.",
"note_revisions_snapshot_limit_title": "Limita de revizii a notițelor",
"snapshot_number_limit_label": "Numărul maxim de revizii pentru notițe:"
},
"search_result": {
"no_notes_found": "Nu au fost găsite notițe pentru parametrii de căutare dați.",
"search_not_executed": "Căutarea n-a fost rulată încă. Clic pe butonul „Căutare” de deasupra pentru a vedea rezultatele."
},
"show_floating_buttons_button": {
"button_title": "Afișează butoanele"
},
"spacer": {
"configure_launchbar": "Configurează bara de lansare"
},
"sql_result": {
"no_rows": "Nu s-a găsit niciun rând pentru această interogare"
},
"sql_table_schemas": {
"tables": "Tabele"
},
"app_context": {
"please_wait_for_save": "Așteptați câteva secunde până se salvează toate datele și apoi reîncercați."
},
"tab_row": {
"add_new_tab": "Adaugă tab nou",
"close": "Închide",
"close_all_tabs": "Închide toate taburile",
"close_other_tabs": "Închide celelalte taburi",
"close_tab": "Închide tab",
"move_tab_to_new_window": "Mută acest tab în altă fereastră",
"new_tab": "Tab nou"
},
"toc": {
"options": "Setări",
"table_of_contents": "Cuprins"
},
"watched_file_update_status": {
"file_last_modified": "Fișierul <code class=\"file-path\"></code> a fost ultima oară modificat la data de <span class=\"file-last-modified\"></span>.",
"ignore_this_change": "Ignoră această schimbare",
"upload_modified_file": "Încarcă fișier modificat"
}
}

View File

@@ -143,6 +143,10 @@ function getSupportedLocales() {
"id": "es",
"name": "Español"
},
{
"id": "fr",
"name": "Français"
},
{
"id": "cn",
"name": "简体中文"

View File

@@ -2,23 +2,37 @@ import i18next from "i18next";
import Backend from "i18next-fs-backend";
import options from "./options.js";
import sql_init from "./sql_init.js";
import { fileURLToPath } from "url";
import { dirname, join } from "path";
import utils from "./utils.js";
import env from "./env.js";
export async function initializeTranslations() {
const resourceDir = getResourceDir();
// Initialize translations
await i18next.use(Backend).init({
lng: await getCurrentLanguage(),
lng: getCurrentLanguage(),
fallbackLng: "en",
ns: "server",
backend: {
loadPath: "translations/{{lng}}/{{ns}}.json"
loadPath: join(resourceDir, "translations/{{lng}}/{{ns}}.json")
}
});
}
function getResourceDir() {
if (utils.isElectron() && !env.isDev()) {
return process.resourcesPath;
} else {
return join(dirname(fileURLToPath(import.meta.url)), "..", "..");
}
}
function getCurrentLanguage() {
let language;
if (sql_init.isDbInitialized()) {
language = options.getOption("locale");
language = options.getOptionOrNull("locale");
}
if (!language) {

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,15 @@ export interface KeyboardShortcut {
description?: string;
defaultShortcuts?: string[];
effectiveShortcuts?: string[];
scope?: string;
/**
* Scope here means on which element the keyboard shortcuts are attached - this means that for the shortcut to work,
* the focus has to be inside the element.
*
* So e.g. shortcuts with "note-tree" scope work only when the focus is in note tree.
* This allows to have the same shortcut have different actions attached based on the context
* e.g. CTRL-C in note tree does something a bit different from CTRL-C in the text editor.
*/
scope?: "window" | "note-tree" | "text-detail" | "code-detail";
}
export interface KeyboardShortcutWithRequiredActionName extends KeyboardShortcut {

View File

@@ -126,7 +126,7 @@ function initStartupOptions() {
}
function getKeyboardDefaultOptions() {
return (keyboardActions.DEFAULT_KEYBOARD_ACTIONS
return (keyboardActions.getDefaultKeyboardActions()
.filter(ka => !!ka.actionName) as KeyboardShortcutWithRequiredActionName[])
.map(ka => ({
name: `keyboardShortcuts${ka.actionName.charAt(0).toUpperCase()}${ka.actionName.slice(1)}`,

View File

@@ -4,4 +4,4 @@
[ ! -z "${USER_GID}" ] && groupmod -og ${USER_GID} node || echo "No USER_GID specified, leaving 1000"
chown -R node:node /home/node
exec su -c "node ./src/www" node
exec su -c "node ./src/main" node

View File

@@ -1 +1,161 @@
{}
{
"keyboard_actions": {
"open-jump-to-note-dialog": "Abrir cuadro de diálogo \"Saltar a nota\"",
"search-in-subtree": "Buscar notas en el subárbol de la nota activa",
"expand-subtree": "Expandir el subárbol de la nota actual",
"collapse-tree": "Colapsa el árbol de notas completo",
"collapse-subtree": "Colapsa el subárbol de la nota actual",
"sort-child-notes": "Ordenar notas hijas",
"creating-and-moving-notes": "Creando y moviendo notas",
"create-note-into-inbox": "Crear una nota en la bandeja de entrada (si está definida) o nota del día",
"delete-note": "Eliminar nota",
"move-note-up": "Mover nota hacia arriba",
"move-note-down": "Mover nota hacia abajo",
"move-note-up-in-hierarchy": "Mover nota hacia arriba en la jerarquía",
"move-note-down-in-hierarchy": "Mover nota hacia abajo en la jerarquía",
"edit-note-title": "Saltar del árbol al detalle de la nota y editar el título",
"edit-branch-prefix": "Mostrar cuadro de diálogo Editar prefijo de rama",
"note-clipboard": "Portapapeles de notas",
"copy-notes-to-clipboard": "Copiar las notas seleccionadas al portapapeles",
"paste-notes-from-clipboard": "Pegar las notas del portapapeles en una nota activa",
"cut-notes-to-clipboard": "Cortar las notas seleccionadas al portapapeles",
"select-all-notes-in-parent": "Seleccionar todas las notas del nivel de la nota actual",
"add-note-above-to-the-selection": "Agregar nota arriba de la selección",
"add-note-below-to-selection": "Agregar nota arriba de la selección",
"duplicate-subtree": "Duplicar subárbol",
"tabs-and-windows": "Pestañas y ventanas",
"open-new-tab": "Abre una nueva pestaña",
"close-active-tab": "Cierra la pestaña activa",
"reopen-last-tab": "Vuelve a abrir la última pestaña cerrada",
"activate-next-tab": "Activa la pestaña de la derecha",
"activate-previous-tab": "Activa la pestaña de la izquierda",
"open-new-window": "Abrir nueva ventana vacía",
"toggle-tray": "Muestra/Oculta la aplicación en la bandeja del sistema",
"first-tab": "Activa la primera pestaña de la lista",
"second-tab": "Activa la segunda pestaña de la lista",
"third-tab": "Activa la tercera pestaña de la lista",
"fourth-tab": "Activa la cuarta pestaña de la lista",
"fifth-tab": "Activa la quinta pestaña de la lista",
"sixth-tab": "Activa la sexta pestaña de la lista",
"seventh-tab": "Activa la séptima pestaña de la lista",
"eight-tab": "Activa la octava pestaña de la lista",
"ninth-tab": "Activa la novena pestaña de la lista",
"last-tab": "Activa la última pestaña de la lista",
"dialogs": "Diálogos",
"show-note-source": "Muestra el cuadro de diálogo Fuente de nota",
"show-options": "Muestra el cuadro de diálogo Opciones",
"show-revisions": "Muestra el cuadro de diálogo Revisiones de notas",
"show-recent-changes": "Muestra el cuadro de diálogo Cambios recientes",
"show-sql-console": "Muestra el cuadro de diálogo Consola SQL",
"show-backend-log": "Muestra el cuadro de diálogo Registro de backend",
"text-note-operations": "Operaciones de notas de texto",
"add-link-to-text": "Abrir cuadro de diálogo para agregar un enlace al texto",
"follow-link-under-cursor": "Seguir el enlace dentro del cual se coloca el cursor",
"insert-date-and-time-to-text": "Insertar fecha y hora actuales en el texto",
"paste-markdown-into-text": "Pega Markdown del portapapeles en la nota de texto",
"cut-into-note": "Corta la selección de la nota actual y crea una subnota con el texto seleccionado",
"add-include-note-to-text": "Abre el cuadro de diálogo para incluir una nota",
"edit-readonly-note": "Editar una nota de sólo lectura",
"attributes-labels-and-relations": "Atributos (etiquetas y relaciones)",
"add-new-label": "Crear nueva etiqueta",
"create-new-relation": "Crear nueva relación",
"ribbon-tabs": "Pestañas de cinta",
"toggle-basic-properties": "Alternar propiedades básicas",
"toggle-file-properties": "Alternar propiedades de archivo",
"toggle-image-properties": "Alternar propiedades de imagen",
"toggle-owned-attributes": "Alternar atributos de propiedad",
"toggle-inherited-attributes": "Alternar atributos heredados",
"toggle-promoted-attributes": "Alternar atributos promocionados",
"toggle-link-map": "Alternar mapa de enlaces",
"toggle-note-info": "Alternar información de nota",
"toggle-note-paths": "Alternar rutas de notas",
"toggle-similar-notes": "Alternar notas similares",
"other": "Otro",
"toggle-right-pane": "Alternar la visualización del panel derecho, que incluye la tabla de contenidos y aspectos destacados",
"print-active-note": "Imprimir nota activa",
"open-note-externally": "Abrir nota como un archivo con la aplicación predeterminada",
"render-active-note": "Renderizar (volver a renderizar) nota activa",
"run-active-note": "Ejecutar nota de código JavaScript activa (frontend/backend)",
"toggle-note-hoisting": "Alterna la elevación de la nota activa",
"unhoist": "Bajar desde cualquier lugar",
"reload-frontend-app": "Recargar frontend de la aplicación",
"open-dev-tools": "Abrir herramientas de desarrollo",
"toggle-left-note-tree-panel": "Alternar panel izquierdo (árbol de notas)",
"toggle-full-screen": "Alternar pantalla completa",
"zoom-out": "Alejar",
"zoom-in": "Acercar",
"note-navigation": "Navegación de notas",
"reset-zoom-level": "Restablecer nivel de zoom",
"copy-without-formatting": "Copiar el texto seleccionado sin formatear",
"force-save-revision": "Forzar la creación/guardado de una nueva revisión de nota de la nota activa",
"show-help": "Muestra ayuda/hoja de referencia integrada",
"toggle-book-properties": "Alternar propiedades del libro"
},
"login": {
"title": "Iniciar sesión",
"heading": "Iniciar sesión en Trillium",
"incorrect-password": "La contraseña es incorrecta. Por favor inténtalo de nuevo.",
"password": "Contraseña",
"remember-me": "Recordarme",
"button": "Iniciar sesión"
},
"set_password": {
"heading": "Establecer contraseña",
"description": "Antes de poder comenzar a usar Trilium desde la web, primero debe establecer una contraseña. Luego utilizará esta contraseña para iniciar sesión.",
"password": "Contraseña",
"password-confirmation": "Confirmación de contraseña",
"button": "Establecer contraseña"
},
"javascript-required": "Trilium requiere que JavaScript esté habilitado.",
"setup": {
"heading": "Configuración de TrilliumNext Notes",
"new-document": "Soy un usuario nuevo y quiero crear un nuevo documento de Trilium para mis notas",
"sync-from-desktop": "Ya tengo una instancia de escritorio y quiero configurar la sincronización con ella",
"sync-from-server": "Ya tengo una instancia de servidor y quiero configurar la sincronización con ella",
"next": "Siguiente",
"init-in-progress": "Inicialización del documento en curso",
"redirecting": "En breve será redirigido a la aplicación.",
"title": "Configuración"
},
"setup_sync-from-desktop": {
"heading": "Sincronizar desde el escritorio",
"description": "Esta configuración debe iniciarse desde la instancia de escritorio:",
"step1": "Abra su instancia de escritorio de TriliumNext Notes.",
"step2": "En el menú Trilium, dé clic en Opciones.",
"step3": "Dé clic en la categoría Sincronizar.",
"step4": "Cambie la dirección de la instancia del servidor a: {{- host}} y dé clic en Guardar.",
"step5": "Dé clic en el botón \"Probar sincronización\" para verificar que la conexión fue exitosa.",
"step6": "Una vez que haya completado estos pasos, dé clic en {{- link}}.",
"step6-here": "aquí"
},
"setup_sync-from-server": {
"heading": "Sincronización desde el servidor",
"instructions": "Por favor, ingrese la dirección y las credenciales del servidor Trilium a continuación. Esto descargará todo el documento de Trilium desde el servidor y configurará la sincronización. Dependiendo del tamaño del documento y de la velocidad de su conexión, esto puede tardar un poco.",
"server-host": "Dirección del servidor Trilium",
"server-host-placeholder": "https://<hostname>:<port>",
"proxy-server": "Servidor proxy (opcional)",
"proxy-server-placeholder": "https://<hostname>:<port>",
"note": "Nota:",
"proxy-instruction": "Si deja la configuración de proxy en blanco, se utilizará el proxy del sistema (aplica únicamente a la aplicación de escritorio)",
"password": "Contraseña",
"password-placeholder": "Contraseña",
"back": "Atrás",
"finish-setup": "Finalizar la configuración"
},
"setup_sync-in-progress": {
"heading": "Sincronización en progreso",
"successful": "La sincronización se ha configurado correctamente. La sincronización inicial tardará algún tiempo en finalizar. Una vez hecho esto, será redirigido a la página de inicio de sesión.",
"outstanding-items": "Elementos de sincronización destacados:",
"outstanding-items-default": "N/A"
},
"share_404": {
"title": "No encontrado",
"heading": "No encontrado"
},
"share_page": {
"parent": "padre:",
"clipped-from": "Esta nota fue recortada originalmente de {{- url}}",
"child-notes": "Notas hijo:",
"no-content": "Esta nota no tiene contenido."
}
}

161
translations/fr/server.json Normal file
View File

@@ -0,0 +1,161 @@
{
"keyboard_actions": {
"open-jump-to-note-dialog": "Ouvrir la boîte de dialogue \"Aller à la note\"",
"search-in-subtree": "Rechercher des notes dans les sous-arbres de la note active",
"expand-subtree": "Développer le sous-arbre de la note actuelle",
"collapse-tree": "Réduire toute l'arborescence des notes",
"collapse-subtree": "Réduire le sous-arbre de la note actuelle",
"sort-child-notes": "Trier les notes enfants",
"creating-and-moving-notes": "Créer et déplacer des notes",
"create-note-into-inbox": "Créer une note dans l'emplacement par défaut (si défini) ou une note journalière",
"delete-note": "Supprimer la note",
"move-note-up": "Déplacer la note vers le haut",
"move-note-down": "Déplacer la note vers le bas",
"move-note-up-in-hierarchy": "Déplacer la note vers le haut dans la hiérarchie",
"move-note-down-in-hierarchy": "Déplacer la note vers le bas dans la hiérarchie",
"edit-note-title": "Passer de l'arborescence aux détails d'une note et éditer le titre",
"edit-branch-prefix": "Afficher la fenêtre Éditer le préfixe de branche",
"note-clipboard": "Note presse-papiers",
"copy-notes-to-clipboard": "Copier les notes sélectionnées dans le presse-papiers",
"paste-notes-from-clipboard": "Coller les notes depuis le presse-papiers dans la note active",
"cut-notes-to-clipboard": "Couper les notes sélectionnées dans le presse-papiers",
"select-all-notes-in-parent": "Sélectionner toutes les notes du niveau de la note active",
"add-note-above-to-the-selection": "Ajouter la note au-dessus de la sélection",
"add-note-below-to-selection": "Ajouter la note en dessous de la sélection",
"duplicate-subtree": "Dupliquer le sous-arbre",
"tabs-and-windows": "Onglets et fenêtres",
"open-new-tab": "Ouvrir un nouvel onglet",
"close-active-tab": "Fermer l'onglet actif",
"reopen-last-tab": "Rouvrir le dernier onglet fermé",
"activate-next-tab": "Basculer vers l'onglet à droite de l'onglet actif",
"activate-previous-tab": "Basculer vers l'onglet à gauche de l'onglet actif",
"open-new-window": "Ouvrir une nouvelle fenêtre vide",
"toggle-tray": "Afficher/masquer l'application dans la barre des tâches",
"first-tab": "Basculer vers le premier onglet dans la liste",
"second-tab": "Basculer vers le deuxième onglet dans la liste",
"third-tab": "Basculer vers le troisième onglet dans la liste",
"fourth-tab": "Basculer vers le quatrième onglet dans la liste",
"fifth-tab": "Basculer vers le cinquième onglet dans la liste",
"sixth-tab": "Basculer vers le sixième onglet dans la liste",
"seventh-tab": "Basculer vers le septième onglet dans la liste",
"eight-tab": "Basculer vers le huitième onglet dans la liste",
"ninth-tab": "Basculer vers le neuvième onglet dans la liste",
"last-tab": "Basculer vers le dernier onglet dans la liste",
"dialogs": "Boîtes de dialogue",
"show-note-source": "Affiche la boîte de dialogue Source de la note",
"show-options": "Afficher les Options",
"show-revisions": "Afficher la boîte de dialogue Versions de la note",
"show-recent-changes": "Afficher la boîte de dialogue Modifications récentes",
"show-sql-console": "Afficher la boîte de dialogue Console SQL",
"show-backend-log": "Afficher la boîte de dialogue Journal du backend",
"text-note-operations": "Opérations sur les notes textuelles",
"add-link-to-text": "Ouvrir la boîte de dialogue pour ajouter un lien dans le texte",
"follow-link-under-cursor": "Suivre le lien sous le curseur",
"insert-date-and-time-to-text": "Insérer la date et l'heure dans le texte",
"paste-markdown-into-text": "Coller du texte au format Markdown dans la note depuis le presse-papiers",
"cut-into-note": "Couper la sélection depuis la note actuelle et créer une sous-note avec le texte sélectionné",
"add-include-note-to-text": "Ouvrir la boîte de dialogue pour Inclure une note",
"edit-readonly-note": "Éditer une note en lecture seule",
"attributes-labels-and-relations": "Attributs (labels et relations)",
"add-new-label": "Créer un nouveau label",
"create-new-relation": "Créer une nouvelle relation",
"ribbon-tabs": "Onglets du ruban",
"toggle-basic-properties": "Afficher/masquer les Propriétés basiques de la note",
"toggle-file-properties": "Afficher/masquer les Propriétés du fichier",
"toggle-image-properties": "Afficher/masquer les Propriétés de l'image",
"toggle-owned-attributes": "Afficher/masquer les Attributs propres",
"toggle-inherited-attributes": "Afficher/masquer les Attributs hérités",
"toggle-promoted-attributes": "Afficher/masquer les Attributs promus",
"toggle-link-map": "Afficher/masquer la Carte des liens",
"toggle-note-info": "Afficher/masquer les Informations de la note",
"toggle-note-paths": "Afficher/masquer les Emplacements de la note",
"toggle-similar-notes": "Afficher/masquer les Notes similaires",
"other": "Autre",
"toggle-right-pane": "Afficher/masquer le volet droit, qui inclut la Table des matières et les Accentuations",
"print-active-note": "Imprimer la note active",
"open-note-externally": "Ouvrir la note comme fichier avec l'application par défaut",
"render-active-note": "Rendre (ou re-rendre) la note active",
"run-active-note": "Exécuter le code JavaScript (frontend/backend) de la note active",
"toggle-note-hoisting": "Activer le focus sur la note active",
"unhoist": "Désactiver tout focus",
"reload-frontend-app": "Recharger l'application",
"open-dev-tools": "Ouvrir les outils de développement",
"toggle-left-note-tree-panel": "Basculer le panneau gauche (arborescence des notes)",
"toggle-full-screen": "Basculer en plein écran",
"zoom-out": "Dézoomer",
"zoom-in": "Zoomer",
"note-navigation": "Navigation dans les notes",
"reset-zoom-level": "Réinitialiser le niveau de zoom",
"copy-without-formatting": "Copier le texte sélectionné sans mise en forme",
"force-save-revision": "Forcer la création / sauvegarde d'une nouvelle version de la note active",
"show-help": "Afficher l'aide intégrée / l'aide-mémoire",
"toggle-book-properties": "Afficher/masquer les Propriétés du Livre"
},
"login": {
"title": "Connexion",
"heading": "Connexion à Trilium",
"incorrect-password": "Le mot de passe est incorrect. Veuillez réessayer.",
"password": "Mot de passe",
"remember-me": "Se souvenir de moi",
"button": "Connexion"
},
"set_password": {
"heading": "Définir un mot de passe",
"description": "Avant de pouvoir commencer à utiliser Trilium depuis le web, vous devez d'abord définir un mot de passe. Vous utiliserez ensuite ce mot de passe pour vous connecter.",
"password": "Mot de passe",
"password-confirmation": "Confirmation du mot de passe",
"button": "Définir le mot de passe"
},
"javascript-required": "Trilium nécessite que JavaScript soit activé.",
"setup": {
"heading": "Configuration de TriliumNext Notes",
"new-document": "Je suis un nouvel utilisateur et je souhaite créer un nouveau document Trilium pour mes notes",
"sync-from-desktop": "J'ai déjà l'application de bureau et je souhaite configurer la synchronisation avec celle-ci",
"sync-from-server": "J'ai déjà un serveur et je souhaite configurer la synchronisation avec celui-ci",
"next": "Suivant",
"init-in-progress": "Initialisation du document en cours",
"redirecting": "Vous serez bientôt redirigé vers l'application.",
"title": "Configuration"
},
"setup_sync-from-desktop": {
"heading": "Synchroniser depuis une application de bureau",
"description": "Cette procédure doit être réalisée depuis l'application de bureau installée sur votre ordinateur:",
"step1": "Ouvrez l'application TriliumNext Notes.",
"step2": "Dans le menu Trilium, cliquez sur Options.",
"step3": "Cliquez sur la catégorie Synchroniser.",
"step4": "Remplacez l'adresse de l'instance de serveur par : {{- host}} et cliquez sur Enregistrer.",
"step5": "Cliquez sur le bouton 'Tester la synchronisation' pour vérifier que la connexion fonctionne.",
"step6": "Une fois que vous avez terminé ces étapes, cliquez sur {{- link}}.",
"step6-here": "ici"
},
"setup_sync-from-server": {
"heading": "Synchroniser depuis le serveur",
"instructions": "Veuillez saisir l'adresse du serveur Trilium et les informations d'identification ci-dessous. Cela téléchargera l'intégralité du document Trilium à partir du serveur et configurera la synchronisation avec celui-ci. En fonction de la taille du document et de votre vitesse de connexion, cela peut prendre un plusieurs minutes.",
"server-host": "Adresse du serveur Trilium",
"server-host-placeholder": "https://<nom d'hôte>:<port>",
"proxy-server": "Serveur proxy (facultatif)",
"proxy-server-placeholder": "https://<nom d'hôte>:<port>",
"note": "Note :",
"proxy-instruction": "Si vous laissez le paramètre de proxy vide, le proxy du système sera utilisé (s'applique uniquement à l'application de bureau)",
"password": "Mot de passe",
"password-placeholder": "Mot de passe",
"back": "Retour",
"finish-setup": "Terminer"
},
"setup_sync-in-progress": {
"heading": "Synchronisation en cours",
"successful": "La synchronisation a été correctement configurée. La synchronisation initiale prendra un certain temps. Une fois terminée, vous serez redirigé vers la page de connexion.",
"outstanding-items": "Éléments de synchronisation exceptionnels :",
"outstanding-items-default": "N/A"
},
"share_404": {
"title": "Page non trouvée",
"heading": "Page non trouvée"
},
"share_page": {
"parent": "parent :",
"clipped-from": "Cette note a été initialement extraite de {{- url}}",
"child-notes": "Notes enfants :",
"no-content": "Cette note n'a aucun contenu."
}
}