diff --git a/.agents/AGENTS.md b/.agents/AGENTS.md new file mode 120000 index 000000000..be77ac83a --- /dev/null +++ b/.agents/AGENTS.md @@ -0,0 +1 @@ +../AGENTS.md \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 78c1e6598..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: Zarestia-Dev -custom: https://hakanismail.info/zarestia/support diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 27f75d65b..e9e554e8e 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,57 +1,50 @@ -## Description + +Please discuss anything more than a trivial fix in an issue FIRST - see the +"Linked issue" section below. Then fill in the sections below to help us review. +--> -## Related Issue +#### What does this change do? - -Closes # + + +#### Linked issue -## Type of Change + +IMPORTANT: Anything beyond a trivial fix (typo, doc tweak, small obvious bug fix) +should be discussed and agreed in an issue BEFORE you open a pull request. +Pull requests for larger changes that have not been discussed in an issue first +may be closed. This saves everyone's time if the change needs a different approach +or isn't a good fit. +--> + +Closes # + +#### Type of Change - [ ] 🐛 Bug fix (non-breaking change that fixes an issue) - [ ] ✨ New feature (non-breaking change that adds functionality) - [ ] 💥 Breaking change (fix or feature that would cause existing functionality to change) - [ ] 📚 Documentation update -- [ ] 🌍 Translation (new language or translation update) -- [ ] 🔧 Refactoring (code change that neither fixes a bug nor adds a feature) -- [ ] 🧪 Tests (adding or updating tests) - -## Changes Made - - - -- -- -- - -## Testing Performed - - - -- [ ] Tested on Linux -- [ ] Tested on macOS -- [ ] Tested on Windows -- [ ] Tested on Android -- [ ] Tested in Headless / Web mode -- [ ] Tested in development mode (`npm run tauri dev`) - -## Screenshots / Recordings - - - -## Checklist +- [ ] 🌍 Translation (i18n) update +- [ ] 🔧 Maintenance / Refactoring - +#### Platform & Target Testing -- [ ] My code follows the project's code style -- [ ] I have run `npm run lint:all` and fixed any issues -- [ ] I have updated the documentation if needed -- [ ] My changes don't introduce any new warnings -- [ ] I have tested my changes thoroughly +- [ ] Desktop (Linux / macOS / Windows) +- [ ] Portable mode +- [ ] Headless / Web Server mode +- [ ] Mobile (Android) -## Additional Notes +#### Checklist - +- [ ] This change is trivial **OR** it has been discussed and agreed in the linked issue. +- [ ] I have read the [contribution guidelines](CONTRIBUTING.md) and [AGENTS.md](AGENTS.md). +- [ ] **(If I used AI tools to help write this code)** I have read and understood the AI-assisted contributions guidance in [AGENTS.md](AGENTS.md), and I have compiled, linted, tested, and take full ownership of this change myself. +- [ ] I have run frontend lints (`npx eslint "**/*.{ts,html}"` & `npx prettier --check "**/*.{ts,html,scss,json}"`) or `npm run fix:all`. +- [ ] I have run backend Clippy & formatting checks (`cargo clippy` and `cargo fmt -- --check` in `src-tauri`). +- [ ] I have added tests or updated documentation where appropriate. +- [ ] This Pull Request is ready for review. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c7e674e0d..410af8aa1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,6 +98,7 @@ jobs: working-directory: src-tauri - name: Run Clippy (Mobile) + if: matrix.os == 'ubuntu-22.04' run: cargo clippy --features mobile --no-default-features -- -D warnings working-directory: src-tauri diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..05096c0fd --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,155 @@ +# AGENTS.md + +This file provides guidance to AI coding agents (e.g. Antigravity, Claude Code, Gemini CLI, Cursor, and similar tools) when working with code in this repository. + +Rclone Manager welcomes AI-assisted contributions, but the expectation is that you, the human submitter, understand every line you propose and have compiled, linted, and tested it against real code — not just generated it. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. + +--- + +## Project Overview + +`rclone-manager` is a cross-platform GUI and web server application for managing [Rclone](https://rclone.org). + +- **Frontend**: Angular (v22+), TypeScript, SCSS, RxJS, Angular Material. +- **Backend**: Rust, Tauri v2 (`src-tauri`), `librclone` C-FFI / Go integration. + +--- + +## General Notes & AI Guidelines + +1. **Keep Changes Minimal & Elegant**: Work to make the smallest, most effective change possible. Avoid unneeded refactoring, re-ordering of imports, or restyling surrounding code. +2. **Backwards Compatibility**: PRs should preserve existing behavior across desktop, web server (headless), and mobile targets. +3. **Verify Before Proposing**: AI agents must run build, lint, and formatting verification commands before declaring success. **Frontend changes must produce a warning-free build** (see §Build, Test & Lint Commands). +4. **Automated Testing & Test Coverage (CRITICAL)**: + - Just like upstream Rclone and best practices, whenever adding or refactoring business logic, services, utilities, parsers, or mappings, AI agents **MUST** write or update accompanying automated unit tests. + - **Frontend**: Unit tests (`*.spec.ts`) are placed in the same directory alongside their corresponding implementation files. + - **Backend**: Rust unit tests (`#[cfg(test)]`) are placed inside source files or under test modules. + - Verify tests cover both normal operation and edge cases (null inputs, empty values, special characters, error paths). + +--- + +## Essential Code Quality & UI Rules + +1. **Tooltip Usage Rule (CRITICAL)** + - **DO NOT** use Angular Material Tooltips (`matTooltip`, `MatTooltipModule`). + - **ALWAYS** use native HTML `title` attributes for tooltips (e.g., ``). + +2. **Angular Architecture** + - Follow existing service and component patterns. + - Use `inject()` for dependency injection where applicable. + - Keep translation keys organized and run `npm run audit:i18n` when adding user-facing text. + +3. **Angular Material** + - Do not use `appearence` in the material form components (inputs, selects, textareas). Use them as default. + +4. **URL Opener Links (CRITICAL)** + - **ALWAYS** use standard HTML `` tags with `href` attributes for opening URLs (e.g., `...` or `...`). + - **DO NOT** use `
--- @@ -88,10 +88,10 @@ Instala RClone Manager usando tu gestor de paquetes preferido, o descarga los bi ### macOS -| Origen | Versión | Comando de instalación / Descarga | -| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------- | -| **Homebrew** | [](https://github.com/Zarestia-Dev/homebrew-zarestia/blob/main/Casks/rclone-manager.rb) | `brew tap Zarestia-Dev/zarestia && brew trust Zarestia-Dev/zarestia && brew install --cask rclone-manager` | -| **Descarga directa** | [](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | [Instalador DMG](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | +| Origen | Versión | Comando de instalación / Descarga | +| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- | +| **Homebrew** | [](https://github.com/Zarestia-Dev/homebrew-zarestia/blob/main/Casks/rclone-manager.rb) | `brew tap Zarestia-Dev/zarestia && brew trust Zarestia-Dev/zarestia && brew install --cask rclone-manager` | +| **Descarga directa** | [](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | [Instalador DMG](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | > 📚 **Guía:** [Wiki: Instalación - macOS](https://hakanismail.info/zarestia/rclone-manager/docs/installation-macos) (soluciones para macFUSE y Gatekeeper) @@ -108,9 +108,9 @@ Instala RClone Manager usando tu gestor de paquetes preferido, o descarga los bi ### Android (Beta) -| Fuente | Versión | Comando de Instalación / Descarga | -| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------- | -| **Descarga Directa** | [](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | [Descargas APK (arm64-v8a, armeabi-v7a, x86_64, x86)](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | +| Fuente | Versión | Comando de Instalación / Descarga | +| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | +| **Descarga Directa** | [](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | [Descargas APK (arm64-v8a, armeabi-v7a, x86_64, x86)](https://github.com/Zarestia-Dev/rclone-manager/releases/latest) | > 📚 **Guía:** [Wiki: Soporte para Android (Beta)](https://hakanismail.info/zarestia/rclone-manager/docs/configuration-android) (Detalles del motor Go / librclone y configuración) @@ -141,7 +141,6 @@ Instala RClone Manager usando tu gestor de paquetes preferido, o descarga los bi - **Licencia:** Distribuido bajo la licencia [GNU GPLv3](LICENSE) – libre para usar, modificar y distribuir. - **Soporte:** Si te gusta este proyecto, ¡considera dejar una ⭐ en GitHub! -- **Donar:** Si RClone Manager te ahorra tiempo, considera [apoyar el desarrollo](https://hakanismail.info/zarestia/support) ❤️
Creado con ❤️ por el equipo de desarrollo de Zarestia
diff --git a/README.fr-FR.md b/README.fr-FR.md
index 6627db295..a2634e6a7 100644
--- a/README.fr-FR.md
+++ b/README.fr-FR.md
@@ -30,6 +30,9 @@
+
+
+
@@ -39,9 +42,6 @@
-
-
-
Fait avec ❤️ par l'équipe de développement Zarestia
diff --git a/README.ja-JP.md b/README.ja-JP.md
index dd6a349f5..c6d2be758 100644
--- a/README.ja-JP.md
+++ b/README.ja-JP.md
@@ -29,6 +29,9 @@
+
+
+
@@ -38,9 +41,6 @@
-
-
-
Zarestia Dev Team が ❤️ を込めて開発
diff --git a/README.md b/README.md
index deb263606..e68d7332c 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,9 @@
+
+
+
@@ -38,9 +41,6 @@
-
-
-
Made with ❤️ by the Zarestia Dev Team
diff --git a/README.pt-BR.md b/README.pt-BR.md
index 56694dd28..13bad82b5 100644
--- a/README.pt-BR.md
+++ b/README.pt-BR.md
@@ -29,6 +29,9 @@
+
+
+
@@ -38,9 +41,6 @@
-
-
-
Desenvolvido com ❤️ pela Equipe de Desenvolvimento Zarestia
diff --git a/README.ru-RU.md b/README.ru-RU.md
index ff396a4ae..d72bb5a92 100644
--- a/README.ru-RU.md
+++ b/README.ru-RU.md
@@ -29,6 +29,9 @@
+
+
+
@@ -38,9 +41,6 @@
-
-
-
Создано командой Zarestia Dev
diff --git a/README.tr-TR.md b/README.tr-TR.md
index 6ee46bd90..117cc5e38 100644
--- a/README.tr-TR.md
+++ b/README.tr-TR.md
@@ -29,6 +29,9 @@
+
+
+
@@ -38,9 +41,6 @@
-
-
-
Zarestia Dev Ekibi tarafından ❤️ ile yapıldı
diff --git a/README.zh-CN.md b/README.zh-CN.md
index f76bcfcf8..c1823502f 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -29,6 +29,9 @@
+
+
+
@@ -38,9 +41,6 @@
-
-
-
由 Zarestia 团队倾心制作 Added Changed Removed Fixed Added
diff --git a/angular.json b/angular.json
old mode 100644
new mode 100755
index b62e217c7..d3cf229b4
--- a/angular.json
+++ b/angular.json
@@ -50,6 +50,11 @@
"tsConfig": "tsconfig.app.json",
"assets": [
"src/assets",
+ {
+ "glob": "**/*",
+ "input": "resources/i18n",
+ "output": "assets/i18n"
+ },
"src/favicon.ico",
"src/manifest.webmanifest",
"src/sw.js",
@@ -72,8 +77,8 @@
},
{
"type": "anyComponentStyle",
- "maximumWarning": "2kb",
- "maximumError": "20kb"
+ "maximumWarning": "20kb",
+ "maximumError": "40kb"
}
],
"outputHashing": "all"
@@ -119,6 +124,14 @@
"options": {
"lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
}
+ },
+ "test": {
+ "builder": "@angular/build:unit-test",
+ "options": {
+ "tsConfig": "tsconfig.spec.json",
+ "runner": "vitest",
+ "include": ["**/*.spec.ts"]
+ }
}
}
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 238cfb51d..c5e4c6a44 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -31,6 +31,7 @@ services:
# Run 'id' in your terminal to find your UID/GID.
- PUID=1000
- PGID=1000
+ # - PGIDS=1000,3000 # Optional: Supplementary group IDs (comma-separated) for NFSv4 ACLs / ZFS mounts
# --- Optional: Basic Authentication ---
# Uncomment and fill in to password-protect the web UI.
diff --git a/entrypoint.sh b/entrypoint.sh
index 6557827cc..df3394cd3 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -4,18 +4,21 @@ set -e
# =============================================================================
# 1. User & Permission Setup
# =============================================================================
-# Read requested UID/GID or default to 1000
+# Read requested UID/GID or default to 1000.
+# PGIDS allows specifying supplementary group IDs (comma-separated, e.g. PGIDS=1000,3000,950).
PUID=${PUID:-1000}
PGID=${PGID:-1000}
+SUP_GROUPS="${PGIDS:-$PGID}"
# Modify internal rclone-manager user to match the host UID/GID requested.
-# The -o flag allows non-unique IDs to prevent crashes if the ID exists.
-groupmod -o -g "$PGID" rclone-manager 2>/dev/null || true
-usermod -o -u "$PUID" rclone-manager 2>/dev/null || true
+# Only performed when running as root inside the container.
+if [ "$(id -u)" -eq 0 ]; then
+ groupmod -o -g "$PGID" rclone-manager 2>/dev/null || true
+ usermod -o -u "$PUID" rclone-manager 2>/dev/null || true
-# Ensure critical volumes and data directories have the correct ownership
-# This step is crucial for persistent volumes spawned as root by Docker.
-chown -R rclone-manager:rclone-manager /home/rclone-manager /app /data /config 2>/dev/null || true
+ # Ensure critical volumes and data directories have the correct ownership
+ chown -R rclone-manager:rclone-manager /home/rclone-manager /app /data /config 2>/dev/null || true
+fi
# =============================================================================
# 2. Legacy Migration & Backward Compatibility (#158)
@@ -74,7 +77,7 @@ if [ ! -x "$RCLONE_BIN" ]; then
cp /tmp/rclone-dl/rclone-*-linux-${RCLONE_ARCH}/rclone "/data/rclone-bin/rclone"
chmod 755 "/data/rclone-bin/rclone"
- chown rclone-manager:rclone-manager "/data/rclone-bin/rclone"
+ [ "$(id -u)" -eq 0 ] && chown rclone-manager:rclone-manager "/data/rclone-bin/rclone" 2>/dev/null || true
RCLONE_BIN="/data/rclone-bin/rclone"
rm -rf /tmp/rclone-dl
@@ -112,7 +115,19 @@ ARGS=()
# =============================================================================
# 7. Handover
# =============================================================================
-# Execute using gosu to securely drop privileges from root to rclone-manager.
+# Execute using setpriv to securely drop privileges from root to the requested UID/GID
+# while populating supplementary groups (PGIDS) for NFSv4 ACL compatibility.
# `exec` ensures the resulting process becomes PID 1 to gracefully receive
# termination signals issued by Docker stop commands.
-exec gosu rclone-manager /usr/local/bin/rclone-manager-headless "${ARGS[@]}" "$@"
\ No newline at end of file
+if [ "$(id -u)" -eq 0 ]; then
+ echo "Starting rclone-manager-headless as UID $PUID, GID $PGID (Supplementary Groups: $SUP_GROUPS)..."
+ exec setpriv \
+ --reuid="$PUID" \
+ --regid="$PGID" \
+ --groups="$SUP_GROUPS" \
+ --inh-caps=-all \
+ /usr/local/bin/rclone-manager-headless "${ARGS[@]}" "$@"
+else
+ echo "Starting rclone-manager-headless as unprivileged user (UID $(id -u))..."
+ exec /usr/local/bin/rclone-manager-headless "${ARGS[@]}" "$@"
+fi
\ No newline at end of file
diff --git a/eslint.config.js b/eslint.config.js
index c8ba86515..81248c3e0 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -8,6 +8,8 @@ module.exports = defineConfig([
ignores: [
'src-tauri/resources/serve-template.html',
'src-tauri/resources/oauth-template.html',
+ 'src-tauri/gen/**',
+ '**/*-template.html',
'**/target/**',
'dist/**',
],
@@ -49,6 +51,7 @@ module.exports = defineConfig([
'error',
{ argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
],
+ '@typescript-eslint/no-unused-private-class-members': 'error',
'@typescript-eslint/explicit-function-return-type': 'error',
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-non-null-assertion': 'error',
diff --git a/package-lock.json b/package-lock.json
index 6f346c82b..5ec516e40 100755
--- a/package-lock.json
+++ b/package-lock.json
@@ -35,6 +35,7 @@
"@ngx-translate/http-loader": "^18.0.0",
"@tauri-apps/api": "~2.11.1",
"@tauri-apps/plugin-clipboard-manager": "^2.3.2",
+ "@tauri-apps/plugin-opener": "^2.5.4",
"@tauri-apps/plugin-os": "^2.3.2",
"codemirror": "^6.0.2",
"cronstrue": "^3.21.0",
@@ -49,231 +50,21 @@
"@eslint/js": "^10.0.1",
"@tauri-apps/cli": "^2.11.3",
"@types/jasmine": "~6.0.0",
+ "@types/node": "^26.1.2",
"angular-eslint": "22.0.0",
"eslint": "^10.5.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.6",
"husky": "^9.1.7",
"jasmine-core": "~6.3.0",
- "karma": "~6.4.4",
- "karma-chrome-launcher": "~3.2.0",
- "karma-coverage": "~2.2.1",
- "karma-jasmine": "~5.1.0",
- "karma-jasmine-html-reporter": "~2.2.0",
+ "jsdom": "^30.0.1",
"lint-staged": "^17.0.8",
"prettier": "^3.8.4",
"svgo": "^4.0.2",
"typescript": "^6.0.3",
- "typescript-eslint": "^8.62.0"
- }
- },
- "node_modules/@algolia/abtesting": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.18.0.tgz",
- "integrity": "sha512-8siuLG+FIns1AjZ/g2SDVwHz9S+ObacDQISEJvS8XsNei1zl3FXqfqQrBpmrG7ACWCyesXHbicMJtvRbg00FEw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/client-abtesting": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.52.0.tgz",
- "integrity": "sha512-wtwPgyPmO7b7sQPVgoK29c1VpfS08DnnJCmxX/oU1pV2DlMRJCzQcLN7JSloYpodyKHwM8+9wOzlAM0co3TDmA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/client-analytics": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.52.0.tgz",
- "integrity": "sha512-9KY36bRl4AH7RjqSeDDOKnjsz4IxQFBEOB8/fWmEbdQe+Isbs5jGzVJu9NEPQ1Tgwxlf8Uf07Swj3jZyMNUZ2g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/client-common": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.52.0.tgz",
- "integrity": "sha512-3a/qM3dzJqqfTx7Yrw7uGQ98I3Q0rDfb4Vkv0wEzko96l7YQMxfBVz/VbLq2N+c59GweYv6Vhp8mPeqnWJSITw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/client-insights": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.52.0.tgz",
- "integrity": "sha512-Rki7ACbMcvbQW0BuM84x9dkGHY47ABmv4jU6tYssat2k02p3mIUms2YOLUAMeknhmnFsj6lb6ZzOXdMWMyc1sA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/client-personalization": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.52.0.tgz",
- "integrity": "sha512-96s4Uzc3kk+/f4jJXIVVGWP5XlngOGNQ1x6hW9AT59pOixHlOs5tqJg+ZUS/GQ6h/iYP0ceQcmxDQeLyCLTaDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/client-query-suggestions": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.52.0.tgz",
- "integrity": "sha512-lqeycNpSPe5Qa0OUWpejVvYQjQWV5nQuLT0a4aq7XzRAvCxprV/6Lf841EygdD2nrFnuS58ok7Au1uOtXzpnkg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/client-search": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.52.0.tgz",
- "integrity": "sha512-ly1wETVGRo30cx61O7fetESN+ElL9c9K+bD/AVgnT1ar4c6v+/Yqjrhdtu6Fm4D0s4NZP081Isf6tunH1wUXHg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/ingestion": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.52.0.tgz",
- "integrity": "sha512-U4EeTvgmluRjj39ykZSAd5X+a6LD5m7/mcOWDmB7hqm1R6QY0yT8jLxpNVEjYhzgEN5hcDGW6X67EWQY8KiYGQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/monitoring": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.52.0.tgz",
- "integrity": "sha512-FCPnDcILfpTE94u7BVlV4DmnSV5wE3+j25EEF+3dYPrVzkVCSoAHs318oWDGxnxsAgiL4HpL12Jc4XHmw9shpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/recommend": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.52.0.tgz",
- "integrity": "sha512-br3DO7n4N8CXwTRbZS0MnB4WQ9YHfNjCwkCEzVR/wek/qNTDQKDb0nROmkFaNZ8ucUqUVKZi074dbwMwRDlK8Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/requester-browser-xhr": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.52.0.tgz",
- "integrity": "sha512-b0T/Ca2c9KyEslKsVrGZvbe1UrrKKSdfXhBZ2pbpKahFUzJfziRZ0urbOm7V65O0tO/jwU+Lo/+bIiiyhzGt8w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/requester-fetch": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.52.0.tgz",
- "integrity": "sha512-ozBT8J/mtD4H4IAojw8QPirlcL2gHrI1BGuZ4/ZXXO/rTE1yQ4VIPJj4mTTbwo4FbkS1MoJsD/DsrqLzhnc4/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@algolia/requester-node-http": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.52.0.tgz",
- "integrity": "sha512-gyyWcLD22tnabmoit4iukCXuoRc5HYJuUjPSEa8a0D/f/NlRafpWi52AlAaa4Uu/rsl7saHsJFTNjTptWbu2+A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/client-common": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
+ "typescript-eslint": "^8.62.0",
+ "vitest": "^4.1.10",
+ "zone.js": "^0.16.2"
}
},
"node_modules/@ampproject/remapping": {
@@ -338,16 +129,16 @@
}
},
"node_modules/@angular-devkit/schematics": {
- "version": "22.0.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-22.0.8.tgz",
- "integrity": "sha512-9WjTKnW/5oIw4hNNcd0rSYtgHRrHKKAkG6+bdLqTCY68P2brO2yEJM2JjYtMYk/WSovknb0GxUP4n3dY3IxPug==",
+ "version": "22.1.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-22.1.3.tgz",
+ "integrity": "sha512-ebY5bwZVB0onxxyTbJch//VidVVV8jo/F13n+TV5s/3ZywsC3/XZsfMHaxlFmpvP/G17+/C9JVoEXT+uwjT+/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "22.0.8",
+ "@angular-devkit/core": "22.1.3",
"jsonc-parser": "3.3.1",
- "magic-string": "0.30.21",
- "ora": "9.4.0",
+ "magic-string": "1.0.0",
+ "ora": "9.4.1",
"rxjs": "7.8.2"
},
"engines": {
@@ -356,6 +147,57 @@
"yarn": ">= 1.13.0"
}
},
+ "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": {
+ "version": "22.1.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-22.1.3.tgz",
+ "integrity": "sha512-ASK8oZVElt/Zpz5FrzJjLnnUbzp/fW57eFFSRgpA+n9KRnuFi6YvNdSS3HkG5049Jcukce+PiMBdfzw/jBVkEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "8.20.0",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.5",
+ "rxjs": "7.8.2",
+ "source-map": "0.7.6"
+ },
+ "engines": {
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular-devkit/schematics/node_modules/magic-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.0.0.tgz",
+ "integrity": "sha512-CGvjzMN08iv6w1mm4/x3Gh1hLb4VnyRUA15FFpl6CsCIGGoe36k7kY5KNz9QDbSBN5I/fWHM6ZlIkUTa5xdUEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/@angular-devkit/schematics/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@angular-eslint/builder": {
"version": "22.0.0",
"resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-22.0.0.tgz",
@@ -597,30 +439,26 @@
}
},
"node_modules/@angular/cli": {
- "version": "22.0.8",
- "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-22.0.8.tgz",
- "integrity": "sha512-kefbTsmf7sEmW5g3NIRvH0OrM18I1jjZHlB9KABgRQhsDfD/WgfLt6aSLJQeFDlAOs+ehDPzzOwd9l48wyBlFQ==",
+ "version": "22.1.3",
+ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-22.1.3.tgz",
+ "integrity": "sha512-GB1Pv8CXAHXE2/hqiwSGD6JRIyT4wswadjH1j3DH2+6os1zc7CBm28/YtlKPPIHZKVOZLDqV6uW+bRQTtdOw2A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/architect": "0.2200.8",
- "@angular-devkit/core": "22.0.8",
- "@angular-devkit/schematics": "22.0.8",
- "@inquirer/prompts": "8.4.2",
- "@listr2/prompt-adapter-inquirer": "4.2.3",
+ "@angular-devkit/architect": "0.2201.3",
+ "@angular-devkit/core": "22.1.3",
+ "@angular-devkit/schematics": "22.1.3",
+ "@inquirer/prompts": "8.5.2",
+ "@listr2/prompt-adapter-inquirer": "4.2.4",
"@modelcontextprotocol/sdk": "1.29.0",
- "@schematics/angular": "22.0.8",
- "@yarnpkg/lockfile": "1.1.0",
- "algoliasearch": "5.52.0",
- "ini": "6.0.0",
+ "@schematics/angular": "22.1.3",
"jsonc-parser": "3.3.1",
- "listr2": "10.2.1",
- "npm-package-arg": "13.0.2",
- "pacote": "21.5.1",
+ "listr2": "10.2.2",
+ "npm-package-arg": "14.0.0",
"parse5-html-rewriting-stream": "8.0.1",
- "semver": "7.7.4",
+ "semver": "7.8.5",
"yargs": "18.0.0",
- "zod": "4.4.2"
+ "zod": "4.4.3"
},
"bin": {
"ng": "bin/ng.js"
@@ -631,6 +469,96 @@
"yarn": ">= 1.13.0"
}
},
+ "node_modules/@angular/cli/node_modules/@angular-devkit/architect": {
+ "version": "0.2201.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2201.3.tgz",
+ "integrity": "sha512-5WX6rooTQZCh+yE9k3O5hc7nnQtzy1nw6fQpaTuCzIgPG8teQuVtdxegBsM3OcjJac1r+qJLo+KmTRfnqcfsyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "22.1.3",
+ "rxjs": "7.8.2"
+ },
+ "bin": {
+ "architect": "bin/cli.js"
+ },
+ "engines": {
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@angular/cli/node_modules/@angular-devkit/core": {
+ "version": "22.1.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-22.1.3.tgz",
+ "integrity": "sha512-ASK8oZVElt/Zpz5FrzJjLnnUbzp/fW57eFFSRgpA+n9KRnuFi6YvNdSS3HkG5049Jcukce+PiMBdfzw/jBVkEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "8.20.0",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.5",
+ "rxjs": "7.8.2",
+ "source-map": "0.7.6"
+ },
+ "engines": {
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular/cli/node_modules/listr2": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-10.2.2.tgz",
+ "integrity": "sha512-JtNtbZj8q5BnDMR7trpwvwk3RIrANtIVzEUm8w7amp6xelLgyuq+4WZoTH913XaQAoH/cNdYhaNzBPA2U3xbDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cli-truncate": "^5.2.0",
+ "eventemitter3": "^5.0.4",
+ "log-update": "^6.1.0",
+ "rfdc": "^1.4.1",
+ "wrap-ansi": "^10.0.0"
+ },
+ "engines": {
+ "node": ">=22.13.0"
+ }
+ },
+ "node_modules/@angular/cli/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@angular/cli/node_modules/semver": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@angular/common": {
"version": "22.0.8",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-22.0.8.tgz",
@@ -776,6 +704,59 @@
}
}
},
+ "node_modules/@asamuzakjp/css-color": {
+ "version": "6.0.7",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-6.0.7.tgz",
+ "integrity": "sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^3.3.0",
+ "@csstools/css-color-parser": "^4.1.10",
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0",
+ "lru-cache": "^11.5.2"
+ },
+ "engines": {
+ "node": "^22.13.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@asamuzakjp/dom-selector": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-8.3.2.tgz",
+ "integrity": "sha512-93Z1N+BQNXysodoicpOIyNh2drHfz/CTf9nnT0FEx72GJcIiwgydD7tGAr78j41LsYn3hlRn+LdGPuBLn1Bl8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bidi-js": "^1.0.3",
+ "css-tree": "^3.2.1",
+ "is-potential-custom-element-name": "^1.0.1",
+ "lru-cache": "^11.5.2"
+ },
+ "engines": {
+ "node": "^22.13.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.29.7",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
@@ -1069,6 +1050,19 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@bramus/specificity": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz",
+ "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "^3.0.0"
+ },
+ "bin": {
+ "specificity": "bin/cli.js"
+ }
+ },
"node_modules/@codemirror/autocomplete": {
"version": "6.20.3",
"resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.3.tgz",
@@ -1319,14 +1313,144 @@
"w3c-keyname": "^2.2.4"
}
},
- "node_modules/@colors/colors": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
- "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "node_modules/@csstools/color-helpers": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.0.tgz",
+ "integrity": "sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=20.19.0"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.3.0.tgz",
+ "integrity": "sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
+ }
+ },
+ "node_modules/@csstools/css-color-parser": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.10.tgz",
+ "integrity": "sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/color-helpers": "^6.1.0",
+ "@csstools/css-calc": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
+ }
+ },
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz",
+ "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^4.0.0"
+ }
+ },
+ "node_modules/@csstools/css-syntax-patches-for-csstree": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.7.tgz",
+ "integrity": "sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "peerDependencies": {
+ "css-tree": "^3.2.1"
+ },
+ "peerDependenciesMeta": {
+ "css-tree": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz",
+ "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
"engines": {
- "node": ">=0.1.90"
+ "node": ">=20.19.0"
}
},
"node_modules/@esbuild/aix-ppc64": {
@@ -1886,14 +2010,22 @@
"node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@gar/promise-retry": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz",
- "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==",
+ "node_modules/@exodus/bytes": {
+ "version": "1.15.1",
+ "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.1.tgz",
+ "integrity": "sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@noble/hashes": "^1.8.0 || ^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@noble/hashes": {
+ "optional": true
+ }
}
},
"node_modules/@harperfast/extended-iterable": {
@@ -1905,9 +2037,9 @@
"optional": true
},
"node_modules/@hono/node-server": {
- "version": "1.19.15",
- "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.15.tgz",
- "integrity": "sha512-Za2ai6TLdKjUvnur+eenO6nuYYipVAEhyCAdaV8IRvmU9kK8crOZUSYvIXn72E4f8fJqyAbpcJuTsYYmZp9Deg==",
+ "version": "1.19.17",
+ "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.17.tgz",
+ "integrity": "sha512-dSneS5qhiauZWGDCeK4o695Xd9nUNjviSZCMQrj10eetr8Uln1ucn6bbphOM6UynAMMtNIzZNSpL9vnASJwrPQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2211,25 +2343,47 @@
}
},
"node_modules/@inquirer/prompts": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.4.2.tgz",
- "integrity": "sha512-XJmn/wY4AX56l1BRU+ZjDrFtg9+2uBEi4JvJQj82kwJDQKiPgSn4CEsbfGGygS4Gw6rkL4W18oATjfVfaqub2Q==",
+ "version": "8.5.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.5.2.tgz",
+ "integrity": "sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/checkbox": "^5.1.4",
- "@inquirer/confirm": "^6.0.12",
- "@inquirer/editor": "^5.1.1",
- "@inquirer/expand": "^5.0.13",
- "@inquirer/input": "^5.0.12",
- "@inquirer/number": "^4.0.12",
- "@inquirer/password": "^5.0.12",
- "@inquirer/rawlist": "^5.2.8",
- "@inquirer/search": "^4.1.8",
- "@inquirer/select": "^5.1.4"
+ "@inquirer/checkbox": "^5.2.1",
+ "@inquirer/confirm": "^6.1.1",
+ "@inquirer/editor": "^5.2.2",
+ "@inquirer/expand": "^5.1.1",
+ "@inquirer/input": "^5.1.2",
+ "@inquirer/number": "^4.1.1",
+ "@inquirer/password": "^5.1.1",
+ "@inquirer/rawlist": "^5.3.1",
+ "@inquirer/search": "^4.2.1",
+ "@inquirer/select": "^5.2.1"
},
"engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/prompts/node_modules/@inquirer/confirm": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz",
+ "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^11.2.1",
+ "@inquirer/type": "^4.0.7"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
},
"peerDependencies": {
"@types/node": ">=18"
@@ -2327,29 +2481,6 @@
}
}
},
- "node_modules/@isaacs/fs-minipass": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
- "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^7.0.4"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@istanbuljs/schema": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz",
- "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
@@ -2534,13 +2665,13 @@
}
},
"node_modules/@listr2/prompt-adapter-inquirer": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-4.2.3.tgz",
- "integrity": "sha512-Co9U3AJ3LW0J8XBHjVoNKA79dMAyFt8EZH3OaKTMcDTj8r+6kG3vSUPq/eGLHT7P0iK3uLaFfhdFYd3033P24g==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-4.2.4.tgz",
+ "integrity": "sha512-/KRI2DMD7JGSYaREF0Ygl7AefJ/2ase4Gc5cBiKqT5l4tFjsSJfhFGcc5nSkgl0Sp9LkCQNzl/cqbVJYP2L3dw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/type": "^4.0.5"
+ "@inquirer/type": "^4.0.6"
},
"engines": {
"node": ">=22.13.0"
@@ -3151,374 +3282,124 @@
"@ngx-translate/core": ">=18.0.0"
}
},
- "node_modules/@npmcli/agent": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.2.tgz",
- "integrity": "sha512-EUEuWAxnL07Sp5/iC/1X6Xj+XThUvnbei9zfRWZdEXa7lss9RTHMhAHBeg+MZ5To9s/gGaSI+UwZTPdYMvKSeg==",
+ "node_modules/@parcel/watcher": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz",
+ "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==",
"dev": true,
- "license": "ISC",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "agent-base": "^7.1.0",
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.1",
- "lru-cache": "^11.2.1",
- "socks-proxy-agent": "^8.0.3"
+ "detect-libc": "^2.0.3",
+ "is-glob": "^4.0.3",
+ "node-addon-api": "^7.0.0",
+ "picomatch": "^4.0.4"
},
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.6.0",
+ "@parcel/watcher-darwin-arm64": "2.6.0",
+ "@parcel/watcher-darwin-x64": "2.6.0",
+ "@parcel/watcher-freebsd-x64": "2.6.0",
+ "@parcel/watcher-linux-arm-glibc": "2.6.0",
+ "@parcel/watcher-linux-arm-musl": "2.6.0",
+ "@parcel/watcher-linux-arm64-glibc": "2.6.0",
+ "@parcel/watcher-linux-arm64-musl": "2.6.0",
+ "@parcel/watcher-linux-x64-glibc": "2.6.0",
+ "@parcel/watcher-linux-x64-musl": "2.6.0",
+ "@parcel/watcher-win32-arm64": "2.6.0",
+ "@parcel/watcher-win32-x64": "2.6.0"
}
},
- "node_modules/@npmcli/agent/node_modules/agent-base": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
- "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz",
+ "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
"license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">= 14"
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@npmcli/agent/node_modules/https-proxy-agent": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
- "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz",
+ "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "agent-base": "^7.1.2",
- "debug": "4"
- },
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">= 14"
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@npmcli/agent/node_modules/lru-cache": {
- "version": "11.5.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
- "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz",
+ "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "BlueOak-1.0.0",
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/@npmcli/fs": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz",
- "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "semver": "^7.3.5"
+ "node": ">= 10.0.0"
},
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@npmcli/git": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz",
- "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==",
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz",
+ "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "ISC",
- "dependencies": {
- "@gar/promise-retry": "^1.0.0",
- "@npmcli/promise-spawn": "^9.0.0",
- "ini": "^6.0.0",
- "lru-cache": "^11.2.1",
- "npm-pick-manifest": "^11.0.1",
- "proc-log": "^6.0.0",
- "semver": "^7.3.5",
- "which": "^6.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/git/node_modules/isexe": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
- "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@npmcli/git/node_modules/lru-cache": {
- "version": "11.5.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
- "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/@npmcli/git/node_modules/which": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
- "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^4.0.0"
- },
- "bin": {
- "node-which": "bin/which.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/installed-package-contents": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz",
- "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "npm-bundled": "^5.0.0",
- "npm-normalize-package-bin": "^5.0.0"
- },
- "bin": {
- "installed-package-contents": "bin/index.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/node-gyp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz",
- "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/package-json": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz",
- "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/git": "^7.0.0",
- "glob": "^13.0.0",
- "hosted-git-info": "^9.0.0",
- "json-parse-even-better-errors": "^5.0.0",
- "proc-log": "^6.0.0",
- "semver": "^7.5.3",
- "spdx-expression-parse": "^4.0.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/package-json/node_modules/glob": {
- "version": "13.0.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
- "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "minimatch": "^10.2.2",
- "minipass": "^7.1.3",
- "path-scurry": "^2.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@npmcli/promise-spawn": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz",
- "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "which": "^6.0.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/promise-spawn/node_modules/isexe": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
- "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@npmcli/promise-spawn/node_modules/which": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
- "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^4.0.0"
- },
- "bin": {
- "node-which": "bin/which.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/redact": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",
- "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@npmcli/run-script": {
- "version": "10.0.4",
- "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz",
- "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/node-gyp": "^5.0.0",
- "@npmcli/package-json": "^7.0.0",
- "@npmcli/promise-spawn": "^9.0.0",
- "node-gyp": "^12.1.0",
- "proc-log": "^6.0.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@parcel/watcher": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz",
- "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "detect-libc": "^2.0.3",
- "is-glob": "^4.0.3",
- "node-addon-api": "^7.0.0",
- "picomatch": "^4.0.4"
- },
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "optionalDependencies": {
- "@parcel/watcher-android-arm64": "2.6.0",
- "@parcel/watcher-darwin-arm64": "2.6.0",
- "@parcel/watcher-darwin-x64": "2.6.0",
- "@parcel/watcher-freebsd-x64": "2.6.0",
- "@parcel/watcher-linux-arm-glibc": "2.6.0",
- "@parcel/watcher-linux-arm-musl": "2.6.0",
- "@parcel/watcher-linux-arm64-glibc": "2.6.0",
- "@parcel/watcher-linux-arm64-musl": "2.6.0",
- "@parcel/watcher-linux-x64-glibc": "2.6.0",
- "@parcel/watcher-linux-x64-musl": "2.6.0",
- "@parcel/watcher-win32-arm64": "2.6.0",
- "@parcel/watcher-win32-x64": "2.6.0"
- }
- },
- "node_modules/@parcel/watcher-android-arm64": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz",
- "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-darwin-arm64": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz",
- "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-darwin-x64": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz",
- "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-freebsd-x64": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz",
- "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm-glibc": {
@@ -4118,14 +3999,14 @@
]
},
"node_modules/@schematics/angular": {
- "version": "22.0.8",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-22.0.8.tgz",
- "integrity": "sha512-zD2WLe15SoKYyBZH1GTLLaVABNNObHkH4soQqXb9agN6zkrpE0naeWaBSFSWD+95VKCiMZl8LkiOXvK+6b8S6w==",
+ "version": "22.1.3",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-22.1.3.tgz",
+ "integrity": "sha512-5f5f0tKp3d25hjNGkvw2dtGgTN4wxPNhv1AXnhFkh+mLinQK9Qwzr2iEXDDrAuJEkvz1ACHq631IURWph0lqew==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "22.0.8",
- "@angular-devkit/schematics": "22.0.8",
+ "@angular-devkit/core": "22.1.3",
+ "@angular-devkit/schematics": "22.1.3",
"jsonc-parser": "3.3.1",
"typescript": "6.0.3"
},
@@ -4135,93 +4016,47 @@
"yarn": ">= 1.13.0"
}
},
- "node_modules/@sigstore/bundle": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz",
- "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==",
+ "node_modules/@schematics/angular/node_modules/@angular-devkit/core": {
+ "version": "22.1.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-22.1.3.tgz",
+ "integrity": "sha512-ASK8oZVElt/Zpz5FrzJjLnnUbzp/fW57eFFSRgpA+n9KRnuFi6YvNdSS3HkG5049Jcukce+PiMBdfzw/jBVkEw==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.5.0"
+ "ajv": "8.20.0",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.5",
+ "rxjs": "7.8.2",
+ "source-map": "0.7.6"
},
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
}
},
- "node_modules/@sigstore/core": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.2.1.tgz",
- "integrity": "sha512-qRsxPnCrbC/puegGxKuynfnxgLiHqWStrSjxkoB4YKqq3Z3s4cyZyj42ZdWFAEblNP65C+rBH8EuREHIXoi83g==",
+ "node_modules/@schematics/angular/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@sigstore/protobuf-specs": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.1.tgz",
- "integrity": "sha512-/ScWUhhoFasJsSRGTVBwId1loQjjnjAfE4djL6ZhrXRpNCmPTnUKF5Jokd58ILseOMjzET3UrMOtJPS9sYeI0g==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^18.17.0 || >=20.5.0"
- }
- },
- "node_modules/@sigstore/sign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.1.tgz",
- "integrity": "sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@gar/promise-retry": "^1.0.2",
- "@sigstore/bundle": "^4.0.0",
- "@sigstore/core": "^3.2.0",
- "@sigstore/protobuf-specs": "^0.5.0",
- "make-fetch-happen": "^15.0.4",
- "proc-log": "^6.1.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@sigstore/tuf": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.2.tgz",
- "integrity": "sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@sigstore/protobuf-specs": "^0.5.0",
- "tuf-js": "^4.1.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/@sigstore/verify": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.1.tgz",
- "integrity": "sha512-qv7+G3J2cc6wwFj3yKvXOamzqhMwSk1ogPGmhpS8iXllcPrJaIIBA+4HbttlHVu1pqWTdmaCH/WE7UOC51kdoA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@sigstore/bundle": "^4.0.0",
- "@sigstore/core": "^3.2.1",
- "@sigstore/protobuf-specs": "^0.5.0"
+ "node": ">=12"
},
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/@socket.io/component-emitter": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
- "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@standard-schema/spec": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
@@ -4479,6 +4314,15 @@
"@tauri-apps/api": "^2.8.0"
}
},
+ "node_modules/@tauri-apps/plugin-opener": {
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.5.4.tgz",
+ "integrity": "sha512-1HnPkb+AmgO29HBazm4uPLKB+r7zzcTBW1d0fyYp1uP+jwtpoiNDGKMMzz58SFp49nOIrxdE3aUJtT57lfO9CQ==",
+ "license": "MIT OR Apache-2.0",
+ "dependencies": {
+ "@tauri-apps/api": "^2.11.0"
+ }
+ },
"node_modules/@tauri-apps/plugin-os": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-os/-/plugin-os-2.3.2.tgz",
@@ -4488,39 +4332,23 @@
"@tauri-apps/api": "^2.8.0"
}
},
- "node_modules/@tufjs/canonical-json": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz",
- "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@tufjs/models": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz",
- "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==",
+ "node_modules/@types/chai": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
+ "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@tufjs/canonical-json": "2.0.0",
- "minimatch": "^10.1.1"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
}
},
- "node_modules/@types/cors": {
- "version": "2.8.19",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
- "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
+ "license": "MIT"
},
"node_modules/@types/esrecurse": {
"version": "4.3.1",
@@ -4551,25 +4379,15 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "26.1.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz",
- "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==",
+ "version": "26.2.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz",
+ "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~8.3.0"
}
},
- "node_modules/@types/ws": {
- "version": "8.18.1",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
- "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.65.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz",
@@ -4816,23 +4634,126 @@
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/@yarnpkg/lockfile": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
- "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
+ "node_modules/@vitest/expect": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz",
+ "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==",
"dev": true,
- "license": "BSD-2-Clause"
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.1.0",
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "4.1.10",
+ "@vitest/utils": "4.1.10",
+ "chai": "^6.2.2",
+ "tinyrainbow": "^3.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
},
- "node_modules/abbrev": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",
- "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==",
+ "node_modules/@vitest/mocker": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz",
+ "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==",
"dev": true,
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "4.1.10",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.21"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/pretty-format": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz",
+ "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyrainbow": "^3.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz",
+ "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/utils": "4.1.10",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz",
+ "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.1.10",
+ "@vitest/utils": "4.1.10",
+ "magic-string": "^0.30.21",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/spy": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz",
+ "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz",
+ "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.1.10",
+ "convert-source-map": "^2.0.0",
+ "tinyrainbow": "^3.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
+ "node_modules/@vitest/utils/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/accepts": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
@@ -4915,32 +4836,6 @@
}
}
},
- "node_modules/algoliasearch": {
- "version": "5.52.0",
- "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.52.0.tgz",
- "integrity": "sha512-0ZzY9mjqV7gop/AH8pIBiAS8giXP7WcSiUfoFYIzYAK9QC5c37E4SIVtJVBMwlURc0/uNt2o4RcNRvdHa4CJ5w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@algolia/abtesting": "1.18.0",
- "@algolia/client-abtesting": "5.52.0",
- "@algolia/client-analytics": "5.52.0",
- "@algolia/client-common": "5.52.0",
- "@algolia/client-insights": "5.52.0",
- "@algolia/client-personalization": "5.52.0",
- "@algolia/client-query-suggestions": "5.52.0",
- "@algolia/client-search": "5.52.0",
- "@algolia/ingestion": "1.52.0",
- "@algolia/monitoring": "1.52.0",
- "@algolia/recommend": "5.52.0",
- "@algolia/requester-browser-xhr": "5.52.0",
- "@algolia/requester-fetch": "5.52.0",
- "@algolia/requester-node-http": "5.52.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
"node_modules/angular-eslint": {
"version": "22.0.0",
"resolved": "https://registry.npmjs.org/angular-eslint/-/angular-eslint-22.0.0.tgz",
@@ -5007,33 +4902,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/anymatch/node_modules/picomatch": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
- "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/aria-query": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
@@ -5044,6 +4912,16 @@
"node": ">= 0.4"
}
},
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/axobject-query": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
@@ -5064,16 +4942,6 @@
"node": "18 || 20 || >=22"
}
},
- "node_modules/base64id": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
- "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^4.5.0 || >= 5.9"
- }
- },
"node_modules/baseline-browser-mapping": {
"version": "2.11.4",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.4.tgz",
@@ -5108,17 +4976,14 @@
"node": ">=18.0.0"
}
},
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "node_modules/bidi-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
+ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "dependencies": {
+ "require-from-string": "^2.0.2"
}
},
"node_modules/body-parser": {
@@ -5168,9 +5033,9 @@
"license": "ISC"
},
"node_modules/brace-expansion": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
- "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
+ "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5180,19 +5045,6 @@
"node": "20 || >=22"
}
},
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/browserslist": {
"version": "4.28.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz",
@@ -5244,56 +5096,6 @@
"node": ">= 0.8"
}
},
- "node_modules/cacache": {
- "version": "20.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz",
- "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/fs": "^5.0.0",
- "fs-minipass": "^3.0.0",
- "glob": "^13.0.0",
- "lru-cache": "^11.1.0",
- "minipass": "^7.0.3",
- "minipass-collect": "^2.0.1",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "p-map": "^7.0.2",
- "ssri": "^13.0.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/cacache/node_modules/glob": {
- "version": "13.0.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
- "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "minimatch": "^10.2.2",
- "minipass": "^7.1.3",
- "path-scurry": "^2.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/cacache/node_modules/lru-cache": {
- "version": "11.5.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
- "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
@@ -5346,6 +5148,16 @@
],
"license": "CC-BY-4.0"
},
+ "node_modules/chai": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz",
+ "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/chalk": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
@@ -5382,16 +5194,6 @@
"url": "https://paulmillr.com/funding/"
}
},
- "node_modules/chownr": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
- "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/cli-cursor": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
@@ -5514,26 +5316,6 @@
"@codemirror/view": "^6.0.0"
}
},
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/commander": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
@@ -5544,116 +5326,24 @@
"node": ">=16"
}
},
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/connect": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "node_modules/content-disposition": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
+ "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
"engines": {
- "node": ">= 0.10.0"
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
- "node_modules/connect/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/connect/node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/connect/node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/connect/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/connect/node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/connect/node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-disposition": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
- "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5815,21 +5505,33 @@
"dev": true,
"license": "CC0-1.0"
},
- "node_modules/custom-event": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
- "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
+ "node_modules/data-urls": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz",
+ "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-mimetype": "^5.0.0",
+ "whatwg-url": "^16.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ }
},
- "node_modules/date-format": {
- "version": "4.0.14",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz",
- "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
+ "node_modules/data-urls/node_modules/whatwg-url": {
+ "version": "16.0.1",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz",
+ "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@exodus/bytes": "^1.11.0",
+ "tr46": "^6.0.0",
+ "webidl-conversions": "^8.0.1"
+ },
"engines": {
- "node": ">=4.0"
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}
},
"node_modules/debug": {
@@ -5850,6 +5552,13 @@
}
}
},
+ "node_modules/decimal.js": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -5867,17 +5576,6 @@
"node": ">= 0.8"
}
},
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -5889,26 +5587,6 @@
"node": ">=8"
}
},
- "node_modules/di": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
- "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/dom-serialize": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
- "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "custom-event": "~1.0.0",
- "ent": "~2.2.0",
- "extend": "^3.0.0",
- "void-elements": "^2.0.0"
- }
- },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -6014,101 +5692,6 @@
"node": ">= 0.8"
}
},
- "node_modules/engine.io": {
- "version": "6.6.9",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.9.tgz",
- "integrity": "sha512-clKkw4C7nJ22mGgoVcCg6V/W/TxdNyIOTr89k2ONZu81qqkddPFDF0LXcbAwhzPD8DjkiRCjzuiO6Y+fkpD4vg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/cors": "^2.8.12",
- "@types/node": ">=10.0.0",
- "@types/ws": "^8.5.12",
- "accepts": "~1.3.4",
- "base64id": "2.0.0",
- "cookie": "~0.7.2",
- "cors": "~2.8.5",
- "debug": "~4.4.1",
- "engine.io-parser": "~5.2.1",
- "ws": "~8.21.0"
- },
- "engines": {
- "node": ">=10.2.0"
- }
- },
- "node_modules/engine.io-parser": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
- "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/engine.io/node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/engine.io/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/engine.io/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/engine.io/node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ent": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz",
- "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "es-errors": "^1.3.0",
- "punycode": "^1.4.1",
- "safe-regex-test": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -6122,16 +5705,6 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/environment": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
@@ -6165,6 +5738,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/es-module-lexer": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
+ "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/es-object-atoms": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
@@ -6502,6 +6082,16 @@
"node": ">=4.0"
}
},
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
@@ -6523,9 +6113,9 @@
}
},
"node_modules/eventemitter3": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
+ "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
"dev": true,
"license": "MIT"
},
@@ -6552,12 +6142,15 @@
"node": ">=18.0.0"
}
},
- "node_modules/exponential-backoff": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
- "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
+ "node_modules/expect-type": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz",
+ "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==",
"dev": true,
- "license": "Apache-2.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
},
"node_modules/express": {
"version": "5.2.1",
@@ -6623,13 +6216,6 @@
"express": ">= 4.11"
}
},
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -6676,9 +6262,9 @@
}
},
"node_modules/fast-uri": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz",
- "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz",
+ "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==",
"dev": true,
"funding": [
{
@@ -6733,19 +6319,6 @@
"node": ">=16.0.0"
}
},
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/finalhandler": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
@@ -6806,27 +6379,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/follow-redirects": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
- "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -6847,41 +6399,6 @@
"node": ">= 0.8"
}
},
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/fs-minipass": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
- "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^7.0.3"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -6979,28 +6496,6 @@
"node": ">= 0.4"
}
},
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -7021,37 +6516,6 @@
"dev": true,
"license": "BSD-2-Clause"
},
- "node_modules/glob/node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
@@ -7072,16 +6536,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
@@ -7095,39 +6549,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "node_modules/hasown": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
- "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
+ "function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/hono": {
- "version": "4.12.32",
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.32.tgz",
- "integrity": "sha512-XcuyW9qE2kJn07PkecMOBd5Vq/hMy7mmGw+idz1yblbg9N17ijJODrvPkn7/dwL3Kulj8LcRJ69DLOWf91dRUg==",
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.1.tgz",
+ "integrity": "sha512-kdJoFVv2xmayw6cY09H7AbMJMt8Jn5jdlEdXsP7AGBdF2DIptVlKlOLKXP41yPip4/a3yQPv9gVcJYI8YY04dw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7135,16 +6573,16 @@
}
},
"node_modules/hosted-git-info": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz",
- "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-10.1.1.tgz",
+ "integrity": "sha512-DeOnSPAvOndYKfw075gt8yZzQ7S2hNztw34zBTfhIzLhmBTswIBg5/y+pqu/VD5cYWm5goAFTusDmUEmKZ0PEQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"lru-cache": "^11.1.0"
},
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
}
},
"node_modules/hosted-git-info/node_modules/lru-cache": {
@@ -7157,12 +6595,18 @@
"node": "20 || >=22"
}
},
- "node_modules/html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "node_modules/html-encoding-sniffer": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz",
+ "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "@exodus/bytes": "^1.6.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ }
},
"node_modules/htmlparser2": {
"version": "10.1.0",
@@ -7197,13 +6641,6 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/http-cache-semantics": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
- "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
- "dev": true,
- "license": "BSD-2-Clause"
- },
"node_modules/http-errors": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
@@ -7225,45 +6662,6 @@
"url": "https://opencollective.com/express"
}
},
- "node_modules/http-proxy": {
- "version": "1.18.1",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
- "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "^7.1.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/http-proxy-agent/node_modules/agent-base": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
- "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14"
- }
- },
"node_modules/https-proxy-agent": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-9.0.0.tgz",
@@ -7321,19 +6719,6 @@
"node": ">= 4"
}
},
- "node_modules/ignore-walk": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz",
- "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minimatch": "^10.0.3"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/immutable": {
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz",
@@ -7351,18 +6736,6 @@
"node": ">=0.8.19"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -7370,16 +6743,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/ini": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz",
- "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/ip-address": {
"version": "10.3.1",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.3.1.tgz",
@@ -7400,19 +6763,6 @@
"node": ">= 0.10"
}
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -7465,15 +6815,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
+ "license": "MIT"
},
"node_modules/is-promise": {
"version": "4.0.0",
@@ -7482,25 +6829,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/is-regex": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
- "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "gopd": "^1.2.0",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-unicode-supported": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
@@ -7514,19 +6842,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/isbinaryfile": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
- "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/gjtorikian/"
- }
- },
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -7534,70 +6849,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/istanbul-lib-coverage": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
- "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-report": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
- "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^4.0.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/istanbul-reports": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
- "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jasmine-core": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-6.3.0.tgz",
@@ -7622,6 +6873,67 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/jsdom": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-30.0.1.tgz",
+ "integrity": "sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@asamuzakjp/css-color": "^6.0.5",
+ "@asamuzakjp/dom-selector": "^8.3.0",
+ "@bramus/specificity": "^2.4.2",
+ "@csstools/css-syntax-patches-for-csstree": "^1.1.7",
+ "@exodus/bytes": "^1.15.1",
+ "css-tree": "^3.2.1",
+ "data-urls": "^7.0.0",
+ "decimal.js": "^10.6.0",
+ "html-encoding-sniffer": "^6.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "lru-cache": "^11.5.2",
+ "parse5": "^8.0.1",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^6.0.2",
+ "undici": "^8.9.0",
+ "w3c-xmlserializer": "^5.0.0",
+ "webidl-conversions": "^8.0.1",
+ "whatwg-mimetype": "^5.0.0",
+ "whatwg-url": "^17.1.0",
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ },
+ "peerDependencies": {
+ "canvas": "^3.2.3"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/jsdom/node_modules/undici": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz",
+ "integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.19.0"
+ }
+ },
"node_modules/jsesc": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
@@ -7642,16 +6954,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/json-parse-even-better-errors": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz",
- "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
@@ -7691,553 +6993,7 @@
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
"integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
- "dev": true,
- "engines": [
- "node >= 0.2.0"
- ],
- "license": "MIT"
- },
- "node_modules/karma": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz",
- "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@colors/colors": "1.5.0",
- "body-parser": "^1.19.0",
- "braces": "^3.0.2",
- "chokidar": "^3.5.1",
- "connect": "^3.7.0",
- "di": "^0.0.1",
- "dom-serialize": "^2.2.1",
- "glob": "^7.1.7",
- "graceful-fs": "^4.2.6",
- "http-proxy": "^1.18.1",
- "isbinaryfile": "^4.0.8",
- "lodash": "^4.17.21",
- "log4js": "^6.4.1",
- "mime": "^2.5.2",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.5",
- "qjobs": "^1.2.0",
- "range-parser": "^1.2.1",
- "rimraf": "^3.0.2",
- "socket.io": "^4.7.2",
- "source-map": "^0.6.1",
- "tmp": "^0.2.1",
- "ua-parser-js": "^0.7.30",
- "yargs": "^16.1.1"
- },
- "bin": {
- "karma": "bin/karma"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/karma-chrome-launcher": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz",
- "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "which": "^1.2.1"
- }
- },
- "node_modules/karma-chrome-launcher/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/karma-coverage": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz",
- "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "istanbul-lib-coverage": "^3.2.0",
- "istanbul-lib-instrument": "^5.1.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.1",
- "istanbul-reports": "^3.0.5",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/karma-coverage/node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/karma-coverage/node_modules/brace-expansion": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma-coverage/node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/karma-coverage/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/karma-jasmine": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz",
- "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jasmine-core": "^4.1.0"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "karma": "^6.0.0"
- }
- },
- "node_modules/karma-jasmine-html-reporter": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.2.0.tgz",
- "integrity": "sha512-J0laEC43Oy2RdR5V5R3bqmdo7yRIYySq6XHKbA+e5iSAgLjhR1oICLGeSREPlJXpeyNcdJf3J17YcdhD0mRssQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "jasmine-core": "^4.0.0 || ^5.0.0 || ^6.0.0",
- "karma": "^6.0.0",
- "karma-jasmine": "^5.0.0"
- }
- },
- "node_modules/karma-jasmine/node_modules/jasmine-core": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz",
- "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/karma/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/karma/node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/karma/node_modules/body-parser": {
- "version": "1.20.6",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz",
- "integrity": "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bytes": "~3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "~1.2.0",
- "http-errors": "~2.0.1",
- "iconv-lite": "~0.4.24",
- "on-finished": "~2.4.1",
- "qs": "~6.15.1",
- "raw-body": "~2.5.3",
- "type-is": "~1.6.18",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/karma/node_modules/brace-expansion": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/karma/node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/karma/node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/karma/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/karma/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/karma/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/karma/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/karma/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma/node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/karma/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/karma/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/karma/node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/karma/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/karma/node_modules/picomatch": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
- "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/karma/node_modules/raw-body": {
- "version": "2.5.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
- "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bytes": "~3.1.2",
- "http-errors": "~2.0.1",
- "iconv-lite": "~0.4.24",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/karma/node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/karma/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/karma/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/karma/node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/karma/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/karma/node_modules/yargs": {
- "version": "16.2.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz",
- "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/karma/node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
+ "license": "MIT"
},
"node_modules/keyv": {
"version": "4.5.4",
@@ -8317,13 +7073,6 @@
"node": ">=22.13.0"
}
},
- "node_modules/listr2/node_modules/eventemitter3": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
- "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lmdb": {
"version": "3.5.4",
"resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.5.4.tgz",
@@ -8369,13 +7118,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lodash": {
- "version": "4.18.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
- "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/log-symbols": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz",
@@ -8466,23 +7208,6 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/log4js": {
- "version": "6.9.1",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz",
- "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "date-format": "^4.0.14",
- "debug": "^4.3.4",
- "flatted": "^3.2.7",
- "rfdc": "^1.3.0",
- "streamroller": "^3.1.5"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -8503,46 +7228,6 @@
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
- "node_modules/make-dir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
- "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^7.5.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-fetch-happen": {
- "version": "15.0.6",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.6.tgz",
- "integrity": "sha512-Je0fLJ0F5atA7F+eIlLzk+Wkcl57JDf4kf+EW8xiP5E31xOQxkIxTbgf1Oi1Lw9tRI9UEMRdI5Vz2xTzoNU1Jw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@gar/promise-retry": "^1.0.0",
- "@npmcli/agent": "^4.0.0",
- "@npmcli/redact": "^4.0.0",
- "cacache": "^20.0.1",
- "http-cache-semantics": "^4.1.1",
- "minipass": "^7.0.2",
- "minipass-fetch": "^5.0.0",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^1.0.0",
- "proc-log": "^6.0.0",
- "ssri": "^13.0.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/marked": {
"version": "18.0.7",
"resolved": "https://registry.npmjs.org/marked/-/marked-18.0.7.tgz",
@@ -8599,19 +7284,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/mime": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
- "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/mime-db": {
"version": "1.54.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
@@ -8668,162 +7340,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minipass": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
- "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/minipass-collect": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
- "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^7.0.3"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/minipass-fetch": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz",
- "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minipass": "^7.0.3",
- "minipass-sized": "^2.0.0",
- "minizlib": "^3.0.1"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- },
- "optionalDependencies": {
- "iconv-lite": "^0.7.2"
- }
- },
- "node_modules/minipass-flush": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz",
- "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minipass-flush/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-flush/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/minipass-pipeline": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
- "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-pipeline/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-pipeline/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/minipass-sized": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz",
- "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^7.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
- "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minipass": "^7.1.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
"node_modules/mrmime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
@@ -8886,9 +7402,9 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.16",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
- "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
+ "version": "3.3.18",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
+ "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
"dev": true,
"funding": [
{
@@ -8911,227 +7427,64 @@
"dev": true,
"license": "MIT"
},
- "node_modules/negotiator": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
- "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/node-addon-api": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
- "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/node-gyp": {
- "version": "12.4.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.4.0.tgz",
- "integrity": "sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "env-paths": "^2.2.0",
- "exponential-backoff": "^3.1.1",
- "graceful-fs": "^4.2.6",
- "nopt": "^9.0.0",
- "proc-log": "^6.0.0",
- "semver": "^7.3.5",
- "tar": "^7.5.4",
- "tinyglobby": "^0.2.12",
- "undici": "^6.25.0",
- "which": "^6.0.0"
- },
- "bin": {
- "node-gyp": "bin/node-gyp.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/node-gyp-build-optional-packages": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
- "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "detect-libc": "^2.0.1"
- },
- "bin": {
- "node-gyp-build-optional-packages": "bin.js",
- "node-gyp-build-optional-packages-optional": "optional.js",
- "node-gyp-build-optional-packages-test": "build-test.js"
- }
- },
- "node_modules/node-gyp/node_modules/isexe": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
- "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/node-gyp/node_modules/which": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
- "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^4.0.0"
- },
- "bin": {
- "node-which": "bin/which.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.51",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz",
- "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/nopt": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz",
- "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "abbrev": "^4.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-bundled": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz",
- "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "npm-normalize-package-bin": "^5.0.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/npm-install-checks": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz",
- "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "semver": "^7.1.1"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/npm-normalize-package-bin": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
- "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==",
+ "node_modules/negotiator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": ">= 0.6"
}
},
- "node_modules/npm-package-arg": {
- "version": "13.0.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz",
- "integrity": "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==",
+ "node_modules/node-addon-api": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
+ "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
"dev": true,
- "license": "ISC",
- "dependencies": {
- "hosted-git-info": "^9.0.0",
- "proc-log": "^6.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-name": "^7.0.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
+ "license": "MIT",
+ "optional": true
},
- "node_modules/npm-packlist": {
- "version": "10.0.4",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz",
- "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==",
+ "node_modules/node-gyp-build-optional-packages": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
+ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "ignore-walk": "^8.0.0",
- "proc-log": "^6.0.0"
+ "detect-libc": "^2.0.1"
},
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "bin": {
+ "node-gyp-build-optional-packages": "bin.js",
+ "node-gyp-build-optional-packages-optional": "optional.js",
+ "node-gyp-build-optional-packages-test": "build-test.js"
}
},
- "node_modules/npm-pick-manifest": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz",
- "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==",
+ "node_modules/node-releases": {
+ "version": "2.0.51",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz",
+ "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==",
"dev": true,
- "license": "ISC",
- "dependencies": {
- "npm-install-checks": "^8.0.0",
- "npm-normalize-package-bin": "^5.0.0",
- "npm-package-arg": "^13.0.0",
- "semver": "^7.3.5"
- },
+ "license": "MIT",
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": ">=18"
}
},
- "node_modules/npm-registry-fetch": {
- "version": "19.1.1",
- "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz",
- "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==",
+ "node_modules/npm-package-arg": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-14.0.0.tgz",
+ "integrity": "sha512-69XQh3k+dtGa1p+7RaR57IuG3rCko96xr/nUfN4yDYBXbTYICiWcOpsFKLN2GtGE9cyIljE+f1exnaYt9MvM+Q==",
"dev": true,
"license": "ISC",
"dependencies": {
- "@npmcli/redact": "^4.0.0",
- "jsonparse": "^1.3.1",
- "make-fetch-happen": "^15.0.0",
- "minipass": "^7.0.2",
- "minipass-fetch": "^5.0.0",
- "minizlib": "^3.0.1",
- "npm-package-arg": "^13.0.0",
- "proc-log": "^6.0.0"
+ "hosted-git-info": "^10.1.0",
+ "proc-log": "^7.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^8.0.0"
},
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
}
},
"node_modules/nth-check": {
@@ -9170,6 +7523,20 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/obug": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz",
+ "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/sxzz",
+ "https://opencollective.com/debug"
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -9228,9 +7595,9 @@
}
},
"node_modules/ora": {
- "version": "9.4.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-9.4.0.tgz",
- "integrity": "sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ==",
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-9.4.1.tgz",
+ "integrity": "sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9290,51 +7657,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-map": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.6.tgz",
- "integrity": "sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pacote": {
- "version": "21.5.1",
- "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.5.1.tgz",
- "integrity": "sha512-KvcJ9iy3crysCsgqc4+PknH/w6jkrp8JN36mpZBPwNaDRwTfMZD37YzRazNstiZUOhuF5pno9f78n9mEJBavwg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@gar/promise-retry": "^1.0.0",
- "@npmcli/git": "^7.0.0",
- "@npmcli/installed-package-contents": "^4.0.0",
- "@npmcli/package-json": "^7.0.0",
- "@npmcli/promise-spawn": "^9.0.0",
- "@npmcli/run-script": "^10.0.0",
- "cacache": "^20.0.0",
- "fs-minipass": "^3.0.0",
- "minipass": "^7.0.2",
- "npm-package-arg": "^13.0.0",
- "npm-packlist": "^10.0.1",
- "npm-pick-manifest": "^11.0.1",
- "npm-registry-fetch": "^19.0.0",
- "proc-log": "^6.0.0",
- "sigstore": "^4.0.0",
- "ssri": "^13.0.0",
- "tar": "^7.4.3"
- },
- "bin": {
- "pacote": "bin/index.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/parse5": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz",
@@ -9420,16 +7742,6 @@
"node": ">=8"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -9440,33 +7752,6 @@
"node": ">=8"
}
},
- "node_modules/path-scurry": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
- "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^11.0.0",
- "minipass": "^7.1.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/path-scurry/node_modules/lru-cache": {
- "version": "11.5.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
- "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
"node_modules/path-to-regexp": {
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
@@ -9478,6 +7763,13 @@
"url": "https://opencollective.com/express"
}
},
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -9624,13 +7916,13 @@
}
},
"node_modules/proc-log": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
- "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-7.0.0.tgz",
+ "integrity": "sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==",
"dev": true,
"license": "ISC",
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
}
},
"node_modules/proxy-addr": {
@@ -9647,23 +7939,6 @@
"node": ">= 0.10"
}
},
- "node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/qjobs": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
- "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.9"
- }
- },
"node_modules/qs": {
"version": "6.15.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
@@ -9732,16 +8007,6 @@
"dev": true,
"license": "Apache-2.0"
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -9752,13 +8017,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/restore-cursor": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
@@ -9783,23 +8041,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/rollup": {
"version": "4.60.2",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz",
@@ -9878,24 +8119,6 @@
"tslib": "^2.1.0"
}
},
- "node_modules/safe-regex-test": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
- "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "is-regex": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -9964,6 +8187,19 @@
"node": ">=11.0.0"
}
},
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
+ }
+ },
"node_modules/semver": {
"version": "7.7.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
@@ -10130,6 +8366,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -10139,185 +8382,25 @@
"engines": {
"node": ">=14"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/sigstore": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.1.tgz",
- "integrity": "sha512-endqECJkfhozrXMK5ngu/UAA0xVcVEFdnHJCElGaExypjW+HK5i6zu3NteLoaX/iFbRUbC3+DjttQs0GARr+5w==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@sigstore/bundle": "^4.0.0",
- "@sigstore/core": "^3.2.1",
- "@sigstore/protobuf-specs": "^0.5.0",
- "@sigstore/sign": "^4.1.1",
- "@sigstore/tuf": "^4.0.2",
- "@sigstore/verify": "^3.1.1"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/slice-ansi": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz",
- "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^6.2.3",
- "is-fullwidth-code-point": "^5.1.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socket.io": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz",
- "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "accepts": "~1.3.4",
- "base64id": "~2.0.0",
- "cors": "~2.8.5",
- "debug": "~4.4.1",
- "engine.io": "~6.6.0",
- "socket.io-adapter": "~2.5.2",
- "socket.io-parser": "~4.2.4"
- },
- "engines": {
- "node": ">=10.2.0"
- }
- },
- "node_modules/socket.io-adapter": {
- "version": "2.5.8",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.8.tgz",
- "integrity": "sha512-6Oy52pbg+kvdCVvjcN+FnY7BvxZ7cIHNScbvztT/It5d0vbwoJoVZmF2gjJmnV0/4WlXRfG15zc45ySk9Ah8bw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "~4.4.1",
- "ws": "~8.21.0"
- }
- },
- "node_modules/socket.io-parser": {
- "version": "4.2.7",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.7.tgz",
- "integrity": "sha512-IH/iSeO9T6gz1KkFleGDWkG9N3dl4jXVYUtMhIqH10Md0ttMer8nUNWiP1DKuNrybD2xBrixLJdCC9J6ECoYkg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.4.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/socket.io/node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/socket.io/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/socket.io/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/socket.io/node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/socks": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz",
- "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ip-address": "^10.1.1",
- "smart-buffer": "^4.2.0"
- },
- "engines": {
- "node": ">= 10.0.0",
- "npm": ">= 3.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/socks-proxy-agent": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
- "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "node_modules/slice-ansi": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz",
+ "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "agent-base": "^7.1.2",
- "debug": "^4.3.4",
- "socks": "^2.8.3"
+ "ansi-styles": "^6.2.3",
+ "is-fullwidth-code-point": "^5.1.0"
},
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/socks-proxy-agent/node_modules/agent-base": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
- "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14"
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
"node_modules/source-map": {
@@ -10361,43 +8444,12 @@
"node": ">=0.10.0"
}
},
- "node_modules/spdx-exceptions": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
- "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
- "dev": true,
- "license": "CC-BY-3.0"
- },
- "node_modules/spdx-expression-parse": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
- "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.23",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
- "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/ssri": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz",
- "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==",
+ "node_modules/stackback": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
"dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^7.0.3"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
+ "license": "MIT"
},
"node_modules/statuses": {
"version": "2.0.2",
@@ -10409,6 +8461,13 @@
"node": ">= 0.8"
}
},
+ "node_modules/std-env": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz",
+ "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/stdin-discarder": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.2.tgz",
@@ -10422,21 +8481,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/streamroller": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz",
- "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "date-format": "^4.0.14",
- "debug": "^4.3.4",
- "fs-extra": "^8.1.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
"node_modules/string-argv": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
@@ -10499,19 +8543,6 @@
"integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==",
"license": "MIT"
},
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/svgo": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.2.tgz",
@@ -10568,6 +8599,13 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/synckit": {
"version": "0.11.13",
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz",
@@ -10584,32 +8622,12 @@
"url": "https://opencollective.com/synckit"
}
},
- "node_modules/tar": {
- "version": "7.5.22",
- "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",
- "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/fs-minipass": "^4.0.0",
- "chownr": "^3.0.0",
- "minipass": "^7.1.2",
- "minizlib": "^3.1.0",
- "yallist": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
- "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "node_modules/tinybench": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
+ "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
"dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=18"
- }
+ "license": "MIT"
},
"node_modules/tinyexec": {
"version": "1.2.4",
@@ -10638,29 +8656,36 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/tmp": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz",
- "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==",
+ "node_modules/tinyrainbow": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.1.tgz",
+ "integrity": "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=14.14"
+ "node": ">=14.0.0"
}
},
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "node_modules/tldts": {
+ "version": "7.4.10",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.10.tgz",
+ "integrity": "sha512-GgouD1B+sWwvkaEq8vXC15DjQitxbvs12oIXELpconwm+Tg3zfcEv4jgzq3vtKverDXsg3VI8aRgNL2Nra0Iog==",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-number": "^7.0.0"
+ "tldts-core": "^7.4.10"
},
- "engines": {
- "node": ">=8.0"
+ "bin": {
+ "tldts": "bin/cli.js"
}
},
+ "node_modules/tldts-core": {
+ "version": "7.4.10",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.10.tgz",
+ "integrity": "sha512-KnQjp53ZekKgm/r3l+u8kJGGzYgrWdP8+Mql7a4vijh2WE0IrZWspQj/TpTxDho/YxO+AnOZnIjQcCD+q6iJsw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -10671,6 +8696,42 @@
"node": ">=0.6"
}
},
+ "node_modules/tough-cookie": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.2.tgz",
+ "integrity": "sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tldts": "^7.0.5"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz",
+ "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/tr46/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/ts-api-utils": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
@@ -10690,21 +8751,6 @@
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
},
- "node_modules/tuf-js": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz",
- "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@tufjs/models": "4.1.0",
- "debug": "^4.4.3",
- "make-fetch-happen": "^15.0.1"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -10789,43 +8835,6 @@
"typescript": ">=4.8.4 <6.1.0"
}
},
- "node_modules/ua-parser-js": {
- "version": "0.7.41",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz",
- "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ua-parser-js"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/faisalman"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/faisalman"
- }
- ],
- "license": "MIT",
- "bin": {
- "ua-parser-js": "script/cli.js"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/undici": {
- "version": "6.28.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.0.tgz",
- "integrity": "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18.17"
- }
- },
"node_modules/undici-types": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
@@ -10833,16 +8842,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -10904,24 +8903,14 @@
"node": ">=6"
}
},
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/validate-npm-package-name": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
- "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-8.0.0.tgz",
+ "integrity": "sha512-SCv6OOV6Xj2/3cXy3dGmADluJTNcL3o7hZAglNPTe+WYuEuvxgJzxPrSDLZhF+CwyQOubqgecjMmTJGMVLWjYQ==",
"dev": true,
"license": "ISC",
"engines": {
- "node": "^20.17.0 || >=22.9.0"
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
}
},
"node_modules/vary": {
@@ -11009,14 +8998,94 @@
}
}
},
- "node_modules/void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
- "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==",
+ "node_modules/vitest": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz",
+ "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@vitest/expect": "4.1.10",
+ "@vitest/mocker": "4.1.10",
+ "@vitest/pretty-format": "4.1.10",
+ "@vitest/runner": "4.1.10",
+ "@vitest/snapshot": "4.1.10",
+ "@vitest/spy": "4.1.10",
+ "@vitest/utils": "4.1.10",
+ "es-module-lexer": "^2.0.0",
+ "expect-type": "^1.3.0",
+ "magic-string": "^0.30.21",
+ "obug": "^2.1.1",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3",
+ "std-env": "^4.0.0-rc.1",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^1.0.2",
+ "tinyglobby": "^0.2.15",
+ "tinyrainbow": "^3.1.0",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@opentelemetry/api": "^1.9.0",
+ "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
+ "@vitest/browser-playwright": "4.1.10",
+ "@vitest/browser-preview": "4.1.10",
+ "@vitest/browser-webdriverio": "4.1.10",
+ "@vitest/coverage-istanbul": "4.1.10",
+ "@vitest/coverage-v8": "4.1.10",
+ "@vitest/ui": "4.1.10",
+ "happy-dom": "*",
+ "jsdom": "*",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@types/node": {
+ "optional": true
+ },
+ "@vitest/browser-playwright": {
+ "optional": true
+ },
+ "@vitest/browser-preview": {
+ "optional": true
+ },
+ "@vitest/browser-webdriverio": {
+ "optional": true
+ },
+ "@vitest/coverage-istanbul": {
+ "optional": true
+ },
+ "@vitest/coverage-v8": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ },
+ "vite": {
+ "optional": false
+ }
}
},
"node_modules/w3c-keyname": {
@@ -11025,6 +9094,19 @@
"integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
"license": "MIT"
},
+ "node_modules/w3c-xmlserializer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
+ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/watchpack": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz",
@@ -11047,6 +9129,41 @@
"license": "MIT",
"optional": true
},
+ "node_modules/webidl-conversions": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz",
+ "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz",
+ "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "17.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-17.1.0.tgz",
+ "integrity": "sha512-3GeworPmc2ZfEEHP7lEbUfBX/L75wdEsi0rLNhXcXxnoN5jyq0SL5gCy06SGW2cyTIZdTvWIDQNQoza++vKeaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@exodus/bytes": "^1.15.1",
+ "tr46": "^6.0.0",
+ "webidl-conversions": "^8.0.1"
+ },
+ "engines": {
+ "node": "^22.14.0 || >=24.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -11063,6 +9180,23 @@
"node": ">= 8"
}
},
+ "node_modules/why-is-node-running": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+ "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "siginfo": "^2.0.0",
+ "stackback": "0.0.2"
+ },
+ "bin": {
+ "why-is-node-running": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -11098,28 +9232,23 @@
"dev": true,
"license": "ISC"
},
- "node_modules/ws": {
- "version": "8.21.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz",
- "integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==",
+ "node_modules/xml-name-validator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
+ "node": ">=18"
}
},
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -11227,9 +9356,9 @@
}
},
"node_modules/zod": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.2.tgz",
- "integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
+ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
@@ -11244,6 +9373,13 @@
"peerDependencies": {
"zod": "^3.25.28 || ^4"
}
+ },
+ "node_modules/zone.js": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.16.2.tgz",
+ "integrity": "sha512-Eky7p2Z1Ig3NnbfodSPoARCjKBSTFMnE/ACsP1L/XJEfY4SdOFce19BsUCWVwL6K5ABZFy5J3bjcMWffX+YM3Q==",
+ "devOptional": true,
+ "license": "MIT"
}
}
}
diff --git a/package.json b/package.json
old mode 100644
new mode 100755
index 8b828f689..59e88e3e6
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "rclone-manager",
- "version": "0.3.1",
+ "version": "0.3.2",
"scripts": {
"ng": "ng",
"start": "ng serve",
@@ -14,6 +14,9 @@
"build:flatpak": "npm run tauri build -- --bundles deb --config '{\"bundle\":{\"createUpdaterArtifacts\":false}}' --features flatpak",
"build:snap": "npm run tauri build -- --bundles deb && cp src-tauri/target/release/bundle/deb/rclone-manager_*.deb ./rclone-manager.deb && snapcraft",
"build:headless": "npm run tauri build -- --config src-tauri/tauri.conf.headless.json --features web-server,tray -- --no-default-features",
+ "test": "ng test",
+ "test:ci": "ng test --watch=false",
+ "test:coverage": "ng test --watch=false --code-coverage",
"lint": "eslint \"**/*.{ts,html}\" && cd src-tauri && cargo clippy -- -D warnings",
"format": "prettier --write \"**/*.{ts,html,scss,json}\" && cd src-tauri && cargo fmt",
"fix:all": "node scripts/fix-svg-ids.cjs && npm run format && eslint --fix \"**/*.{ts,html}\"",
@@ -53,6 +56,7 @@
"@ngx-translate/http-loader": "^18.0.0",
"@tauri-apps/api": "~2.11.1",
"@tauri-apps/plugin-clipboard-manager": "^2.3.2",
+ "@tauri-apps/plugin-opener": "^2.5.4",
"@tauri-apps/plugin-os": "^2.3.2",
"codemirror": "^6.0.2",
"cronstrue": "^3.21.0",
@@ -67,22 +71,21 @@
"@eslint/js": "^10.0.1",
"@tauri-apps/cli": "^2.11.3",
"@types/jasmine": "~6.0.0",
+ "@types/node": "^26.1.2",
"angular-eslint": "22.0.0",
"eslint": "^10.5.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.6",
"husky": "^9.1.7",
"jasmine-core": "~6.3.0",
- "karma": "~6.4.4",
- "karma-chrome-launcher": "~3.2.0",
- "karma-coverage": "~2.2.1",
- "karma-jasmine": "~5.1.0",
- "karma-jasmine-html-reporter": "~2.2.0",
+ "jsdom": "^30.0.1",
"lint-staged": "^17.0.8",
"prettier": "^3.8.4",
"svgo": "^4.0.2",
"typescript": "^6.0.3",
- "typescript-eslint": "^8.62.0"
+ "typescript-eslint": "^8.62.0",
+ "vitest": "^4.1.10",
+ "zone.js": "^0.16.2"
},
"lint-staged": {
"**/*.{ts,html}": [
@@ -94,7 +97,7 @@
],
"src-tauri/**/*.rs": [
"sh -c 'cd src-tauri && cargo fmt'",
- "sh -c 'cd src-tauri && cargo clippy -- -D warnings'"
+ "sh -c 'export LIBRCLONE_SKIP_LINK_CHECK=1 && cd src-tauri && cargo clippy -- -D warnings'"
]
}
}
diff --git a/resources/i18n/en-US/main.json b/resources/i18n/en-US/main.json
index 6f080a475..f4ea6058c 100644
--- a/resources/i18n/en-US/main.json
+++ b/resources/i18n/en-US/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "Cancel",
"save": "Save",
+ "create": "Create",
+ "show": "Show",
+ "hide": "Hide",
"ok": "OK",
"close": "Close",
- "nextStep": "Next Step",
+ "next": "Next",
"back": "Back",
"continue": "Continue",
"yes": "Yes",
@@ -31,7 +34,12 @@
"password": "Password",
"username": "Username",
"selectAll": "Select All",
- "deselectAll": "Deselect All"
+ "deselectAll": "Deselect All",
+ "viewDetails": "View Details",
+ "moreActions": "More Actions",
+ "duplicate": "Duplicate",
+ "clearAll": "Clear All",
+ "acknowledge": "Acknowledge"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "Debounce Delay",
"watcherActive": "Watcher Active",
"seconds": "seconds",
- "realtimeSchedule": "Real-time File Watcher"
+ "realtimeSchedule": "Real-time File Watcher",
+ "changedOnlyShort": "Subdirectories Only",
+ "changedOnlyActive": "Subdirectories Only",
+ "syncScope": "Sync Scope",
+ "realtimeChangedOnly": "Real-time Monitoring (Subdirectories only)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "Delete",
"copyurl": "Copy URL",
"archivecreate": "Archive",
+ "cryptcheck": "Cryptcheck",
"serve": "Serve",
"start": "Start",
"stop": "Stop"
},
"sidebar": {
+ "toggleSidebar": "Toggle Sidebar",
"toggleSearch": "Toggle search bar",
"remotes": "Remotes",
"searchPlaceholder": "Search remotes...",
@@ -193,7 +207,8 @@
"used": "Used:",
"free": "Free:",
"loading": "Loading...",
- "errorLoading": "Problem loading disk usage"
+ "errorLoading": "Problem loading disk usage",
+ "retry": "Retry loading disk usage"
},
"status": {
"mounted": "Mounted",
@@ -296,7 +311,9 @@
"filemanager": "File Manager",
"startup": "Startup",
"update": "Update",
- "internal": "Internal"
+ "internal": "Internal",
+ "flow": "Flow Workspace",
+ "quickrun": "Quick Run"
},
"rule": {
"filters": "Filters",
@@ -318,7 +335,8 @@
"actionRequired": "At least one action is required.",
"noActionsHint": "You need to create an alert action first before you can assign it to a rule.",
"filtersEmptyHint": "Leave empty to match all events.",
- "scopeFilters": "Scope Filters"
+ "scopeFilters": "Scope Filters",
+ "allEvents": "All Events"
},
"events": {
"job": "Jobs & File Operations",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "Header Name",
"headerValue": "Value"
- }
+ },
+ "noRulesHint": "No alert rules configured yet. Create a rule to receive notifications.",
+ "noActionsHint": "No alert actions configured yet. Create an action to define how alerts are delivered."
},
"settings": {
"resetAll": {
@@ -408,17 +428,36 @@
"label": "Enable Tray Icon",
"description": "Show an icon in the system tray. Also enables the background service."
},
+ "tray_icon_theme": {
+ "label": "Tray Icon Theme",
+ "description": "Choose the icon style for the system tray.",
+ "options": {
+ "system": "System (Auto Monochrome)",
+ "color": "Color",
+ "monochrome_light": "Monochrome (Light)",
+ "monochrome_dark": "Monochrome (Dark)"
+ }
+ },
"language": {
"label": "Language",
"description": "Language to use for the user interface. System language is used by default."
},
+ "default_view": {
+ "label": "Default Startup View",
+ "description": "Select the main interface view to launch when starting the app.",
+ "options": {
+ "main_menu": "Main Menu",
+ "nautilus": "Nautilus File Browser",
+ "flow": "Flow Workspace"
+ }
+ },
"start_on_startup": {
"label": "Start on Startup",
"description": "Automatically start the app when the system starts."
},
"notifications": {
"label": "Enable Notifications",
- "description": "Show notifications for mount events."
+ "description": "Show desktop notifications for application events (mounts, syncs, updates, etc.)."
},
"restrict": {
"label": "Restrict Values",
@@ -427,6 +466,10 @@
"standalone_dialogs": {
"label": "Detached Dialogs",
"description": "Open dialog boxes (modals) in separate native OS windows."
+ },
+ "prevent_sleep": {
+ "label": "Prevent System Sleep / Shutdown",
+ "description": "Inhibit system sleep and OS shutdown while active transfers, mounts, or servers are running."
}
},
"core": {
@@ -523,6 +566,10 @@
"label": "Dashboard Layout",
"description": "Custom layout configuration for the dashboard."
},
+ "quick_run_layout": {
+ "label": "Quick Run Layout",
+ "description": "Custom layout configuration for the quick run overview."
+ },
"dashboard_card_variant": {
"label": "Remote Card Display Mode",
"description": "Default display variant for remote cards in overview panels.",
@@ -573,6 +620,10 @@
"generic": {
"title": "Engine Failed to Start",
"subtitle": "Please check logs for more details"
+ },
+ "auth": {
+ "title": "Rclone Authentication Required",
+ "subtitle": "Please check your credentials or configuration password"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "Preferences",
"flags": "Rclone Flags",
"fileBrowser": "File Browser",
+ "flowWorkspace": "Flow Workspace",
"shortcuts": "Keyboard Shortcuts",
"about": "About RClone Manager",
"quickRemote": "Quick Remote",
@@ -645,11 +697,32 @@
"title": "Configuration Password Required",
"content": "Your rclone configuration is encrypted. Please enter the password to unlock it for this session."
},
+ "selectMainUi": {
+ "title": "Choose Primary UI",
+ "content": "Select your preferred workspace layout. You can switch between interfaces at any time from the app menu or settings."
+ },
"ready": {
"title": "Ready to Go!",
"content": "Everything is set up and ready to use. RClone Manager will help you manage your cloud storage with ease. Click 'Get Started' to begin your journey."
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "Classic Dashboard",
+ "badge": "Default",
+ "description": "Tabbed overview featuring remote connections, active transfers, quick actions, and system status."
+ },
+ "nautilus": {
+ "title": "File Browser (Nautilus)",
+ "badge": "File Manager",
+ "description": "Dedicated dual-pane file management interface designed for navigating and transferring remote files."
+ },
+ "flow": {
+ "title": "Flow Workspace",
+ "badge": "Workflows",
+ "description": "Interactive visual hub for orchestrating automated jobs, remote quick runs, and pipeline execution."
+ }
+ },
"installButton": {
"configuring": "Configuring...",
"installing": "Installing...",
@@ -668,8 +741,6 @@
"default": "Default"
},
"actions": {
- "back": "Back",
- "next": "Next",
"installPlugin": "Install Plugin",
"installingPlugin": "Installing...",
"unlock": "Unlock",
@@ -826,7 +897,8 @@
"actions": {
"hide": "Hide",
"show": "Show",
- "open": "Open"
+ "open": "Open",
+ "cancel": "Cancel"
},
"overviewHeader": {
"manageBackends": "Manage Backends",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "No fields to display in JSON mode",
"parseError": "Invalid JSON syntax. Please check your formatting.",
- "cliArgumentWithSuggestion": "CLI-style arguments (like '{{key}}') are not supported in rclone RC. Did you mean '{{suggestion}}'?",
+ "cliArgumentWithSuggestion": "CLI-style flag '{{key}}' will be automatically mapped to '{{suggestion}}' on execution.",
"camelCaseSuggestionWarning": "Option '{{key}}' is not valid in this format. Did you mean '{{suggestion}}'?",
"fixSuggestion": "Change to '{{suggestion}}'",
"wrongBlockWarning": "Option(s) {{keys}} belong to the '{{block}}' configuration block and may not work here.",
@@ -986,6 +1058,10 @@
"required": "Password required",
"remember": "Remember password",
"keychain": "Stored in system keychain"
+ },
+ "validation": {
+ "required": "This field is required.",
+ "min": "Value must be at least {{val}}."
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "Apply Patch",
"importSourcePath": "Import Source Path",
"importDestPath": "Import Destination Path",
- "importMountPoint": "Import Mount Point"
+ "importMountPoint": "Import Mount Point",
+ "applyToTask": "Apply to Task",
+ "appliedToast": "Successfully imported {{count}} option(s)"
},
"obscure": {
"title": "Obscure Password",
@@ -1033,6 +1111,10 @@
"applyToField": "Apply obscured value to field",
"apply": "Apply to Field"
},
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
+ },
"remoteConfig": {
"remoteName": "Remote Name",
"remoteNameRequired": "Remote name is required",
@@ -1050,15 +1132,15 @@
"switchToJson": "Switch to JSON Mode",
"unknownTopLevelProperty": "Warning: '{{key}}' is not a standard top-level property for this profile and might be ignored.",
"jsonEditorInfo": {
- "sync": "Sync/Copy/Move Profile: Set 'srcFs' and 'dstFs' paths, profile-level fields, and place all rclone flags inside '_config'.",
- "bisync": "Bisync Profile: Set 'path1' and 'path2' paths, profile-level fields, and place all rclone flags inside '_config'.",
- "check": "Check Profile: Set 'srcFs' and 'dstFs' paths, profile-level fields, and place all check flags inside '_config'.",
- "mount": "Mount Profile: Set 'fs' and 'mountPoint' paths, 'mountType', profile-level fields, and place all mount options inside 'mountOpt'.",
- "serve": "Serve Profile: Set 'fs' path, 'serveType', profile-level fields, and place all serve options inside '_config'.",
- "vfs": "VFS Profile: Set custom Virtual File System caching, buffering, and compatibility options as key-value pairs.",
- "filter": "Filter Profile: Set glob patterns, inclusion/exclusion rules, and file filtering options as key-value pairs.",
- "backend": "Backend Profile: Configure advanced protocol options and remote-specific connection settings as key-value pairs.",
- "runtimeRemote": "Runtime Remote: Set dynamic connection overrides and performance tweaks as key-value pairs."
+ "sync": "Sync/Copy/Move Profile: Set 'srcFs' and 'dstFs' paths, profile-level fields, and rclone flags (remove leading '--' and replace '-' with '_').",
+ "bisync": "Bisync Profile: Set 'path1' and 'path2' paths, profile-level fields, and rclone flags (remove leading '--' and replace '-' with '_').",
+ "check": "Check Profile: Set 'srcFs' and 'dstFs' paths, profile-level fields, and check flags (remove leading '--' and replace '-' with '_').",
+ "mount": "Mount Profile: Set 'fs' and 'mountPoint' paths, 'mountType', profile-level fields, and mount options (remove leading '--' and replace '-' with '_').",
+ "serve": "Serve Profile: Set 'fs' path, 'serveType', profile-level fields, and serve options (remove leading '--' and replace '-' with '_').",
+ "vfs": "VFS Profile: Set custom Virtual File System caching, buffering, and compatibility options as key-value pairs (remove leading '--' and replace '-' with '_').",
+ "filter": "Filter Profile: Set glob patterns, inclusion/exclusion rules, and file filtering options as key-value pairs (remove leading '--' and replace '-' with '_').",
+ "backend": "Backend Profile: Configure advanced protocol options and remote-specific connection settings as key-value pairs (remove leading '--' and replace '-' with '_').",
+ "runtimeRemote": "Runtime Remote: Set dynamic connection overrides and performance tweaks as key-value pairs (remove leading '--' and replace '-' with '_')."
},
"runtimeRemoteWarning": {
"title": "Runtime Remote Settings",
@@ -1139,6 +1221,10 @@
"enableWatch": "Enable Real-time File Monitoring",
"watchDescription": "Watch local source directories for file modifications and sync changes automatically.",
"watchDelay": "Debounce delay (seconds)",
+ "watchDelayHint": "Wait time after the last detected change before triggering the sync.",
+ "watchZeroDelayWarning": "Instant mode (0s) triggers sync immediately on change. For large files or multiple edits, 3–5s is recommended so writes can finish.",
+ "watchChangedOnly": "Sync only changed subdirectories",
+ "watchChangedOnlyHint": "When triggered by the file watcher, synchronize only the subdirectories containing modified files instead of scanning the full root tree.",
"watchRequiresLocalSource": "Real-time monitoring requires at least one local source directory.",
"watchRequiresLocal": "Real-time monitoring requires at least one local source or destination directory.",
"watchMixedSourcesNote": "Only local source directories will be monitored in real-time. Changes on remote sources will not trigger sync automatically.",
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "Profiles"
},
- "legacy": {
- "title": "Legacy Backup Detected",
- "description": "This backup was created before the profile system was introduced. It will be restored to the 'default' profile."
- },
"options": "Restore Options",
"scope": {
"all": "Restore Everything",
@@ -1512,7 +1594,9 @@
"openNative": "Open in External App",
"openNativeTooltip": "Open in default external application",
"openingNative": "Opening {{name}} in external viewer...",
- "errorOpenNative": "Failed to open file in external app"
+ "errorOpenNative": "Failed to open file in external app",
+ "showRawText": "Show Raw Text",
+ "showPreview": "Show Preview"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "Stopping {{op}}...",
"stop": "Stop {{op}}",
"notConfigured": "Not configured",
+ "serve": "Serve",
"serving": "Serving",
"accessibleVia": "Accessible via",
"mounting": "Mounting...",
@@ -1594,7 +1679,8 @@
"dryRun": "Dry Run",
"dryRunActive": "Dry run is active — no changes will be made",
"resync": "Resync",
- "resyncActive": "Resync is active — performing full resynchronization"
+ "resyncActive": "Resync is active — performing full resynchronization",
+ "remoteSettings": "Remote Settings"
},
"generalDetail": {
"automations": "Automations",
@@ -1640,6 +1726,7 @@
"loadConfig": "Load Configuration",
"exportConfig": "Export Configuration",
"toggleBrowser": "Toggle File Browser",
+ "openFlowOverlay": "Toggle Flow Workspace",
"closeDialog": "Close Dialog/Cancel Action"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "Shutting Down",
- "message": "Please wait while the application shuts down safely..."
+ "message": "Please wait while the application shuts down safely...",
+ "confirmTitle": "Active Tasks in Progress",
+ "confirmMessage": "Rclone Manager has active tasks running ({{jobs}} transfers, {{mounts}} mounts, {{serves}} serves). Are you sure you want to stop all active tasks and quit?",
+ "stopAndQuit": "Stop & Quit"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "About Rclone",
"credits": "Credits",
"legal": "Legal",
- "donate": "Donate",
"website": "Website",
"wiki": "Wiki Page",
"reportIssues": "Report Issues",
@@ -1959,14 +2048,6 @@
"label": "Password",
"placeholder": "Leave empty for no auth"
},
- "oauthHost": {
- "label": "OAuth Host",
- "placeholder": "127.0.0.1",
- "description": "Host to connect to for OAuth callbacks. Must be a routable address — never a wildcard like 0.0.0.0. In Docker, set this to the container's accessible hostname."
- },
- "oauthPort": {
- "label": "OAuth Port"
- },
"configPassword": {
"label": "Config Password",
"description": "Password for encrypted configuration file"
@@ -1984,7 +2065,6 @@
"local": "Local",
"name": "Name",
"enableAuth": "Customize Authentication",
- "oauthSettings": "OAuth Settings (Will be removed in the future)",
"selectConfigFile": "Select Config File",
"activeConfigPath": "Active Config Path",
"connectionTab": "Connection",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "If the browser did not open automatically, use this authentication link:",
"openLink": "Open Link",
- "copyLink": "Copy Link",
- "remoteFallback": "Manual OAuth link is not available for remote backends here. Check remote backend logs/output."
+ "copyLink": "Copy Link"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "Cannot delete profile \"{{name}}\" - it is in use by {{count}} active {{type}}(s)",
"disabledReason": {
"inUse": "Profile is in use by a running {{operation}}. Stop it first."
- }
+ },
+ "duplicate": "Duplicate Profile"
},
"buttons": {
- "back": "Back",
- "cancel": "Cancel",
- "create": "Create",
- "save": "Save",
- "next": "Next",
"cleanup": "Cleaning up",
- "processing": "Processing...",
- "continue": "Continue"
+ "processing": "Processing..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "Failed to process interactive response",
"loadFailed": "Failed to load remote configuration"
+ },
+ "profileSaved": "Profile '{{profile}}' saved for {{remote}}",
+ "profileSaveFailed": "Failed to save profile",
+ "warnings": {
+ "selectRemoteToSave": "Please select a remote to save profile"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "New name",
"counter": "Counter",
"date": "Date",
- "extension": "Extension"
+ "extension": "Extension",
+ "duplicateOrInvalid": "Duplicate or invalid name"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "Icon Size",
- "showHidden": "Show Hidden Files"
+ "showHidden": "Show Hidden Files",
+ "toggleLayout": "Toggle Layout",
+ "viewOptions": "View Options"
},
"notifications": {
"mkdirFailed": "Failed to create directory: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "Delete Remote"
},
"deleteRemote": {
- "title": "Delete Confirmation",
- "message": "Are you sure you want to delete '{{name}}'? This action cannot be undone."
+ "title": "Delete Remote",
+ "message": "Are you sure you want to delete '{{name}}'? This action cannot be undone.",
+ "activeOperationsTitle": "Active Operations Running",
+ "activeOperationsDesc": "The following active operations are currently running on this remote and will be forcefully terminated:",
+ "willUnmount": "Will Unmount",
+ "willStop": "Will Stop",
+ "willCancel": "Will Cancel",
+ "savedProfilesTitle": "Saved Profiles ({{count}})",
+ "quickRunsTitle": "Associated Quick Runs ({{count}})",
+ "automationsTitle": "Scheduled Automations ({{count}})",
+ "types": {
+ "mount": "Mount Point",
+ "serve": "Serve"
+ }
},
"resetRemote": {
"title": "Reset Remote Settings",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "An unexpected error occurred. Please check the logs for more details.",
- "openFailed": "Failed to open {{name}}",
- "resetSettingsFailed": "Failed to reset remote settings",
- "deleteRemoteFailed": "Failed to delete remote"
+ "openFailed": "Failed to open {{name}}"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "Layout reset to default",
"toggleAutomationFailed": "Failed to toggle automation",
"showDetailed": "Show Detailed Cards",
- "showCompact": "Show Compact Cards",
- "settings": "Layout Settings"
+ "showCompact": "Show Compact Cards"
},
"bandwidth": {
"aria": {
@@ -2523,18 +2614,25 @@
"retry": "Retry loading bandwidth",
"upload": "Upload:",
"download": "Download:",
- "total": "Total:"
+ "total": "Total:",
+ "unlimited": "Unlimited (Off)",
+ "customPlaceholder": "Custom rate (e.g. 10M, 10M:50M)",
+ "apply": "Apply"
},
"system": {
"aria": {
"loading": "Loading system information"
},
"loading": "Loading system information...",
- "status": "Rclone Status:",
+ "status": "Engine Status:",
+ "version": "Engine Version:",
+ "platform": "Platform:",
+ "pid": "Process ID:",
+ "goVersion": "Go Runtime:",
"totalRemotes": "Total Remotes:",
"activeJobs": "Active Jobs:",
- "memoryUsage": "Memory Usage:",
- "uptime": "Uptime:",
+ "memoryUsage": "Heap Memory:",
+ "uptime": "Engine Uptime:",
"active": "Active",
"inactive": "Inactive",
"error": "Error"
@@ -2593,31 +2691,43 @@
"mount": {
"pointEmpty": "Mount point cannot be empty",
"alreadyInUse": "Mount point {{mountPoint}} is already in use by remote {{remote}}",
- "configIncomplete": "Mount configuration incomplete for profile '{{profile}}'"
+ "configIncomplete": "Mount configuration incomplete for profile '{{profile}}'",
+ "directoryAlreadyMounted": "Mount directory is already in use. Please select an empty folder or enable '--allow-non-empty' in profile settings.",
+ "directoryNotEmpty": "Selected folder is not empty. Please choose an empty folder or enable '--allow-non-empty'.",
+ "winfspMissing": "WinFsp is not installed. Please install WinFsp to mount virtual drives on Windows.",
+ "fuseMissing": "FUSE (fuse3) is not installed on your system. Please install fuse3 to enable mounting.",
+ "macfuseMissing": "macFUSE / FUSE-T is not installed on your system. Please install macFUSE to enable mounting on macOS.",
+ "driveLetterInUse": "Selected drive letter is already in use by the system.",
+ "permissionDenied": "Permission denied while attempting to mount."
},
"operations": {
"configIncomplete": "Configuration incomplete for profile '{{profile}}'"
},
"serve": {
"parseFailed": "Failed to parse response: {{error}}",
- "remoteEmpty": "Remote name cannot be empty"
+ "remoteEmpty": "Remote name cannot be empty",
+ "addressAlreadyInUse": "The selected port or address is already in use by another application. Please choose a different port.",
+ "privilegedPort": "Ports below 1024 require administrator privileges. Please choose a port numbered 1024 or higher.",
+ "tlsError": "Failed to load or parse SSL/TLS certificate.",
+ "startFailed": "Failed to start serve: {{error}}",
+ "stopFailed": "Failed to stop serve: {{error}}"
},
"request": {
"failed": "Request failed: {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}: {{body}}"
- },
"file": {
"driveRoot": "Cannot select a drive root (e.g., D:\\) as a mount point. Please select or create a subfolder.",
"folderNotEmpty": "Selected folder is not empty",
"invalidPath": "Invalid path: Path cannot be empty.",
"notFound": "Path does not exist: {{path}}",
- "failedToOpen": "Failed to open file manager: {{error}}"
+ "failedToOpen": "Failed to open file manager: {{error}}",
+ "diskFull": "Target disk or drive is full. Not enough free disk space available.",
+ "fileLocked": "The file is currently locked or in use by another process.",
+ "readOnly": "The target file system is read-only or write-protected."
},
"rclone": {
"unsupportedPlatform": "Unsupported platform",
- "downloadError": "Unknown error downloading Rclone",
+ "downloadCancelled": "Download cancelled by user",
"mountPluginInstallFailed": "Failed to install mount plugin: {{error}}",
"mountPluginVerificationFailed": "Installation succeeded but verification failed. Restart may be required.",
"configEncrypted": "Configuration is encrypted and no password provided",
@@ -2654,14 +2764,8 @@
"rcloneError": "Rclone error: {{error}}"
},
"backup": {
- "unknownFormat": "Unknown backup format",
- "integrityFailed": "Integrity check failed! Backup may be corrupted.",
- "encryptedPasswordRequired": "This backup is encrypted. Password required.",
"unsupportedArchive": "Unsupported archive type. Must be a .rcman file",
"invalidArchive": "Invalid backup archive format",
- "manifestParseFailed": "Failed to parse backup manifest: {{error}}",
- "missingManifest": "Backup manifest is missing from the archive",
- "openFailed": "Failed to open backup archive: {{error}}",
"restoreFailed": "Backup restore failed: {{error}}",
"secretRequirePassword": "This backup is protected by a secret and requires a password"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "JobInfo not found",
"monitoringFailed": "Too many errors monitoring job: {{error}}",
- "executionFailed": "Job execution failed: {{error}}"
+ "executionFailed": "Job execution failed: {{error}}",
+ "corruptedTransfer": "File corrupted during transfer or checksum verification failed."
},
"cache": {
"fetchRemotesFailed": "Failed to fetch remotes",
@@ -2695,12 +2800,14 @@
"automationNotFound": "Automation not found"
},
"system": {
- "themeSetFailed": "Failed to set application theme: {{error}}",
- "unlockFailed": "Unlock failed: {{error}}",
- "killFailed": "Failed to kill process: {{error}}"
+ "unlockFailed": "Unlock failed: {{error}}"
},
"remote": {
- "configFailed": "Failed to configure remote: {{error}}"
+ "configFailed": "Failed to configure remote: {{error}}",
+ "authExpired": "Remote authentication expired or invalid. Please re-authenticate the remote.",
+ "quotaExceeded": "Remote storage API rate limit or storage quota exceeded. Please try again later.",
+ "networkError": "Unable to reach the remote server. Please check your network connection and remote address.",
+ "notFound": "Target directory or file was not found on the remote."
},
"updater": {
"noPending": "There is no pending update",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "Failed to reset all settings: {{error}}",
"eventEmitFailed": "Failed to emit settings event: {{error}}",
"subSettingsFailed": "Failed to get sub-settings: {{error}}",
- "notFound": "Settings for '{{name}}' not found",
"deleteFailed": "Failed to delete remote settings: {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "Copy URL [{{active}}/{{total}}]",
"archivecreateCount": "Archive [{{active}}/{{total}}]",
"serveCount": "Serve [{{active}}/{{total}}]",
+ "quickRunsCount": "Quick Runs [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "1 Job",
"tooltipTasks": "{{count}} Jobs",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 Serve",
"tooltipServes": "{{count}} Serves"
},
+ "powerInhibitor": {
+ "reason": "Active operations running: {{details}}",
+ "mounts": "{{count}} mount(s)",
+ "jobs": "{{count}} job(s)",
+ "serves": "{{count}} server(s)"
+ },
"notification": {
"title": {
"mountSucceeded": "Mount Successful",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "Could not connect to rclone engine: {{error}}",
"engineBinaryNotFound": "Rclone binary not found, please check your settings.",
"enginePasswordRequired": "Password is required to access the configuration file.",
- "engineAuthFailed": "Failed to authenticate with rclone engine: {{error}}"
+ "engineAuthFailed": "Failed to authenticate with rclone engine: {{error}}",
+ "powerInhibited": "Active operations are preventing system sleep."
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "Clear Cache",
"openDevTools": "Open Developer Tools",
"openDevToolsError": "Failed to open DevTools",
- "openDevToolsHint": "Open DevTools for debugging",
"cleared": "Data Cleared"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "Search flows...",
+ "toggleSearch": "Toggle Search",
+ "loading": "Loading flows...",
+ "noResults": "No matching flow items",
+ "toggleSidebar": "Toggle Flow Sidebar",
+ "empty": {
+ "description": "Create a quick run or workflow to get started with fast operations and pipelines."
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "No quick runs configured for {{remote}}.",
+ "createForRemote": "Create Quick Run for {{remote}}"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ }
+ },
+ "tabs": {
+ "quickRun": "Quick Run",
+ "workflow": "Workflow"
+ },
+ "builder": {
+ "placeholderTitle": "Workflow Builder in Progress",
+ "placeholderMessage": "A visual canvas for multi-step rclone pipelines and conditional job chaining is coming soon.",
+ "viewRoadmap": "View Roadmap on GitHub"
+ }
+ },
+ "templates": {
+ "title": "Templates",
+ "presetTitle": "Presets & Templates",
+ "applyPresets": "Apply Default Presets",
+ "userTemplates": "Saved User Templates",
+ "saveAsTemplate": "Save Current Settings as Template...",
+ "manageTemplates": "Manage Templates...",
+ "manageTitle": "Manage Templates",
+ "noUserTemplates": "No custom templates saved yet.",
+ "newTitle": "New Template",
+ "templateName": "Template Name",
+ "templateDesc": "Description (optional)",
+ "selectAllKeys": "Select All Keys",
+ "deselectAllKeys": "Deselect All Keys",
+ "addKeyToCategory": "Add Key to Category",
+ "addKey": "Add Key",
+ "removeKey": "Remove Key",
+ "deleteTemplate": "Delete Template",
+ "noCatKeys": "No settings in {{category}} configured yet.",
+ "visualView": "Visual Inspector",
+ "jsonView": "JSON Editor",
+ "key": "Key",
+ "value": "Value",
+ "namePlaceholder": "e.g. My Fast S3 Backup Settings",
+ "descPlaceholder": "Brief description of these settings...",
+ "keyPlaceholder": "e.g. dir_cache_time",
+ "valuePlaceholder": "e.g. 10m",
+ "selectedCount": "{{selected}} / {{total}} selected",
+ "keyCount": "{{count}} key",
+ "keysCount": "{{count}} keys",
+ "zeroKeys": "0 keys",
+ "applySuccess": "Template \"{{name}}\" applied successfully.",
+ "savedSuccess": "Template \"{{name}}\" saved successfully.",
+ "deletedSuccess": "Template deleted successfully."
+ },
+ "navigation": {
+ "dashboard": "Dashboard"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "Downloading...",
+ "verifying": "Verifying checksum...",
+ "extracting": "Extracting archive...",
+ "installing": "Installing...",
+ "completed": "Completed",
+ "cancelled": "Operation cancelled",
+ "error": "Error"
+ }
}
}
diff --git a/resources/i18n/es-ES/main.json b/resources/i18n/es-ES/main.json
index 3a589451e..c883675ce 100644
--- a/resources/i18n/es-ES/main.json
+++ b/resources/i18n/es-ES/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "Cancelar",
"save": "Guardar",
+ "create": "Crear",
+ "show": "Mostrar",
+ "hide": "Ocultar",
"ok": "Aceptar",
"close": "Cerrar",
- "nextStep": "Siguiente paso",
+ "next": "Siguiente",
"back": "Atrás",
"continue": "Continuar",
"yes": "Sí",
@@ -31,7 +34,12 @@
"password": "Contraseña",
"username": "Nombre de usuario",
"selectAll": "Seleccionar todo",
- "deselectAll": "Deseleccionar todo"
+ "deselectAll": "Deseleccionar todo",
+ "viewDetails": "Ver detalles",
+ "moreActions": "Más acciones",
+ "duplicate": "Duplicar",
+ "clearAll": "Borrar todo",
+ "acknowledge": "Confirmar"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "Retardo de rebote",
"watcherActive": "Observador activo",
"seconds": "segundos",
- "realtimeSchedule": "Observador de archivos en tiempo real"
+ "realtimeSchedule": "Observador de archivos en tiempo real",
+ "changedOnlyShort": "Solo subdirectorios",
+ "changedOnlyActive": "Solo subdirectorios",
+ "syncScope": "Ámbito de sincronización",
+ "realtimeChangedOnly": "Monitoreo en tiempo real (Solo subdirectorios)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "Eliminar",
"copyurl": "Copiar URL",
"archivecreate": "Archivar",
+ "cryptcheck": "Verificación cifrada",
"serve": "Servir",
"start": "Iniciar",
"stop": "Detener"
},
"sidebar": {
+ "toggleSidebar": "Alternar barra lateral",
"toggleSearch": "Alternar barra de búsqueda",
"remotes": "Remotos",
"searchPlaceholder": "Buscar remotos...",
@@ -193,7 +207,8 @@
"used": "Usado:",
"free": "Libre:",
"loading": "Cargando...",
- "errorLoading": "Problema al cargar el uso de disco"
+ "errorLoading": "Problema al cargar el uso de disco",
+ "retry": "Reintentar carga de uso de disco"
},
"status": {
"mounted": "Montado",
@@ -296,7 +311,9 @@
"filemanager": "Gestor de archivos",
"startup": "Inicio",
"update": "Actualización",
- "internal": "Interno"
+ "internal": "Interno",
+ "flow": "Espacio de Trabajo Flow",
+ "quickrun": "Ejecución Rápida"
},
"rule": {
"filters": "Filtros",
@@ -318,7 +335,8 @@
"actionRequired": "Se requiere al menos una acción.",
"noActionsHint": "Debe crear una acción de alerta antes de poder asignarla a una regla.",
"filtersEmptyHint": "Dejar vacío para que coincida con todos los eventos.",
- "scopeFilters": "Filtros de Ámbito"
+ "scopeFilters": "Filtros de Ámbito",
+ "allEvents": "Todos los eventos"
},
"events": {
"job": "Tareas y Operaciones de Archivos",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "Nombre de Cabecera",
"headerValue": "Valor"
- }
+ },
+ "noRulesHint": "Aún no hay reglas de alerta configuradas. Cree una regla para recibir notificaciones.",
+ "noActionsHint": "Aún no hay acciones de alerta configuradas. Cree una acción para definir cómo se entregan las alertas."
},
"settings": {
"resetAll": {
@@ -406,17 +426,36 @@
"label": "Habilitar icono de bandeja",
"description": "Mostrar un icono en la bandeja del sistema. También habilita el servicio en segundo plano."
},
+ "tray_icon_theme": {
+ "label": "Tema del icono de la bandeja",
+ "description": "Elige el estilo de icono para la bandeja del sistema.",
+ "options": {
+ "system": "Sistema (Monocromático automático)",
+ "color": "Color",
+ "monochrome_light": "Monocromático (Claro)",
+ "monochrome_dark": "Monocromático (Oscuro)"
+ }
+ },
"language": {
"label": "Idioma",
"description": "Idioma que se utilizará para la interfaz de usuario."
},
+ "default_view": {
+ "label": "Vista de inicio predeterminada",
+ "description": "Seleccione la interfaz principal que se abrirá al iniciar la aplicación.",
+ "options": {
+ "main_menu": "Menú principal",
+ "nautilus": "Navegador de archivos Nautilus",
+ "flow": "Espacio de trabajo Flow"
+ }
+ },
"start_on_startup": {
"label": "Iniciar al inicio",
"description": "Iniciar automáticamente la aplicación cuando se inicia el sistema."
},
"notifications": {
"label": "Habilitar notificaciones",
- "description": "Mostrar notificaciones para los eventos de montaje."
+ "description": "Mostrar notificaciones de escritorio para eventos de la aplicación (montajes, sincronizaciones, actualizaciones, etc.)."
},
"restrict": {
"label": "Restringir valores",
@@ -425,6 +464,10 @@
"standalone_dialogs": {
"label": "Diálogos independientes",
"description": "Abre cuadros de diálogo (modales) en ventanas nativas independientes del sistema operativo."
+ },
+ "prevent_sleep": {
+ "label": "Evitar suspensión / apagado del sistema",
+ "description": "Inhibe la suspensión del sistema y el apagado del SO mientras haya transferencias, montajes o servidores activos."
}
},
"core": {
@@ -521,6 +564,10 @@
"label": "Diseño del panel de control",
"description": "Configuración de diseño personalizada para el panel de control."
},
+ "quick_run_layout": {
+ "label": "Diseño de ejecución rápida",
+ "description": "Configuración de diseño personalizada para la vista general de ejecución rápida."
+ },
"dashboard_card_variant": {
"label": "Variante de tarjeta",
"description": "Mostrar tarjetas del panel de control en modo compacto o detallado",
@@ -573,6 +620,10 @@
"generic": {
"title": "Error al iniciar el motor",
"subtitle": "Consulte los registros para obtener más detalles"
+ },
+ "auth": {
+ "title": "Autenticación de Rclone requerida",
+ "subtitle": "Verifique sus credenciales o contraseña de configuración"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "Preferencias",
"flags": "Banderas de Rclone",
"fileBrowser": "Explorador de archivos",
+ "flowWorkspace": "Espacio de trabajo Flow",
"shortcuts": "Atajos de teclado",
"about": "Acerca de RClone Manager",
"quickRemote": "Remoto rápido",
@@ -645,11 +697,32 @@
"title": "Se requiere contraseña de configuración",
"content": "Su configuración de rclone está cifrada. Introduzca la contraseña para desbloquearla para esta sesión."
},
+ "selectMainUi": {
+ "title": "Elegir interfaz principal",
+ "content": "Selecciona el diseño de interfaz preferido. Puedes cambiar entre interfaces en cualquier momento desde el menú o los ajustes."
+ },
"ready": {
"title": "¡Listo para funcionar!",
"content": "Todo está configurado y listo para usar. RClone Manager le ayudará a gestionar su almacenamiento en la nube con facilidad. Haga clic en 'Empezar' para comenzar su viaje."
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "Panel clásico",
+ "badge": "Predeterminado",
+ "description": "Vista general con conexiones remotas, transferencias activas, acciones rápidas y estado del sistema."
+ },
+ "nautilus": {
+ "title": "Navegador de archivos (Nautilus)",
+ "badge": "Gestor de archivos",
+ "description": "Interfaz de gestión de archivos de doble panel dedicada para navegar y transferir archivos remotos."
+ },
+ "flow": {
+ "title": "Espacio de trabajo Flow",
+ "badge": "Flujos de trabajo",
+ "description": "Panel visual interactivo para orquestar tareas automatizadas, ejecuciones rápidas y pipelines."
+ }
+ },
"installButton": {
"configuring": "Configurando...",
"installing": "Instalando...",
@@ -668,8 +741,6 @@
"default": "Predeterminado"
},
"actions": {
- "back": "Atrás",
- "next": "Siguiente",
"installPlugin": "Instalar plugin",
"installingPlugin": "Instalando...",
"unlock": "Desbloquear",
@@ -826,7 +897,8 @@
"actions": {
"hide": "Ocultar",
"show": "Mostrar",
- "open": "Abrir"
+ "open": "Abrir",
+ "cancel": "Cancelar"
},
"overviewHeader": {
"manageBackends": "Gestionar backends",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "No hay campos para mostrar en modo JSON",
"parseError": "Sintaxis JSON no válida. Compruebe el formato.",
- "cliArgumentWithSuggestion": "Los argumentos de tipo CLI (como '{{key}}') no son compatibles con rclone RC. ¿Quiso decir '{{suggestion}}'?",
+ "cliArgumentWithSuggestion": "El parámetro estilo CLI '{{key}}' se asignará automáticamente a '{{suggestion}}' al ejecutarse.",
"camelCaseSuggestionWarning": "La opción '{{key}}' no es válida en este formato. ¿Quiso decir '{{suggestion}}'?",
"fixSuggestion": "Cambiar a '{{suggestion}}'",
"wrongBlockWarning": "La(s) opción(es) {{keys}} pertenece(n) al bloque de configuración '{{block}}' y es posible que no funcione(n) aquí.",
@@ -986,6 +1058,10 @@
"required": "Se requiere contraseña",
"remember": "Recordar contraseña",
"keychain": "Almacenado en el llavero del sistema"
+ },
+ "validation": {
+ "required": "Este campo es obligatorio.",
+ "min": "El valor debe ser al menos {{val}}."
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "Aplicar parche",
"importSourcePath": "Importar ruta de origen",
"importDestPath": "Importar ruta de destino",
- "importMountPoint": "Importar punto de montaje"
+ "importMountPoint": "Importar punto de montaje",
+ "applyToTask": "Aplicar a la tarea",
+ "appliedToast": "Se importaron correctamente {{count}} opciones"
},
"obscure": {
"title": "Ocultar contraseña",
@@ -1050,15 +1128,15 @@
"switchToJson": "Cambiar a modo JSON",
"unknownTopLevelProperty": "Advertencia: '{{key}}' no es una propiedad de nivel superior estándar para este perfil y podría ignorarse.",
"jsonEditorInfo": {
- "sync": "Perfil de Sincronización/Copia/Movimiento: Establezca las rutas 'srcFs' y 'dstFs', los campos del perfil y coloque todas las banderas de rclone dentro de '_config'.",
- "bisync": "Perfil de Sincronización Bidireccional (Bisync): Establezca las rutas 'path1' y 'path2', los campos del perfil y coloque todas las banderas de rclone dentro de '_config'.",
- "check": "Perfil de verificación: configure las rutas 'srcFs' y 'dstFs', los campos de nivel de perfil y coloque todas las banderas de verificación dentro de '_config'.",
- "mount": "Perfil de Montaje (Mount): Establezca las rutas 'fs' y 'mountPoint', 'mountType', los campos del perfil y coloque todas las opciones de montaje dentro de 'mountOpt'.",
- "serve": "Perfil de Servicio (Serve): Establezca la ruta 'fs', 'serveType', los campos del perfil y coloque todas las opciones de servicio dentro de '_config'.",
- "vfs": "Perfil VFS: Establezca las opciones personalizadas de caché de VFS, almacenamiento en búfer y compatibilidad como pares clave-valor.",
- "filter": "Perfil de Filtro: Configure patrones globales, reglas de inclusión/exclusión y opciones de filtrado de archivos como pares clave-valor.",
- "backend": "Perfil de Backend: Configure opciones de protocolo avanzadas y configuraciones de conexión específicas del remoto como pares clave-valor.",
- "runtimeRemote": "Remoto en tiempo de ejecución: Establezca anulaciones de conexión dinámicas y ajustes de rendimiento como pares clave-valor."
+ "sync": "Perfil de Sincronización/Copia/Movimiento: Establezca las rutas 'srcFs' y 'dstFs', los campos del perfil y las banderas de rclone (elimine el '--' inicial y reemplace '-' por '_').",
+ "bisync": "Perfil de Sincronización Bidireccional (Bisync): Establezca las rutas 'path1' y 'path2', los campos del perfil y las banderas de rclone (elimine el '--' inicial y reemplace '-' por '_').",
+ "check": "Perfil de verificación: configure las rutas 'srcFs' y 'dstFs', los campos de nivel de perfil y las banderas de verificación (elimine el '--' inicial y reemplace '-' por '_').",
+ "mount": "Perfil de Montaje (Mount): Establezca las rutas 'fs' y 'mountPoint', 'mountType', los campos del perfil y las opciones de montaje (elimine el '--' inicial y reemplace '-' por '_').",
+ "serve": "Perfil de Servicio (Serve): Establezca la ruta 'fs', 'serveType', los campos del perfil y las opciones de servicio (elimine el '--' inicial y reemplace '-' por '_').",
+ "vfs": "Perfil VFS: Establezca las opciones personalizadas de caché de VFS, almacenamiento en búfer y compatibilidad como pares clave-valor (elimine el '--' inicial y reemplace '-' por '_').",
+ "filter": "Perfil de Filtro: Configure patrones globales, reglas de inclusión/exclusión y opciones de filtrado de archivos como pares clave-valor (elimine el '--' inicial y reemplace '-' por '_').",
+ "backend": "Perfil de Backend: Configure opciones de protocolo avanzadas y configuraciones de conexión específicas del remoto como pares clave-valor (elimine el '--' inicial y reemplace '-' por '_').",
+ "runtimeRemote": "Remoto en tiempo de ejecución: Establezca anulaciones de conexión dinámicas y ajustes de rendimiento como pares clave-valor (elimine el '--' inicial y reemplace '-' por '_')."
},
"runtimeRemoteWarning": {
"title": "Configuración del remoto en tiempo de ejecución",
@@ -1139,6 +1217,10 @@
"enableWatch": "Habilitar monitoreo de archivos en tiempo real",
"watchDescription": "Monitoree directorios de origen locales para detectar modificaciones de archivos y sincronizar cambios automáticamente.",
"watchDelay": "Retardo de rebote (segundos)",
+ "watchDelayHint": "Tiempo de espera tras el último cambio detectado antes de iniciar la sincronización.",
+ "watchZeroDelayWarning": "El modo instantáneo (0s) sincroniza de inmediato al detectar cambios. Para archivos grandes o múltiples ediciones, se recomiendan 3–5s.",
+ "watchChangedOnly": "Sincronizar solo subdirectorios modificados",
+ "watchChangedOnlyHint": "Cuando se activa por el monitor de archivos, sincroniza solo los subdirectorios que contienen archivos modificados en lugar de escanear todo el árbol raíz.",
"watchRequiresLocalSource": "El monitoreo en tiempo real requiere al menos un directorio de origen local.",
"watchRequiresLocal": "El monitoreo en tiempo real requiere al menos un directorio de origen o destino local.",
"watchMixedSourcesNote": "Solo los directorios de origen locales se monitorearán en tiempo real. Los cambios en los orígenes remotos no activarán la sincronización automáticamente.",
@@ -1286,6 +1368,10 @@
"title": "Primero del mes",
"description": "Primer día a medianoche"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "Perfiles"
},
- "legacy": {
- "title": "Copia de seguridad antigua detectada",
- "description": "Esta copia de seguridad se creó antes de que se introdujera el sistema de perfiles. Se restaurará al perfil 'predeterminado'."
- },
"options": "Opciones de restauración",
"scope": {
"all": "Restaurar todo",
@@ -1512,7 +1594,9 @@
"openNative": "Abrir con aplicación externa",
"openNativeTooltip": "Abrir en la aplicación externa predeterminada",
"openingNative": "Abriendo {{name}} en la aplicación externa...",
- "errorOpenNative": "Error al abrir el archivo en la aplicación externa"
+ "errorOpenNative": "Error al abrir el archivo en la aplicación externa",
+ "showRawText": "Mostrar texto sin formato",
+ "showPreview": "Mostrar vista previa"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "Deteniendo {{op}}...",
"stop": "Detener {{op}}",
"notConfigured": "No configurado",
+ "serve": "Servir",
"serving": "Sirviendo",
"accessibleVia": "Accesible a través de",
"mounting": "Montando...",
@@ -1594,7 +1679,8 @@
"dryRun": "Simulacro",
"dryRunActive": "Simulacro activo: no se realizarán cambios",
"resync": "Resincronizar",
- "resyncActive": "Resincronización activa: realizando resincronización completa"
+ "resyncActive": "Resincronización activa: realizando resincronización completa",
+ "remoteSettings": "Ajustes de remoto"
},
"generalDetail": {
"automations": "Automatizaciones",
@@ -1640,6 +1726,7 @@
"loadConfig": "Cargar configuración",
"exportConfig": "Exportar configuración",
"toggleBrowser": "Alternar explorador de archivos",
+ "openFlowOverlay": "Alternar espacio de trabajo Flow",
"closeDialog": "Cerrar diálogo/Cancelar acción"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "Cerrando",
- "message": "Espere mientras la aplicación se cierra de forma segura..."
+ "message": "Espere mientras la aplicación se cierra de forma segura...",
+ "confirmTitle": "Tareas activas en progreso",
+ "confirmMessage": "Rclone Manager tiene tareas activas ({{jobs}} transferencias, {{mounts}} montajes, {{serves}} servidores). ¿Seguro que desea detener todo y salir?",
+ "stopAndQuit": "Detener y Salir"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "Acerca de Rclone",
"credits": "Créditos",
"legal": "Legal",
- "donate": "Donar",
"website": "Sitio web",
"wiki": "Página Wiki",
"reportIssues": "Informar de problemas",
@@ -1959,14 +2048,6 @@
"label": "Contraseña",
"placeholder": "Dejar vacío para no usar autenticación"
},
- "oauthHost": {
- "label": "Host OAuth",
- "placeholder": "127.0.0.1",
- "description": "Host al que conectarse para las devoluciones de llamada de OAuth. Debe ser una dirección enrutable, nunca un comodín como 0.0.0.0. En Docker, establézcalo en el nombre de host accesible del contenedor."
- },
- "oauthPort": {
- "label": "Puerto OAuth"
- },
"configPassword": {
"label": "Contraseña de configuración",
"description": "Contraseña para el archivo de configuración cifrado"
@@ -1984,7 +2065,6 @@
"local": "Local",
"name": "Nombre",
"enableAuth": "Personalizar autenticación",
- "oauthSettings": "Configuración de OAuth (Se eliminará en el futuro)",
"selectConfigFile": "Seleccionar archivo de configuración",
"activeConfigPath": "Ruta de configuración activa",
"connectionTab": "Conexión",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "Si el navegador no se abrió automáticamente, use este enlace de autenticación:",
"openLink": "Abrir enlace",
- "copyLink": "Copiar enlace",
- "remoteFallback": "El enlace OAuth manual no está disponible aquí para backends remotos. Revise los logs/salida del backend remoto."
+ "copyLink": "Copiar enlace"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "No se puede borrar el perfil \"{{name}}\": está siendo usado por {{count}} {{type}}(s) activos",
"disabledReason": {
"inUse": "El perfil está en uso por una operación {{operation}} en ejecución. Deténgala primero."
- }
+ },
+ "duplicate": "Duplicar perfil"
},
"buttons": {
- "back": "Atrás",
- "cancel": "Cancelar",
- "create": "Crear",
- "save": "Guardar",
- "next": "Siguiente",
"cleanup": "Limpiando",
- "processing": "Procesando...",
- "continue": "Continuar"
+ "processing": "Procesando..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "Error al procesar la respuesta interactiva",
"loadFailed": "Error al cargar la configuración remota"
+ },
+ "profileSaved": "Perfil '{{profile}}' guardado para {{remote}}",
+ "profileSaveFailed": "Error al guardar el perfil",
+ "warnings": {
+ "selectRemoteToSave": "Seleccione un remoto para guardar el perfil"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "Nuevo nombre",
"counter": "Contador",
"date": "Fecha",
- "extension": "Extensión"
+ "extension": "Extensión",
+ "duplicateOrInvalid": "Nombre duplicado o no válido"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "Tamaño del ícono",
- "showHidden": "Mostrar archivos ocultos"
+ "showHidden": "Mostrar archivos ocultos",
+ "toggleLayout": "Alternar diseño",
+ "viewOptions": "Opciones de vista"
},
"notifications": {
"mkdirFailed": "Error al crear el directorio: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "Eliminar remoto"
},
"deleteRemote": {
- "title": "Confirmación de eliminación",
- "message": "¿Está seguro de que desea eliminar '{{name}}'? Esta acción no se puede deshacer."
+ "title": "Eliminar remoto",
+ "message": "¿Está seguro de que desea eliminar '{{name}}'? Esta acción no se puede deshacer.",
+ "activeOperationsTitle": "Operaciones activas en ejecución",
+ "activeOperationsDesc": "Las siguientes operaciones activas se están ejecutando en este remoto y se finalizarán forzosamente:",
+ "willUnmount": "Se desmontará",
+ "willStop": "Se detendrá",
+ "willCancel": "Se cancelará",
+ "savedProfilesTitle": "Perfiles guardados ({{count}})",
+ "quickRunsTitle": "Quick Runs asociados ({{count}})",
+ "automationsTitle": "Automatizaciones programadas ({{count}})",
+ "types": {
+ "mount": "Punto de montaje",
+ "serve": "Servidor"
+ }
},
"resetRemote": {
"title": "Restablecer configuraciones del remoto",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "Ocurrió un error inesperado. Por favor, consulte los registros para más detalles.",
- "openFailed": "Error al abrir {{name}}",
- "resetSettingsFailed": "Error al restablecer configuraciones del remoto",
- "deleteRemoteFailed": "Error al eliminar el remoto"
+ "openFailed": "Error al abrir {{name}}"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "Diseño restablecido a los valores predeterminados",
"toggleAutomationFailed": "Error al alternar automatización",
"showDetailed": "Mostrar tarjetas detalladas",
- "showCompact": "Mostrar tarjetas compactas",
- "settings": "Ajustes de diseño"
+ "showCompact": "Mostrar tarjetas compactas"
},
"bandwidth": {
"aria": {
@@ -2523,17 +2614,24 @@
"retry": "Reintentar carga de ancho de banda",
"upload": "Subida:",
"download": "Descarga:",
- "total": "Total:"
+ "total": "Total:",
+ "unlimited": "Ilimitado (Desactivado)",
+ "customPlaceholder": "Velocidad personalizada (p. ej. 10M, 10M:50M)",
+ "apply": "Aplicar"
},
"system": {
"aria": {
"loading": "Cargando información del sistema"
},
"loading": "Cargando información del sistema...",
- "status": "Estado de Rclone:",
+ "status": "Estado del motor:",
+ "version": "Versión del motor:",
+ "platform": "Plataforma:",
+ "pid": "ID del proceso:",
+ "goVersion": "Entorno Go:",
"totalRemotes": "Remotos totales:",
"activeJobs": "Trabajos activos:",
- "memoryUsage": "Uso de memoria:",
+ "memoryUsage": "Memoria del montón:",
"uptime": "Tiempo de actividad:",
"active": "Activo",
"inactive": "Inactivo",
@@ -2593,31 +2691,42 @@
"mount": {
"pointEmpty": "El punto de montaje no puede estar vacío",
"alreadyInUse": "El punto de montaje {{mountPoint}} ya está en uso por el remoto {{remote}}",
- "configIncomplete": "Configuración de montaje incompleta para el perfil '{{profile}}'"
+ "configIncomplete": "Configuración de montaje incompleta para el perfil '{{profile}}'",
+ "directoryAlreadyMounted": "El directorio de montaje ya está en uso. Seleccione una carpeta vacía o active '--allow-non-empty' en la configuración del perfil.",
+ "directoryNotEmpty": "La carpeta seleccionada no está vacía. Elija una carpeta vacía o active '--allow-non-empty'.",
+ "winfspMissing": "WinFsp no está instalado. Instale WinFsp para montar unidades virtuales en Windows.",
+ "fuseMissing": "FUSE (fuse3) no está instalado en el sistema. Instale fuse3 para habilitar el montaje.",
+ "macfuseMissing": "macFUSE / FUSE-T no está instalado. Instale macFUSE para habilitar el montaje en macOS.",
+ "driveLetterInUse": "La letra de unidad seleccionada ya está en uso por el sistema.",
+ "permissionDenied": "Permiso denegado al intentar montar."
},
"operations": {
"configIncomplete": "Configuración incompleta para el perfil '{{profile}}'"
},
"serve": {
"parseFailed": "Error al analizar la respuesta: {{error}}",
- "remoteEmpty": "El nombre del remoto no puede estar vacío"
+ "remoteEmpty": "El nombre del remoto no puede estar vacío",
+ "addressAlreadyInUse": "El puerto o dirección seleccionada ya está en uso por otra aplicación. Elija un puerto diferente.",
+ "privilegedPort": "Los puertos inferiores a 1024 requieren permisos de administrador. Elija un puerto igual o superior a 1024.",
+ "tlsError": "Error al cargar o analizar el certificado SSL/TLS.",
+ "startFailed": "Error al iniciar el servidor: {{error}}",
+ "stopFailed": "Error al detener el servidor: {{error}}"
},
"request": {
"failed": "Solicitud fallida: {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}: {{body}}"
- },
"file": {
"driveRoot": "No se puede seleccionar la raíz de una unidad (p. ej., D:\\) como punto de montaje. Por favor seleccione o cree una subcarpeta.",
"folderNotEmpty": "La carpeta seleccionada no está vacía",
"invalidPath": "Ruta inválida: la ruta no puede estar vacía.",
"notFound": "La ruta no existe: {{path}}",
- "failedToOpen": "Error al abrir el administrador de archivos: {{error}}"
+ "failedToOpen": "Error al abrir el administrador de archivos: {{error}}",
+ "diskFull": "El disco o unidad de destino está lleno. No hay suficiente espacio libre.",
+ "fileLocked": "El archivo está bloqueado o en uso por otro proceso.",
+ "readOnly": "El sistema de archivos de destino es de solo lectura o está protegido contra escritura."
},
"rclone": {
"unsupportedPlatform": "Plataforma no soportada",
- "downloadError": "Error desconocido al descargar Rclone",
"mountPluginInstallFailed": "Error al instalar el complemento de montaje: {{error}}",
"mountPluginVerificationFailed": "La instalación se realizó correctamente pero falló la verificación. Es posible que sea necesario reiniciar.",
"configEncrypted": "La configuración está encriptada y no se proporcionó contraseña",
@@ -2640,7 +2749,8 @@
"invalidFlags": "Se detectaron banderas de rclone no válidas: {{error}}",
"updateRemoteUnsupported": "La actualización remota no es compatible con esta versión de rclone",
"backupFailed": "Error al realizar la copia de seguridad del ejecutable rclone actual: {{error}}",
- "rcAuthFailed": "La autenticación del control remoto de rclone falló: {{error}}"
+ "rcAuthFailed": "La autenticación del control remoto de rclone falló: {{error}}",
+ "downloadCancelled": "Descarga cancelada por el usuario"
},
"security": {
"passwordEmpty": "La contraseña no puede estar vacía",
@@ -2654,14 +2764,8 @@
"rcloneError": "Error de Rclone: {{error}}"
},
"backup": {
- "unknownFormat": "Formato de copia de seguridad desconocido",
- "integrityFailed": "¡Falló la verificación de integridad! La copia de seguridad puede estar corrupta.",
- "encryptedPasswordRequired": "Esta copia de seguridad está encriptada. Se requiere contraseña.",
"unsupportedArchive": "Tipo de archivo no soportado. Debe ser un archivo .rcman",
"invalidArchive": "Formato de archivo de copia de seguridad no válido",
- "manifestParseFailed": "Error al analizar el manifiesto de copia de seguridad: {{error}}",
- "missingManifest": "El manifiesto de copia de seguridad no se encuentra en el archivo",
- "openFailed": "Error al abrir el archivo de copia de seguridad: {{error}}",
"restoreFailed": "Fallo en la restauración de la copia de seguridad: {{error}}",
"secretRequirePassword": "Esta copia de seguridad está protegida por un secreto y requiere una contraseña"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "JobInfo no encontrado",
"monitoringFailed": "Demasiados errores al monitorizar el trabajo: {{error}}",
- "executionFailed": "Ejecución del trabajo fallida: {{error}}"
+ "executionFailed": "Ejecución del trabajo fallida: {{error}}",
+ "corruptedTransfer": "Archivo dañado durante la transferencia o error en la suma de comprobación."
},
"cache": {
"fetchRemotesFailed": "Error al obtener los remotos",
@@ -2695,12 +2800,14 @@
"automationNotFound": "Automatización no encontrada"
},
"system": {
- "themeSetFailed": "Error al establecer el tema de la aplicación: {{error}}",
- "unlockFailed": "Desbloqueo fallido: {{error}}",
- "killFailed": "Error al terminar el proceso: {{error}}"
+ "unlockFailed": "Desbloqueo fallido: {{error}}"
},
"remote": {
- "configFailed": "Error al configurar el remoto: {{error}}"
+ "configFailed": "Error al configurar el remoto: {{error}}",
+ "authExpired": "La autenticación remota ha expirado o no es válida. Vuelva a autenticar el almacenamiento remoto.",
+ "quotaExceeded": "Límite de tasa de API o cuota de almacenamiento excedida. Inténtelo más tarde.",
+ "networkError": "No se puede conectar con el servidor remoto. Verifique su red y dirección remota.",
+ "notFound": "El directorio o archivo de destino no se encontró en el servidor remoto."
},
"updater": {
"noPending": "No hay actualizaciones pendientes",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "Error al restablecer todas las configuraciones: {{error}}",
"eventEmitFailed": "Error al emitir evento de configuraciones: {{error}}",
"subSettingsFailed": "Error al obtener subconfiguraciones: {{error}}",
- "notFound": "Configuraciones para '{{name}}' no encontradas",
"deleteFailed": "Error al eliminar configuraciones del remoto: {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "Copiar URL [{{active}}/{{total}}]",
"archivecreateCount": "Archivar [{{active}}/{{total}}]",
"serveCount": "Servicio [{{active}}/{{total}}]",
+ "quickRunsCount": "Ejecuciones rápidas [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "1 Trabajo",
"tooltipTasks": "{{count}} Trabajos",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 Servicio",
"tooltipServes": "{{count}} Servicios"
},
+ "powerInhibitor": {
+ "reason": "Operaciones activas en curso: {{details}}",
+ "mounts": "{{count}} montaje(s)",
+ "jobs": "{{count}} tarea(s)",
+ "serves": "{{count}} servidor(es)"
+ },
"notification": {
"title": {
"mountSucceeded": "Montaje exitoso",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "No se pudo conectar con el motor rclone: {{error}}",
"engineBinaryNotFound": "Binario de rclone no encontrado, verifique su configuración.",
"enginePasswordRequired": "Se requiere contraseña para acceder al archivo de configuración.",
- "engineAuthFailed": "Error al autenticar con el motor de rclone: {{error}}"
+ "engineAuthFailed": "Error al autenticar con el motor de rclone: {{error}}",
+ "powerInhibited": "Las operaciones activas impiden la suspensión del sistema."
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "Limpiar Caché",
"openDevTools": "Abrir Herramientas de Desarrollador",
"openDevToolsError": "Error al abrir DevTools",
- "openDevToolsHint": "Abrir DevTools para depuración",
"cleared": "Datos Limpiados"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "Buscar flujos...",
+ "toggleSearch": "Alternar búsqueda",
+ "loading": "Cargando flujos...",
+ "noResults": "No se encontraron flujos coincidentes",
+ "toggleSidebar": "Alternar barra lateral de Flow",
+ "empty": {
+ "description": "Cree una ejecución rápida o un flujo de trabajo para comenzar con operaciones y canalizaciones rápidas."
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "No hay ejecuciones rápidas configuradas para {{remote}}.",
+ "createForRemote": "Crear ejecución rápida para {{remote}}"
+ }
+ },
+ "tabs": {
+ "quickRun": "Ejecución rápida",
+ "workflow": "Flujo de trabajo"
+ },
+ "builder": {
+ "placeholderTitle": "Constructor de flujos de trabajo en progreso",
+ "placeholderMessage": "Próximamente habrá un lienzo visual para cadenas de tareas de rclone de varios pasos.",
+ "viewRoadmap": "Ver hoja de ruta en GitHub"
+ }
+ },
+ "templates": {
+ "title": "Plantillas",
+ "presetTitle": "Ajustes preestablecidos y plantillas",
+ "applyPresets": "Aplicar ajustes preestablecidos predeterminados",
+ "userTemplates": "Plantillas de usuario guardadas",
+ "saveAsTemplate": "Guardar configuración actual como plantilla...",
+ "manageTemplates": "Administrar plantillas...",
+ "manageTitle": "Administrar plantillas",
+ "noUserTemplates": "Aún no hay plantillas personalizadas guardadas.",
+ "newTitle": "Nueva plantilla",
+ "templateName": "Nombre de la plantilla",
+ "templateDesc": "Descripción (opcional)",
+ "selectAllKeys": "Seleccionar todas las claves",
+ "deselectAllKeys": "Deseleccionar todas las claves",
+ "addKeyToCategory": "Agregar clave a la categoría",
+ "addKey": "Agregar clave",
+ "removeKey": "Eliminar clave",
+ "deleteTemplate": "Eliminar plantilla",
+ "noCatKeys": "No hay configuraciones en {{category}} aún.",
+ "visualView": "Inspector visual",
+ "jsonView": "Editor JSON",
+ "key": "Clave",
+ "value": "Valor",
+ "namePlaceholder": "p. ej., Mi configuración rápida de respaldo S3",
+ "descPlaceholder": "Breve descripción de estos ajustes...",
+ "keyPlaceholder": "p. ej., dir_cache_time",
+ "valuePlaceholder": "p. ej., 10m",
+ "selectedCount": "{{selected}} / {{total}} seleccionados",
+ "keyCount": "{{count}} clave",
+ "keysCount": "{{count}} claves",
+ "zeroKeys": "0 claves",
+ "applySuccess": "Plantilla \"{{name}}\" aplicada correctamente.",
+ "savedSuccess": "Plantilla \"{{name}}\" guardada correctamente.",
+ "deletedSuccess": "Plantilla eliminada correctamente."
+ },
+ "navigation": {
+ "dashboard": "Panel de control"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "Descargando...",
+ "verifying": "Verificando suma de comprobación...",
+ "extracting": "Extrayendo archivo...",
+ "installing": "Instalando...",
+ "completed": "Completado",
+ "cancelled": "Operación cancelada",
+ "error": "Error"
+ }
}
}
diff --git a/resources/i18n/fr-FR/main.json b/resources/i18n/fr-FR/main.json
index aea61c836..dce150c6f 100644
--- a/resources/i18n/fr-FR/main.json
+++ b/resources/i18n/fr-FR/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "Annuler",
"save": "Enregistrer",
+ "create": "Créer",
+ "show": "Afficher",
+ "hide": "Masquer",
"ok": "Ok",
"close": "Fermer",
- "nextStep": "Étape suivante",
+ "next": "Suivant",
"back": "Retour",
"continue": "Continuer",
"yes": "Oui",
@@ -31,7 +34,12 @@
"password": "Mot de passe",
"username": "Nom d'utilisateur",
"selectAll": "Tout sélectionner",
- "deselectAll": "Tout désélectionner"
+ "deselectAll": "Tout désélectionner",
+ "viewDetails": "Voir les détails",
+ "moreActions": "Plus d'actions",
+ "duplicate": "Dupliquer",
+ "clearAll": "Tout effacer",
+ "acknowledge": "Acquitter"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "Délai de débordement",
"watcherActive": "Surveillance active",
"seconds": "secondes",
- "realtimeSchedule": "Surveillance de fichiers en temps réel"
+ "realtimeSchedule": "Surveillance de fichiers en temps réel",
+ "changedOnlyShort": "Sous-dossiers uniquement",
+ "changedOnlyActive": "Sous-dossiers uniquement",
+ "syncScope": "Périmètre de synchronisation",
+ "realtimeChangedOnly": "Surveillance en temps réel (Sous-dossiers uniquement)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "Supprimer",
"copyurl": "Copier l'URL",
"archivecreate": "Archiver",
+ "cryptcheck": "Vérification chiffrée",
"serve": "Service de partage",
"start": "Démarrer",
"stop": "Arrêter"
},
"sidebar": {
+ "toggleSidebar": "Basculer la barre latérale",
"toggleSearch": "Activer/désactiver La barre de recherche",
"remotes": "Dépôts distants",
"searchPlaceholder": "Chercher des dépôts distants...",
@@ -193,7 +207,8 @@
"used": "Utilisé :",
"free": "Libre :",
"loading": "Chargement...",
- "errorLoading": "Problème lors du chargement de l'utilisation de disque"
+ "errorLoading": "Problème lors du chargement de l'utilisation de disque",
+ "retry": "Réessayer le chargement de l'utilisation du disque"
},
"status": {
"mounted": "Monté",
@@ -296,7 +311,9 @@
"filemanager": "Gestionnaire de fichiers",
"startup": "Démarrage",
"update": "Mettre à jour",
- "internal": "Interne"
+ "internal": "Interne",
+ "flow": "Espace de travail Flow",
+ "quickrun": "Exécution rapide"
},
"rule": {
"filters": "Filtres",
@@ -318,7 +335,8 @@
"actionRequired": "Au moins une action est requise",
"noActionsHint": "Vous devez d'abord créer une action d'alerte avant de pouvoir l'assigner à une règle.",
"filtersEmptyHint": "Laisser vide pour correspondre à tous les événements.",
- "scopeFilters": "Scope Filtres"
+ "scopeFilters": "Scope Filtres",
+ "allEvents": "Tous les événements"
},
"events": {
"job": "Jobs & Opérations de fichiers",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "Nom de l'en-tête",
"headerValue": "Valeur"
- }
+ },
+ "noRulesHint": "Aucune règle d'alerte configurée. Créez une règle pour recevoir des notifications.",
+ "noActionsHint": "Aucune action d'alerte configurée. Créez une action pour définir la distribution des alertes."
},
"settings": {
"resetAll": {
@@ -406,17 +426,36 @@
"label": "Activer l'icône dans la zone de notification",
"description": "Afficher une icône dans la barre d'état système. Active également le service d'arrière-plan."
},
+ "tray_icon_theme": {
+ "label": "Thème de l'icône de la barre d'état",
+ "description": "Choisissez le style d'icône pour la barre d'état système.",
+ "options": {
+ "system": "Système (Monochrome automatique)",
+ "color": "Couleur",
+ "monochrome_light": "Monochrome (Clair)",
+ "monochrome_dark": "Monochrome (Sombre)"
+ }
+ },
"language": {
"label": "Langue",
"description": "Langue à utiliser pour l'interface utilisateur. La langue système est utilisée par défaut."
},
+ "default_view": {
+ "label": "Vue de démarrage par défaut",
+ "description": "Sélectionnez l'interface principale à ouvrir au démarrage de l'application.",
+ "options": {
+ "main_menu": "Menu principal",
+ "nautilus": "Navigateur de fichiers Nautilus",
+ "flow": "Espace de travail Flow"
+ }
+ },
"start_on_startup": {
"label": "Lancer au démarrage",
"description": "Démarrer automatiquement l'application au démarrage du système."
},
"notifications": {
"label": "Activer les notifications",
- "description": "Afficher les notifications pour les événements de montage."
+ "description": "Afficher les notifications de bureau pour les événements de l'application (montages, synchronisations, mises à jour, etc.)."
},
"restrict": {
"label": "Restreindre valeurs",
@@ -425,6 +464,10 @@
"standalone_dialogs": {
"label": "Boîte de dialogue détachée",
"description": "Ouvre des boîtes de dialogue (modals) dans des fenêtres distinctes de l'OS natif."
+ },
+ "prevent_sleep": {
+ "label": "Empêcher la mise en veille / l'extinction du système",
+ "description": "Empêche la mise en veille et l'arrêt du système pendant que des transferts, des montages ou des serveurs sont actifs."
}
},
"core": {
@@ -521,6 +564,10 @@
"label": "Disposition du tableau de bord",
"description": "Configuration personnalisée de la mise en page du tableau de bord."
},
+ "quick_run_layout": {
+ "label": "Disposition de l'exécution rapide",
+ "description": "Configuration personnalisée de la disposition pour l'aperçu de l'exécution rapide."
+ },
"dashboard_card_variant": {
"label": "Mode d'affichage de la carte du dépôt distant",
"description": "Variante d'affichage par défaut des cartes des dépôts distants dans les panneaux d'aperçu.",
@@ -573,6 +620,10 @@
"generic": {
"title": "Échec du démarrage du moteur",
"subtitle": "Veuillez consulter les logs pour plus de détails"
+ },
+ "auth": {
+ "title": "Authentification Rclone requise",
+ "subtitle": "Veuillez vérifier vos identifiants ou le mot de passe de configuration"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "Préférences",
"flags": "Rclone Flags",
"fileBrowser": "Explorateur de fichiers",
+ "flowWorkspace": "Espace de travail Flow",
"shortcuts": "Raccourcis clavier",
"about": "À propos de rclone Manager",
"quickRemote": "Dépôt distant rapide",
@@ -645,11 +697,32 @@
"title": "Mot de passe de configuration requis",
"content": "Votre configuration de rclone est chiffrée. Veuillez entrer le mot de passe pour le déverrouiller pour cette session."
},
+ "selectMainUi": {
+ "title": "Choisir l'interface principale",
+ "content": "Sélectionnez votre disposition d'interface préférée. Vous pouvez basculer entre les interfaces à tout moment depuis le menu ou les paramètres."
+ },
"ready": {
"title": "Prêt à commencer !",
"content": "Tout est configuré et prêt à être utilisé. rclone Manager vous aidera à gérer votre stockage cloud en toute simplicité. Cliquez sur 'Commencer' pour commencer votre voyage."
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "Tableau de bord classique",
+ "badge": "Par défaut",
+ "description": "Aperçu avec connexions distantes, transferts actifs, actions rapides et état du système."
+ },
+ "nautilus": {
+ "title": "Navigateur de fichiers (Nautilus)",
+ "badge": "Gestionnaire de fichiers",
+ "description": "Interface dédiée à deux panneaux pour naviguer et transférer des fichiers distants."
+ },
+ "flow": {
+ "title": "Espace de travail Flow",
+ "badge": "Flux de travail",
+ "description": "Centre visuel interactif pour orchestrer des tâches automatisées et des exécutions rapides."
+ }
+ },
"installButton": {
"configuring": "Configuration...",
"installing": "Installation...",
@@ -668,8 +741,6 @@
"default": "Par défaut"
},
"actions": {
- "back": "Précédent",
- "next": "Suivant",
"installPlugin": "Installer un plugin",
"installingPlugin": "Installation...",
"unlock": "Déverrouiller",
@@ -826,7 +897,8 @@
"actions": {
"hide": "Masquer",
"show": "Afficher",
- "open": "Ouvrir"
+ "open": "Ouvrir",
+ "cancel": "Annuler"
},
"overviewHeader": {
"manageBackends": "Gérer les Backends",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "Aucun champ à afficher en mode JSON",
"parseError": "Syntaxe JSON invalide. Veuillez vérifier votre formatage.",
- "cliArgumentWithSuggestion": "Les arguments de style CLI, comme '{{key}}') ne sont pas pris en charge dans rclone RC. Vouliez-vous dire '{{suggestion}}'?",
+ "cliArgumentWithSuggestion": "L'option de style CLI '{{key}}' sera automatiquement mappée à '{{suggestion}}' lors de l'exécution.",
"camelCaseSuggestionWarning": "L'option '{{key}}' n'est pas valide dans ce format. Vouliez-vous dire '{{suggestion}} ' ?",
"fixSuggestion": "Changer pour '{{suggestion}}'",
"wrongBlockWarning": "Les options {{keys}} appartiennent au bloc de configuration '{{block}}' et peuvent ne pas fonctionner ici.",
@@ -986,6 +1058,10 @@
"required": "Mot de passe requis",
"remember": "Mémorisez mots de passe",
"keychain": "Stocké dans le trousseau système"
+ },
+ "validation": {
+ "required": "Ce champ est obligatoire.",
+ "min": "La valeur doit être d'au moins {{val}}."
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "Appliquer le correctif",
"importSourcePath": "Importer le chemin source",
"importDestPath": "Importer le chemin de destination",
- "importMountPoint": "Importer le point de montage"
+ "importMountPoint": "Importer le point de montage",
+ "applyToTask": "Appliquer à la tâche",
+ "appliedToast": "{{count}} option(s) importée(s) avec succès"
},
"obscure": {
"title": "Masquer le mot de passe",
@@ -1050,15 +1128,15 @@
"switchToJson": "Passer en mode JSON",
"unknownTopLevelProperty": "Attention : '{{key}}' n'est pas une propriété standard de niveau supérieur pour ce profil et peut être ignorée.",
"jsonEditorInfo": {
- "sync": "Sync/Copy/Move Profil : Définissez les chemins 'srcF' et 'dstFs' et les champs au niveau du profil, et placez tous les flags rclone dans '_config'.",
- "bisync": "Profil de Bisync : définit les chemins 'path1' et 'path2', les champs au niveau du profil, et place tous les flags rclone dans '_config'.",
- "check": "Profil de vérification : définissez les chemins 'srcFs' et 'dstFs', les champs au niveau du profil, et placez tous les drapeaux de vérification dans '_config'.",
- "mount": "Profil de montage : Définissez les chemins 'fs' et 'mountPoint', 'mountType', les champs au niveau du profil, et placez toutes les options de montage dans 'mountOpt'.",
- "serve": "Partage Profile : Définissez le chemin 'fs', 'serveType', les champs au niveau du profil, et placez toutes les options de service dans '_config'.",
- "vfs": "Profil de VFS : Définissez les options de mise en cache du système de fichiers virtuels, de mise en mémoire tampon et de compatibilité comme paires de valeurs clés.",
- "filter": "Filtre de profil : Définissez des motifs glob, des règles d'inclusion/exclusion et des options de filtrage de fichiers sous forme de paires clé-valeur.",
- "backend": "Profil de backend : Configurez les options avancées du protocole et les paramètres de connexion spécifiques à distance comme des paires clé-valeur.",
- "runtimeRemote": "Dépôt distant d'exécution : Définissez des substitutions de connexion dynamiques et des ajustements de performances sous forme de paires clé-valeur."
+ "sync": "Sync/Copy/Move Profil : Définissez les chemins 'srcFs' et 'dstFs', les champs au niveau du profil et les drapeaux rclone (supprimez le '--' initial et remplacez '-' par '_').",
+ "bisync": "Profil de Bisync : définit les chemins 'path1' et 'path2', les champs au niveau du profil et les drapeaux rclone (supprimez le '--' initial et remplacez '-' par '_').",
+ "check": "Profil de vérification : définissez les chemins 'srcFs' et 'dstFs', les champs au niveau du profil et les drapeaux de vérification (supprimez le '--' initial et remplacez '-' par '_').",
+ "mount": "Profil de montage : Définissez les chemins 'fs' et 'mountPoint', 'mountType', les champs au niveau du profil et les options de montage (supprimez le '--' initial et remplacez '-' par '_').",
+ "serve": "Partage Profile : Définissez le chemin 'fs', 'serveType', les champs au niveau du profil et les options de service (supprimez le '--' initial et remplacez '-' par '_').",
+ "vfs": "Profil de VFS : Définissez les options de mise en cache du système de fichiers virtuels, de mise en mémoire tampon et de compatibilité comme paires de valeurs clés (supprimez le '--' initial et remplacez '-' par '_').",
+ "filter": "Filtre de profil : Définissez des motifs glob, des règles d'inclusion/exclusion et des options de filtrage de fichiers sous forme de paires clé-valeur (supprimez le '--' initial et remplacez '-' par '_').",
+ "backend": "Profil de backend : Configurez les options avancées du protocole et les paramètres de connexion spécifiques à distance comme des paires clé-valeur (supprimez le '--' initial et remplacez '-' par '_').",
+ "runtimeRemote": "Dépôt distant d'exécution : Définissez des substitutions de connexion dynamiques et des ajustements de performances sous forme de paires clé-valeur (supprimez le '--' initial et remplacez '-' par '_')."
},
"runtimeRemoteWarning": {
"title": "Configuration du dépôt distant d'exécution",
@@ -1135,10 +1213,14 @@
"appOperation": {
"multiSourceOneWayInfo": "Plusieurs chemins source détectés. La vérification unidirectionnelle a été automatiquement activée pour s'assurer que rclone vérifie chaque source par rapport à la destination.",
"enableAutoStart": "Activer Auto-{{type}} au démarrage",
- "enableScheduled": "Activer la planification {{type}}",
+ "enableScheduled": "Activer {{type}} planifié",
"enableWatch": "Activer la surveillance des fichiers en temps réel",
"watchDescription": "Surveiller les répertoires sources locaux pour les modifications de fichiers et synchroniser automatiquement les modifications.",
"watchDelay": "Délai de débordement (secondes)",
+ "watchDelayHint": "Délai d'attente après la dernière modification détectée avant de lancer la synchronisation.",
+ "watchZeroDelayWarning": "Le mode instantané (0s) lance la synchronisation immédiatement. Pour les gros fichiers ou plusieurs modifications, 3 à 5 s sont recommandées.",
+ "watchChangedOnly": "Synchroniser uniquement les sous-dossiers modifiés",
+ "watchChangedOnlyHint": "Lorsqu'il est déclenché par le moniteur de fichiers, synchronise uniquement les sous-dossiers contenant des fichiers modifiés au lieu d'analyser l'arborescence complète.",
"watchRequiresLocalSource": "La surveillance en temps réel nécessite au moins un répertoire source local.",
"watchRequiresLocal": "La surveillance en temps réel nécessite au moins un répertoire local source ou destination.",
"watchMixedSourcesNote": "Seuls les répertoires sources locaux seront surveillés en temps réel. Les changements sur les sources distantes ne déclencheront pas automatiquement la synchronisation.",
@@ -1286,6 +1368,10 @@
"title": "Premier du mois",
"description": "1er jour à minuit"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "Profils"
},
- "legacy": {
- "title": "Ancienne sauvegarde détectée",
- "description": "Cette sauvegarde a été créée avant l’introduction du système de profil. Elle sera restaurée dans le profil par défaut."
- },
"options": "Restaurer les options",
"scope": {
"all": "Restaurer tout",
@@ -1512,7 +1594,9 @@
"openNative": "Ouvrir avec une application externe",
"openNativeTooltip": "Ouvrir dans l'application externe par défaut",
"openingNative": "Ouverture de {{name}} dans l'application externe...",
- "errorOpenNative": "Échec de l'ouverture du fichier dans l'application externe"
+ "errorOpenNative": "Échec de l'ouverture du fichier dans l'application externe",
+ "showRawText": "Afficher le texte brut",
+ "showPreview": "Afficher l'aperçu"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "Arrêter {{op}}...",
"stop": "Arrêt {{op}}",
"notConfigured": "Non configuré",
+ "serve": "Partager",
"serving": "Partage réseau actif",
"accessibleVia": "Accessible via",
"mounting": "Montage en cours...",
@@ -1594,7 +1679,8 @@
"dryRun": "Simulation",
"dryRunActive": "La simulation est active — aucun changement ne sera effectué",
"resync": "Resynchroniser",
- "resyncActive": "Resynchronisation active — synchronisation complète en cours"
+ "resyncActive": "Resynchronisation active — synchronisation complète en cours",
+ "remoteSettings": "Paramètres du distant"
},
"generalDetail": {
"automations": "Automatisations",
@@ -1640,6 +1726,7 @@
"loadConfig": "Charger la configuration",
"exportConfig": "Exporter la configuration",
"toggleBrowser": "Activer/désactiver Le navigateur de fichiers",
+ "openFlowOverlay": "Activer/désactiver l'espace de travail Flow",
"closeDialog": "Fermer la boîte de dialogue / Annuler l'action"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "Éteindre",
- "message": "Veuillez patienter pendant que l'application s'éteint en toute sécurité..."
+ "message": "Veuillez patienter pendant que l'application s'éteint en toute sécurité...",
+ "confirmTitle": "Tâches actives en cours",
+ "confirmMessage": "Rclone Manager a des tâches actives en cours ({{jobs}} transferts, {{mounts}} montages, {{serves}} services). Voulez-vous vraiment tout arrêter et quitter ?",
+ "stopAndQuit": "Arrêter et Quitter"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "À propos de rclone",
"credits": "Crédits",
"legal": "Mentions légales",
- "donate": "Faire un don",
"website": "Site Web",
"wiki": "Page Wiki",
"reportIssues": "Signaler des problèmes",
@@ -1959,14 +2048,6 @@
"label": "Mot de passe",
"placeholder": "Laisser vide pour aucune authentification"
},
- "oauthHost": {
- "label": "Hôte OAuth",
- "placeholder": "127.0.0.1",
- "description": "Hôte auquel se connecter pour les rappels OAuth. Doit être une adresse routable — jamais un caractère générique comme 0.0.0.0. Dans Docker, définissez-le sur le nom d'hôte accessible du conteneur."
- },
- "oauthPort": {
- "label": "Port OAuth"
- },
"configPassword": {
"label": "Mot de passe de configuration",
"description": "Mot de passe pour le fichier de configuration chiffré"
@@ -1984,7 +2065,6 @@
"local": "Local",
"name": "Nom",
"enableAuth": "Personnaliser l'authentification",
- "oauthSettings": "Paramètres OAuth (Sera supprimé à l'avenir)",
"selectConfigFile": "Sélectionnez le fichier de configuration",
"activeConfigPath": "Chemin de configuration actif",
"connectionTab": "Connexion",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "Si le navigateur ne s'est pas ouvert automatiquement, utilisez ce lien d'authentification :",
"openLink": "Ouvrir le lien",
- "copyLink": "Copier le Lien",
- "remoteFallback": "Le lien manuel OAuth n'est pas disponible pour les backends distants ici. Vérifiez les logs/sorties des backend des dépôts distants."
+ "copyLink": "Copier le Lien"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "Impossible de supprimer le profil \"{{name}}\" - il est utilisé par {{count}} actif {{type}}(s)",
"disabledReason": {
"inUse": "Le profil est utilisé par un {{operation}} en cours d'exécution. Arrêtez-le d'abord."
- }
+ },
+ "duplicate": "Dupliquer le profil"
},
"buttons": {
- "back": "Précédent",
- "cancel": "Annuler",
- "create": "Créer",
- "save": "Sauvegarder",
- "next": "Suivant",
"cleanup": "Nettoyage en cours",
- "processing": "Traitement en cours...",
- "continue": "Continuer"
+ "processing": "Traitement en cours..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "Échec du traitement de la réponse interactive",
"loadFailed": "Échec de la suppression du remote"
+ },
+ "profileSaved": "Profil '{{profile}}' enregistré pour {{remote}}",
+ "profileSaveFailed": "Échec de l'enregistrement du profil",
+ "warnings": {
+ "selectRemoteToSave": "Veuillez sélectionner un distant pour enregistrer le profil"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "Nouveau nom",
"counter": "Compteur",
"date": "Date",
- "extension": "Extension"
+ "extension": "Extension",
+ "duplicateOrInvalid": "Nom dupliqué ou non valide"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "Taille de l’icône",
- "showHidden": "Afficher les fichiers cachés"
+ "showHidden": "Afficher les fichiers cachés",
+ "toggleLayout": "Basculer la disposition",
+ "viewOptions": "Options d'affichage"
},
"notifications": {
"mkdirFailed": "Échec de la création du répertoire : {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "Supprimer le dépôt distant"
},
"deleteRemote": {
- "title": "Confirmer la suppression",
- "message": "Êtes-vous sûr de vouloir supprimer '{{name}}' ? Cette action ne peut pas être annulée."
+ "title": "Supprimer le dépôt distant",
+ "message": "Êtes-vous sûr de vouloir supprimer '{{name}}' ? Cette action est irréversible.",
+ "activeOperationsTitle": "Opérations actives en cours",
+ "activeOperationsDesc": "Les opérations actives suivantes sont en cours d'exécution sur ce dépôt distant et seront interrompues :",
+ "willUnmount": "Sera démonté",
+ "willStop": "Sera arrêté",
+ "willCancel": "Sera annulé",
+ "savedProfilesTitle": "Profils enregistrés ({{count}})",
+ "quickRunsTitle": "Quick Runs associés ({{count}})",
+ "automationsTitle": "Automatisations planifiées ({{count}})",
+ "types": {
+ "mount": "Point de montage",
+ "serve": "Serveur"
+ }
},
"resetRemote": {
"title": "Réinitialiser les paramètres du dépôt distant",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "Une erreur inattendue s'est produite. Veuillez vérifier les logs pour plus de détails.",
- "openFailed": "Impossible d'ouvrir {{name}}",
- "resetSettingsFailed": "Échec de la réinitialisation des paramètres du dépôt distant",
- "deleteRemoteFailed": "Impossible de supprimer le remote"
+ "openFailed": "Impossible d'ouvrir {{name}}"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "Remise en page par défaut",
"toggleAutomationFailed": "Échec de l'activation de l'automatisation",
"showDetailed": "Afficher les cartes détaillées",
- "showCompact": "Afficher les cartes Compact",
- "settings": "Paramètres de mise en page"
+ "showCompact": "Afficher les cartes Compact"
},
"bandwidth": {
"aria": {
@@ -2523,17 +2614,24 @@
"retry": "Réessayer le chargement de la bande passante",
"upload": "Charger :",
"download": "Télécharger :",
- "total": "Total :"
+ "total": "Total :",
+ "unlimited": "Illimité (Désactivé)",
+ "customPlaceholder": "Débit personnalisé (ex. 10M, 10M:50M)",
+ "apply": "Appliquer"
},
"system": {
"aria": {
"loading": "Chargement des informations du système"
},
"loading": "Chargement des informations du système...",
- "status": "Statut de rclone :",
+ "status": "Statut du moteur :",
+ "version": "Version du moteur :",
+ "platform": "Plateforme :",
+ "pid": "ID du processus :",
+ "goVersion": "Exécutable Go :",
"totalRemotes": "Total dépôts distants :",
"activeJobs": "Jobs actifs :",
- "memoryUsage": "Utilisation de la mémoire :",
+ "memoryUsage": "Mémoire du tas :",
"uptime": "En service :",
"active": "Actif",
"inactive": "Inactif",
@@ -2593,31 +2691,42 @@
"mount": {
"pointEmpty": "Le point de montage ne peut être vide",
"alreadyInUse": "Le point de montage {{mountPoint}} est déjà utilisé par le dépôt distant {{remote}}",
- "configIncomplete": "Configuration du montage incomplète pour le profil '{{profile}}'"
+ "configIncomplete": "Configuration du montage incomplète pour le profil '{{profile}}'",
+ "directoryAlreadyMounted": "Le répertoire de montage est déjà utilisé. Veuillez sélectionner un dossier vide ou activer '--allow-non-empty' dans le profil.",
+ "directoryNotEmpty": "Le dossier sélectionné n'est pas vide. Veuillez choisir un dossier vide ou activer '--allow-non-empty'.",
+ "winfspMissing": "WinFsp n'est pas installé. Veuillez installer WinFsp pour monter des disques virtuels sous Windows.",
+ "fuseMissing": "FUSE (fuse3) n'est pas installé. Veuillez installer fuse3 pour activer le montage.",
+ "macfuseMissing": "macFUSE / FUSE-T n'est pas installé. Veuillez installer macFUSE pour activer le montage sur macOS.",
+ "driveLetterInUse": "La lettre de lecteur sélectionnée est déjà utilisée par le système.",
+ "permissionDenied": "Permission refusée lors de la tentative de montage."
},
"operations": {
"configIncomplete": "Configuration incomplète pour le profil '{{profile}}'"
},
"serve": {
"parseFailed": "Échec de l'analyse de la réponse : {{error}}",
- "remoteEmpty": "Nom du dépôt distant ne peut pas être vide"
+ "remoteEmpty": "Nom du dépôt distant ne peut pas être vide",
+ "addressAlreadyInUse": "Le port ou l'adresse sélectionné est déjà utilisé par une autre application. Veuillez choisir un autre port.",
+ "privilegedPort": "Les ports inférieurs à 1024 nécessitent des privilèges d'administrateur. Veuillez choisir un port 1024 ou supérieur.",
+ "tlsError": "Échec du chargement ou de l'analyse du certificat SSL/TLS.",
+ "startFailed": "Échec du démarrage du serveur: {{error}}",
+ "stopFailed": "Échec de l'arrêt du serveur: {{error}}"
},
"request": {
"failed": "Échec de la requête : {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}} : {{body}}"
- },
"file": {
"driveRoot": "Impossible de sélectionner la racine du lecteur (ex. D:\\) comme point de montage. Veuillez sélectionner ou créer un sous-dossier.",
"folderNotEmpty": "Le dossier sélectionné n'est pas vide",
"invalidPath": "Chemin invalide : le chemin ne peut pas être vide.",
"notFound": "Le chemin n'existe pas : {{path}}",
- "failedToOpen": "Échec de l'ouverture du gestionnaire de fichiers : {{error}}"
+ "failedToOpen": "Échec de l'ouverture du gestionnaire de fichiers : {{error}}",
+ "diskFull": "Le disque ou lecteur cible est plein. Espace disque insuffisant.",
+ "fileLocked": "Le fichier est actuellement verrouillé ou utilisé par un autre processus.",
+ "readOnly": "Le système de fichiers cible est en lecture seule ou protégé en écriture."
},
"rclone": {
"unsupportedPlatform": "Plateforme non supportée",
- "downloadError": "Erreur inconnue lors du téléchargement de rclone",
"mountPluginInstallFailed": "Échec de l'installation du plug-in de montage : {{error}}",
"mountPluginVerificationFailed": "L'installation a réussi mais la vérification a échoué. Un redémarrage peut être nécessaire.",
"configEncrypted": "La configuration est chiffrée et aucun mot de passe n'est fourni",
@@ -2640,7 +2749,8 @@
"invalidFlags": "Flags rclone non valides détectés : {{error}}",
"updateRemoteUnsupported": "La mise à jour du dépôt distant n'est pas prise en charge pour cette version de rclone",
"backupFailed": "Impossible de sauvegarder le binaire actuel de rclone : {{error}}",
- "rcAuthFailed": "L'authentification du contrôle distant rclone a échoué: {{error}}"
+ "rcAuthFailed": "L'authentification du contrôle distant rclone a échoué: {{error}}",
+ "downloadCancelled": "Téléchargement annulé par l'utilisateur"
},
"security": {
"passwordEmpty": "Mot de passe ne peut pas être vide",
@@ -2654,14 +2764,8 @@
"rcloneError": "Erreur de rclone : {{error}}"
},
"backup": {
- "unknownFormat": "Format de sauvegarde inconnu",
- "integrityFailed": "Échec de la vérification d'intégrité ! La sauvegarde peut être corrompue.",
- "encryptedPasswordRequired": "Cette sauvegarde est chiffrée. Mot de passe requis.",
"unsupportedArchive": "Type d'archive non pris en charge. Doit être un fichier .rcman",
"invalidArchive": "Format d'archive de sauvegarde invalide",
- "manifestParseFailed": "Échec de l'analyse du manifeste de sauvegarde : {{error}}",
- "missingManifest": "Manifeste de sauvegarde est manquant dans l'archive",
- "openFailed": "Échec de l'ouverture de l'archive de sauvegarde : {{error}}",
"restoreFailed": "La restauration de la sauvegarde a échoué : {{error}}",
"secretRequirePassword": "Cette sauvegarde est protégée par un secret et nécessite un mot de passe"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "JobInfo non trouvé",
"monitoringFailed": "Trop d'erreurs de surveillance du job : {{error}}",
- "executionFailed": "Échec de l'exécution du job : {{error}}"
+ "executionFailed": "Échec de l'exécution du job : {{error}}",
+ "corruptedTransfer": "Fichier corrompu pendant le transfert ou somme de contrôle invalide."
},
"cache": {
"fetchRemotesFailed": "Échec de récupération des dépôts distants",
@@ -2695,12 +2800,14 @@
"automationNotFound": "Automatisation non trouvée"
},
"system": {
- "themeSetFailed": "Impossible de définir le thème de l'application : {{error}}",
- "unlockFailed": "Échec du déblocage : {{error}}",
- "killFailed": "Impossible de tuer le processus : {{error}}"
+ "unlockFailed": "Échec du déblocage : {{error}}"
},
"remote": {
- "configFailed": "Échec de la configuration du dépôt distant : {{error}}"
+ "configFailed": "Échec de la configuration du dépôt distant : {{error}}",
+ "authExpired": "L'authentification du distant a expiré ou est invalide. Veuillez ré-authentifier le distant.",
+ "quotaExceeded": "Limite de débit d'API ou quota de stockage distant dépassé. Veuillez réessayer ultérieurement.",
+ "networkError": "Impossible de joindre le serveur distant. Veuillez vérifier votre connexion et l'adresse distante.",
+ "notFound": "Le répertoire ou fichier cible est introuvable sur le distant."
},
"updater": {
"noPending": "Aucune mise à jour en attente",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "Échec de la réinitialisation de tous les paramètres : {{error}}",
"eventEmitFailed": "Échec de l'émission des paramètres d'événement : {{error}}",
"subSettingsFailed": "Échec de l'obtention des sous-paramètres : {{error}}",
- "notFound": "Paramètres pour '{{name}}' introuvables",
"deleteFailed": "Échec de la suppression des paramètres dépôt distants : {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "Copier l'URL [{{active}}/{{total}}]",
"archivecreateCount": "Archiver [{{active}}/{{total}}]",
"serveCount": "Partage [{{active}}/{{total}}]",
+ "quickRunsCount": "Exécutions rapides [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "1 job",
"tooltipTasks": "Jobs {{count}}",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 Partage",
"tooltipServes": "{{count}} Service de partage"
},
+ "powerInhibitor": {
+ "reason": "Opérations actives en cours : {{details}}",
+ "mounts": "{{count}} montage(s)",
+ "jobs": "{{count}} tâche(s)",
+ "serves": "{{count}} serveur(s)"
+ },
"notification": {
"title": {
"mountSucceeded": "Montage réussi",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "Impossible de se connecter au moteur de rclone : {{error}}",
"engineBinaryNotFound": "Le binaire rclone n'a pas été trouvé, veuillez vérifier vos paramètres.",
"enginePasswordRequired": "Le mot de passe est requis pour accéder au fichier de configuration.",
- "engineAuthFailed": "Échec de l'authentification auprès du moteur rclone: {{error}}"
+ "engineAuthFailed": "Échec de l'authentification auprès du moteur rclone: {{error}}",
+ "powerInhibited": "Des opérations actives empêchent la mise en veille du système."
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "Vider le cache",
"openDevTools": "Ouvrir les outils de développement",
"openDevToolsError": "Impossible d'ouvrir DevTools",
- "openDevToolsHint": "Ouvrir DevTools pour débogage",
"cleared": "Données effacées"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "Rechercher des flux...",
+ "toggleSearch": "Basculer la recherche",
+ "loading": "Chargement des flux...",
+ "noResults": "Aucun flux correspondant",
+ "toggleSidebar": "Basculer la barre latérale Flow",
+ "empty": {
+ "description": "Créez une exécution rapide ou un flux de travail pour démarrer avec des opérations rapides."
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "Aucune exécution rapide configurée pour {{remote}}.",
+ "createForRemote": "Créer une exécution rapide pour {{remote}}"
+ }
+ },
+ "tabs": {
+ "quickRun": "Exécution rapide",
+ "workflow": "Flux de travail"
+ },
+ "builder": {
+ "placeholderTitle": "Générateur de flux en cours de développement",
+ "placeholderMessage": "Un canevas visuel pour les pipelines rclone multi-étapes arrive bientôt.",
+ "viewRoadmap": "Voir la feuille de route sur GitHub"
+ }
+ },
+ "templates": {
+ "title": "Modèles",
+ "presetTitle": "Préréglages et modèles",
+ "applyPresets": "Appliquer les préréglages par défaut",
+ "userTemplates": "Modèles utilisateur enregistrés",
+ "saveAsTemplate": "Enregistrer les paramètres actuels comme modèle...",
+ "manageTemplates": "Gérer les modèles...",
+ "manageTitle": "Gérer les modèles",
+ "noUserTemplates": "Aucun modèle personnalisé enregistré pour le moment.",
+ "newTitle": "Nouveau modèle",
+ "templateName": "Nom du modèle",
+ "templateDesc": "Description (facultatif)",
+ "selectAllKeys": "Sélectionner toutes les clés",
+ "deselectAllKeys": "Désélectionner toutes les clés",
+ "addKeyToCategory": "Ajouter une clé à la catégorie",
+ "addKey": "Ajouter une clé",
+ "removeKey": "Supprimer la clé",
+ "deleteTemplate": "Supprimer le modèle",
+ "noCatKeys": "Aucun paramètre configuré dans {{category}} pour le moment.",
+ "visualView": "Inspecteur visuel",
+ "jsonView": "Éditeur JSON",
+ "key": "Clé",
+ "value": "Valeur",
+ "namePlaceholder": "p. ex. Mes paramètres de sauvegarde rapide S3",
+ "descPlaceholder": "Brève description de ces paramètres...",
+ "keyPlaceholder": "p. ex. dir_cache_time",
+ "valuePlaceholder": "p. ex. 10m",
+ "selectedCount": "{{selected}} / {{total}} sélectionnés",
+ "keyCount": "{{count}} clé",
+ "keysCount": "{{count}} clés",
+ "zeroKeys": "0 clés",
+ "applySuccess": "Modèle \"{{name}}\" appliqué avec succès.",
+ "savedSuccess": "Modèle \"{{name}}\" enregistré avec succès.",
+ "deletedSuccess": "Modèle supprimé avec succès."
+ },
+ "navigation": {
+ "dashboard": "Tableau de bord"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "Téléchargement...",
+ "verifying": "Vérification de la somme de contrôle...",
+ "extracting": "Extraction de l'archive...",
+ "installing": "Installation...",
+ "completed": "Terminé",
+ "cancelled": "Opération annulée",
+ "error": "Erreur"
+ }
}
}
diff --git a/resources/i18n/ja-JP/main.json b/resources/i18n/ja-JP/main.json
index 3c65b3e59..d8473e485 100644
--- a/resources/i18n/ja-JP/main.json
+++ b/resources/i18n/ja-JP/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "キャンセル",
"save": "保存",
+ "create": "作成",
+ "show": "表示",
+ "hide": "非表示",
"ok": "OK",
"close": "閉じる",
- "nextStep": "次のステップ",
+ "next": "次へ",
"back": "戻る",
"continue": "続行",
"yes": "はい",
@@ -31,7 +34,12 @@
"password": "パスワード",
"username": "ユーザー名",
"selectAll": "全て選択",
- "deselectAll": "選択を解除"
+ "deselectAll": "選択を解除",
+ "viewDetails": "詳細を見る",
+ "moreActions": "その他の操作",
+ "duplicate": "複製",
+ "clearAll": "すべてクリア",
+ "acknowledge": "確認"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "デバウンス遅延",
"watcherActive": "監視中",
"seconds": "秒",
- "realtimeSchedule": "リアルタイムファイル監視"
+ "realtimeSchedule": "リアルタイムファイル監視",
+ "changedOnlyShort": "サブディレクトリのみ",
+ "changedOnlyActive": "サブディレクトリのみ",
+ "syncScope": "同期スコープ",
+ "realtimeChangedOnly": "リアルタイム監視(サブディレクトリのみ)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "削除",
"copyurl": "URLコピー",
"archivecreate": "圧縮",
+ "cryptcheck": "暗号チェック",
"serve": "公開サーバー",
"start": "開始",
"stop": "停止"
},
"sidebar": {
+ "toggleSidebar": "サイドバーの切り替え",
"toggleSearch": "検索バーの切り替え",
"remotes": "リモート一覧",
"searchPlaceholder": "リモートを検索...",
@@ -193,7 +207,8 @@
"used": "使用量:",
"free": "空き容量:",
"loading": "読み込み中...",
- "errorLoading": "ディスク使用量の読み込みで問題が発生しました"
+ "errorLoading": "ディスク使用量の読み込みで問題が発生しました",
+ "retry": "ディスク使用量の再読み込み"
},
"status": {
"mounted": "マウント済み",
@@ -296,7 +311,9 @@
"filemanager": "ファイルマネージャー",
"startup": "起動時",
"update": "アップデート",
- "internal": "内部"
+ "internal": "内部",
+ "flow": "フローワークスペース",
+ "quickrun": "クイックラン"
},
"rule": {
"filters": "フィルタ",
@@ -318,7 +335,8 @@
"actionRequired": "少なくとも1つのアクションが必要です。",
"noActionsHint": "ルールに割り当てる前に、まずアラートアクションを作成する必要があります。",
"filtersEmptyHint": "全てのイベントに一致させるには空欄にします。",
- "scopeFilters": "スコープフィルタ"
+ "scopeFilters": "スコープフィルタ",
+ "allEvents": "すべてのイベント"
},
"events": {
"job": "ジョブ&ファイル操作",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "ヘッダー名",
"headerValue": "値"
- }
+ },
+ "noRulesHint": "アラートルールがまだ設定されていません。通知を受け取るためのルールを作成してください。",
+ "noActionsHint": "アラートアクションがまだ設定されていません。アクションを作成してください。"
},
"settings": {
"resetAll": {
@@ -408,17 +428,36 @@
"label": "トレイアイコンを有効化",
"description": "システムトレイにアイコンを表示します。バックグラウンドサービスも有効になります。"
},
+ "tray_icon_theme": {
+ "label": "トレイアイコンのテーマ",
+ "description": "システムトレイのアイコンスタイルを選択します。",
+ "options": {
+ "system": "システム(自動モノクロ)",
+ "color": "カラー",
+ "monochrome_light": "モノクロ(ライト)",
+ "monochrome_dark": "モノクロ(ダーク)"
+ }
+ },
"language": {
"label": "言語",
"description": "ユーザーインターフェースに使用する言語。デフォルトではシステム言語が使用されます。"
},
+ "default_view": {
+ "label": "デフォルトの起動ビュー",
+ "description": "アプリ起動時に開くメイン UI インターフェースを選択します。",
+ "options": {
+ "main_menu": "メインメニュー",
+ "nautilus": "Nautilus ファイルブラウザ",
+ "flow": "Flow ワークスペース"
+ }
+ },
"start_on_startup": {
"label": "システム起動時に実行",
"description": "システム起動時にアプリを自動的に開始します。"
},
"notifications": {
"label": "通知を有効化",
- "description": "マウントイベントの通知を表示します。"
+ "description": "アプリのイベント(マウント、同期、更新など)に関するデスクトップ通知を表示します。"
},
"restrict": {
"label": "値を制限",
@@ -427,6 +466,10 @@
"standalone_dialogs": {
"label": "独立したダイアログ",
"description": "ダイアログボックス (モーダル) をOSの別ウィンドウで開きます。"
+ },
+ "prevent_sleep": {
+ "label": "システムのスリープ/シャットダウンを防止",
+ "description": "アクティブな転送、マウント、またはサーバーの実行中にシステムの休止状態やシャットダウンを防止します。"
}
},
"core": {
@@ -523,6 +566,10 @@
"label": "ダッシュボードレイアウト",
"description": "ダッシュボードのカスタムレイアウト設定。"
},
+ "quick_run_layout": {
+ "label": "クイックランレイアウト",
+ "description": "クイックラン概要のカスタムレイアウト設定。"
+ },
"dashboard_card_variant": {
"label": "リモートカードの表示モード",
"description": "概要パネルにおけるリモートカードのデフォルト表示形式。",
@@ -573,6 +620,10 @@
"generic": {
"title": "エンジンの起動に失敗しました",
"subtitle": "詳細についてはログを確認してください"
+ },
+ "auth": {
+ "title": "Rclone認証が必要です",
+ "subtitle": "認証情報または設定パスワードを確認してください"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "環境設定",
"flags": "Rcloneフラグ",
"fileBrowser": "ファイルブラウザ",
+ "flowWorkspace": "Flow ワークスペース",
"shortcuts": "キーボードショートカット",
"about": "RClone Manager について",
"quickRemote": "クイックリモート作成",
@@ -645,11 +697,32 @@
"title": "設定ファイルのパスワードが必要です",
"content": "rclone設定ファイルが暗号化されています。このセッションでロックを解除するためのパスワードを入力してください。"
},
+ "selectMainUi": {
+ "title": "メインUIを選択",
+ "content": "お好みのワークスペースUIレイアウトを選択してください。メニューや設定からいつでも変更可能です。"
+ },
"ready": {
"title": "準備完了!",
"content": "全てのセットアップが完了しました。RClone Managerでクラウドストレージを簡単に管理しましょう。「はじめる」をクリックして開始します。"
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "クラシックダッシュボード",
+ "badge": "デフォルト",
+ "description": "リモート接続、転送、クイックアクション、システムステータスを一覧表示するタブ付きダッシュボード。"
+ },
+ "nautilus": {
+ "title": "ファイルブラウザ (Nautilus)",
+ "badge": "ファイルマネージャー",
+ "description": "リモートファイルの参照および転送に最適化された2ペインのファイル管理UI。"
+ },
+ "flow": {
+ "title": "Flow ワークスペース",
+ "badge": "ワークフロー",
+ "description": "自動タスクおよびクイック実行プロファイルを構築・実行するためのビジュアルUI。"
+ }
+ },
"installButton": {
"configuring": "設定中...",
"installing": "インストール中...",
@@ -668,8 +741,6 @@
"default": "デフォルト"
},
"actions": {
- "back": "戻る",
- "next": "次へ",
"installPlugin": "プラグインをインストール",
"installingPlugin": "インストール中...",
"unlock": "ロック解除",
@@ -826,7 +897,8 @@
"actions": {
"hide": "非表示",
"show": "表示",
- "open": "開く"
+ "open": "開く",
+ "cancel": "キャンセル"
},
"overviewHeader": {
"manageBackends": "バックエンドの管理",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "JSONモードで表示するフィールドはありません",
"parseError": "無効なJSON構文です。フォーマットを確認してください。",
- "cliArgumentWithSuggestion": "CLI形式の引数 (「{{key}}」 など) はrclone RCでサポートされていません。もしかして: 「{{suggestion}}」",
+ "cliArgumentWithSuggestion": "CLI形式のフラグ '{{key}}' は実行時に自動的に '{{suggestion}}' にマッピングされます。",
"camelCaseSuggestionWarning": "オプション 「{{key}}」 はこの形式では無効です。もしかして: 「{{suggestion}}」",
"fixSuggestion": "「{{suggestion}}」 に変更",
"wrongBlockWarning": "オプション {{keys}} は 「{{block}}」 設定ブロックに属しているため、ここでは動作しない可能性があります。",
@@ -986,6 +1058,10 @@
"required": "パスワードが必要です",
"remember": "パスワードを記憶",
"keychain": "システムキーチェーンに保存済み"
+ },
+ "validation": {
+ "required": "この項目は必須です。",
+ "min": "値は{{val}}以上である必要があります。"
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "追加設定を適用",
"importSourcePath": "転送元パスをインポート",
"importDestPath": "転送先パスをインポート",
- "importMountPoint": "マウントポイントをインポート"
+ "importMountPoint": "マウントポイントをインポート",
+ "applyToTask": "タスクに適用",
+ "appliedToast": "{{count}} 件の設定を正常にインポートしました"
},
"obscure": {
"title": "パスワードの難読化",
@@ -1050,15 +1128,15 @@
"switchToJson": "JSONモードに切り替え",
"unknownTopLevelProperty": "警告: 「{{key}}」 はこのプロファイルの標準トップレベルプロパティではないため、無視される可能性があります。",
"jsonEditorInfo": {
- "sync": "同期/コピー/移動プロファイル: 'srcFs' と 'dstFs' のパスおよびプロファイルレベルのフィールドを設定し、全てのrcloneフラグを '_config' 内に配置します。",
- "bisync": "双方向同期プロファイル: 'path1' と 'path2' のパスおよびプロファイルレベルのフィールドを設定し、全てのrcloneフラグを '_config' 内に配置します。",
- "check": "チェックプロファイル: 'srcFs' と 'dstFs' のパスおよびプロファイルレベルのフィールドを設定し、全てのチェックフラグを '_config' 内に配置します。",
- "mount": "マウントプロファイル: 'fs' と 'mountPoint' のパス、'mountType'、プロファイルレベルのフィールドを設定し、全てのマウントオプションを 'mountOpt' 内に配置します。",
- "serve": "公開サーバープロファイル: 'fs' パス、'serveType'、プロファイルレベルのフィールドを設定し、全ての公開オプションを '_config' 内に配置します。",
- "vfs": "VFSプロファイル: カスタム仮想ファイルシステムのキャッシュ、バッファリング、互換性オプションをキーと値のペアで設定します。",
- "filter": "フィルタプロファイル: Globパターン、包含/除外ルール、ファイルフィルタオプションをキーと値のペアで設定します。",
- "backend": "バックエンドプロファイル: 高度なプロトコルオプションとリモート固有の接続設定をキーと値のペアで設定します。",
- "runtimeRemote": "実行時リモート: 動的な接続オーバーライドやパフォーマンス調整をキーと値のペアで設定します。"
+ "sync": "同期/コピー/移動プロファイル: 'srcFs' と 'dstFs' のパス、プロファイルレベルのフィールド、およびrcloneフラグを設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "bisync": "双方向同期プロファイル: 'path1' と 'path2' のパス、プロファイルレベルのフィールド、およびrcloneフラグを設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "check": "チェックプロファイル: 'srcFs' と 'dstFs' のパス、プロファイルレベルのフィールド、およびチェックフラグを設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "mount": "マウントプロファイル: 'fs' と 'mountPoint' のパス、'mountType'、プロファイルレベルのフィールド、およびマウントオプションを設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "serve": "公開サーバープロファイル: 'fs' パス、'serveType'、プロファイルレベルのフィールド、および公開オプションを設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "vfs": "VFSプロファイル: カスタム仮想ファイルシステムのキャッシュ、バッファリング、互換性オプションをキーと値のペアで設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "filter": "フィルタプロファイル: Globパターン、包含/除外ルール、ファイルフィルタオプションをキーと値のペアで設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "backend": "バックエンドプロファイル: 高度なプロトコルオプションとリモート固有の接続設定をキーと値のペアで設定します (先頭の '--' を削除し、'-' を '_' に置換)。",
+ "runtimeRemote": "実行時リモート: 動的な接続オーバーライドやパフォーマンス調整をキーと値のペアで設定します (先頭の '--' を削除し、'-' を '_' に置換)。"
},
"runtimeRemoteWarning": {
"title": "実行時リモート設定",
@@ -1139,6 +1217,10 @@
"enableWatch": "リアルタイムファイル監視を有効化",
"watchDescription": "ローカルの転送元ディレクトリでファイルの変更を監視し、変更を自動的に同期します。",
"watchDelay": "デバウンス遅延(秒)",
+ "watchDelayHint": "同期をトリガーする前に、最後に検出された変更からの待機時間。",
+ "watchZeroDelayWarning": "インスタントモード(0秒)は変更時に即座に同期を開始します。大容量ファイルや複数ファイルの編集には、書き込み完了のため3〜5秒を推奨します。",
+ "watchChangedOnly": "変更されたサブディレクトリのみ同期",
+ "watchChangedOnlyHint": "ファイルウォッチャーによってトリガーされた場合、ルートツリー全体をスキャンする代わりらに変更されたファイルを含むサブディレクトリのみを同期します。",
"watchRequiresLocalSource": "リアルタイム監視には少なくとも1つのローカル転送元ディレクトリが必要です。",
"watchRequiresLocal": "リアルタイム監視には少なくとも1つのローカル転送元または転送先ディレクトリが必要です。",
"watchMixedSourcesNote": "リアルタイムで監視されるのはローカルの転送元ディレクトリのみです。リモートソースでの変更によって自動的に同期が開始されることはありません。",
@@ -1286,6 +1368,10 @@
"title": "毎月1日",
"description": "毎月1日の午前0時"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "プロファイル"
},
- "legacy": {
- "title": "旧形式バックアップの検出",
- "description": "このバックアップはプロファイル機能が導入される前に作成されたものです。'default' プロファイルとして復元されます。"
- },
"options": "復元オプション",
"scope": {
"all": "全て復元",
@@ -1512,7 +1594,9 @@
"openNative": "外部アプリで開く",
"openNativeTooltip": "デフォルトの外部アプリケーションで開く",
"openingNative": "外部アプリで {{name}} を開いています...",
- "errorOpenNative": "外部アプリでファイルを開けませんでした"
+ "errorOpenNative": "外部アプリでファイルを開けませんでした",
+ "showRawText": "元のテキストを表示",
+ "showPreview": "プレビューを表示"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "{{op}} を停止中...",
"stop": "{{op}} を停止",
"notConfigured": "未設定",
+ "serve": "公開サーバー",
"serving": "公開サーバー",
"accessibleVia": "アクセス可能アドレス:",
"mounting": "マウント中...",
@@ -1594,7 +1679,8 @@
"dryRun": "テスト実行 (dryRun)",
"dryRunActive": "テスト実行が有効です — 変更は一切行われません",
"resync": "再同期",
- "resyncActive": "再同期が有効です — 完全な再同期を実行しています"
+ "resyncActive": "再同期が有効です — 完全な再同期を実行しています",
+ "remoteSettings": "リモート設定"
},
"generalDetail": {
"automations": "自動化",
@@ -1640,6 +1726,7 @@
"loadConfig": "設定を読み込み",
"exportConfig": "設定をエクスポート",
"toggleBrowser": "ファイルブラウザの切り替え",
+ "openFlowOverlay": "Flow ワークスペースの切り替え",
"closeDialog": "ダイアログを閉じる / 操作をキャンセル"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "終了処理中",
- "message": "アプリが安全に終了するまでお待ちください..."
+ "message": "アプリが安全に終了するまでお待ちください...",
+ "confirmTitle": "アクティブなタスクが実行中",
+ "confirmMessage": "Rclone Managerでアクティブなタスクが実行中です(転送: {{jobs}}、マウント: {{mounts}}、配信: {{serves}})。すべてのタスクを停止して終了しますか?",
+ "stopAndQuit": "停止して終了"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "Rcloneについて",
"credits": "クレジット",
"legal": "法的情報",
- "donate": "寄付",
"website": "ウェブサイト",
"wiki": "Wiki ページ",
"reportIssues": "問題を報告",
@@ -1959,14 +2048,6 @@
"label": "パスワード",
"placeholder": "認証なしの場合は空欄"
},
- "oauthHost": {
- "label": "OAuth ホスト",
- "placeholder": "127.0.0.1",
- "description": "OAuth認証コールバック受信用ホスト。ルーティング可能なアドレスを指定してください(0.0.0.0 などのワイルドカードは不可)。Docker環境では外部からアクセス可能なホスト名やIPアドレスを設定してください"
- },
- "oauthPort": {
- "label": "OAuth ポート"
- },
"configPassword": {
"label": "設定パスワード",
"description": "暗号化された設定ファイルのパスワード"
@@ -1984,7 +2065,6 @@
"local": "ローカル",
"name": "名前",
"enableAuth": "認証のカスタマイズ",
- "oauthSettings": "OAuth設定 (将来のバージョンで削除予定)",
"selectConfigFile": "設定ファイルを選択",
"activeConfigPath": "アクティブな設定パス",
"connectionTab": "接続",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "ブラウザが自動的に開かない場合は、以下の認証リンクを使用してください:",
"openLink": "リンクを開く",
- "copyLink": "リンクをコピー",
- "remoteFallback": "リモートバックエンドでは手動OAuthリンクをここでは利用できません。リモートバックエンドのログ/出力を確認してください。"
+ "copyLink": "リンクをコピー"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "プロファイル 「{{name}}」 を削除できません - 実行中の {{count}} 個の {{type}} で使用されています",
"disabledReason": {
"inUse": "プロファイルは実行中の {{operation}} で使用されています。先に停止してください。"
- }
+ },
+ "duplicate": "プロファイルの複製"
},
"buttons": {
- "back": "戻る",
- "cancel": "キャンセル",
- "create": "作成",
- "save": "保存",
- "next": "次へ",
"cleanup": "クリーンアップ中",
- "processing": "処理中...",
- "continue": "続行"
+ "processing": "処理中..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "対話型レスポンスの処理に失敗しました",
"loadFailed": "リモート設定の読み込みに失敗しました"
+ },
+ "profileSaved": "{{remote}}のプロファイル「{{profile}}」を保存しました",
+ "profileSaveFailed": "プロファイルの保存に失敗しました",
+ "warnings": {
+ "selectRemoteToSave": "プロファイルを保存するリモートを選択してください"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "新しい名前",
"counter": "連番",
"date": "日付",
- "extension": "拡張子"
+ "extension": "拡張子",
+ "duplicateOrInvalid": "重複しているか無効な名前です"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "アイコンサイズ",
- "showHidden": "隠しファイルを表示"
+ "showHidden": "隠しファイルを表示",
+ "toggleLayout": "レイアウトの切り替え",
+ "viewOptions": "表示オプション"
},
"notifications": {
"mkdirFailed": "ディレクトリの作成に失敗しました: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "リモートを削除"
},
"deleteRemote": {
- "title": "削除の確認",
- "message": "「{{name}}」 を削除してもよろしいですか? この操作は取り消せません。"
+ "title": "リモートを削除",
+ "message": "'{{name}}' を削除してもよろしいですか?この操作は取り消せません。",
+ "activeOperationsTitle": "実行中のアクティブな操作",
+ "activeOperationsDesc": "このリモートで実行中の次のアクティブな操作は強制終了されます:",
+ "willUnmount": "マウント解除",
+ "willStop": "停止",
+ "willCancel": "キャンセル",
+ "savedProfilesTitle": "保存されたプロファイル ({{count}})",
+ "quickRunsTitle": "関連する Quick Run ({{count}})",
+ "automationsTitle": "スケジュールされた自動化 ({{count}})",
+ "types": {
+ "mount": "マウントポイント",
+ "serve": "配信"
+ }
},
"resetRemote": {
"title": "リモート設定のリセット",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "予期しないエラーが発生しました。詳細についてはログを確認してください。",
- "openFailed": "{{name}} を開けませんでした",
- "resetSettingsFailed": "リモート設定のリセットに失敗しました",
- "deleteRemoteFailed": "リモートの削除に失敗しました"
+ "openFailed": "{{name}} を開けませんでした"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "レイアウトをデフォルトにリセットしました",
"toggleAutomationFailed": "自動化の切り替えに失敗しました",
"showDetailed": "詳細カードを表示",
- "showCompact": "コンパクトカードを表示",
- "settings": "レイアウト設定"
+ "showCompact": "コンパクトカードを表示"
},
"bandwidth": {
"aria": {
@@ -2523,17 +2614,24 @@
"retry": "帯域幅情報を再読み込み",
"upload": "送信:",
"download": "受信:",
- "total": "合計:"
+ "total": "合計:",
+ "unlimited": "無制限(オフ)",
+ "customPlaceholder": "カスタム速度(例: 10M, 10M:50M)",
+ "apply": "適用"
},
"system": {
"aria": {
"loading": "システム情報を読み込み中"
},
"loading": "システム情報を読み込み中...",
- "status": "Rclone ステータス:",
+ "status": "エンジンステータス:",
+ "version": "エンジンバージョン:",
+ "platform": "プラットフォーム:",
+ "pid": "プロセスID:",
+ "goVersion": "Go ランタイム:",
"totalRemotes": "リモート総数:",
"activeJobs": "実行中ジョブ数:",
- "memoryUsage": "メモリ使用量:",
+ "memoryUsage": "ヒープメモリ:",
"uptime": "稼働時間:",
"active": "アクティブ",
"inactive": "非アクティブ",
@@ -2593,31 +2691,42 @@
"mount": {
"pointEmpty": "マウントポイントを空欄にすることはできません",
"alreadyInUse": "マウントポイント {{mountPoint}} はリモート {{remote}} で既に使用されています",
- "configIncomplete": "プロファイル 「{{profile}}」 のマウント設定が不完全です"
+ "configIncomplete": "プロファイル 「{{profile}}」 のマウント設定が不完全です",
+ "directoryAlreadyMounted": "マウント先ディレクトリは既に使用されています。空のフォルダを選択するか、プロファイル設定で '--allow-non-empty' を有効にしてください。",
+ "directoryNotEmpty": "選択したフォルダは空ではありません。空のフォルダを選択するか '--allow-non-empty' を有効にしてください。",
+ "winfspMissing": "WinFsp がインストールされていません。Windows で仮想ドライブをマウントするには WinFsp をインストールしてください。",
+ "fuseMissing": "システムに FUSE (fuse3) がインストールされていません。マウントを有効にするには fuse3 をインストールしてください。",
+ "macfuseMissing": "macFUSE / FUSE-T がインストールされていません。macOS でマウントするには macFUSE をインストールしてください。",
+ "driveLetterInUse": "選択したドライブ文字は既にシステムで使用されています。",
+ "permissionDenied": "マウント処理の権限が拒否されました。"
},
"operations": {
"configIncomplete": "プロファイル 「{{profile}}」 の設定が不完全です"
},
"serve": {
"parseFailed": "レスポンスの解析に失敗しました: {{error}}",
- "remoteEmpty": "リモート名を空欄にすることはできません"
+ "remoteEmpty": "リモート名を空欄にすることはできません",
+ "addressAlreadyInUse": "選択したポートまたはアドレスは他のアプリケーションによって使用されています。別のポートを選択してください。",
+ "privilegedPort": "1024 未満のポートには管理者権限が必要です。1024 以上のポートを選択してください。",
+ "tlsError": "SSL/TLS 証明書の読み込みまたは解析に失敗しました。",
+ "startFailed": "サーバーの起動に失敗しました: {{error}}",
+ "stopFailed": "サーバーの停止に失敗しました: {{error}}"
},
"request": {
"failed": "リクエストに失敗しました: {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}: {{body}}"
- },
"file": {
"driveRoot": "ドライブのルート(D:\\ など)をマウントポイントとして選択することはできません。サブフォルダを選択または作成してください。",
"folderNotEmpty": "選択されたフォルダは空ではありません",
"invalidPath": "無効なパス: パスを空欄にすることはできません。",
"notFound": "パスが存在しません: {{path}}",
- "failedToOpen": "ファイルマネージャーを開けませんでした: {{error}}"
+ "failedToOpen": "ファイルマネージャーを開けませんでした: {{error}}",
+ "diskFull": "ターゲットディスクの空き容量が不足しています。",
+ "fileLocked": "ファイルがロックされているか、別のプロセスで使用されています。",
+ "readOnly": "ターゲットファイルシステムは読み取り専用または書き込み禁止です。"
},
"rclone": {
"unsupportedPlatform": "サポートされていないプラットフォームです",
- "downloadError": "Rcloneのダウンロード中に不明なエラーが発生しました",
"mountPluginInstallFailed": "マウントプラグインのインストールに失敗しました: {{error}}",
"mountPluginVerificationFailed": "インストールは成功しましたが検証に失敗しました。再起動が必要な場合があります。",
"configEncrypted": "設定が暗号化されていますが、パスワードが入力されていません",
@@ -2640,7 +2749,8 @@
"invalidFlags": "無効なrcloneフラグが検出されました: {{error}}",
"updateRemoteUnsupported": "このrcloneバージョンではリモート更新はサポートされていません",
"backupFailed": "現在のrclone実行ファイルのバックアップに失敗しました: {{error}}",
- "rcAuthFailed": "Rcloneリモートコントロール(RC)認証に失敗しました: {{error}}"
+ "rcAuthFailed": "Rcloneリモートコントロール(RC)認証に失敗しました: {{error}}",
+ "downloadCancelled": "ユーザーによってダウンロードがキャンセルされました"
},
"security": {
"passwordEmpty": "パスワードを空欄にすることはできません",
@@ -2654,14 +2764,8 @@
"rcloneError": "Rcloneエラー: {{error}}"
},
"backup": {
- "unknownFormat": "不明なバックアップ形式です",
- "integrityFailed": "整合性チェックに失敗しました! バックアップが破損している可能性があります。",
- "encryptedPasswordRequired": "このバックアップは暗号化されています。パスワードが必要です。",
"unsupportedArchive": "サポートされていないファイル形式です。.rcman ファイルである必要があります",
"invalidArchive": "無効なバックアップファイル形式です",
- "manifestParseFailed": "バックアップマニフェストの解析に失敗しました: {{error}}",
- "missingManifest": "ファイル内にバックアップマニフェストが見つかりません",
- "openFailed": "バックアップファイルの展開に失敗しました: {{error}}",
"restoreFailed": "バックアップの復元に失敗しました: {{error}}",
"secretRequirePassword": "このバックアップはシークレットで保護されているためパスワードが必要です"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "JobInfoが見つかりません",
"monitoringFailed": "ジョブの監視エラーが多すぎます: {{error}}",
- "executionFailed": "ジョブの実行に失敗しました: {{error}}"
+ "executionFailed": "ジョブの実行に失敗しました: {{error}}",
+ "corruptedTransfer": "転送中にファイルが破損したか、チェックサム検証に失敗しました。"
},
"cache": {
"fetchRemotesFailed": "リモート一覧の取得に失敗しました",
@@ -2695,12 +2800,14 @@
"automationNotFound": "自動化が見つかりません"
},
"system": {
- "themeSetFailed": "アプリテーマの設定に失敗しました: {{error}}",
- "unlockFailed": "ロック解除に失敗しました: {{error}}",
- "killFailed": "プロセスの強制終了に失敗しました: {{error}}"
+ "unlockFailed": "ロック解除に失敗しました: {{error}}"
},
"remote": {
- "configFailed": "リモートの設定に失敗しました: {{error}}"
+ "configFailed": "リモートの設定に失敗しました: {{error}}",
+ "authExpired": "リモート認証の有効期限が切れたか無効です。設定で再認証してください。",
+ "quotaExceeded": "リモートストレージの API レート制限またはストレージ容量上限を超過しました。しばらく待ってから再試行してください。",
+ "networkError": "リモートサーバーに接続できません。ネットワーク接続とリモートアドレスを確認してください。",
+ "notFound": "ターゲットディレクトリまたはファイルがリモートで見つかりませんでした。"
},
"updater": {
"noPending": "保留中のアップデートはありません",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "全ての設定のリセットに失敗しました: {{error}}",
"eventEmitFailed": "設定イベントの発行に失敗しました: {{error}}",
"subSettingsFailed": "サブ設定の取得に失敗しました: {{error}}",
- "notFound": "「{{name}}」 の設定が見つかりません",
"deleteFailed": "リモート設定の削除に失敗しました: {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "URLコピー [{{active}}/{{total}}]",
"archivecreateCount": "圧縮 [{{active}}/{{total}}]",
"serveCount": "公開サーバー [{{active}}/{{total}}]",
+ "quickRunsCount": "クイック実行 [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "ジョブ 1件",
"tooltipTasks": "ジョブ {{count}}件",
@@ -2846,6 +2953,12 @@
"tooltipServe": "公開サーバー 1件",
"tooltipServes": "公開サーバー {{count}}件"
},
+ "powerInhibitor": {
+ "reason": "アクティブな操作を実行中: {{details}}",
+ "mounts": "{{count}} マウント",
+ "jobs": "{{count}} ジョブ",
+ "serves": "{{count}} サーバー"
+ },
"notification": {
"title": {
"mountSucceeded": "マウント完了",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "rcloneエンジンに接続できませんでした: {{error}}",
"engineBinaryNotFound": "Rclone実行ファイルが見つかりません。設定を確認してください。",
"enginePasswordRequired": "設定ファイルにアクセスするにはパスワードが必要です。",
- "engineAuthFailed": "rcloneエンジンとの認証に失敗しました: {{error}}"
+ "engineAuthFailed": "rcloneエンジンとの認証に失敗しました: {{error}}",
+ "powerInhibited": "実行中の操作があるため、システムのサスペンドを抑止しています。"
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "キャッシュを消去",
"openDevTools": "開発者ツールを開く",
"openDevToolsError": "開発者モードを開けませんでした",
- "openDevToolsHint": "デバッグ用に開発者モードを開く",
"cleared": "データを消去しました"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "フローを検索...",
+ "toggleSearch": "検索の切り替え",
+ "loading": "フローを読み込み中...",
+ "noResults": "一致するフローが見つかりません",
+ "toggleSidebar": "Flowサイドバーの切り替え",
+ "empty": {
+ "description": "クイック実行またはワークフローを作成して、高速な操作とパイプラインを開始します。"
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "{{remote}} 用のクイック実行は設定されていません。",
+ "createForRemote": "{{remote}} のクイック実行を作成"
+ }
+ },
+ "tabs": {
+ "quickRun": "クイック実行",
+ "workflow": "ワークフロー"
+ },
+ "builder": {
+ "placeholderTitle": "ワークフロービルダーは開発中です",
+ "placeholderMessage": "マルチステップのrcloneパイプライン用のビジュアルキャンバスは近日公開予定です。",
+ "viewRoadmap": "GitHubでロードマップを見る"
+ }
+ },
+ "templates": {
+ "title": "テンプレート",
+ "presetTitle": "プリセットとテンプレート",
+ "applyPresets": "デフォルトのプリセットを適用",
+ "userTemplates": "保存されたユーザーテンプレート",
+ "saveAsTemplate": "現在の設定をテンプレートとして保存...",
+ "manageTemplates": "テンプレートの管理...",
+ "manageTitle": "テンプレートの管理",
+ "noUserTemplates": "保存されたカスタムテンプレートはまだありません。",
+ "newTitle": "新規テンプレート",
+ "templateName": "テンプレート名",
+ "templateDesc": "説明(任意)",
+ "selectAllKeys": "すべてのキーを選択",
+ "deselectAllKeys": "すべての選択を解除",
+ "addKeyToCategory": "カテゴリにキーを追加",
+ "addKey": "キーを追加",
+ "removeKey": "キーを削除",
+ "deleteTemplate": "テンプレートを削除",
+ "noCatKeys": "{{category}} に設定された項目はまだありません。",
+ "visualView": "ビジュアルインスペクター",
+ "jsonView": "JSONエディター",
+ "key": "キー",
+ "value": "値",
+ "namePlaceholder": "例: 高速S3バックアップ設定",
+ "descPlaceholder": "これらの設定の簡単な説明...",
+ "keyPlaceholder": "例: dir_cache_time",
+ "valuePlaceholder": "例: 10m",
+ "selectedCount": "{{selected}} / {{total}} 件選択中",
+ "keyCount": "{{count}} 個のキー",
+ "keysCount": "{{count}} 個のキー",
+ "zeroKeys": "0 個のキー",
+ "applySuccess": "テンプレート \"{{name}}\" を正常に適用しました。",
+ "savedSuccess": "テンプレート \"{{name}}\" を正常に保存しました。",
+ "deletedSuccess": "テンプレートを正常に削除しました。"
+ },
+ "navigation": {
+ "dashboard": "ダッシュボード"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "ダウンロード中...",
+ "verifying": "チェックサムを確認中...",
+ "extracting": "アーカイブを展開中...",
+ "installing": "インストール中...",
+ "completed": "完了",
+ "cancelled": "操作がキャンセルされました",
+ "error": "エラー"
+ }
}
}
diff --git a/resources/i18n/pt-BR/main.json b/resources/i18n/pt-BR/main.json
index ac15735bf..6f06e38b6 100644
--- a/resources/i18n/pt-BR/main.json
+++ b/resources/i18n/pt-BR/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "Cancelar",
"save": "Salvar",
+ "create": "Criar",
+ "show": "Mostrar",
+ "hide": "Ocultar",
"ok": "OK",
"close": "Fechar",
- "nextStep": "Próximo Passo",
+ "next": "Próximo",
"back": "Voltar",
"continue": "Continuar",
"yes": "Sim",
@@ -31,7 +34,12 @@
"password": "Senha",
"username": "Nome de usuário",
"selectAll": "Selecione Tudo",
- "deselectAll": "Desmarcar todos"
+ "deselectAll": "Desmarcar todos",
+ "viewDetails": "Ver detalhes",
+ "moreActions": "Mais ações",
+ "duplicate": "Duplicar",
+ "clearAll": "Limpar tudo",
+ "acknowledge": "Reconhecer"
},
"remoteConfig": {
"pathStatus": {
@@ -142,10 +150,14 @@
},
"monitoring": {
"realtime": "Monitoramento em Tempo Real",
- "debounce": "Atraso de debounce",
- "watcherActive": "Observador Ativo",
+ "debounce": "Atraso de estabilização",
+ "watcherActive": "Monitoramento Ativo",
"seconds": "segundos",
- "realtimeSchedule": "Observador de Arquivos em Tempo Real"
+ "realtimeSchedule": "Monitor de Arquivos em Tempo Real",
+ "changedOnlyShort": "Apenas subdiretórios",
+ "changedOnlyActive": "Apenas subdiretórios",
+ "syncScope": "Escopo de sincronização",
+ "realtimeChangedOnly": "Monitoramento em Tempo Real (Apenas subdiretórios)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "Apagar",
"copyurl": "Copiar URL",
"archivecreate": "Arquivo",
+ "cryptcheck": "Verificação Criptografada",
"serve": "Servir",
"start": "Começar",
"stop": "Parar"
},
"sidebar": {
+ "toggleSidebar": "Alternar barra lateral",
"toggleSearch": "Alternar barra de pesquisa",
"remotes": "Controles remotos",
"searchPlaceholder": "Busque os remotos...",
@@ -193,7 +207,8 @@
"used": "Usado:",
"free": "Livre:",
"loading": "Carregando...",
- "errorLoading": "Problema ao carregar uso de disco"
+ "errorLoading": "Problema ao carregar uso de disco",
+ "retry": "Tentar carregar o uso do disco novamente"
},
"status": {
"mounted": "Montado",
@@ -296,7 +311,9 @@
"filemanager": "Gerenciador de Arquivos",
"startup": "Inicialização",
"update": "Atualizar",
- "internal": "Internamente"
+ "internal": "Internamente",
+ "flow": "Espaço de Trabalho Flow",
+ "quickrun": "Execução Rápida"
},
"rule": {
"filters": "Filtros",
@@ -318,7 +335,8 @@
"actionRequired": "Pelo menos uma ação é necessária.",
"noActionsHint": "É necessário criar uma ação de aviso primeiro antes que possa ser atribuída a uma regra.",
"filtersEmptyHint": "Deixe em branco para que sejam registrados todos os eventos.",
- "scopeFilters": "Filtros de Escopo"
+ "scopeFilters": "Filtros de Escopo",
+ "allEvents": "Todos os eventos"
},
"events": {
"job": "Operações de Arquivos & Tarefas",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "Nome do Cabecalho",
"headerValue": "Valor"
- }
+ },
+ "noRulesHint": "Nenhuma regra de alerta configurada ainda. Crie uma regra para receber notificações.",
+ "noActionsHint": "Nenhuma ação de alerta configurada ainda. Crie uma ação para definir como os alertas são entregues."
},
"settings": {
"resetAll": {
@@ -408,17 +428,36 @@
"label": "Ativar Ícone da Bandeja",
"description": "Mostrar um ícone na bandeja do sistema. Também habilita o serviço de fundo."
},
+ "tray_icon_theme": {
+ "label": "Tema do ícone da bandeja",
+ "description": "Escolha o estilo de ícone para a bandeja do sistema.",
+ "options": {
+ "system": "Sistema (Monocromático automático)",
+ "color": "Colorido",
+ "monochrome_light": "Monocromático (Claro)",
+ "monochrome_dark": "Monocromático (Escuro)"
+ }
+ },
"language": {
"label": "Idioma",
"description": "Idioma para usar na interface do usuário. O idioma do sistema é usado por padrão."
},
+ "default_view": {
+ "label": "Visualização de inicialização padrão",
+ "description": "Selecione a interface principal a ser aberta ao iniciar o aplicativo.",
+ "options": {
+ "main_menu": "Menu Principal",
+ "nautilus": "Navegador de Arquivos Nautilus",
+ "flow": "Espaço de Trabalho Flow"
+ }
+ },
"start_on_startup": {
"label": "Começar no Começo",
"description": "Começar o aplicativo automaticamente quando o sistema iniciar."
},
"notifications": {
"label": "Ativar Notificações",
- "description": "Mostre notificações para eventos de montagem."
+ "description": "Mostrar notificações na área de trabalho para eventos do aplicativo (montagens, sincronizações, atualizações, etc.)."
},
"restrict": {
"label": "Restrinja Valores",
@@ -427,6 +466,10 @@
"standalone_dialogs": {
"label": "Diálogos Destacados",
"description": "Abrir janelas de diálogo (modais) em janelas nativas do sistema operacional separadas."
+ },
+ "prevent_sleep": {
+ "label": "Evitar suspensão / desligamento do sistema",
+ "description": "Inibe a suspensão do sistema e o desligamento do SO enquanto houver transferências, montagens ou servidores ativos."
}
},
"core": {
@@ -523,6 +566,10 @@
"label": "Layout do Painel de Controle",
"description": "Configuração de layout personalizada para o painel."
},
+ "quick_run_layout": {
+ "label": "Layout de Execução Rápida",
+ "description": "Configuração de layout personalizada para a visão geral de execução rápida."
+ },
"dashboard_card_variant": {
"label": "Modo de Exibição de Card do Remoto",
"description": "Variante de exibição padrão para cartões remotos em painéis de visão geral.",
@@ -573,6 +620,10 @@
"generic": {
"title": "O Motor Falhou ao Iniciar",
"subtitle": "Verifique os logs para mais detalhes"
+ },
+ "auth": {
+ "title": "Autenticação do Rclone necessária",
+ "subtitle": "Verifique suas credenciais ou senha de configuração"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "Preferências",
"flags": "Flags do Rclone",
"fileBrowser": "Gerenciador de Arquivos",
+ "flowWorkspace": "Espaço de trabalho Flow",
"shortcuts": "Atalhos do teclado",
"about": "O RClone Manager",
"quickRemote": "Remoto Rápido",
@@ -645,11 +697,32 @@
"title": "Senha de Configuração Requerida",
"content": "Sua configuração do Rclone está criptografada. Por favor insira a senha para desbloqueá-la para essa sessão."
},
+ "selectMainUi": {
+ "title": "Escolha a Interface Principal",
+ "content": "Selecione o layout de interface de sua preferência. Você pode alternar entre as interfaces a qualquer momento no menu ou nas configurações."
+ },
"ready": {
"title": "Pronto para Começar!",
"content": "Tudo está configurado e pronto para uso. O RClone Manager ajudará a gerenciar sua armazenamento de nuvem com facilidade. Clique em \"Começar\" para iniciar sua jornada."
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "Painel Clássico",
+ "badge": "Padrão",
+ "description": "Visão geral com conexões remotas, transferências ativas, ações rápidas e status do sistema."
+ },
+ "nautilus": {
+ "title": "Navegador de Arquivos (Nautilus)",
+ "badge": "Gerenciador de Arquivos",
+ "description": "Interface dedicada de dois painéis projetada para navegar e transferir arquivos remotos."
+ },
+ "flow": {
+ "title": "Espaço de Trabalho Flow",
+ "badge": "Fluxos de Trabalho",
+ "description": "Painel visual interativo para orquestrar tarefas automatizadas e execuções rápidas."
+ }
+ },
"installButton": {
"configuring": "Configurando...",
"installing": "Instalando...",
@@ -668,8 +741,6 @@
"default": "Padrão"
},
"actions": {
- "back": "Voltar",
- "next": "Próximo",
"installPlugin": "Instale o plugin",
"installingPlugin": "Instalando...",
"unlock": "Desbloquear",
@@ -826,7 +897,8 @@
"actions": {
"hide": "Esconder",
"show": "Mostrar",
- "open": "Abrir"
+ "open": "Abrir",
+ "cancel": "Cancelar"
},
"overviewHeader": {
"manageBackends": "Gerenciar Backends",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "Nenhum campo para exibir no modo JSON",
"parseError": "Sintaxe de JSON inválida. Verifique sua formatação.",
- "cliArgumentWithSuggestion": "Argumentos de estilo CLI (como '{{key}}') não são suportados no Rclone RC. Você quis dizer '{{suggestion}}'?",
+ "cliArgumentWithSuggestion": "O parâmetro no estilo CLI '{{key}}' será mapeado automaticamente para '{{suggestion}}' na execução.",
"camelCaseSuggestionWarning": "A opção '{{key}}' não é válida neste formato. Você quis dizer '{{suggestion}}'?",
"fixSuggestion": "Alterar para '{{suggestion}}'",
"wrongBlockWarning": "A(s) opção(s) {{keys}} pertence(m) ao bloco de configuração '{{block}}' e pode não funcionar aqui.",
@@ -986,6 +1058,10 @@
"required": "É necessário senha",
"remember": "Lembre-se da senha",
"keychain": "Armazenado no keychain do sistema"
+ },
+ "validation": {
+ "required": "Este campo é obrigatório.",
+ "min": "O valor deve ser de pelo menos {{val}}."
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "Aplicar Correção",
"importSourcePath": "Caminho de Origem do Arquivo",
"importDestPath": "Caminho de Destino de Importação",
- "importMountPoint": "Importar Ponto de Montagem"
+ "importMountPoint": "Importar Ponto de Montagem",
+ "applyToTask": "Aplicar à Tarefa",
+ "appliedToast": "{{count}} opção(ões) importada(s) com sucesso"
},
"obscure": {
"title": "Senha Obscura",
@@ -1050,15 +1128,15 @@
"switchToJson": "Modo de Formato JSON",
"unknownTopLevelProperty": "Aviso: '{{key}}' não é uma propriedade padrão no nível superior para este perfil e pode ser ignorado.",
"jsonEditorInfo": {
- "sync": "Sincronizar/Copiar/Mover Perfil: Defina os caminhos 'srcFs' e 'dstFs', campos do perfil e coloque todas as flags de rclone dentro de '_config'.",
- "bisync": "Perfil Bisync: Configure os caminhos \"path1\" e \"path2\", campos de perfil, e coloque todos os flags do Rclone dentro de \"_config\".",
- "check": "Verifique o Perfil: Configure os caminhos de \"srcFs\" e \"dstFs\", campos do nível de perfil, e coloque todos as bandeiras de verificação dentro de \"_config\".",
- "mount": "Perfil de Montagem: Defina os caminhos 'fs' e 'mountPoint', 'mountType', campos em nível de perfil e coloque todas as opções de montagem dentro do 'mountOpt'.",
- "serve": "Configuração do Perfil: Defina o caminho de 'fs', 'serveType', campos em nível de perfil e coloque todas as opções de Servir dentro de'_config'.",
- "vfs": "Perfis VFS: Defina opções de cache e compatibilidade personalizadas do Sistema de Arquivos Virtuais como pares chave-valor.",
- "filter": "Perfil de Filtro: Defina padrões globais, regras de inclusão/exclusão e opções de filtragem de arquivo como pares chave-valor.",
- "backend": "Perfil Backend: Configure opções de protocolo avançadas e configurações de conexão específicas remota como pares chave-valor.",
- "runtimeRemote": "Tempo de Execução do Remoto: Definir sobrescritas de conexão dinâmicas e ajustes de desempenho como pares chave-valor."
+ "sync": "Sincronizar/Copiar/Mover Perfil: Defina os caminhos 'srcFs' e 'dstFs', campos do perfil e as flags do rclone (remova o '--' inicial e substitua '-' por '_').",
+ "bisync": "Perfil Bisync: Configure os caminhos \"path1\" e \"path2\", campos de perfil e as flags do Rclone (remova o '--' inicial e substitua '-' por '_').",
+ "check": "Verifique o Perfil: Configure os caminhos de \"srcFs\" e \"dstFs\", campos do nível de perfil e as bandeiras de verificação (remova o '--' inicial e substitua '-' por '_').",
+ "mount": "Perfil de Montagem: Defina os caminhos 'fs' e 'mountPoint', 'mountType', campos em nível de perfil e as opções de montagem (remova o '--' inicial e substitua '-' por '_').",
+ "serve": "Configuração do Perfil: Defina o caminho de 'fs', 'serveType', campos em nível de perfil e as opções de Servir (remova o '--' inicial e substitua '-' por '_').",
+ "vfs": "Perfis VFS: Defina opções de cache e compatibilidade personalizadas do Sistema de Arquivos Virtuais como pares chave-valor (remova o '--' inicial e substitua '-' por '_').",
+ "filter": "Perfil de Filtro: Defina padrões globais, regras de inclusão/exclusão e opções de filtragem de arquivo como pares chave-valor (remova o '--' inicial e substitua '-' por '_').",
+ "backend": "Perfil Backend: Configure opções de protocolo avançadas e configurações de conexão específicas remota como pares chave-valor (remova o '--' inicial e substitua '-' por '_').",
+ "runtimeRemote": "Tempo de Execução do Remoto: Definir sobrescritas de conexão dinâmicas e ajustes de desempenho como pares chave-valor (remova o '--' inicial e substitua '-' por '_')."
},
"runtimeRemoteWarning": {
"title": "Configurações de Execução Remota",
@@ -1138,7 +1216,11 @@
"enableScheduled": "Habilitar Programação Agendada ({{type}})",
"enableWatch": "Habilitar Monitoramento de Arquivos em Tempo Real",
"watchDescription": "Monitore as diretórias de origem locais para modificações de arquivos e sincronize alterações automaticamente.",
- "watchDelay": "Atraso de debounce (segundos)",
+ "watchDelay": "Atraso de estabilização (segundos)",
+ "watchDelayHint": "Tempo de espera após a última alteração detectada antes de acionar a sincronização.",
+ "watchZeroDelayWarning": "O modo instantâneo (0s) sincroniza imediatamente na alteração. Para arquivos grandes ou várias edições, 3–5s são recomendados para que a gravação termine.",
+ "watchChangedOnly": "Sincronizar apenas subdiretórios modificados",
+ "watchChangedOnlyHint": "Quando acionado pelo monitor de arquivos, sincroniza apenas os subdiretórios que contêm arquivos modificados em vez de escanear toda a árvore raiz.",
"watchRequiresLocalSource": "O monitoramento em tempo real exige pelo menos um diretório de origem local.",
"watchRequiresLocal": "O monitoramento em tempo real exige pelo menos um diretório fonte ou de destino local.",
"watchMixedSourcesNote": "Apenas os diretórios de origem locais serão monitorados em tempo real. Mudanças nos fontes remotos não desencadearão sincronização automática.",
@@ -1286,6 +1368,10 @@
"title": "Primeiro dia do mês",
"description": "Primeiro dia à meia-noite"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "Perfis"
},
- "legacy": {
- "title": "Backup Legado Detectado",
- "description": "Este backup foi criado antes do sistema de perfil ser introduzido. Ele será restaurado para o \"perfil padrão\"."
- },
"options": "Opções de Recuperação",
"scope": {
"all": "Restaurar Tudo",
@@ -1512,7 +1594,9 @@
"openNative": "Abrir em aplicativo externo",
"openNativeTooltip": "Abrir no aplicativo externo padrão",
"openingNative": "Abrindo {{name}} no visualizador externo...",
- "errorOpenNative": "Falha ao abrir o arquivo no aplicativo externo"
+ "errorOpenNative": "Falha ao abrir o arquivo no aplicativo externo",
+ "showRawText": "Mostrar texto bruto",
+ "showPreview": "Mostrar pré-visualização"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "Parando {{op}}...",
"stop": "Parar {{op}}",
"notConfigured": "Não configurado",
+ "serve": "Servir",
"serving": "Servindo",
"accessibleVia": "Acessível por",
"mounting": "Montando...",
@@ -1594,7 +1679,8 @@
"dryRun": "Simulação (Dry Run)",
"dryRunActive": "Tentativa em modo de simulação (dry-run) está ativa – não serão feitas alterações",
"resync": "Resincronizar",
- "resyncActive": "O Resync está ativo — realizando uma re-sincronização completa"
+ "resyncActive": "O Resync está ativo — realizando uma re-sincronização completa",
+ "remoteSettings": "Configurações do remoto"
},
"generalDetail": {
"automations": "Automações",
@@ -1640,6 +1726,7 @@
"loadConfig": "Carregar Configuração de carga",
"exportConfig": "Exportar Configuração",
"toggleBrowser": "Alternar Gerenciador de Arquivos",
+ "openFlowOverlay": "Alternar espaço de trabalho Flow",
"closeDialog": "Fechar Diálogo/Ação de Cancelar"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "Desligamento",
- "message": "Por favor, aguarde enquanto a aplicação é fechada com segurança..."
+ "message": "Por favor, aguarde enquanto a aplicação é fechada com segurança...",
+ "confirmTitle": "Tarefas ativas em andamento",
+ "confirmMessage": "O Rclone Manager possui tarefas ativas em andamento ({{jobs}} transferências, {{mounts}} montagens, {{serves}} servidores). Tem certeza de que deseja parar tudo e sair?",
+ "stopAndQuit": "Parar e Sair"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "Sobre o Rclone",
"credits": "Créditos",
"legal": "Legal",
- "donate": "Doar",
"website": "Website",
"wiki": "Página do Wiki",
"reportIssues": "Reportar Problemas",
@@ -1959,14 +2048,6 @@
"label": "Senha",
"placeholder": "Deixe em branco para sem autenticação"
},
- "oauthHost": {
- "label": "Host OAuth",
- "placeholder": "127.0.0.1",
- "description": "Endereço de host para conectar para callbacks de OAuth. Deve ser um endereço acessível - nunca um wildcard como 0.0.0.0. No Docker, defina isso para o nome do host do contêiner acessível."
- },
- "oauthPort": {
- "label": "Porta OAuth"
- },
"configPassword": {
"label": "Definir senha de Configuração",
"description": "Senha para o arquivo de configuração criptografado"
@@ -1984,7 +2065,6 @@
"local": "Local",
"name": "Nome",
"enableAuth": "Personalizar Autenticação",
- "oauthSettings": "Configurações de OAuth (Serão removidas no futuro)",
"selectConfigFile": "Selecione o Arquivo de Configuração",
"activeConfigPath": "Caminho da Configuração Ativa",
"connectionTab": "Conexão",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "Se o navegador não abriu automaticamente, utilize esse link de autenticação:",
"openLink": "Abrir Link",
- "copyLink": "Copiar Link",
- "remoteFallback": "O link de OAuth manual não está disponível aqui para backends remotos. Verifique os logs/saída do backend remoto."
+ "copyLink": "Copiar Link"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "Não é possível excluir o perfil \"{{name}}\" - ele está em uso por {{count}} perfil(s) ativo(s) de {{type}}(s).",
"disabledReason": {
"inUse": "O perfil está em uso por um processo corrente {{operation}}. Pare-o primeiro."
- }
+ },
+ "duplicate": "Duplicar perfil"
},
"buttons": {
- "back": "Voltar",
- "cancel": "Cancelar",
- "create": "Criar",
- "save": "Salvar",
- "next": "Próximo",
"cleanup": "Limpeza",
- "processing": "Processando...",
- "continue": "Continuar"
+ "processing": "Processando..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "Falha ao processar resposta interativa",
"loadFailed": "Falha ao carregar configuração remota"
+ },
+ "profileSaved": "Perfil '{{profile}}' salvo para {{remote}}",
+ "profileSaveFailed": "Falha ao salvar o perfil",
+ "warnings": {
+ "selectRemoteToSave": "Selecione um remoto para salvar o perfil"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "Novo nome",
"counter": "Contador",
"date": "Data",
- "extension": "Extensão"
+ "extension": "Extensão",
+ "duplicateOrInvalid": "Nome duplicado ou inválido"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "Tamanho do Ícone",
- "showHidden": "Mostrar Arquivos Ocultos"
+ "showHidden": "Mostrar Arquivos Ocultos",
+ "toggleLayout": "Alternar layout",
+ "viewOptions": "Opções de visualização"
},
"notifications": {
"mkdirFailed": "Falha ao criar diretório: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "Excluir Remoto"
},
"deleteRemote": {
- "title": "Confirmação de Exclusão",
- "message": "Você está absolutamente certo de que deseja apagar '{{name}}'? Esta ação não pode ser desfeita."
+ "title": "Excluir Remoto",
+ "message": "Tem certeza de que deseja excluir '{{name}}'? Esta ação não pode ser desfeita.",
+ "activeOperationsTitle": "Operações Ativas em Execução",
+ "activeOperationsDesc": "As seguintes operações ativas estão em execução neste remoto e serão encerradas à força:",
+ "willUnmount": "Será desmontado",
+ "willStop": "Será parado",
+ "willCancel": "Será cancelado",
+ "savedProfilesTitle": "Perfis Salvos ({{count}})",
+ "quickRunsTitle": "Quick Runs Associados ({{count}})",
+ "automationsTitle": "Automações Agendadas ({{count}})",
+ "types": {
+ "mount": "Ponto de Montagem",
+ "serve": "Serviço"
+ }
},
"resetRemote": {
"title": "Redefinir Configurações do Remoto",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "Um erro inesperado ocorreu. Por favor, verifique os logs para mais detalhes.",
- "openFailed": "Não foi possível abrir {{name}}",
- "resetSettingsFailed": "Falha ao redefinir configurações remotas",
- "deleteRemoteFailed": "Não foi possível deletar remotamente"
+ "openFailed": "Não foi possível abrir {{name}}"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "Redefinir o layout para o padrão",
"toggleAutomationFailed": "Falha ao alternar automação",
"showDetailed": "Exibir Cards Detalhadas",
- "showCompact": "Mostre Cartões Compactos",
- "settings": "Configurações de Layout"
+ "showCompact": "Mostre Cartões Compactos"
},
"bandwidth": {
"aria": {
@@ -2523,18 +2614,25 @@
"retry": "Recarregar a largura de banda",
"upload": "Carregar:",
"download": "Baixar:",
- "total": "Total:"
+ "total": "Total:",
+ "unlimited": "Ilimitado (Desativado)",
+ "customPlaceholder": "Taxa personalizada (ex.: 10M, 10M:50M)",
+ "apply": "Aplicar"
},
"system": {
"aria": {
"loading": "Carregando informações do sistema"
},
"loading": "Carregando informações do sistema...",
- "status": "Status de Rclone:",
+ "status": "Status do Motor:",
+ "version": "Versão do Motor:",
+ "platform": "Plataforma:",
+ "pid": "ID do Processo:",
+ "goVersion": "Runtime Go:",
"totalRemotes": "Controle Total:",
"activeJobs": "Tarefas Ativas:",
- "memoryUsage": "Uso de Memória:",
- "uptime": "Uptime:",
+ "memoryUsage": "Memória Heap:",
+ "uptime": "Tempo de Atividade:",
"active": "Ativo",
"inactive": "Inativo",
"error": "Erro"
@@ -2593,31 +2691,42 @@
"mount": {
"pointEmpty": "Ponto de montagem não pode estar vazio",
"alreadyInUse": "O ponto de montagem {{mountPoint}} já está em uso pelo remoto {{remote}}.",
- "configIncomplete": "Configuração de montagem incompleta para o perfil '{{profile}}'"
+ "configIncomplete": "Configuração de montagem incompleta para o perfil '{{profile}}'",
+ "directoryAlreadyMounted": "O diretório de montagem já está em uso. Selecione uma pasta vazia ou ative '--allow-non-empty' nas configurações do perfil.",
+ "directoryNotEmpty": "A pasta selecionada não está vazia. Escolha uma pasta vazia ou ative '--allow-non-empty'.",
+ "winfspMissing": "O WinFsp não está instalado. Instale o WinFsp para montar unidades virtuais no Windows.",
+ "fuseMissing": "O FUSE (fuse3) não está instalado no sistema. Instale o fuse3 para ativar a montagem.",
+ "macfuseMissing": "O macFUSE / FUSE-T não está instalado. Instale o macFUSE para ativar a montagem no macOS.",
+ "driveLetterInUse": "A letra da unidade selecionada já está em uso pelo sistema.",
+ "permissionDenied": "Permissão negada ao tentar montar."
},
"operations": {
"configIncomplete": "Configuração incompleta para o perfil '{{profile}}'"
},
"serve": {
"parseFailed": "Falha ao processar resposta: {{error}}",
- "remoteEmpty": "O nome remoto não pode estar vazio"
+ "remoteEmpty": "O nome remoto não pode estar vazio",
+ "addressAlreadyInUse": "A porta ou endereço selecionado já está em uso por outro aplicativo. Escolha uma porta diferente.",
+ "privilegedPort": "Portas abaixo de 1024 requerem privilégios de administrador. Escolha uma porta 1024 ou superior.",
+ "tlsError": "Falha ao carregar ou analisar o certificado SSL/TLS.",
+ "startFailed": "Falha ao iniciar o servidor: {{error}}",
+ "stopFailed": "Falha ao parar o servidor: {{error}}"
},
"request": {
"failed": "Solicitação falhou: {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}: {{body}}"
- },
"file": {
"driveRoot": "Não é possível selecionar uma raiz de drive (por exemplo, D:\\) como um ponto de montagem. Por favor, selecione ou crie uma subpastas.",
"folderNotEmpty": "A pasta selecionada não está vazia",
"invalidPath": "Caminho inválido: O caminho não pode estar vazio.",
"notFound": "O caminho não existe: {{path}}",
- "failedToOpen": "Falha ao abrir gerenciador de arquivos: {{error}}"
+ "failedToOpen": "Falha ao abrir gerenciador de arquivos: {{error}}",
+ "diskFull": "O disco ou unidade de destino está cheio. Espaço em disco insuficiente.",
+ "fileLocked": "O arquivo está bloqueado ou em uso por outro processo.",
+ "readOnly": "O sistema de arquivos de destino é somente leitura ou protegido contra gravação."
},
"rclone": {
"unsupportedPlatform": "Plataforma não suportada",
- "downloadError": "Erro desconhecido ao baixar o Rclone",
"mountPluginInstallFailed": "Falha ao instalar o plug-in de montagem: {{error}}",
"mountPluginVerificationFailed": "A instalação foi bem-sucedida, mas a verificação falhou. Pode ser necessário reiniciar.",
"configEncrypted": "A configuração está criptografada e não foi fornecido senha",
@@ -2640,7 +2749,8 @@
"invalidFlags": "Flags inválidas do rclone detectadas: {{error}}",
"updateRemoteUnsupported": "Atualização remota não é suportada para essa versão do Rclone",
"backupFailed": "Falha ao fazer o backup da binário atual do Rclone: {{error}}",
- "rcAuthFailed": "A autenticação do controle remoto Rclone falhou: {{error}}"
+ "rcAuthFailed": "A autenticação do controle remoto Rclone falhou: {{error}}",
+ "downloadCancelled": "Download cancelado pelo usuário"
},
"security": {
"passwordEmpty": "A senha não pode estar vazia",
@@ -2654,14 +2764,8 @@
"rcloneError": "Erro do Rclone: {{error}}"
},
"backup": {
- "unknownFormat": "Formato de backup desconhecido",
- "integrityFailed": "Verificação de integridade falhou! O backup pode estar corrompido.",
- "encryptedPasswordRequired": "Este backup está criptografado. É necessário senha.",
"unsupportedArchive": "Tipo de arquivo não suportado. Deve ser um arquivo .rcman",
"invalidArchive": "Formato de arquivo de backup inválido",
- "manifestParseFailed": "Falha ao processar o manifesto de backup: {{error}}",
- "missingManifest": "O manifesto de backup está faltando do arquivo",
- "openFailed": "Falha ao abrir arquivo de backup: {{error}}",
"restoreFailed": "Falha na restauração do backup: {{error}}",
"secretRequirePassword": "Esta cópia de segurança está protegida por um segredo e requer uma senha"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "Informação de tarefa não encontrada.",
"monitoringFailed": "Erros demais na tarefa de monitoramento: {{error}}",
- "executionFailed": "Execução da tarefa falhou: {{error}}"
+ "executionFailed": "Execução da tarefa falhou: {{error}}",
+ "corruptedTransfer": "Arquivo corrompido durante a transferência ou falha na verificação de checksum."
},
"cache": {
"fetchRemotesFailed": "Falha ao recuperar repositórios",
@@ -2695,12 +2800,14 @@
"automationNotFound": "Automação não encontrada"
},
"system": {
- "themeSetFailed": "Falha ao definir o tema da aplicação: {{error}}",
- "unlockFailed": "Falha ao desbloquear: {{error}}",
- "killFailed": "Falha ao matar processo: {{error}}"
+ "unlockFailed": "Falha ao desbloquear: {{error}}"
},
"remote": {
- "configFailed": "Falha ao configurar remoto: {{error}}"
+ "configFailed": "Falha ao configurar remoto: {{error}}",
+ "authExpired": "A autenticação do remoto expirou ou é inválida. Reautentique o remoto nas configurações.",
+ "quotaExceeded": "Limite de requisições de API ou cota de armazenamento remoto excedida. Tente novamente mais tarde.",
+ "networkError": "Não foi possível conectar ao servidor remoto. Verifique sua conexão e o endereço remoto.",
+ "notFound": "Diretório ou arquivo de destino não encontrado no remoto."
},
"updater": {
"noPending": "Não há atualizações pendentes",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "Falha ao redefinir todas as configurações: {{error}}",
"eventEmitFailed": "Falha ao emiter evento de configuração: {{error}}",
"subSettingsFailed": "Falha ao obter sub-configurações: {{error}}",
- "notFound": "Configurações para '{{name}}' não foram encontradas.",
"deleteFailed": "Falha ao excluir configurações remotas: {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "Cópia de URL [{{active}}/{{total}}]",
"archivecreateCount": "Arquivo [{{active}}]/[{{total}}]",
"serveCount": "Servir [{{active}}/{{total}}]",
+ "quickRunsCount": "Execuções Rápidas [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "1 Tarefa",
"tooltipTasks": "{{count}} Tarefas",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 Serviço",
"tooltipServes": "{{count}} Serviços"
},
+ "powerInhibitor": {
+ "reason": "Operações ativas em andamento: {{details}}",
+ "mounts": "{{count}} ponto(s) de montagem",
+ "jobs": "{{count}} tarefa(s)",
+ "serves": "{{count}} servidor(es)"
+ },
"notification": {
"title": {
"mountSucceeded": "Montado com Sucesso",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "Não foi possível conectar ao motor do rclone: {{error}}",
"engineBinaryNotFound": "Não foi encontrado o binário Rclone, por favor verifique suas configurações.",
"enginePasswordRequired": "É necessário inserir uma senha para acessar o arquivo de configuração.",
- "engineAuthFailed": "Falha na autenticação com o motor rclone: {{error}}"
+ "engineAuthFailed": "Falha na autenticação com o motor rclone: {{error}}",
+ "powerInhibited": "Operações ativas estão impedindo a suspensão do sistema."
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "Limpar cache",
"openDevTools": "Abrir Ferramentas do Desenvolvedor",
"openDevToolsError": "Falha ao abrir o DevTools",
- "openDevToolsHint": "Abrir o DevTools para depuração",
"cleared": "Dados Limpos"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "Pesquisar fluxos...",
+ "toggleSearch": "Alternar pesquisa",
+ "loading": "Carregando fluxos...",
+ "noResults": "Nenhum fluxo correspondente",
+ "toggleSidebar": "Alternar barra lateral do Flow",
+ "empty": {
+ "description": "Crie uma execução rápida ou fluxo de trabalho para começar com operações e pipelines rápidos."
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "Nenhuma execução rápida configurada para {{remote}}.",
+ "createForRemote": "Criar execução rápida para {{remote}}"
+ }
+ },
+ "tabs": {
+ "quickRun": "Execução rápida",
+ "workflow": "Fluxo de trabalho"
+ },
+ "builder": {
+ "placeholderTitle": "Criador de fluxo de trabalho em desenvolvimento",
+ "placeholderMessage": "Uma tela visual para pipelines do rclone com várias etapas estará disponível em breve.",
+ "viewRoadmap": "Ver roteiro no GitHub"
+ }
+ },
+ "templates": {
+ "title": "Modelos",
+ "presetTitle": "Predefinições e Modelos",
+ "applyPresets": "Aplicar Predefinições Padrão",
+ "userTemplates": "Modelos Salvos do Usuário",
+ "saveAsTemplate": "Salvar Configurações Atuais como Modelo...",
+ "manageTemplates": "Gerenciar Modelos...",
+ "manageTitle": "Gerenciar Modelos",
+ "noUserTemplates": "Nenhum modelo personalizado salvo ainda.",
+ "newTitle": "Novo Modelo",
+ "templateName": "Nome do Modelo",
+ "templateDesc": "Descrição (opcional)",
+ "selectAllKeys": "Selecionar Todas as Chaves",
+ "deselectAllKeys": "Desmarcar Todas as Chaves",
+ "addKeyToCategory": "Adicionar Chave à Categoria",
+ "addKey": "Adicionar Chave",
+ "removeKey": "Remover Chave",
+ "deleteTemplate": "Excluir Modelo",
+ "noCatKeys": "Nenhuma configuração em {{category}} ainda.",
+ "visualView": "Inspetor Visual",
+ "jsonView": "Editor JSON",
+ "key": "Chave",
+ "value": "Valor",
+ "namePlaceholder": "ex.: Minhas configurações rápidas de backup S3",
+ "descPlaceholder": "Breve descrição destas configurações...",
+ "keyPlaceholder": "ex.: dir_cache_time",
+ "valuePlaceholder": "ex.: 10m",
+ "selectedCount": "{{selected}} / {{total}} selecionados",
+ "keyCount": "{{count}} chave",
+ "keysCount": "{{count}} chaves",
+ "zeroKeys": "0 chaves",
+ "applySuccess": "Modelo \"{{name}}\" aplicado com sucesso.",
+ "savedSuccess": "Modelo \"{{name}}\" salvo com sucesso.",
+ "deletedSuccess": "Modelo excluído com sucesso."
+ },
+ "navigation": {
+ "dashboard": "Painel"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "Baixando...",
+ "verifying": "Verificando soma de verificação...",
+ "extracting": "Extraindo arquivo...",
+ "installing": "Instalando...",
+ "completed": "Concluído",
+ "cancelled": "Operação cancelada",
+ "error": "Erro"
+ }
}
}
diff --git a/resources/i18n/ru-RU/main.json b/resources/i18n/ru-RU/main.json
index d62a668db..44b0880f5 100644
--- a/resources/i18n/ru-RU/main.json
+++ b/resources/i18n/ru-RU/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "Отмена",
"save": "Сохранить",
+ "create": "Создать",
+ "show": "Показать",
+ "hide": "Скрыть",
"ok": "ОК",
"close": "Закрыть",
- "nextStep": "Далее",
+ "next": "Далее",
"back": "Назад",
"continue": "Продолжить",
"yes": "Да",
@@ -31,7 +34,12 @@
"password": "Пароль",
"username": "Имя пользователя",
"selectAll": "Выбрать все",
- "deselectAll": "Снять выделение"
+ "deselectAll": "Снять выделение",
+ "viewDetails": "Подробнее",
+ "moreActions": "Другие действия",
+ "duplicate": "Дублировать",
+ "clearAll": "Очистить все",
+ "acknowledge": "Подтвердить"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "Задержка обработки изменений",
"watcherActive": "Наблюдение активно",
"seconds": "секунд",
- "realtimeSchedule": "Отслеживание файлов в реальном времени"
+ "realtimeSchedule": "Отслеживание файлов в реальном времени",
+ "changedOnlyShort": "Только подкаталоги",
+ "changedOnlyActive": "Только подкаталоги",
+ "syncScope": "Область синхронизации",
+ "realtimeChangedOnly": "Мониторинг в реальном времени (Только подкаталоги)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "Удалить",
"copyurl": "Копировать по URL",
"archivecreate": "Создать архив",
+ "cryptcheck": "Проверка шифрования",
"serve": "Запустить сервер",
"start": "Запустить",
"stop": "Остановить"
},
"sidebar": {
+ "toggleSidebar": "Переключить боковую панель",
"toggleSearch": "Показать или скрыть строку поиска",
"remotes": "Подключения",
"searchPlaceholder": "Поиск подключений...",
@@ -193,7 +207,8 @@
"used": "Использовано:",
"free": "Свободно:",
"loading": "Загрузка...",
- "errorLoading": "Не удалось загрузить данные об использовании диска"
+ "errorLoading": "Не удалось загрузить данные об использовании диска",
+ "retry": "Повторить загрузку использования диска"
},
"status": {
"mounted": "Подключено как диск",
@@ -296,7 +311,9 @@
"filemanager": "Файловый менеджер",
"startup": "Запуск",
"update": "Обновление",
- "internal": "Внутренние процессы"
+ "internal": "Внутренние процессы",
+ "flow": "Рабочая область Flow",
+ "quickrun": "Быстрый запуск"
},
"rule": {
"filters": "Фильтры",
@@ -318,7 +335,8 @@
"actionRequired": "Необходимо выбрать хотя бы одно действие.",
"noActionsHint": "Сначала создайте действие оповещения, чтобы назначить его правилу.",
"filtersEmptyHint": "Оставьте пустым, чтобы учитывать все события.",
- "scopeFilters": "Фильтры области"
+ "scopeFilters": "Фильтры области",
+ "allEvents": "Все события"
},
"events": {
"job": "Задания и файловые операции",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "Название заголовка",
"headerValue": "Значение"
- }
+ },
+ "noRulesHint": "Правила оповещений еще не настроены. Создайте правило для получения уведомлений.",
+ "noActionsHint": "Действия оповещений еще не настроены. Создайте действие для доставки оповещений."
},
"settings": {
"resetAll": {
@@ -408,17 +428,36 @@
"label": "Включить значок в системном трее",
"description": "Показывать значок в системном трее. Также включает фоновую службу."
},
+ "tray_icon_theme": {
+ "label": "Тема значка в трее",
+ "description": "Выберите стиль значка для системного трея.",
+ "options": {
+ "system": "Системная (Авто монохромный)",
+ "color": "Цветной",
+ "monochrome_light": "Монохромный (Светлый)",
+ "monochrome_dark": "Монохромный (Тёмный)"
+ }
+ },
"language": {
"label": "Язык",
"description": "Язык интерфейса. По умолчанию используется язык системы."
},
+ "default_view": {
+ "label": "Вид по умолчанию при запуске",
+ "description": "Выберите главный интерфейс, открываемый при запуске приложения.",
+ "options": {
+ "main_menu": "Главное меню",
+ "nautilus": "Файловый менеджер Nautilus",
+ "flow": "Рабочая область Flow"
+ }
+ },
"start_on_startup": {
"label": "Запускать вместе с системой",
"description": "Автоматически запускать приложение при запуске системы."
},
"notifications": {
"label": "Включить уведомления",
- "description": "Показывать уведомления о подключении и отключении дисков."
+ "description": "Показывать уведомления на рабочем столе о событиях приложения (монтирование, синхронизация, обновления и т. д.)."
},
"restrict": {
"label": "Скрывать конфиденциальные значения",
@@ -427,6 +466,10 @@
"standalone_dialogs": {
"label": "Отдельные диалоговые окна",
"description": "Открывать диалоговые окна в отдельных нативных окнах операционной системы."
+ },
+ "prevent_sleep": {
+ "label": "Предотвращать спящий режим / выключение системы",
+ "description": "Запрещает переход системы в спящий режим и выключение ОС при активных передачах, монтированиях или серверах."
}
},
"core": {
@@ -523,6 +566,10 @@
"label": "Компоновка главной страницы",
"description": "Пользовательская компоновка главной страницы."
},
+ "quick_run_layout": {
+ "label": "Компоновка быстрых запусков",
+ "description": "Пользовательская компоновка для обзора быстрых запусков."
+ },
"dashboard_card_variant": {
"label": "Вид карточек подключений",
"description": "Вид карточек подключений по умолчанию на обзорных панелях.",
@@ -573,6 +620,10 @@
"generic": {
"title": "Не удалось запустить движок",
"subtitle": "Подробности доступны в журналах"
+ },
+ "auth": {
+ "title": "Требуется аутентификация Rclone",
+ "subtitle": "Пожалуйста, проверьте учетные данные или пароль конфигурации"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "Настройки",
"flags": "Флаги Rclone",
"fileBrowser": "Файловый менеджер",
+ "flowWorkspace": "Рабочая область Flow",
"shortcuts": "Сочетания клавиш",
"about": "О RClone Manager",
"quickRemote": "Быстрое подключение",
@@ -645,11 +697,32 @@
"title": "Требуется пароль конфигурации",
"content": "Конфигурация rclone зашифрована. Введите пароль, чтобы разблокировать её на время текущего сеанса."
},
+ "selectMainUi": {
+ "title": "Выберите основной интерфейс",
+ "content": "Выберите предпочтительный макет интерфейса. Вы можете переключаться между ними в любое время через меню или настройки."
+ },
"ready": {
"title": "Всё готово",
"content": "Настройка завершена. RClone Manager готов к управлению облачными хранилищами. Нажмите «Начать работу»."
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "Классическая панель",
+ "badge": "По умолчанию",
+ "description": "Обзор с удалёнными подключениями, активными передачами, быстрыми действиями и статусом."
+ },
+ "nautilus": {
+ "title": "Файловый менеджер (Nautilus)",
+ "badge": "Файловый менеджер",
+ "description": "Двухпанельный файловый менеджер для навигации и передачи удалённых файлов."
+ },
+ "flow": {
+ "title": "Рабочая область Flow",
+ "badge": "Рабочие процессы",
+ "description": "Интерактивная визуальная среда для автоматизации задач и быстрого запуска профилей."
+ }
+ },
"installButton": {
"configuring": "Настройка...",
"installing": "Установка...",
@@ -668,8 +741,6 @@
"default": "По умолчанию"
},
"actions": {
- "back": "Назад",
- "next": "Далее",
"installPlugin": "Установить компонент",
"installingPlugin": "Установка...",
"unlock": "Разблокировать",
@@ -826,7 +897,8 @@
"actions": {
"hide": "Скрыть",
"show": "Показать",
- "open": "Открыть"
+ "open": "Открыть",
+ "cancel": "Отмена"
},
"overviewHeader": {
"manageBackends": "Управление бэкендами",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "Нет полей для отображения в режиме JSON",
"parseError": "Некорректный синтаксис JSON. Проверьте форматирование.",
- "cliArgumentWithSuggestion": "Аргументы в стиле CLI, например «{{key}}», не поддерживаются в rclone RC. Возможно, имелось в виду «{{suggestion}}»?",
+ "cliArgumentWithSuggestion": "Флаг в стиле CLI «{{key}}» будет автоматически преобразован в «{{suggestion}}» при выполнении.",
"camelCaseSuggestionWarning": "Параметр «{{key}}» недопустим в этом формате. Возможно, имелось в виду «{{suggestion}}»?",
"fixSuggestion": "Заменить на «{{suggestion}}»",
"wrongBlockWarning": "Параметры {{keys}} относятся к блоку конфигурации «{{block}}» и могут не работать здесь.",
@@ -986,6 +1058,10 @@
"required": "Требуется пароль",
"remember": "Запомнить пароль",
"keychain": "Хранится в системном хранилище учётных данных"
+ },
+ "validation": {
+ "required": "Это поле обязательно для заполнения.",
+ "min": "Значение должно быть не менее {{val}}."
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "Применить изменения",
"importSourcePath": "Импортировать путь источника",
"importDestPath": "Импортировать путь назначения",
- "importMountPoint": "Импортировать точку подключения"
+ "importMountPoint": "Импортировать точку подключения",
+ "applyToTask": "Применить к задаче",
+ "appliedToast": "Успешно импортировано настроек: {{count}}"
},
"obscure": {
"title": "Обфускация пароля",
@@ -1050,15 +1128,15 @@
"switchToJson": "Перейти в режим JSON",
"unknownTopLevelProperty": "Предупреждение: «{{key}}» не является стандартным свойством верхнего уровня для этого профиля и может быть проигнорировано.",
"jsonEditorInfo": {
- "sync": "Профиль Sync/Copy/Move: задайте пути 'srcFs' и 'dstFs', поля уровня профиля, а все флаги rclone поместите внутрь '_config'.",
- "bisync": "Профиль Bisync: задайте пути 'path1' и 'path2', поля уровня профиля, а все флаги rclone поместите внутрь '_config'.",
- "check": "Профиль Check: задайте пути 'srcFs' и 'dstFs', поля уровня профиля, а все флаги проверки поместите внутрь '_config'.",
- "mount": "Профиль Mount: задайте пути 'fs' и 'mountPoint', значение 'mountType', поля уровня профиля, а параметры подключения поместите внутрь 'mountOpt'.",
- "serve": "Профиль Serve: задайте путь 'fs', значение 'serveType', поля уровня профиля, а параметры сервера поместите внутрь '_config'.",
- "vfs": "Профиль VFS: задайте параметры кэширования, буферизации и совместимости виртуальной файловой системы в виде пар ключ–значение.",
- "filter": "Профиль фильтров: задайте glob-шаблоны, правила включения и исключения и другие параметры фильтрации в виде пар ключ–значение.",
- "backend": "Профиль бэкенда: настройте расширенные параметры протокола и подключения к удалённому хранилищу в виде пар ключ–значение.",
- "runtimeRemote": "Параметры подключения во время выполнения: задайте динамические переопределения подключения и настройки производительности в виде пар ключ–значение."
+ "sync": "Профиль Sync/Copy/Move: задайте пути 'srcFs' и 'dstFs', поля уровня профиля и флаги rclone (удалите начальные '--' и замените '-' на '_').",
+ "bisync": "Профиль Bisync: задайте пути 'path1' и 'path2', поля уровня профиля и флаги rclone (удалите начальные '--' и замените '-' на '_').",
+ "check": "Профиль Check: задайте пути 'srcFs' и 'dstFs', поля уровня профиля и флаги проверки (удалите начальные '--' и замените '-' на '_').",
+ "mount": "Профиль Mount: задайте пути 'fs' и 'mountPoint', значение 'mountType', поля уровня профиля и параметры подключения (удалите начальные '--' и замените '-' на '_').",
+ "serve": "Профиль Serve: задайте путь 'fs', значение 'serveType', поля уровня профиля и параметры сервера (удалите начальные '--' и замените '-' на '_').",
+ "vfs": "Профиль VFS: задайте параметры кэширования, буферизации и совместимости виртуальной файловой системы в виде пар ключ–значение (удалите начальные '--' и замените '-' на '_').",
+ "filter": "Профиль фильтров: задайте glob-шаблоны, правила включения и исключения и другие параметры фильтрации в виде пар ключ–значение (удалите начальные '--' и замените '-' на '_').",
+ "backend": "Профиль бэкенда: настройте расширенные параметры протокола и подключения к удалённому хранилищу в виде пар ключ–значение (удалите начальные '--' и замените '-' на '_').",
+ "runtimeRemote": "Параметры подключения во время выполнения: задайте динамические переопределения подключения и настройки производительности в виде пар ключ–значение (удалите начальные '--' и замените '-' на '_')."
},
"runtimeRemoteWarning": {
"title": "Параметры подключения во время выполнения",
@@ -1139,6 +1217,10 @@
"enableWatch": "Включить мониторинг файлов в реальном времени",
"watchDescription": "Отслеживать изменения в локальных папках-источниках и автоматически синхронизировать их.",
"watchDelay": "Задержка обработки изменений (секунды)",
+ "watchDelayHint": "Время ожидания после последнего обнаруженного изменения перед запуском синхронизации.",
+ "watchZeroDelayWarning": "Мгновенный режим (0с) запускает синхронизацию сразу при изменении. Для больших файлов или нескольких правок рекомендуется 3–5с.",
+ "watchChangedOnly": "Синхронизировать только измененные подкаталоги",
+ "watchChangedOnlyHint": "При срабатывании отслеживания файлов синхронизирует только подкаталоги, содержащие измененные файлы, вместо сканирования всего корневого дерева.",
"watchRequiresLocalSource": "Для мониторинга в реальном времени требуется хотя бы одна локальная папка-источник.",
"watchRequiresLocal": "Для мониторинга в реальном времени требуется хотя бы одна локальная папка в источнике или назначении.",
"watchMixedSourcesNote": "В реальном времени отслеживаются только локальные папки-источники. Изменения в удалённых источниках не запустят синхронизацию автоматически.",
@@ -1286,6 +1368,10 @@
"title": "Первого числа каждого месяца",
"description": "Первого числа в полночь"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "Профили"
},
- "legacy": {
- "title": "Обнаружена резервная копия старого формата",
- "description": "Эта копия была создана до появления системы профилей. Она будет восстановлена в профиль 'default'."
- },
"options": "Параметры восстановления",
"scope": {
"all": "Восстановить всё",
@@ -1512,7 +1594,9 @@
"openNative": "Открыть во внешнем приложении",
"openNativeTooltip": "Открыть в стандартном внешнем приложении",
"openingNative": "Открытие {{name}} во внешнем приложении...",
- "errorOpenNative": "Не удалось открыть файл во внешнем приложении"
+ "errorOpenNative": "Не удалось открыть файл во внешнем приложении",
+ "showRawText": "Показать исходный текст",
+ "showPreview": "Показать предпросмотр"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "Остановка {{op}}...",
"stop": "Остановить {{op}}",
"notConfigured": "Не настроено",
+ "serve": "Сервер",
"serving": "Сервер запущен",
"accessibleVia": "Доступно через",
"mounting": "Подключение...",
@@ -1594,7 +1679,8 @@
"dryRun": "Пробный запуск",
"dryRunActive": "Активен пробный запуск — изменения не будут внесены",
"resync": "Полная ресинхронизация",
- "resyncActive": "Выполняется полная повторная синхронизация"
+ "resyncActive": "Выполняется полная повторная синхронизация",
+ "remoteSettings": "Настройки хранилища"
},
"generalDetail": {
"automations": "Автоматизации",
@@ -1640,6 +1726,7 @@
"loadConfig": "Загрузить конфигурацию",
"exportConfig": "Экспортировать конфигурацию",
"toggleBrowser": "Показать или скрыть файловый менеджер",
+ "openFlowOverlay": "Переключить рабочую область Flow",
"closeDialog": "Закрыть окно или отменить действие"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "Завершение работы",
- "message": "Подождите, пока приложение безопасно завершит работу..."
+ "message": "Подождите, пока приложение безопасно завершит работу...",
+ "confirmTitle": "Выполняются активные задачи",
+ "confirmMessage": "В Rclone Manager выполняются активные задачи (передачи: {{jobs}}, монтирования: {{mounts}}, сервера: {{serves}}). Вы уверены, что хотите остановить всё и выйти?",
+ "stopAndQuit": "Остановить и выйти"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "О Rclone",
"credits": "Участники",
"legal": "Правовая информация",
- "donate": "Поддержать проект",
"website": "Сайт",
"wiki": "Вики",
"reportIssues": "Сообщить о проблеме",
@@ -1959,14 +2048,6 @@
"label": "Пароль",
"placeholder": "Оставьте пустым, если аутентификация не требуется"
},
- "oauthHost": {
- "label": "Хост OAuth",
- "placeholder": "127.0.0.1",
- "description": "Хост для обратных вызовов OAuth. Адрес должен быть доступен для маршрутизации; нельзя использовать подстановочный адрес вроде 0.0.0.0. В Docker укажите доступное имя хоста контейнера."
- },
- "oauthPort": {
- "label": "Порт OAuth"
- },
"configPassword": {
"label": "Пароль конфигурации",
"description": "Пароль зашифрованного файла конфигурации"
@@ -1984,7 +2065,6 @@
"local": "Локальный",
"name": "Название",
"enableAuth": "Настроить аутентификацию",
- "oauthSettings": "Настройки OAuth (будут удалены в будущем)",
"selectConfigFile": "Выбрать файл конфигурации",
"activeConfigPath": "Активный путь конфигурации",
"connectionTab": "Подключение",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "Если браузер не открылся автоматически, используйте эту ссылку для аутентификации:",
"openLink": "Открыть ссылку",
- "copyLink": "Копировать ссылку",
- "remoteFallback": "Для удалённых бэкендов ручная ссылка OAuth здесь недоступна. Проверьте журналы или вывод удалённого бэкенда."
+ "copyLink": "Копировать ссылку"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "Нельзя удалить профиль «{{name}}»: его используют активные операции {{type}} ({{count}})",
"disabledReason": {
"inUse": "Профиль используется выполняемой операцией {{operation}}. Сначала остановите её."
- }
+ },
+ "duplicate": "Дублировать профиль"
},
"buttons": {
- "back": "Назад",
- "cancel": "Отмена",
- "create": "Создать",
- "save": "Сохранить",
- "next": "Далее",
"cleanup": "Очистка",
- "processing": "Обработка...",
- "continue": "Продолжить"
+ "processing": "Обработка..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "Не удалось обработать интерактивный ответ",
"loadFailed": "Не удалось загрузить конфигурацию подключения"
+ },
+ "profileSaved": "Профиль '{{profile}}' сохранен для {{remote}}",
+ "profileSaveFailed": "Не удалось сохранить профиль",
+ "warnings": {
+ "selectRemoteToSave": "Пожалуйста, выберите хранилище для сохранения профиля"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "Новое имя",
"counter": "Счётчик",
"date": "Дата",
- "extension": "Расширение"
+ "extension": "Расширение",
+ "duplicateOrInvalid": "Дублирующееся или недопустимое имя"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "Размер значков",
- "showHidden": "Показывать скрытые файлы"
+ "showHidden": "Показывать скрытые файлы",
+ "toggleLayout": "Переключить макет",
+ "viewOptions": "Параметры просмотра"
},
"notifications": {
"mkdirFailed": "Не удалось создать папку: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "Удалить подключение"
},
"deleteRemote": {
- "title": "Подтверждение удаления",
- "message": "Удалить «{{name}}»? Это действие нельзя отменить."
+ "title": "Удалить подключение",
+ "message": "Вы уверены, что хотите удалить '{{name}}'? Это действие необратимо.",
+ "activeOperationsTitle": "Активные выполняемые операции",
+ "activeOperationsDesc": "Следующие активные операции выполняются на этом подключении и будут принудительно остановлены:",
+ "willUnmount": "Будет размонтировано",
+ "willStop": "Будет остановлено",
+ "willCancel": "Будет отменено",
+ "savedProfilesTitle": "Сохраненные профили ({{count}})",
+ "quickRunsTitle": "Связанные Quick Run ({{count}})",
+ "automationsTitle": "Запланированные автоматизации ({{count}})",
+ "types": {
+ "mount": "Точка монтирования",
+ "serve": "Сервер"
+ }
},
"resetRemote": {
"title": "Сброс настроек подключения",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "Произошла непредвиденная ошибка. Подробности доступны в журналах.",
- "openFailed": "Не удалось открыть {{name}}",
- "resetSettingsFailed": "Не удалось сбросить настройки подключения",
- "deleteRemoteFailed": "Не удалось удалить подключение"
+ "openFailed": "Не удалось открыть {{name}}"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "Восстановлена компоновка по умолчанию",
"toggleAutomationFailed": "Не удалось переключить автоматизацию",
"showDetailed": "Показывать подробные карточки",
- "showCompact": "Показывать компактные карточки",
- "settings": "Настройки компоновки"
+ "showCompact": "Показывать компактные карточки"
},
"bandwidth": {
"aria": {
@@ -2523,17 +2614,24 @@
"retry": "Повторить загрузку данных о скорости",
"upload": "Отправка:",
"download": "Загрузка:",
- "total": "Всего:"
+ "total": "Всего:",
+ "unlimited": "Без ограничений (Выкл)",
+ "customPlaceholder": "Своя скорость (напр. 10M, 10M:50M)",
+ "apply": "Применить"
},
"system": {
"aria": {
"loading": "Загрузка сведений о системе"
},
"loading": "Загрузка сведений о системе...",
- "status": "Статус Rclone:",
+ "status": "Статус движка:",
+ "version": "Версия движка:",
+ "platform": "Платформа:",
+ "pid": "ID процесса:",
+ "goVersion": "Среда Go:",
"totalRemotes": "Всего подключений:",
"activeJobs": "Активных заданий:",
- "memoryUsage": "Использование памяти:",
+ "memoryUsage": "Память кучи:",
"uptime": "Время работы:",
"active": "Активен",
"inactive": "Неактивен",
@@ -2593,31 +2691,42 @@
"mount": {
"pointEmpty": "Точка подключения не может быть пустой",
"alreadyInUse": "Точка подключения {{mountPoint}} уже используется подключением {{remote}}",
- "configIncomplete": "Конфигурация подключения как диска для профиля «{{profile}}» заполнена не полностью"
+ "configIncomplete": "Конфигурация подключения как диска для профиля «{{profile}}» заполнена не полностью",
+ "directoryAlreadyMounted": "Каталог монтирования уже используется. Выберите пустую папку или включите '--allow-non-empty' в настройках профиля.",
+ "directoryNotEmpty": "Выбранная папка не пуста. Выберите пустую папку или включите '--allow-non-empty'.",
+ "winfspMissing": "Драйвер WinFsp не установлен. Установите WinFsp для монтирования виртуальных дисков в Windows.",
+ "fuseMissing": "Пакет FUSE (fuse3) не установлен в системе. Установите fuse3 для монтирования.",
+ "macfuseMissing": "macFUSE / FUSE-T не установлен. Установите macFUSE для монтирования в macOS.",
+ "driveLetterInUse": "Выбранная буква диска уже используется системой.",
+ "permissionDenied": "Отказано в доступе при попытке монтирования."
},
"operations": {
"configIncomplete": "Конфигурация профиля «{{profile}}» заполнена не полностью"
},
"serve": {
"parseFailed": "Не удалось разобрать ответ: {{error}}",
- "remoteEmpty": "Название подключения не может быть пустым"
+ "remoteEmpty": "Название подключения не может быть пустым",
+ "addressAlreadyInUse": "Выбранный порт или адрес уже используется другим приложением. Выберите другой порт.",
+ "privilegedPort": "Порты ниже 1024 требуют прав администратора. Выберите порт 1024 или выше.",
+ "tlsError": "Не удалось загрузить или разобрать SSL/TLS сертификат.",
+ "startFailed": "Не удалось запустить сервер: {{error}}",
+ "stopFailed": "Не удалось остановить сервер: {{error}}"
},
"request": {
"failed": "Ошибка запроса: {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}: {{body}}"
- },
"file": {
"driveRoot": "Корень диска, например D:\\, нельзя использовать как точку подключения. Выберите или создайте вложенную папку.",
"folderNotEmpty": "Выбранная папка не пуста",
"invalidPath": "Некорректный путь: путь не может быть пустым.",
"notFound": "Путь не существует: {{path}}",
- "failedToOpen": "Не удалось открыть файловый менеджер: {{error}}"
+ "failedToOpen": "Не удалось открыть файловый менеджер: {{error}}",
+ "diskFull": "Целевой диск переполнен. Недостаточно свободного места на диске.",
+ "fileLocked": "Файл заблокирован или используется другим процессом.",
+ "readOnly": "Целевая файловая система доступна только для чтения или защищена от записи."
},
"rclone": {
"unsupportedPlatform": "Платформа не поддерживается",
- "downloadError": "Неизвестная ошибка при загрузке Rclone",
"mountPluginInstallFailed": "Не удалось установить компонент подключения дисков: {{error}}",
"mountPluginVerificationFailed": "Установка завершена, но проверка не пройдена. Может потребоваться перезапуск.",
"configEncrypted": "Конфигурация зашифрована, но пароль не указан",
@@ -2640,7 +2749,8 @@
"invalidFlags": "Обнаружены некорректные флаги rclone: {{error}}",
"updateRemoteUnsupported": "Удалённое обновление не поддерживается этой версией rclone",
"backupFailed": "Не удалось создать резервную копию текущего исполняемого файла rclone: {{error}}",
- "rcAuthFailed": "Ошибка аутентификации удалённого управления Rclone: {{error}}"
+ "rcAuthFailed": "Ошибка аутентификации удалённого управления Rclone: {{error}}",
+ "downloadCancelled": "Загрузка отменена пользователем"
},
"security": {
"passwordEmpty": "Пароль не может быть пустым",
@@ -2654,14 +2764,8 @@
"rcloneError": "Ошибка Rclone: {{error}}"
},
"backup": {
- "unknownFormat": "Неизвестный формат резервной копии",
- "integrityFailed": "Проверка целостности не пройдена. Резервная копия может быть повреждена.",
- "encryptedPasswordRequired": "Резервная копия зашифрована. Требуется пароль.",
"unsupportedArchive": "Тип архива не поддерживается. Требуется файл .rcman",
"invalidArchive": "Некорректный формат архива резервной копии",
- "manifestParseFailed": "Не удалось разобрать манифест резервной копии: {{error}}",
- "missingManifest": "В архиве отсутствует манифест резервной копии",
- "openFailed": "Не удалось открыть архив резервной копии: {{error}}",
"restoreFailed": "Не удалось восстановить резервную копию: {{error}}",
"secretRequirePassword": "Резервная копия защищена секретом и требует пароль"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "Информация о задании не найдена",
"monitoringFailed": "Слишком много ошибок при отслеживании задания: {{error}}",
- "executionFailed": "Ошибка выполнения задания: {{error}}"
+ "executionFailed": "Ошибка выполнения задания: {{error}}",
+ "corruptedTransfer": "Файл поврежден при передаче или не совпала контрольная сумма."
},
"cache": {
"fetchRemotesFailed": "Не удалось получить список подключений",
@@ -2695,12 +2800,14 @@
"automationNotFound": "Автоматизация не найдена"
},
"system": {
- "themeSetFailed": "Не удалось установить тему приложения: {{error}}",
- "unlockFailed": "Не удалось разблокировать: {{error}}",
- "killFailed": "Не удалось завершить процесс: {{error}}"
+ "unlockFailed": "Не удалось разблокировать: {{error}}"
},
"remote": {
- "configFailed": "Не удалось настроить подключение: {{error}}"
+ "configFailed": "Не удалось настроить подключение: {{error}}",
+ "authExpired": "Срок действия авторизации истек или она недействительна. Повторите авторизацию хранилища.",
+ "quotaExceeded": "Превышен лимит запросов к API или квота дискового пространства хранилища. Попробуйте позже.",
+ "networkError": "Не удалось связаться с удаленным сервером. Проверьте сетевое подключение и адрес.",
+ "notFound": "Целевой каталог или файл не найден на удаленном хранилище."
},
"updater": {
"noPending": "Нет ожидающего обновления",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "Не удалось сбросить все настройки: {{error}}",
"eventEmitFailed": "Не удалось отправить событие настроек: {{error}}",
"subSettingsFailed": "Не удалось получить вложенные настройки: {{error}}",
- "notFound": "Настройки «{{name}}» не найдены",
"deleteFailed": "Не удалось удалить настройки подключения: {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "Копирование по URL [{{active}}/{{total}}]",
"archivecreateCount": "Архивация [{{active}}/{{total}}]",
"serveCount": "Серверы [{{active}}/{{total}}]",
+ "quickRunsCount": "Быстрые запуски [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "1 задание",
"tooltipTasks": "Заданий: {{count}}",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 сервер",
"tooltipServes": "Серверов: {{count}}"
},
+ "powerInhibitor": {
+ "reason": "Выполняются активные операции: {{details}}",
+ "mounts": "{{count}} монтирование(й)",
+ "jobs": "{{count}} задача(и)",
+ "serves": "{{count}} сервер(ов)"
+ },
"notification": {
"title": {
"mountSucceeded": "Диск подключён",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "Не удалось подключиться к движку rclone: {{error}}",
"engineBinaryNotFound": "Исполняемый файл Rclone не найден. Проверьте настройки.",
"enginePasswordRequired": "Для доступа к файлу конфигурации требуется пароль.",
- "engineAuthFailed": "Не удалось пройти аутентификацию в движке rclone: {{error}}"
+ "engineAuthFailed": "Не удалось пройти аутентификацию в движке rclone: {{error}}",
+ "powerInhibited": "Активные операции предотвращают переход системы в спящий режим."
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "Очистить кэш",
"openDevTools": "Открыть инструменты разработчика",
"openDevToolsError": "Не удалось открыть инструменты разработчика",
- "openDevToolsHint": "Открыть инструменты разработчика для отладки",
"cleared": "Данные очищены"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "Поиск по потокам...",
+ "toggleSearch": "Переключить поиск",
+ "loading": "Загрузка потоков...",
+ "noResults": "Нет совпадающих потоков",
+ "toggleSidebar": "Переключить боковую панель Flow",
+ "empty": {
+ "description": "Создайте быстрый запуск или рабочий процесс для быстрых операций и конвейеров."
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "Для {{remote}} не настроено быстрых запусков.",
+ "createForRemote": "Создать быстрый запуск для {{remote}}"
+ }
+ },
+ "tabs": {
+ "quickRun": "Быстрый запуск",
+ "workflow": "Рабочий процесс"
+ },
+ "builder": {
+ "placeholderTitle": "Конструктор рабочих процессов в разработке",
+ "placeholderMessage": "Визуальный холст для многошаговых конвейеров rclone скоро появится.",
+ "viewRoadmap": "Посмотреть план развития на GitHub"
+ }
+ },
+ "templates": {
+ "title": "Шаблоны",
+ "presetTitle": "Пресеты и шаблоны",
+ "applyPresets": "Применить стандартные пресеты",
+ "userTemplates": "Сохраненные пользовательские шаблоны",
+ "saveAsTemplate": "Сохранить текущие настройки как шаблон...",
+ "manageTemplates": "Управление шаблонами...",
+ "manageTitle": "Управление шаблонами",
+ "noUserTemplates": "Пока нет сохраненных пользовательских шаблонов.",
+ "newTitle": "Новый шаблон",
+ "templateName": "Название шаблона",
+ "templateDesc": "Описание (необязательно)",
+ "selectAllKeys": "Выбрать все ключи",
+ "deselectAllKeys": "Снять выбор со всех ключей",
+ "addKeyToCategory": "Добавить ключ в категорию",
+ "addKey": "Добавить ключ",
+ "removeKey": "Удалить ключ",
+ "deleteTemplate": "Удалить шаблон",
+ "noCatKeys": "В категории {{category}} пока нет настроек.",
+ "visualView": "Визуальный инспектор",
+ "jsonView": "Редактор JSON",
+ "key": "Ключ",
+ "value": "Значение",
+ "namePlaceholder": "напр., Мои быстрые настройки резервного копирования S3",
+ "descPlaceholder": "Краткое описание этих настроек...",
+ "keyPlaceholder": "напр., dir_cache_time",
+ "valuePlaceholder": "напр., 10m",
+ "selectedCount": "{{selected}} / {{total}} выбрано",
+ "keyCount": "{{count}} ключ",
+ "keysCount": "{{count}} ключей",
+ "zeroKeys": "0 ключей",
+ "applySuccess": "Шаблон \"{{name}}\" успешно применен.",
+ "savedSuccess": "Шаблон \"{{name}}\" успешно сохранен.",
+ "deletedSuccess": "Шаблон успешно удален."
+ },
+ "navigation": {
+ "dashboard": "Панель управления"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "Загрузка...",
+ "verifying": "Проверка контрольной суммы...",
+ "extracting": "Извлечение архива...",
+ "installing": "Установка...",
+ "completed": "Завершено",
+ "cancelled": "Операция отменена",
+ "error": "Ошибка"
+ }
}
}
diff --git a/resources/i18n/tr-TR/main.json b/resources/i18n/tr-TR/main.json
index a61f3a687..4862f4e9c 100644
--- a/resources/i18n/tr-TR/main.json
+++ b/resources/i18n/tr-TR/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "İptal",
"save": "Kaydet",
+ "create": "Oluştur",
+ "show": "Göster",
+ "hide": "Gizle",
"ok": "Tamam",
"close": "Kapat",
- "nextStep": "Sonraki Adım",
+ "next": "İleri",
"back": "Geri",
"continue": "Devam Et",
"yes": "Evet",
@@ -31,7 +34,12 @@
"password": "Şifre",
"username": "Kullanıcı Adı",
"selectAll": "Tümünü Seç",
- "deselectAll": "Tümünü Temizle"
+ "deselectAll": "Tümünü Temizle",
+ "viewDetails": "Detayları Görüntüle",
+ "moreActions": "Diğer İşlemler",
+ "duplicate": "Çoğalt",
+ "clearAll": "Tümünü Temizle",
+ "acknowledge": "Onayla"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "Geciktirme Süresi",
"watcherActive": "İzleyici Etkin",
"seconds": "saniye",
- "realtimeSchedule": "Gerçek Zamanlı Dosya İzleyici"
+ "realtimeSchedule": "Gerçek Zamanlı Dosya İzleyici",
+ "changedOnlyShort": "Yalnızca Alt Dizinler",
+ "changedOnlyActive": "Yalnızca Alt Dizinler",
+ "syncScope": "Senkronizasyon Kapsamı",
+ "realtimeChangedOnly": "Gerçek Zamanlı İzleme (Yalnızca alt dizinler)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "Sil",
"copyurl": "URL Kopyala",
"archivecreate": "Arşivle",
+ "cryptcheck": "Şifreli Denetim",
"serve": "Sun",
"start": "Başlat",
"stop": "Durdur"
},
"sidebar": {
+ "toggleSidebar": "Kenar Çubuğunu Aç/Kapat",
"toggleSearch": "Arama çubuğunu aç/kapat",
"remotes": "Uzak Bağlantılar",
"searchPlaceholder": "Uzak bağlantıları ara...",
@@ -193,7 +207,8 @@
"used": "Kullanılan:",
"free": "Boş:",
"loading": "Yükleniyor...",
- "errorLoading": "Disk kullanımı yüklenirken sorun oluştu"
+ "errorLoading": "Disk kullanımı yüklenirken sorun oluştu",
+ "retry": "Disk kullanımını yeniden yükle"
},
"status": {
"mounted": "Bağlı",
@@ -296,7 +311,9 @@
"filemanager": "Dosya Yöneticisi",
"startup": "Başlangıç",
"update": "Güncelleme",
- "internal": "Dahili"
+ "internal": "Dahili",
+ "flow": "Akış Çalışma Alanı",
+ "quickrun": "Hızlı Çalıştırma"
},
"rule": {
"filters": "Filtreler",
@@ -318,7 +335,8 @@
"actionRequired": "En az bir eylem gereklidir.",
"noActionsHint": "Bir kurala atamadan önce bir uyarı eylemi oluşturmanız gerekir.",
"filtersEmptyHint": "Tüm olaylarla eşleştirmek için boş bırakın.",
- "scopeFilters": "Kapsam Filtreleri"
+ "scopeFilters": "Kapsam Filtreleri",
+ "allEvents": "Tüm Olaylar"
},
"events": {
"job": "İşler ve Dosya İşlemleri",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "Başlık Adı",
"headerValue": "Değer"
- }
+ },
+ "noRulesHint": "Henüz yapılandırılmış uyarı kuralı yok. Bildirim almak için bir kural oluşturun.",
+ "noActionsHint": "Henüz yapılandırılmış uyarı eylemi yok. Uyarıların nasıl iletileceğini belirlemek için bir eylem oluşturun."
},
"settings": {
"resetAll": {
@@ -406,17 +426,36 @@
"label": "Tepsi Simgesini Etkinleştir",
"description": "Sistem tepsisinde bir simge gösterir. Ayrıca arka plan servisini etkinleştirir."
},
+ "tray_icon_theme": {
+ "label": "Sistem Tepsisi Simge Teması",
+ "description": "Sistem tepsisi simgesi için görsel stil seçin.",
+ "options": {
+ "system": "Sistem (Otomatik Tek Renkli)",
+ "color": "Renkli",
+ "monochrome_light": "Tek Renkli (Açık)",
+ "monochrome_dark": "Tek Renkli (Koyu)"
+ }
+ },
"language": {
"label": "Dil",
"description": "Kullanıcı arayüzü için kullanılacak dil. Sistem dili otomatik olarak algılanır."
},
+ "default_view": {
+ "label": "Varsayılan Başlangıç Görünümü",
+ "description": "Uygulama başlatıldığında açılacak ana arayüz görünümünü seçin.",
+ "options": {
+ "main_menu": "Ana Menü",
+ "nautilus": "Nautilus Dosya Yöneticisi",
+ "flow": "Flow Çalışma Alanı"
+ }
+ },
"start_on_startup": {
"label": "Başlangıçta Çalıştır",
"description": "Sistem başlatıldığında uygulamayı otomatik olarak başlatır."
},
"notifications": {
"label": "Bildirimleri Etkinleştir",
- "description": "Bağlama olayları için bildirimleri gösterir."
+ "description": "Uygulama olayları için masaüstü bildirimlerini gösterir (bağlama, senkronizasyon, güncellemeler vb.)."
},
"restrict": {
"label": "Değerleri Kısıtla",
@@ -425,6 +464,10 @@
"standalone_dialogs": {
"label": "Bağımsız Pencereler",
"description": "İletişim kutularını (modalleri) ayrı işletim sistemi pencerelerinde açar."
+ },
+ "prevent_sleep": {
+ "label": "Sistem Uyku / Kapanmasını Engelle",
+ "description": "Aktif dosya aktarımları, bağlantılar (mount) veya sunucular çalışırken sistem uykusunu ve kapanmasını engeller."
}
},
"core": {
@@ -521,6 +564,10 @@
"label": "Panel Düzeni",
"description": "Panel için özel düzen yapılandırması."
},
+ "quick_run_layout": {
+ "label": "Hızlı Çalıştırma Düzeni",
+ "description": "Hızlı çalıştırma genel bakışı için özel düzen yapılandırması."
+ },
"dashboard_card_variant": {
"label": "Kart Görüntüleme Modu",
"description": "Pano kartlarını kompakt veya ayrıntılı modda göster",
@@ -573,6 +620,10 @@
"generic": {
"title": "Motor Başlatılamadı",
"subtitle": "Daha fazla detay için lütfen logları kontrol edin"
+ },
+ "auth": {
+ "title": "Rclone Kimlik Doğrulaması Gerekli",
+ "subtitle": "Lütfen kimlik bilgilerinizi veya yapılandırma şifrenizi kontrol edin"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "Tercihler",
"flags": "Rclone Bayrakları",
"fileBrowser": "Dosya Gezgini",
+ "flowWorkspace": "Akış Çalışma Alanı",
"shortcuts": "Klavye Kısayolları",
"about": "RClone Yöneticisi Hakkında",
"quickRemote": "Hızlı Uzak Bağlantı",
@@ -645,11 +697,32 @@
"title": "Yapılandırma Parolası Gerekli",
"content": "Rclone yapılandırmanız şifrelenmiş. Bu oturum için kilidini açmak üzere lütfen parolayı girin."
},
+ "selectMainUi": {
+ "title": "Birincil Arayüzü Seçin",
+ "content": "Tercih ettiğiniz çalışma alanı düzenini seçin. Üst menüden veya ayarlardan istediğiniz zaman arayüzler arasında geçiş yapabilirsiniz."
+ },
"ready": {
"title": "Hazır!",
"content": "Her şey ayarlandı ve kullanıma hazır. RClone Yöneticisi bulut depolamanızı kolayca yönetmenize yardımcı olacak. Yolculuğunuza başlamak için 'Başlayın'a tıklayın."
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "Klasik Kontrol Paneli",
+ "badge": "Varsayılan",
+ "description": "Uzak depolama bağlantıları, aktif transferler, hızlı eylemler ve sistem durumunu içeren sekmeli görünüm."
+ },
+ "nautilus": {
+ "title": "Dosya Tarayıcısı (Nautilus)",
+ "badge": "Dosya Yöneticisi",
+ "description": "Bulut dosyalarında gezinmek ve transfer etmek için tasarlanmış özel çift panelli dosya yönetimi arayüzü."
+ },
+ "flow": {
+ "title": "Flow Çalışma Alanı",
+ "badge": "İş Akışları",
+ "description": "Otomatik işleri, hızlı çalıştırma profillerini ve hat yürütmesini koordine etmek için etkileşimli görsel alan."
+ }
+ },
"installButton": {
"configuring": "Yapılandırılıyor...",
"installing": "Kuruluyor...",
@@ -668,8 +741,6 @@
"default": "Varsayılan"
},
"actions": {
- "back": "Geri",
- "next": "İleri",
"installPlugin": "Eklentiyi Kur",
"installingPlugin": "Kuruluyor...",
"unlock": "Kilidi Aç",
@@ -826,7 +897,8 @@
"actions": {
"hide": "Gizle",
"show": "Göster",
- "open": "Aç"
+ "open": "Aç",
+ "cancel": "İptal"
},
"overviewHeader": {
"manageBackends": "Arka Uçları Yönet",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "JSON modunda gösterilecek alan yok",
"parseError": "Geçersiz JSON sözdizimi. Lütfen biçimlendirmenizi kontrol edin.",
- "cliArgumentWithSuggestion": "CLI tarzı argümanlar ('{{key}}' gibi) rclone RC'de desteklenmez. Şunu mu demek istediniz: '{{suggestion}}'?",
+ "cliArgumentWithSuggestion": "CLI tarzı '{{key}}' parametresi çalıştırılırken otomatik olarak '{{suggestion}}' olarak eşlenecektir.",
"camelCaseSuggestionWarning": "'{{key}}' seçeneği bu biçimde geçerli değil. Şunu mu demek istediniz: '{{suggestion}}'?",
"fixSuggestion": "Şuna değiştir: '{{suggestion}}'",
"wrongBlockWarning": "{{keys}} seçeneği/seçenekleri '{{block}}' yapılandırma bloğuna ait ve burada çalışmayabilir.",
@@ -986,6 +1058,10 @@
"required": "Şifre gerekli",
"remember": "Şifreyi hatırla",
"keychain": "Sistem anahtarlığında saklandı"
+ },
+ "validation": {
+ "required": "Bu alan zorunludur.",
+ "min": "Değer en az {{val}} olmalıdır."
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "Yamayı Uygula",
"importSourcePath": "Kaynak Yolunu İçe Aktar",
"importDestPath": "Hedef Yolunu İçe Aktar",
- "importMountPoint": "Bağlama Noktasını İçe Aktar"
+ "importMountPoint": "Bağlama Noktasını İçe Aktar",
+ "applyToTask": "Göreve Uygula",
+ "appliedToast": "{{count}} ayar başarıyla içe aktarıldı"
},
"obscure": {
"title": "Şifreyi Gizle (Obscure)",
@@ -1050,15 +1128,15 @@
"switchToJson": "JSON Moduna Geç",
"unknownTopLevelProperty": "Uyarı: '{{key}}' bu profil için standart bir üst düzey özellik değildir ve yoksayılabilir.",
"jsonEditorInfo": {
- "sync": "Senkronizasyon/Kopyalama/Taşıma Profili: 'srcFs' ve 'dstFs' yollarını, profil düzeyindeki alanları ayarlayın ve tüm rclone bayraklarını '_config' içine yerleştirin.",
- "bisync": "Çift Yönlü Senkronizasyon (Bisync) Profili: 'path1' ve 'path2' yollarını, profil düzeyindeki alanları ayarlayın ve tüm rclone bayraklarını '_config' içine yerleştirin.",
- "check": "Denetleme Profili: 'srcFs' ve 'dstFs' yollarını, profil düzeyindeki alanları ayarlayın ve tüm denetleme bayraklarını '_config' içine yerleştirin.",
- "mount": "Bağlama (Mount) Profili: 'fs' ve 'mountPoint' yollarını, 'mountType' değerini, profil düzeyindeki alanları ayarlayın ve tüm bağlama seçeneklerini 'mountOpt' içine yerleştirin.",
- "serve": "Sunma (Serve) Profili: 'fs' yolunu, 'serveType' değerini, profil düzeyindeki alanları ayarlayın ve tüm sunma seçeneklerini '_config' içine yerleştirin.",
- "vfs": "VFS Profili: Özel Sanal Dosya Sistemi önbellekleme, arabelleğe alma ve uyumluluk seçeneklerini anahtar-değer çiftleri olarak ayarlayın.",
- "filter": "Filtre Profili: Dosya filtreleme seçeneklerini, dahil etme/hariç tutma kurallarını anahtar-değer çiftleri olarak ayarlayın.",
- "backend": "Arka Uç Profili: Gelişmiş protokol seçeneklerini ve uzak bağlantıya özel bağlantı ayarlarını anahtar-değer çiftleri olarak yapılandırın.",
- "runtimeRemote": "Çalışma Zamanı Uzak Bağlantısı: Dinamik bağlantı geçersiz kılmalarını ve performans ayarlarını anahtar-değer çiftleri olarak ayarlayın."
+ "sync": "Senkronizasyon/Kopyalama/Taşıma Profili: 'srcFs' ve 'dstFs' yollarını, profil düzeyindeki alanları ve rclone bayraklarını ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "bisync": "Çift Yönlü Senkronizasyon (Bisync) Profili: 'path1' ve 'path2' yollarını, profil düzeyindeki alanları ve rclone bayraklarını ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "check": "Denetleme Profili: 'srcFs' ve 'dstFs' yollarını, profil düzeyindeki alanları ve denetleme bayraklarını ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "mount": "Bağlama (Mount) Profili: 'fs' ve 'mountPoint' yollarını, 'mountType' değerini, profil düzeyindeki alanları ve bağlama seçeneklerini ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "serve": "Sunma (Serve) Profili: 'fs' yolunu, 'serveType' değerini, profil düzeyindeki alanları ve sunma seçeneklerini ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "vfs": "VFS Profili: Özel Sanal Dosya Sistemi önbellekleme, arabelleğe alma ve uyumluluk seçeneklerini anahtar-değer çiftleri olarak ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "filter": "Filtre Profili: Dosya filtreleme seçeneklerini, dahil etme/hariç tutma kurallarını anahtar-değer çiftleri olarak ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "backend": "Arka Uç Profili: Gelişmiş protokol seçeneklerini ve uzak bağlantıya özel bağlantı ayarlarını anahtar-değer çiftleri olarak yapılandırın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın).",
+ "runtimeRemote": "Çalışma Zamanı Uzak Bağlantısı: Dinamik bağlantı geçersiz kılmalarını ve performans ayarlarını anahtar-değer çiftleri olarak ayarlayın (baştaki '--' işaretini kaldırın ve '-' yerine '_' kullanın)."
},
"runtimeRemoteWarning": {
"title": "Çalışma Zamanı Uzak Bağlantı Ayarları",
@@ -1139,6 +1217,10 @@
"enableWatch": "Gerçek Zamanlı Dosya İzlemeyi Etkinleştir",
"watchDescription": "Dosya değişikliklerini izlemek ve bunları otomatik olarak senkronize etmek için yerel kaynak dizinlerini izleyin.",
"watchDelay": "Gecikme süresi (saniye)",
+ "watchDelayHint": "Senkronizasyonu tetiklemeden önce son algılanan değişiklikten sonraki bekleme süresi.",
+ "watchZeroDelayWarning": "Anlık mod (0 sn), değişiklik algılandığında hemen senkronizasyonu başlatır. Büyük dosyalar veya çoklu düzenlemeler için yazmanın bitmesi adına 3–5 sn önerilir.",
+ "watchChangedOnly": "Yalnızca değişen alt dizinleri senkronize et",
+ "watchChangedOnlyHint": "Dosya izleyici tarafından tetiklendiğinde, tüm kök dizin ağacını taramak yerine yalnızca değiştirilen dosyaları içeren alt dizinleri senkronize eder.",
"watchRequiresLocalSource": "Gerçek zamanlı izleme en az bir yerel kaynak dizini gerektirir.",
"watchRequiresLocal": "Gerçek zamanlı izleme en az bir yerel kaynak veya hedef dizini gerektirir.",
"watchMixedSourcesNote": "Sadece yerel kaynak dizinleri gerçek zamanlı olarak izlenecektir. Uzak kaynaklardaki değişiklikler senkronizasyonu otomatik olarak tetiklemez.",
@@ -1286,6 +1368,10 @@
"title": "Ayın 1'i",
"description": "1. gün gece yarısı"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "Profiller"
},
- "legacy": {
- "title": "Eski Yedekleme Tespit Edildi",
- "description": "Bu yedekleme, profil sistemi tanıtılmadan önce oluşturulmuştu. 'Varsayılan' profile geri yüklenecektir."
- },
"options": "Geri Yükleme Seçenekleri",
"scope": {
"all": "Her Şeyi Geri Yükle",
@@ -1512,7 +1594,9 @@
"openNative": "Harici Uygulamada Aç",
"openNativeTooltip": "Sistemin varsayılan harici uygulamasında aç",
"openingNative": "{{name}} harici uygulamada açılıyor...",
- "errorOpenNative": "Dosya harici uygulamada açılamadı"
+ "errorOpenNative": "Dosya harici uygulamada açılamadı",
+ "showRawText": "Ham Metni Göster",
+ "showPreview": "Önizlemeyi Göster"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "{{op}} durduruluyor...",
"stop": "{{op}} İşlemini Durdur",
"notConfigured": "Yapılandırılmadı",
+ "serve": "Sunma",
"serving": "Sunma",
"accessibleVia": "Erişim Yolu",
"mounting": "Bağlanıyor...",
@@ -1594,7 +1679,8 @@
"dryRun": "Simülasyon",
"dryRunActive": "Simülasyon etkin — hiçbir değişiklik yapılmayacak",
"resync": "Yeniden Senkronize Et",
- "resyncActive": "Yeniden senkronizasyon etkin — tam yeniden senkronizasyon gerçekleştiriliyor"
+ "resyncActive": "Yeniden senkronizasyon etkin — tam yeniden senkronizasyon gerçekleştiriliyor",
+ "remoteSettings": "Uzak Bağlantı Ayarları"
},
"generalDetail": {
"automations": "Otomasyonlar",
@@ -1640,6 +1726,7 @@
"loadConfig": "Yapılandırmayı Yükle",
"exportConfig": "Yapılandırmayı Dışa Aktar",
"toggleBrowser": "Dosya Tarayıcısını Aç/Kapat",
+ "openFlowOverlay": "Akış Çalışma Alanını Aç/Kapat",
"closeDialog": "İletişim Kutusunu Kapat/İptal Et"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "Kapatılıyor",
- "message": "Uygulama güvenli bir şekilde kapatılırken lütfen bekleyin..."
+ "message": "Uygulama güvenli bir şekilde kapatılırken lütfen bekleyin...",
+ "confirmTitle": "Aktif İşlemler Devam Ediyor",
+ "confirmMessage": "Rclone Manager üzerinde aktif işlemler çalışıyor ({{jobs}} transfer, {{mounts}} bağlama, {{serves}} sunum). Tüm aktif işlemleri durdurup çıkmak istediğinize emin misiniz?",
+ "stopAndQuit": "Durdur ve Çık"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "Rclone Hakkında",
"credits": "Teşekkürler",
"legal": "Yasal Bilgiler",
- "donate": "Destek Ol",
"website": "Web Sitesi",
"wiki": "Wiki Sayfası",
"reportIssues": "Hata Bildir",
@@ -1959,14 +2048,6 @@
"label": "Parola",
"placeholder": "Kimlik doğrulaması olmaması için boş bırakın"
},
- "oauthHost": {
- "label": "OAuth Sunucusu",
- "placeholder": "127.0.0.1",
- "description": "OAuth geri çağırmaları için bağlanılacak sunucu. Erişilebilir bir adres olmalıdır — 0.0.0.0 gibi genel bir adres olamaz. Docker'da bunu konteynerin erişilebilir ana bilgisayar adına ayarlayın."
- },
- "oauthPort": {
- "label": "OAuth Portu"
- },
"configPassword": {
"label": "Yapılandırma Parolası",
"description": "Şifrelenmiş yapılandırma dosyası için parola"
@@ -1984,7 +2065,6 @@
"local": "Yerel",
"name": "Ad",
"enableAuth": "Kimlik Doğrulamasını Özelleştir",
- "oauthSettings": "OAuth Ayarları (Gelecekte kaldırılacak)",
"selectConfigFile": "Yapılandırma Dosyası Seç",
"activeConfigPath": "Aktif Yapılandırma Yolu",
"connectionTab": "Bağlantı",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "Tarayıcı otomatik olarak açılmadıysa bu kimlik doğrulama bağlantısını kullanın:",
"openLink": "Bağlantıyı Aç",
- "copyLink": "Bağlantıyı Kopyala",
- "remoteFallback": "Uzak backend'lerde manuel OAuth bağlantısı burada mevcut değil. Uzak backend loglarını/çıktılarını kontrol edin."
+ "copyLink": "Bağlantıyı Kopyala"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "\"{{name}}\" profili silinemez - {{count}} aktif {{type}} tarafından kullanılıyor",
"disabledReason": {
"inUse": "Profil çalışan bir {{operation}} tarafından kullanılıyor. Önce onu durdurun."
- }
+ },
+ "duplicate": "Profili Çoğalt"
},
"buttons": {
- "back": "Geri",
- "cancel": "İptal",
- "create": "Oluştur",
- "save": "Kaydet",
- "next": "İleri",
"cleanup": "Temizleniyor",
- "processing": "İşleniyor...",
- "continue": "Devam Et"
+ "processing": "İşleniyor..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "Etkileşimli yanıt işlenemedi",
"loadFailed": "Uzak yapılandırma yüklenemedi"
+ },
+ "profileSaved": "{{remote}} için '{{profile}}' profili kaydedildi",
+ "profileSaveFailed": "Profil kaydedilemedi",
+ "warnings": {
+ "selectRemoteToSave": "Lütfen profili kaydetmek için bir uzak bağlantı seçin"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "Yeni ad",
"counter": "Sayaç",
"date": "Tarih",
- "extension": "Uzantı"
+ "extension": "Uzantı",
+ "duplicateOrInvalid": "Yinelenen veya geçersiz ad"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "Simge Boyutu",
- "showHidden": "Gizli Dosyaları Göster"
+ "showHidden": "Gizli Dosyaları Göster",
+ "toggleLayout": "Düzeni Değiştir",
+ "viewOptions": "Görünüm Seçenekleri"
},
"notifications": {
"mkdirFailed": "Klasör oluşturulamadı: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "Uzak Sunucuyu Sil"
},
"deleteRemote": {
- "title": "Silme Onayı",
- "message": "'{{name}}' adlı uzak sunucuyu silmek istediğinizden emin misiniz? Bu işlem geri alınamaz."
+ "title": "Uzak Sunucuyu Sil",
+ "message": "'{{name}}' adlı uzak sunucuyu silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
+ "activeOperationsTitle": "Çalışan Aktif İşlemler",
+ "activeOperationsDesc": "Bu uzak sunucu üzerinde çalışan aşağıdaki aktif işlemler zorla sonlandırılacaktır:",
+ "willUnmount": "Bağlantı Kesilecek",
+ "willStop": "Durdurulacak",
+ "willCancel": "İptal Edilecek",
+ "savedProfilesTitle": "Kayıtlı Profiller ({{count}})",
+ "quickRunsTitle": "İlişkili Quick Run'lar ({{count}})",
+ "automationsTitle": "Zamanlanmış Otomasyonlar ({{count}})",
+ "types": {
+ "mount": "Bağlama Noktası",
+ "serve": "Yayın"
+ }
},
"resetRemote": {
"title": "Uzak Sunucu Ayarlarını Sıfırla",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "Beklenmeyen bir hata oluştu. Lütfen detaylar için günlükleri kontrol edin.",
- "openFailed": "{{name}} açılamadı",
- "resetSettingsFailed": "Uzak sunucu ayarları sıfırlanamadı",
- "deleteRemoteFailed": "Uzak sunucu silinemedi"
+ "openFailed": "{{name}} açılamadı"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "Düzen varsayılana sıfırlandı",
"toggleAutomationFailed": "Otomasyon değiştirilemedi",
"showDetailed": "Ayrıntılı Kartları Göster",
- "showCompact": "Kompakt Kartları Göster",
- "settings": "Düzen Ayarları"
+ "showCompact": "Kompakt Kartları Göster"
},
"bandwidth": {
"aria": {
@@ -2523,17 +2614,24 @@
"retry": "Yeniden dene",
"upload": "Yükleme:",
"download": "İndirme:",
- "total": "Toplam:"
+ "total": "Toplam:",
+ "unlimited": "Sınırsız (Kapalı)",
+ "customPlaceholder": "Özel hız (örn. 10M, 10M:50M)",
+ "apply": "Uygula"
},
"system": {
"aria": {
"loading": "Sistem bilgisi yükleniyor"
},
"loading": "Sistem bilgisi yükleniyor...",
- "status": "Rclone Durumu:",
+ "status": "Motor Durumu:",
+ "version": "Motor Sürümü:",
+ "platform": "Platform:",
+ "pid": "İşlem Kimliği (PID):",
+ "goVersion": "Go Çalışma Zamanı:",
"totalRemotes": "Toplam Uzak Bağlantılar:",
"activeJobs": "Aktif İşler:",
- "memoryUsage": "Bellek Kullanımı:",
+ "memoryUsage": "Öbek Belleği:",
"uptime": "Çalışma Süresi:",
"active": "Aktif",
"inactive": "İnaktif",
@@ -2593,31 +2691,43 @@
"mount": {
"pointEmpty": "Bağlama noktası boş olamaz",
"alreadyInUse": "{{mountPoint}} bağlama noktası {{remote}} tarafından zaten kullanılıyor",
- "configIncomplete": "'{{profile}}' profili için bağlama yapılandırması eksik"
+ "configIncomplete": "'{{profile}}' profili için bağlama yapılandırması eksik",
+ "directoryAlreadyMounted": "Bağlama dizini zaten kullanımda. Lütfen boş bir klasör seçin veya profil ayarlarından '--allow-non-empty' seçeneğini etkinleştirin.",
+ "directoryNotEmpty": "Seçilen klasör boş değil. Lütfen boş bir klasör seçin veya '--allow-non-empty' seçeneğini açın.",
+ "winfspMissing": "WinFsp kurulu değil. Windows üzerinde sanal sürücü bağlamak için lütfen WinFsp kurun.",
+ "fuseMissing": "Sisteminizde FUSE (fuse3) kurulu değil. Bağlama yapabilmek için lütfen fuse3 paketini kurun.",
+ "macfuseMissing": "Sisteminizde macFUSE / FUSE-T kurulu değil. macOS üzerinde bağlama yapabilmek için lütfen macFUSE kurun.",
+ "driveLetterInUse": "Seçilen sürücü harfi sistem tarafından zaten kullanılıyor.",
+ "permissionDenied": "Bağlama sırasında erişim engellendi / yetki yetersiz."
},
"operations": {
"configIncomplete": "'{{profile}}' profili için yapılandırma eksik"
},
"serve": {
"parseFailed": "Yanıt ayrıştırılamadı: {{error}}",
- "remoteEmpty": "Uzak bağlantı adı boş olamaz"
+ "remoteEmpty": "Uzak bağlantı adı boş olamaz",
+ "addressAlreadyInUse": "Seçilen port veya adres başka bir uygulama tarafından kullanılıyor. Lütfen farklı bir port seçin.",
+ "privilegedPort": "1024'ten küçük portlar yönetici ayrıcalığı gerektirir. Lütfen 1024 veya üzeri bir port seçin.",
+ "tlsError": "SSL/TLS sertifikası yüklenemedi veya geçersiz.",
+ "startFailed": "Sunucu başlatılamadı: {{error}}",
+ "stopFailed": "Sunucu durdurulamadı: {{error}}"
},
"request": {
"failed": "İstek başarısız: {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}: {{body}}"
- },
"file": {
"driveRoot": "Sürücü kökü (örn. D:\\) bağlama noktası olarak seçilemez. Lütfen bir alt klasör seçin veya oluşturun.",
"folderNotEmpty": "Seçilen klasör boş değil",
"invalidPath": "Geçersiz yol: Yol boş olamaz.",
"notFound": "Yol mevcut değil: {{path}}",
- "failedToOpen": "Dosya yöneticisi açılamadı: {{error}}"
+ "failedToOpen": "Dosya yöneticisi açılamadı: {{error}}",
+ "diskFull": "Hedef disk veya sürücü dolu. Yeterli boş disk alanı yok.",
+ "fileLocked": "Dosya kilitli veya başka bir işlem tarafından kullanılıyor.",
+ "readOnly": "Hedef dosya sistemi salt okunur veya yazma korumalı."
},
"rclone": {
"unsupportedPlatform": "Desteklenmeyen platform",
- "downloadError": "Rclone indirilirken bilinmeyen hata",
+ "downloadCancelled": "İndirme kullanıcı tarafından iptal edildi",
"mountPluginInstallFailed": "Eklenti kurulumu başarısız: {{error}}",
"mountPluginVerificationFailed": "Kurulum başarılı oldu ancak doğrulama başarısız oldu. Yeniden başlatma gerekebilir.",
"configEncrypted": "Yapılandırma şifrelenmiş ve şifre sağlanmadı",
@@ -2654,14 +2764,8 @@
"rcloneError": "Rclone hatası: {{error}}"
},
"backup": {
- "unknownFormat": "Bilinmeyen yedekleme formatı",
- "integrityFailed": "Bütünlük kontrolü başarısız! Yedekleme bozuk olabilir.",
- "encryptedPasswordRequired": "Bu yedekleme şifrelenmiş. Şifre gerekli.",
"unsupportedArchive": "Desteklenmeyen arşiv türü. .rcman dosyası olmalıdır",
"invalidArchive": "Geçersiz yedekleme arşivi biçimi",
- "manifestParseFailed": "Yedekleme bildirimi ayrıştırılamadı: {{error}}",
- "missingManifest": "Arşivde yedekleme bildirimi eksik",
- "openFailed": "Yedekleme arşivi açılamadı: {{error}}",
"restoreFailed": "Yedekleme geri yükleme başarısız oldu: {{error}}",
"secretRequirePassword": "Bu yedekleme gizli bir anahtarla korunuyor ve şifre gerektiriyor"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "İş bilgisi bulunamadı",
"monitoringFailed": "İş izlenirken çok fazla hata oluştu: {{error}}",
- "executionFailed": "İş yürütme başarısız: {{error}}"
+ "executionFailed": "İş yürütme başarısız: {{error}}",
+ "corruptedTransfer": "Aktarım sırasında dosya bozuldu veya doğrulama toplamı uyuşmadı."
},
"cache": {
"fetchRemotesFailed": "Uzak bağlantılar alınamadı",
@@ -2695,12 +2800,14 @@
"automationNotFound": "Otomasyon bulunamadı"
},
"system": {
- "themeSetFailed": "Uygulama teması ayarlanamadı: {{error}}",
- "unlockFailed": "Kilit açma başarısız: {{error}}",
- "killFailed": "İşlem sonlandırılamadı: {{error}}"
+ "unlockFailed": "Kilit açma başarısız: {{error}}"
},
"remote": {
- "configFailed": "Uzak bağlantı yapılandırılamadı: {{error}}"
+ "configFailed": "Uzak bağlantı yapılandırılamadı: {{error}}",
+ "authExpired": "Uzak bağlantı kimlik doğrulaması geçersiz veya süresi dolmuş. Lütfen bağlantıyı yeniden yetkilendirin.",
+ "quotaExceeded": "Uzak depolama API hız sınırı veya depolama kotası aşıldı. Lütfen daha sonra tekrar deneyin.",
+ "networkError": "Uzak sunucuya ulaşılamadı. Lütfen ağ bağlantınızı ve uzak bağlantı adresini kontrol edin.",
+ "notFound": "Hedef dizin veya dosya uzak sunucuda bulunamadı."
},
"updater": {
"noPending": "Bekleyen güncelleme yok",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "Tüm ayarlar sıfırlanamadı: {{error}}",
"eventEmitFailed": "Ayarlar olayı gönderilemedi: {{error}}",
"subSettingsFailed": "Alt ayarlar alınamadı: {{error}}",
- "notFound": "'{{name}}' için ayarlar bulunamadı",
"deleteFailed": "Uzak bağlantı ayarları silinemedi: {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "URL Kopyala [{{active}}/{{total}}]",
"archivecreateCount": "Arşivle [{{active}}/{{total}}]",
"serveCount": "Sunucu [{{active}}/{{total}}]",
+ "quickRunsCount": "Hızlı Çalıştırmalar [{{active}}/{{total}}]",
"tooltipDefault": "RClone Yöneticisi",
"tooltipTask": "1 İş",
"tooltipTasks": "{{count}} İş",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 Sunucu",
"tooltipServes": "{{count}} Sunucu"
},
+ "powerInhibitor": {
+ "reason": "Aktif işlemler devam ediyor: {{details}}",
+ "mounts": "{{count}} bağlantı",
+ "jobs": "{{count}} iş",
+ "serves": "{{count}} sunucu"
+ },
"notification": {
"title": {
"mountSucceeded": "Bağlantı Başarılı",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "Rclone motoruna bağlanılamadı: {{error}}",
"engineBinaryNotFound": "Rclone ikili dosyası bulunamadı, lütfen ayarları kontrol edin.",
"enginePasswordRequired": "Yapılandırma dosyasına erişmek için parola gereklidir.",
- "engineAuthFailed": "Rclone motoru ile kimlik doğrulaması başarısız oldu: {{error}}"
+ "engineAuthFailed": "Rclone motoru ile kimlik doğrulaması başarısız oldu: {{error}}",
+ "powerInhibited": "Aktif işlemler sistemin uyku moduna geçmesini engelliyor."
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "Önbelleği Temizle",
"openDevTools": "Geliştirici Araçlarını Aç",
"openDevToolsError": "Geliştirici Araçları açılamadı",
- "openDevToolsHint": "Hata ayıklamak için Geliştirici Araçlarını açın",
"cleared": "Veriler Temizlendi"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "Akışlarda ara...",
+ "toggleSearch": "Aramayı Aç/Kapat",
+ "loading": "Akışlar yükleniyor...",
+ "noResults": "Eşleşen akış bulunamadı",
+ "toggleSidebar": "Flow Kenar Çubuğunu Aç/Kapat",
+ "empty": {
+ "description": "Hızlı operasyonlar ve iş akışları ile başlamak için yeni bir quick run veya workflow oluşturun."
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Çalışma Zamanı Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "{{remote}} için yapılandırılmış hızlı işlem yok.",
+ "createForRemote": "{{remote}} için Hızlı İşlem Oluştur"
+ }
+ },
+ "tabs": {
+ "quickRun": "Hızlı Çalıştırma",
+ "workflow": "İş Akışı"
+ },
+ "builder": {
+ "placeholderTitle": "İş Akışı Oluşturucu Geliştirme Aşamasında",
+ "placeholderMessage": "Çok adımlı rclone işlem zincirleri için görsel tuval yakında kullanıma sunulacaktır.",
+ "viewRoadmap": "GitHub Yol Haritasını Görüntüle"
+ }
+ },
+ "templates": {
+ "title": "Şablonlar",
+ "presetTitle": "Hazır Ayarlar ve Şablonlar",
+ "applyPresets": "Varsayılan Hazır Ayarları Uygula",
+ "userTemplates": "Kayıtlı Kullanıcı Şablonları",
+ "saveAsTemplate": "Mevcut Ayarları Şablon Olarak Kaydet...",
+ "manageTemplates": "Şablonları Yönet...",
+ "manageTitle": "Şablonları Yönet",
+ "noUserTemplates": "Henüz kaydedilmiş özel şablon yok.",
+ "newTitle": "Yeni Şablon",
+ "templateName": "Şablon Adı",
+ "templateDesc": "Açıklama (isteğe bağlı)",
+ "selectAllKeys": "Tüm Anahtarları Seç",
+ "deselectAllKeys": "Tüm Seçimleri Kaldır",
+ "addKeyToCategory": "Kategoriye Anahtar Ekle",
+ "addKey": "Anahtar Ekle",
+ "removeKey": "Anahtarı Kaldır",
+ "deleteTemplate": "Şablonu Sil",
+ "noCatKeys": "{{category}} kategorisinde henüz ayar yapılandırılmamış.",
+ "visualView": "Görsel Denetleyici",
+ "jsonView": "JSON Düzenleyici",
+ "key": "Anahtar",
+ "value": "Değer",
+ "namePlaceholder": "Örn. Hızlı S3 Yedekleme Ayarlarım",
+ "descPlaceholder": "Bu ayarların kısa bir açıklaması...",
+ "keyPlaceholder": "Örn. dir_cache_time",
+ "valuePlaceholder": "Örn. 10m",
+ "selectedCount": "{{selected}} / {{total}} seçildi",
+ "keyCount": "{{count}} anahtar",
+ "keysCount": "{{count}} anahtar",
+ "zeroKeys": "0 anahtar",
+ "applySuccess": "\"{{name}}\" şablonu başarıyla uygulandı.",
+ "savedSuccess": "\"{{name}}\" şablonu başarıyla kaydedildi.",
+ "deletedSuccess": "Şablon başarıyla silindi."
+ },
+ "navigation": {
+ "dashboard": "Kontrol Paneli"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "İndiriliyor...",
+ "verifying": "Sağlama toplamı doğrulanıyor...",
+ "extracting": "Arşivden çıkarılıyor...",
+ "installing": "Kuruluyor...",
+ "completed": "Tamamlandı",
+ "cancelled": "İşlem iptal edildi",
+ "error": "Hata"
+ }
}
}
diff --git a/resources/i18n/uk-UA/main.json b/resources/i18n/uk-UA/main.json
index 42b6b293e..ae4d25645 100644
--- a/resources/i18n/uk-UA/main.json
+++ b/resources/i18n/uk-UA/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "Скасувати",
"save": "Зберегти",
+ "create": "Створити",
+ "show": "Показати",
+ "hide": "Сховати",
"ok": "OK",
"close": "Закрити",
- "nextStep": "Далі",
+ "next": "Далі",
"back": "Назад",
"continue": "Продовжити",
"yes": "Так",
@@ -31,7 +34,12 @@
"password": "Пароль",
"username": "Імʼя користувача",
"selectAll": "Виділити все",
- "deselectAll": "Зняти виділення"
+ "deselectAll": "Зняти виділення",
+ "viewDetails": "Докладніше",
+ "moreActions": "Інші дії",
+ "duplicate": "Дублювати",
+ "clearAll": "Очистити все",
+ "acknowledge": "Підтвердити"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "Затримка debounce",
"watcherActive": "Спостерігач активний",
"seconds": "секунд",
- "realtimeSchedule": "Спостерігач файлів у реальному часі"
+ "realtimeSchedule": "Спостерігач файлів у реальному часі",
+ "changedOnlyShort": "Лише підкаталоги",
+ "changedOnlyActive": "Лише підкаталоги",
+ "syncScope": "Область синхронізації",
+ "realtimeChangedOnly": "Моніторинг у реальному часі (Лише підкаталоги)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "Видалити",
"copyurl": "Копіювати URL",
"archivecreate": "Архівувати",
+ "cryptcheck": "Шифрована перевірка",
"serve": "Надати доступ",
"start": "Запустити",
"stop": "Зупинити"
},
"sidebar": {
+ "toggleSidebar": "Перемкнути бічну панель",
"toggleSearch": "Перемкнути рядок пошуку",
"remotes": "Віддалені сховища",
"searchPlaceholder": "Пошук сховищ...",
@@ -193,7 +207,8 @@
"used": "Використано:",
"free": "Вільно:",
"loading": "Завантаження...",
- "errorLoading": "Проблема із завантаженням даних про використання диска"
+ "errorLoading": "Проблема із завантаженням даних про використання диска",
+ "retry": "Повторити завантаження використання диска"
},
"status": {
"mounted": "Змонтовано",
@@ -296,7 +311,9 @@
"filemanager": "Файловий менеджер",
"startup": "Запуск",
"update": "Оновлення",
- "internal": "Внутрішнє"
+ "internal": "Внутрішнє",
+ "flow": "Робоча область Flow",
+ "quickrun": "Швидкий запуск"
},
"rule": {
"filters": "Фільтри",
@@ -318,7 +335,8 @@
"actionRequired": "Потрібна щонайменше одна дія.",
"noActionsHint": "Спочатку потрібно створити дію сповіщення, перш ніж призначати її правилу.",
"filtersEmptyHint": "Залиште порожнім, щоб відповідати всім подіям.",
- "scopeFilters": "Фільтри області"
+ "scopeFilters": "Фільтри області",
+ "allEvents": "Усі події"
},
"events": {
"job": "Завдання та операції з файлами",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "Назва заголовка",
"headerValue": "Значення"
- }
+ },
+ "noRulesHint": "Правила сповіщень ще не налаштовані. Створіть правило для отримання сповіщень.",
+ "noActionsHint": "Дії сповіщень ще не налаштовані. Створіть дію для доставки сповіщень."
},
"settings": {
"resetAll": {
@@ -406,17 +426,36 @@
"label": "Увімкнути значок у треї",
"description": "Показувати значок у системному треї. Також вмикає фонову службу."
},
+ "tray_icon_theme": {
+ "label": "Тема піктограми в треї",
+ "description": "Виберіть стиль піктограми для системного трею.",
+ "options": {
+ "system": "Системна (Авто монохромний)",
+ "color": "Кольоровий",
+ "monochrome_light": "Монохромний (Світлий)",
+ "monochrome_dark": "Монохромний (Темний)"
+ }
+ },
"language": {
"label": "Мова",
"description": "Мова інтерфейсу користувача. За замовчуванням використовується мова системи."
},
+ "default_view": {
+ "label": "Вигляд за замовчуванням при запуску",
+ "description": "Виберіть головний інтерфейс, що відкриватиметься при запуску програми.",
+ "options": {
+ "main_menu": "Головне меню",
+ "nautilus": "Файловий менеджер Nautilus",
+ "flow": "Робоча область Flow"
+ }
+ },
"start_on_startup": {
"label": "Запуск під час старту системи",
"description": "Автоматично запускати застосунок під час запуску системи."
},
"notifications": {
"label": "Увімкнути сповіщення",
- "description": "Показувати сповіщення про події монтування."
+ "description": "Показувати сповіщення на робочому столі про події програми (монтування, синхронізація, оновлення тощо)."
},
"restrict": {
"label": "Обмежити значення",
@@ -425,6 +464,10 @@
"standalone_dialogs": {
"label": "Відокремлені діалоги",
"description": "Відкривати діалогові вікна (модальні) в окремих нативних вікнах ОС."
+ },
+ "prevent_sleep": {
+ "label": "Запобігати сплячому режиму / вимкненню системи",
+ "description": "Забороняє перехід системи в сплячий режим та вимкнення ОС під час активних передач, монтувань або серверів."
}
},
"core": {
@@ -521,6 +564,10 @@
"label": "Розкладка панелі",
"description": "Власна конфігурація розкладки панелі."
},
+ "quick_run_layout": {
+ "label": "Розкладка швидкого запуску",
+ "description": "Власна конфігурація розкладки для огляду швидкого запуску."
+ },
"dashboard_card_variant": {
"label": "Режим показу карток сховищ",
"description": "Типовий варіант показу карток сховищ на панелях огляду.",
@@ -573,6 +620,10 @@
"generic": {
"title": "Не вдалося запустити рушій",
"subtitle": "Перегляньте журнали для деталей"
+ },
+ "auth": {
+ "title": "Потрібна автентифікація Rclone",
+ "subtitle": "Будь ласка, перевірте облікові дані або пароль конфігурації"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "Параметри",
"flags": "Flags Rclone",
"fileBrowser": "Файловий браузер",
+ "flowWorkspace": "Робоча область Flow",
"shortcuts": "Комбінації клавіш",
"about": "Про RClone Manager",
"quickRemote": "Швидке сховище",
@@ -645,11 +697,32 @@
"title": "Потрібен пароль конфігурації",
"content": "Вашу конфігурацію rclone зашифровано. Введіть пароль, щоб розблокувати її для цього сеансу."
},
+ "selectMainUi": {
+ "title": "Оберіть основний інтерфейс",
+ "content": "Оберіть бажаний макет інтерфейсу. Ви можете перемикатися між ними у будь-який час через меню або налаштування."
+ },
"ready": {
"title": "Усе готово!",
"content": "Усе налаштовано й готове до роботи. RClone Manager допоможе вам легко керувати хмарними сховищами. Натисніть «Почати», щоб розпочати."
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "Класична панель",
+ "badge": "За замовчуванням",
+ "description": "Огляд із віддаленими підключеннями, активними передачами, швидкими діями та статусом."
+ },
+ "nautilus": {
+ "title": "Файловий браузер (Nautilus)",
+ "badge": "Файловий менеджер",
+ "description": "Двопанельний файловий менеджер для навігації та передачі віддалених файлів."
+ },
+ "flow": {
+ "title": "Робочий простір Flow",
+ "badge": "Робочі процеси",
+ "description": "Інтерактивне візуальне середовище для автоматизації завдань і швидкого запуску профілів."
+ }
+ },
"installButton": {
"configuring": "Налаштування...",
"installing": "Встановлення...",
@@ -668,8 +741,6 @@
"default": "Типовий"
},
"actions": {
- "back": "Назад",
- "next": "Далі",
"installPlugin": "Встановити плагін",
"installingPlugin": "Встановлення...",
"unlock": "Розблокувати",
@@ -826,7 +897,8 @@
"actions": {
"hide": "Приховати",
"show": "Показати",
- "open": "Відкрити"
+ "open": "Відкрити",
+ "cancel": "Скасувати"
},
"overviewHeader": {
"manageBackends": "Керувати бекендами",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "Немає полів для показу в режимі JSON",
"parseError": "Невірний синтаксис JSON. Перевірте форматування.",
- "cliArgumentWithSuggestion": "Аргументи у стилі CLI (як-от «{{key}}») не підтримуються в rclone RC. Можливо, ви мали на увазі «{{suggestion}}»?",
+ "cliArgumentWithSuggestion": "Прапорець у стилі CLI «{{key}}» буде автоматично перетворено на «{{suggestion}}» під час виконання.",
"camelCaseSuggestionWarning": "Параметр «{{key}}» недійсний у цьому форматі. Можливо, ви мали на увазі «{{suggestion}}»?",
"fixSuggestion": "Змінити на «{{suggestion}}»",
"wrongBlockWarning": "Параметр(и) {{keys}} належать до блоку конфігурації «{{block}}» і можуть не працювати тут.",
@@ -986,6 +1058,10 @@
"required": "Потрібен пароль",
"remember": "Запамʼятати пароль",
"keychain": "Зберігається у системному сховищі ключів"
+ },
+ "validation": {
+ "required": "Це поле є обов'язковим.",
+ "min": "Значення має бути не менше {{val}}."
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "Застосувати патч",
"importSourcePath": "Імпортувати шлях джерела",
"importDestPath": "Імпортувати шлях призначення",
- "importMountPoint": "Імпортувати точку монтування"
+ "importMountPoint": "Імпортувати точку монтування",
+ "applyToTask": "Застосувати до завдання",
+ "appliedToast": "Успішно імпортовано параметрів: {{count}}"
},
"obscure": {
"title": "Замаскувати пароль",
@@ -1050,15 +1128,15 @@
"switchToJson": "Перемкнути на режим JSON",
"unknownTopLevelProperty": "Попередження: «{{key}}» не є стандартною властивістю верхнього рівня для цього профілю і може бути проігнорована.",
"jsonEditorInfo": {
- "sync": "Профіль Sync/Copy/Move: задайте шляхи «srcFs» і «dstFs», поля рівня профілю, а всі flags rclone розмістіть усередині «_config».",
- "bisync": "Профіль Bisync: задайте шляхи «path1» і «path2», поля рівня профілю, а всі flags rclone розмістіть усередині «_config».",
- "check": "Профіль перевірки: встановіть шляхи 'srcFs' та 'dstFs', поля рівня профілю та помістіть усі прапорці перевірки всередину '_config'.",
- "mount": "Профіль Mount: задайте шляхи «fs» і «mountPoint», «mountType», поля рівня профілю, а всі параметри монтування розмістіть усередині «mountOpt».",
- "serve": "Профіль Serve: задайте шлях «fs», «serveType», поля рівня профілю, а всі параметри надання доступу розмістіть усередині «_config».",
- "vfs": "Профіль VFS: задайте власні параметри кешування, буферизації та сумісності віртуальної файлової системи у вигляді пар «ключ-значення».",
- "filter": "Профіль Filter: задайте glob-шаблони, правила включення/виключення та параметри фільтрування файлів у вигляді пар «ключ-значення».",
- "backend": "Профіль Backend: налаштуйте розширені параметри протоколу та специфічні для сховища параметри зʼєднання у вигляді пар «ключ-значення».",
- "runtimeRemote": "Runtime Remote: задайте динамічні перевизначення зʼєднання та налаштування продуктивності у вигляді пар «ключ-значення»."
+ "sync": "Профіль Sync/Copy/Move: задайте шляхи «srcFs» і «dstFs», поля рівня профілю та прапорці rclone (вилучіть початкові «--» і замініть «-» на «_»).",
+ "bisync": "Профіль Bisync: задайте шляхи «path1» і «path2», поля рівня профілю та прапорці rclone (вилучіть початкові «--» і замініть «-» на «_»).",
+ "check": "Профіль перевірки: встановіть шляхи 'srcFs' та 'dstFs', поля рівня профілю та прапорці перевірки (вилучіть початкові «--» і замініть «-» на «_»).",
+ "mount": "Профіль Mount: задайте шляхи «fs» і «mountPoint», «mountType», поля рівня профілю та параметри монтування (вилучіть початкові «--» і замініть «-» на «_»).",
+ "serve": "Профіль Serve: задайте шлях «fs», «serveType», поля рівня профілю та параметри надання доступу (вилучіть початкові «--» і замініть «-» на «_»).",
+ "vfs": "Профіль VFS: задайте власні параметри кешування, буферизації та сумісності віртуальної файлової системи у вигляді пар «ключ-значення» (вилучіть початкові «--» і замініть «-» на «_»).",
+ "filter": "Профіль Filter: задайте glob-шаблони, правила включення/виключення та параметри фільтрування файлів у вигляді пар «ключ-значення» (вилучіть початкові «--» і замініть «-» на «_»).",
+ "backend": "Профіль Backend: налаштуйте розширені параметри протоколу та специфічні для сховища параметри зʼєднання у вигляді пар «ключ-значення» (вилучіть початкові «--» і замініть «-» на «_»).",
+ "runtimeRemote": "Runtime Remote: задайте динамічні перевизначення зʼєднання та налаштування продуктивності у вигляді пар «ключ-значення» (вилучіть початкові «--» і замініть «-» на «_»)."
},
"runtimeRemoteWarning": {
"title": "Налаштування динамічного сховища",
@@ -1139,6 +1217,10 @@
"enableWatch": "Увімкнути моніторинг файлів у реальному часі",
"watchDescription": "Стежити за змінами файлів у локальних теках-джерелах і синхронізувати зміни автоматично.",
"watchDelay": "Затримка debounce (секунди)",
+ "watchDelayHint": "Час очікування після останньої виявленої зміни перед запуском синхронізації.",
+ "watchZeroDelayWarning": "Миттєвий режим (0с) запускає синхронізацію негайно після зміни. Для великих файлів або кількох змін рекомендовано 3–5с.",
+ "watchChangedOnly": "Синхронізувати лише змінені підкаталоги",
+ "watchChangedOnlyHint": "У разі спрацьовування відстеження файлів синхронізує лише підкаталоги зі зміненими файлами замість сканування всього кореневого дерева.",
"watchRequiresLocalSource": "Моніторинг у реальному часі потребує щонайменше однієї локальної теки-джерела.",
"watchRequiresLocal": "Моніторинг у реальному часі потребує щонайменше однієї локальної теки джерела або призначення.",
"watchMixedSourcesNote": "У реальному часі відстежуватимуться лише локальні теки-джерела. Зміни у віддалених джерелах не запускатимуть синхронізацію автоматично.",
@@ -1286,6 +1368,10 @@
"title": "Першого числа місяця",
"description": "1-го числа опівночі"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "Профілі"
},
- "legacy": {
- "title": "Виявлено застарілу резервну копію",
- "description": "Цю резервну копію створено до впровадження системи профілів. Її буде відновлено до профілю «default»."
- },
"options": "Параметри відновлення",
"scope": {
"all": "Відновити все",
@@ -1512,7 +1594,9 @@
"openNative": "Відкрити у зовнішньому додатку",
"openNativeTooltip": "Відкрити у типовому зовнішньому додатку",
"openingNative": "Відкриття {{name}} у зовнішньому додатку...",
- "errorOpenNative": "Не вдалося відкрити файл у зовнішньому додатку"
+ "errorOpenNative": "Не вдалося відкрити файл у зовнішньому додатку",
+ "showRawText": "Показати вихідний текст",
+ "showPreview": "Показати попередній перегляд"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "Зупинення {{op}}...",
"stop": "Зупинити {{op}}",
"notConfigured": "Не налаштовано",
+ "serve": "Надання доступу",
"serving": "Надання доступу",
"accessibleVia": "Доступно через",
"mounting": "Монтування...",
@@ -1594,7 +1679,8 @@
"dryRun": "Пробний запуск",
"dryRunActive": "Пробний запуск активний — жодних змін не буде внесено",
"resync": "Повторна синхронізація",
- "resyncActive": "Повторна синхронізація активна — виконується повна ресинхронізація"
+ "resyncActive": "Повторна синхронізація активна — виконується повна ресинхронізація",
+ "remoteSettings": "Налаштування сховища"
},
"generalDetail": {
"automations": "Автоматизації",
@@ -1640,6 +1726,7 @@
"loadConfig": "Завантажити конфігурацію",
"exportConfig": "Експортувати конфігурацію",
"toggleBrowser": "Перемкнути файловий браузер",
+ "openFlowOverlay": "Перемкнути робочу область Flow",
"closeDialog": "Закрити вікно / скасувати дію"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "Завершення роботи",
- "message": "Зачекайте, поки застосунок безпечно завершить роботу..."
+ "message": "Зачекайте, поки застосунок безпечно завершить роботу...",
+ "confirmTitle": "Виконуються активні завдання",
+ "confirmMessage": "У Rclone Manager виконуються активні завдання (передачі: {{jobs}}, монтування: {{mounts}}, сервери: {{serves}}). Ви впевнені, що хочете зупинити все та вийти?",
+ "stopAndQuit": "Зупинити та вийти"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "Про Rclone",
"credits": "Подяки",
"legal": "Юридична інформація",
- "donate": "Підтримати",
"website": "Вебсайт",
"wiki": "Сторінка Wiki",
"reportIssues": "Повідомити про проблеми",
@@ -1959,14 +2048,6 @@
"label": "Пароль",
"placeholder": "Залиште порожнім, щоб вимкнути автентифікацію"
},
- "oauthHost": {
- "label": "Хост OAuth",
- "placeholder": "127.0.0.1",
- "description": "Хост для зʼєднання для зворотних викликів OAuth. Має бути маршрутизованою адресою — ніколи не шаблоном на кшталт 0.0.0.0. У Docker задайте доступне імʼя хоста контейнера."
- },
- "oauthPort": {
- "label": "Порт OAuth"
- },
"configPassword": {
"label": "Пароль конфігурації",
"description": "Пароль для зашифрованого файлу конфігурації"
@@ -1984,7 +2065,6 @@
"local": "Local",
"name": "Назва",
"enableAuth": "Налаштувати автентифікацію",
- "oauthSettings": "Налаштування OAuth (буде вилучено в майбутньому)",
"selectConfigFile": "Вибрати файл конфігурації",
"activeConfigPath": "Активний шлях конфігурації",
"connectionTab": "Зʼєднання",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "Якщо браузер не відкрився автоматично, скористайтеся цим посиланням для автентифікації:",
"openLink": "Відкрити посилання",
- "copyLink": "Копіювати посилання",
- "remoteFallback": "Посилання для ручного OAuth недоступне для віддалених бекендів тут. Перевірте журнали/вивід віддаленого бекенду."
+ "copyLink": "Копіювати посилання"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "Неможливо видалити профіль «{{name}}» — він використовується активними {{type}} ({{count}})",
"disabledReason": {
"inUse": "Профіль використовується запущеною операцією {{operation}}. Спочатку зупиніть її."
- }
+ },
+ "duplicate": "Дублювати профіль"
},
"buttons": {
- "back": "Назад",
- "cancel": "Скасувати",
- "create": "Створити",
- "save": "Зберегти",
- "next": "Далі",
"cleanup": "Очищення",
- "processing": "Обробка...",
- "continue": "Продовжити"
+ "processing": "Обробка..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "Не вдалося обробити інтерактивну відповідь",
"loadFailed": "Не вдалося завантажити конфігурацію сховища"
+ },
+ "profileSaved": "Профіль '{{profile}}' збережено для {{remote}}",
+ "profileSaveFailed": "Не вдалося зберегти профіль",
+ "warnings": {
+ "selectRemoteToSave": "Будь ласка, виберіть сховище для збереження профілю"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "Нова назва",
"counter": "Лічильник",
"date": "Дата",
- "extension": "Розширення"
+ "extension": "Розширення",
+ "duplicateOrInvalid": "Дубльоване або недійсне ім'я"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "Розмір значків",
- "showHidden": "Показувати приховані файли"
+ "showHidden": "Показувати приховані файли",
+ "toggleLayout": "Перемкнути макет",
+ "viewOptions": "Параметри перегляду"
},
"notifications": {
"mkdirFailed": "Не вдалося створити каталог: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "Видалити сховище"
},
"deleteRemote": {
- "title": "Підтвердження видалення",
- "message": "Справді видалити «{{name}}»? Цю дію неможливо скасувати."
+ "title": "Видалити сховище",
+ "message": "Ви впевнені, що хочете видалити '{{name}}'? Цю дію не можна скасувати.",
+ "activeOperationsTitle": "Активні виконувані операції",
+ "activeOperationsDesc": "Наступні активні операції виконуються на цьому сховищі та будуть примусово завершені:",
+ "willUnmount": "Буде розмонтовано",
+ "willStop": "Буде зупинено",
+ "willCancel": "Буде скасовано",
+ "savedProfilesTitle": "Збережені профілі ({{count}})",
+ "quickRunsTitle": "Пов'язані Quick Run ({{count}})",
+ "automationsTitle": "Заплановані автоматизації ({{count}})",
+ "types": {
+ "mount": "Точка монтування",
+ "serve": "Сервер"
+ }
},
"resetRemote": {
"title": "Скинути налаштування сховища",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "Сталася неочікувана помилка. Перегляньте журнали для деталей.",
- "openFailed": "Не вдалося відкрити {{name}}",
- "resetSettingsFailed": "Не вдалося скинути налаштування сховища",
- "deleteRemoteFailed": "Не вдалося видалити сховище"
+ "openFailed": "Не вдалося відкрити {{name}}"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "Розкладку скинуто до типової",
"toggleAutomationFailed": "Не вдалося перемкнути автоматизацію",
"showDetailed": "Показати детальні картки",
- "showCompact": "Показати компактні картки",
- "settings": "Налаштування розкладки"
+ "showCompact": "Показати компактні картки"
},
"bandwidth": {
"aria": {
@@ -2523,17 +2614,24 @@
"retry": "Повторити завантаження пропускної здатності",
"upload": "Вивантаження:",
"download": "Завантаження:",
- "total": "Усього:"
+ "total": "Усього:",
+ "unlimited": "Без обмежень (Вимк)",
+ "customPlaceholder": "Власна швидкість (напр. 10M, 10M:50M)",
+ "apply": "Застосувати"
},
"system": {
"aria": {
"loading": "Завантаження інформації про систему"
},
"loading": "Завантаження інформації про систему...",
- "status": "Стан Rclone:",
+ "status": "Стан рушія:",
+ "version": "Версія рушія:",
+ "platform": "Платформа:",
+ "pid": "ID процесу:",
+ "goVersion": "Середовище Go:",
"totalRemotes": "Усього сховищ:",
"activeJobs": "Активні завдання:",
- "memoryUsage": "Використання памʼяті:",
+ "memoryUsage": "Памʼять купи:",
"uptime": "Час роботи:",
"active": "Активно",
"inactive": "Неактивно",
@@ -2593,31 +2691,42 @@
"mount": {
"pointEmpty": "Точка монтування не може бути порожньою",
"alreadyInUse": "Точка монтування {{mountPoint}} вже використовується сховищем {{remote}}",
- "configIncomplete": "Конфігурація монтування неповна для профілю «{{profile}}»"
+ "configIncomplete": "Конфігурація монтування неповна для профілю «{{profile}}»",
+ "directoryAlreadyMounted": "Каталог монтування вже використовується. Виберіть порожню папку або ввімкніть '--allow-non-empty' у налаштуваннях профілю.",
+ "directoryNotEmpty": "Вибрана папка не порожня. Виберіть порожню папку або ввімкніть '--allow-non-empty'.",
+ "winfspMissing": "Драйвер WinFsp не встановлено. Встановіть WinFsp для монтування віртуальних дисків у Windows.",
+ "fuseMissing": "Пакет FUSE (fuse3) не встановлено в системі. Встановіть fuse3 для монтування.",
+ "macfuseMissing": "macFUSE / FUSE-T не встановлено. Встановіть macFUSE для монтування в macOS.",
+ "driveLetterInUse": "Вибрана літера диска вже використовується системою.",
+ "permissionDenied": "Відмовлено в доступі під час спроби монтування."
},
"operations": {
"configIncomplete": "Конфігурація неповна для профілю «{{profile}}»"
},
"serve": {
"parseFailed": "Не вдалося розібрати відповідь: {{error}}",
- "remoteEmpty": "Назва сховища не може бути порожньою"
+ "remoteEmpty": "Назва сховища не може бути порожньою",
+ "addressAlreadyInUse": "Вибраний порт або адреса вже використовується іншою програмою. Виберіть інший порт.",
+ "privilegedPort": "Порти нижче 1024 вимагають прав адміністратора. Виберіть порт 1024 або вище.",
+ "tlsError": "Не вдалося завантажити або розібрати SSL/TLS сертифікат.",
+ "startFailed": "Не вдалося запустити сервер: {{error}}",
+ "stopFailed": "Не вдалося зупинити сервер: {{error}}"
},
"request": {
"failed": "Запит не вдався: {{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}: {{body}}"
- },
"file": {
"driveRoot": "Неможливо вибрати корінь диска (наприклад, D:\\) як точку монтування. Виберіть або створіть підтеку.",
"folderNotEmpty": "Вибрана тека не порожня",
"invalidPath": "Невірний шлях: шлях не може бути порожнім.",
"notFound": "Шлях не існує: {{path}}",
- "failedToOpen": "Не вдалося відкрити файловий менеджер: {{error}}"
+ "failedToOpen": "Не вдалося відкрити файловий менеджер: {{error}}",
+ "diskFull": "Цільовий диск заповнений. Недостатньо вільного місця на диску.",
+ "fileLocked": "Файл заблоковано або він використовується іншим процесом.",
+ "readOnly": "Цільова файлова система доступна лише для читання або захищена від запису."
},
"rclone": {
"unsupportedPlatform": "Непідтримувана платформа",
- "downloadError": "Невідома помилка під час завантаження Rclone",
"mountPluginInstallFailed": "Не вдалося встановити плагін монтування: {{error}}",
"mountPluginVerificationFailed": "Встановлення вдалося, але перевірку не пройдено. Може знадобитися перезапуск.",
"configEncrypted": "Конфігурацію зашифровано, але пароль не надано",
@@ -2640,7 +2749,8 @@
"invalidFlags": "Виявлено невірні flags rclone: {{error}}",
"updateRemoteUnsupported": "Оновлення сховища не підтримується для цієї версії rclone",
"backupFailed": "Не вдалося створити резервну копію поточного виконуваного файлу rclone: {{error}}",
- "rcAuthFailed": "Помилка автентифікації віддаленого керування rclone: {{error}}"
+ "rcAuthFailed": "Помилка автентифікації віддаленого керування rclone: {{error}}",
+ "downloadCancelled": "Завантаження скасовано користувачем"
},
"security": {
"passwordEmpty": "Пароль не може бути порожнім",
@@ -2654,14 +2764,8 @@
"rcloneError": "Помилка Rclone: {{error}}"
},
"backup": {
- "unknownFormat": "Невідомий формат резервної копії",
- "integrityFailed": "Перевірку цілісності не пройдено! Резервну копію може бути пошкоджено.",
- "encryptedPasswordRequired": "Цю резервну копію зашифровано. Потрібен пароль.",
"unsupportedArchive": "Непідтримуваний тип архіву. Має бути файл .rcman",
"invalidArchive": "Невірний формат архіву резервної копії",
- "manifestParseFailed": "Не вдалося розібрати маніфест резервної копії: {{error}}",
- "missingManifest": "В архіві відсутній маніфест резервної копії",
- "openFailed": "Не вдалося відкрити архів резервної копії: {{error}}",
"restoreFailed": "Не вдалося відновити з резервної копії: {{error}}",
"secretRequirePassword": "Цю резервну копію захищено секретом і потрібен пароль"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "JobInfo не знайдено",
"monitoringFailed": "Забагато помилок під час моніторингу завдання: {{error}}",
- "executionFailed": "Не вдалося виконати завдання: {{error}}"
+ "executionFailed": "Не вдалося виконати завдання: {{error}}",
+ "corruptedTransfer": "Файл пошкоджено під час передачі або не збіглася контрольна сума."
},
"cache": {
"fetchRemotesFailed": "Не вдалося отримати сховища",
@@ -2695,12 +2800,14 @@
"automationNotFound": "Автоматизацію не знайдено"
},
"system": {
- "themeSetFailed": "Не вдалося встановити тему застосунку: {{error}}",
- "unlockFailed": "Не вдалося розблокувати: {{error}}",
- "killFailed": "Не вдалося завершити процес: {{error}}"
+ "unlockFailed": "Не вдалося розблокувати: {{error}}"
},
"remote": {
- "configFailed": "Не вдалося налаштувати сховище: {{error}}"
+ "configFailed": "Не вдалося налаштувати сховище: {{error}}",
+ "authExpired": "Термін дії авторизації закінчився або вона недійсна. Повторіть авторизацію сховища.",
+ "quotaExceeded": "Перевищено ліміт запитів до API або квоту дискового простору сховища. Спробуйте пізніше.",
+ "networkError": "Не вдалося зв'язатися з віддаленим сервером. Перевірте мережеве з'єднання та адресу.",
+ "notFound": "Цільовий каталог або файл не знайдено на віддаленому сховищі."
},
"updater": {
"noPending": "Немає оновлень в очікуванні",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "Не вдалося скинути всі налаштування: {{error}}",
"eventEmitFailed": "Не вдалося надіслати подію налаштувань: {{error}}",
"subSettingsFailed": "Не вдалося отримати під-налаштування: {{error}}",
- "notFound": "Налаштування для «{{name}}» не знайдено",
"deleteFailed": "Не вдалося видалити налаштування сховища: {{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "Копіювати URL [{{active}}/{{total}}]",
"archivecreateCount": "Архівувати [{{active}}/{{total}}]",
"serveCount": "Роздача [{{active}}/{{total}}]",
+ "quickRunsCount": "Швидкі запуски [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "1 завдання",
"tooltipTasks": "Завдань: {{count}}",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 роздача",
"tooltipServes": "Роздач: {{count}}"
},
+ "powerInhibitor": {
+ "reason": "Виконуються активні операції: {{details}}",
+ "mounts": "{{count}} монтування(нь)",
+ "jobs": "{{count}} завдання(нь)",
+ "serves": "{{count}} сервер(ів)"
+ },
"notification": {
"title": {
"mountSucceeded": "Монтування успішне",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "Не вдалося підключитися до рушія rclone: {{error}}",
"engineBinaryNotFound": "Виконуваний файл Rclone не знайдено, перевірте налаштування.",
"enginePasswordRequired": "Для доступу до файлу конфігурації потрібен пароль.",
- "engineAuthFailed": "Не вдалося автентифікуватися в двигуні rclone: {{error}}"
+ "engineAuthFailed": "Не вдалося автентифікуватися в двигуні rclone: {{error}}",
+ "powerInhibited": "Активні операції запобігають переходу системи в режим сну."
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "Очистити кеш",
"openDevTools": "Відкрити інструменти розробника",
"openDevToolsError": "Не вдалося відкрити DevTools",
- "openDevToolsHint": "Відкрити DevTools для налагодження",
"cleared": "Дані очищено"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "Пошук потоків...",
+ "toggleSearch": "Перемкнути пошук",
+ "loading": "Завантаження потоків...",
+ "noResults": "Немає відповідних потоків",
+ "toggleSidebar": "Перемкнути бічну панель Flow",
+ "empty": {
+ "description": "Створіть швидкий запуск або робочий процес для швидких операцій та конвеєрів."
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "Для {{remote}} не налаштовано швидких запусків.",
+ "createForRemote": "Створити швидкий запуск для {{remote}}"
+ }
+ },
+ "tabs": {
+ "quickRun": "Швидкий запуск",
+ "workflow": "Робочий процес"
+ },
+ "builder": {
+ "placeholderTitle": "Конструктор робочих процесів у розробці",
+ "placeholderMessage": "Візуальне полотно для багатоетапних конвеєрів rclone незабаром з'явиться.",
+ "viewRoadmap": "Переглянути план розвитку на GitHub"
+ }
+ },
+ "templates": {
+ "title": "Шаблони",
+ "presetTitle": "Пресети та шаблони",
+ "applyPresets": "Застосувати типові пресети",
+ "userTemplates": "Збережені шаблони користувача",
+ "saveAsTemplate": "Зберегти поточні налаштування як шаблон...",
+ "manageTemplates": "Керування шаблонами...",
+ "manageTitle": "Керування шаблонами",
+ "noUserTemplates": "Немає збережених власних шаблонів.",
+ "newTitle": "Новий шаблон",
+ "templateName": "Назва шаблону",
+ "templateDesc": "Опис (необов'язково)",
+ "selectAllKeys": "Вибрати всі ключі",
+ "deselectAllKeys": "Зняти вибір з усіх ключів",
+ "addKeyToCategory": "Додати ключ до категорії",
+ "addKey": "Додати ключ",
+ "removeKey": "Видалити ключ",
+ "deleteTemplate": "Видалити шаблон",
+ "noCatKeys": "У категорії {{category}} ще немає налаштувань.",
+ "visualView": "Візуальний інспектор",
+ "jsonView": "Редактор JSON",
+ "key": "Ключ",
+ "value": "Значення",
+ "namePlaceholder": "напр., Мої швидкі налаштування резервного копіювання S3",
+ "descPlaceholder": "Короткий опис цих налаштувань...",
+ "keyPlaceholder": "напр., dir_cache_time",
+ "valuePlaceholder": "напр., 10m",
+ "selectedCount": "{{selected}} / {{total}} вибрано",
+ "keyCount": "{{count}} ключ",
+ "keysCount": "{{count}} ключів",
+ "zeroKeys": "0 ключів",
+ "applySuccess": "Шаблон \"{{name}}\" успішно застосовано.",
+ "savedSuccess": "Шаблон \"{{name}}\" успішно збережено.",
+ "deletedSuccess": "Шаблон успішно видалено."
+ },
+ "navigation": {
+ "dashboard": "Панель керування"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "Завантаження...",
+ "verifying": "Перевірка контрольної суми...",
+ "extracting": "Видобування архіву...",
+ "installing": "Встановлення...",
+ "completed": "Завершено",
+ "cancelled": "Операцію скасовано",
+ "error": "Помилка"
+ }
}
}
diff --git a/resources/i18n/zh-CN/main.json b/resources/i18n/zh-CN/main.json
index c3d866e61..2ff41277c 100644
--- a/resources/i18n/zh-CN/main.json
+++ b/resources/i18n/zh-CN/main.json
@@ -2,9 +2,12 @@
"common": {
"cancel": "取消",
"save": "保存",
+ "create": "创建",
+ "show": "显示",
+ "hide": "隐藏",
"ok": "确定",
"close": "关闭",
- "nextStep": "下一步",
+ "next": "下一步",
"back": "返回",
"continue": "继续",
"yes": "是",
@@ -31,7 +34,12 @@
"password": "密码",
"username": "用户名",
"selectAll": "全选",
- "deselectAll": "取消全选"
+ "deselectAll": "取消全选",
+ "viewDetails": "查看详情",
+ "moreActions": "更多操作",
+ "duplicate": "复制",
+ "clearAll": "清除全部",
+ "acknowledge": "确认"
},
"remoteConfig": {
"pathStatus": {
@@ -145,7 +153,11 @@
"debounce": "防抖延迟",
"watcherActive": "监控器处于活动状态",
"seconds": "秒",
- "realtimeSchedule": "实时文件监控"
+ "realtimeSchedule": "实时文件监控",
+ "changedOnlyShort": "仅子目录",
+ "changedOnlyActive": "仅子目录",
+ "syncScope": "同步范围",
+ "realtimeChangedOnly": "实时监控(仅子目录)"
}
},
"actions": {
@@ -158,11 +170,13 @@
"delete": "删除",
"copyurl": "复制 URL",
"archivecreate": "归档",
+ "cryptcheck": "加密检查",
"serve": "服务",
"start": "启动",
"stop": "停止"
},
"sidebar": {
+ "toggleSidebar": "切换侧边栏",
"toggleSearch": "显示/隐藏搜索栏",
"remotes": "远程存储",
"searchPlaceholder": "搜索远程存储...",
@@ -193,7 +207,8 @@
"used": "已用:",
"free": "可用:",
"loading": "加载中...",
- "errorLoading": "加载磁盘使用情况时出错"
+ "errorLoading": "加载磁盘使用情况时出错",
+ "retry": "重试加载磁盘使用情况"
},
"status": {
"mounted": "已挂载",
@@ -296,7 +311,9 @@
"filemanager": "文件管理器",
"startup": "启动",
"update": "更新",
- "internal": "内部"
+ "internal": "内部",
+ "flow": "Flow 工作区",
+ "quickrun": "快速运行"
},
"rule": {
"filters": "过滤器",
@@ -318,7 +335,8 @@
"actionRequired": "至少需要一个操作。",
"noActionsHint": "您需要先创建一个警报操作,然后才能将其分配给规则。",
"filtersEmptyHint": "留空以匹配所有事件。",
- "scopeFilters": "范围过滤器"
+ "scopeFilters": "范围过滤器",
+ "allEvents": "所有事件"
},
"events": {
"job": "任务与文件操作",
@@ -390,7 +408,9 @@
"slack": "Slack",
"headerKey": "请求头名称",
"headerValue": "值"
- }
+ },
+ "noRulesHint": "尚未配置警报规则。创建规则以接收通知。",
+ "noActionsHint": "尚未配置警报操作。创建操作以定义警报的发送方式。"
},
"settings": {
"resetAll": {
@@ -406,17 +426,36 @@
"label": "启用托盘图标",
"description": "在系统托盘显示图标,同时启用后台服务"
},
+ "tray_icon_theme": {
+ "label": "托盘图标主题",
+ "description": "选择系统托盘的图标样式。",
+ "options": {
+ "system": "跟随系统 (自动单色)",
+ "color": "彩色",
+ "monochrome_light": "单色 (浅色)",
+ "monochrome_dark": "单色 (深色)"
+ }
+ },
"language": {
"label": "语言",
"description": "界面语言,默认使用系统语言"
},
+ "default_view": {
+ "label": "默认启动视图",
+ "description": "选择启动应用时要打开的主界面视图。",
+ "options": {
+ "main_menu": "主菜单",
+ "nautilus": "Nautilus 文件浏览器",
+ "flow": "Flow 工作区"
+ }
+ },
"start_on_startup": {
"label": "开机自启",
"description": "系统启动时自动运行本应用"
},
"notifications": {
"label": "启用通知",
- "description": "挂载相关事件显示通知"
+ "description": "显示应用程序事件(挂载、同步、更新等)的桌面通知。"
},
"restrict": {
"label": "限制敏感值",
@@ -425,6 +464,10 @@
"standalone_dialogs": {
"label": "独立窗口对话框",
"description": "在独立的系统原生窗口中打开对话框(模态框)。"
+ },
+ "prevent_sleep": {
+ "label": "防止系统睡眠 / 关机",
+ "description": "在活动传输、挂载或服务运行时禁止系统休眠和操作系统关机。"
}
},
"core": {
@@ -521,6 +564,10 @@
"label": "仪表盘布局",
"description": "仪表盘自定义布局配置"
},
+ "quick_run_layout": {
+ "label": "快速运行布局",
+ "description": "快速运行概览自定义布局配置"
+ },
"dashboard_card_variant": {
"label": "卡片显示模式",
"description": "以紧凑或详细模式显示仪表板卡片",
@@ -573,6 +620,10 @@
"generic": {
"title": "引擎启动失败",
"subtitle": "请查看日志获取详细信息"
+ },
+ "auth": {
+ "title": "需要 Rclone 身份验证",
+ "subtitle": "请检查您的凭据或配置密码"
}
}
},
@@ -611,6 +662,7 @@
"preferences": "偏好设置",
"flags": "Rclone 标志",
"fileBrowser": "文件浏览器",
+ "flowWorkspace": "Flow 工作区",
"shortcuts": "快捷键",
"about": "关于 RClone Manager",
"quickRemote": "快速远程存储",
@@ -645,11 +697,32 @@
"title": "需要配置密码",
"content": "你的 Rclone 配置已加密,请输入密码以解锁本次会话。"
},
+ "selectMainUi": {
+ "title": "选择首选主界面",
+ "content": "选择你喜欢的工作区界面布局。你可以随时通过菜单或设置切换界面。"
+ },
"ready": {
"title": "准备就绪!",
"content": "一切已配置完成,可开始使用。RClone Manager 将帮你轻松管理云存储。点击“开始使用”进入。"
}
},
+ "uiOptions": {
+ "main_menu": {
+ "title": "经典控制台",
+ "badge": "默认",
+ "description": "包含远程连接、传输监控、快捷操作和系统状态的标签页总览。"
+ },
+ "nautilus": {
+ "title": "文件浏览器 (Nautilus)",
+ "badge": "文件管理器",
+ "description": "双面板文件管理界面,专门用于浏览和传输远程文件。"
+ },
+ "flow": {
+ "title": "Flow 工作区",
+ "badge": "工作流",
+ "description": "交互式可视化工作区,用于编排自动化任务与快捷运行。"
+ }
+ },
"installButton": {
"configuring": "正在配置...",
"installing": "正在安装...",
@@ -668,8 +741,6 @@
"default": "默认"
},
"actions": {
- "back": "返回",
- "next": "下一步",
"installPlugin": "安装插件",
"installingPlugin": "正在安装...",
"unlock": "解锁",
@@ -826,7 +897,8 @@
"actions": {
"hide": "隐藏",
"show": "显示",
- "open": "打开"
+ "open": "打开",
+ "cancel": "取消"
},
"overviewHeader": {
"manageBackends": "管理后端",
@@ -972,7 +1044,7 @@
"jsonEditor": {
"noFields": "JSON 模式下没有可显示的字段",
"parseError": "JSON 语法错误,请检查格式。",
- "cliArgumentWithSuggestion": "rclone RC 不支持命令行(CLI)参数(如 '{{key}}')。您是指 '{{suggestion}}' 吗?",
+ "cliArgumentWithSuggestion": "命令行(CLI)参数 '{{key}}' 将在执行时自动映射为 '{{suggestion}}'。",
"camelCaseSuggestionWarning": "选项 '{{key}}' 在此格式下无效。您是指 '{{suggestion}}' 吗?",
"fixSuggestion": "更改为 '{{suggestion}}'",
"wrongBlockWarning": "选项 {{keys}} 属于 '{{block}}' 配置块,在此处可能无法正常工作。",
@@ -986,6 +1058,10 @@
"required": "密码为必填项",
"remember": "记住密码",
"keychain": "存储在系统钥匙串中"
+ },
+ "validation": {
+ "required": "此字段是必需的。",
+ "min": "值必须至少为 {{val}}。"
}
},
"wizards": {
@@ -1020,7 +1096,9 @@
"applyPatch": "应用补丁",
"importSourcePath": "导入源路径",
"importDestPath": "导入目标路径",
- "importMountPoint": "导入挂载点"
+ "importMountPoint": "导入挂载点",
+ "applyToTask": "应用到任务",
+ "appliedToast": "已成功导入 {{count}} 个配置项"
},
"obscure": {
"title": "混淆密码",
@@ -1050,15 +1128,15 @@
"switchToJson": "切换到 JSON 模式",
"unknownTopLevelProperty": "警告:'{{key}}' 不是此配置文件的标准顶级属性,可能会被忽略。",
"jsonEditorInfo": {
- "sync": "同步/复制/移动配置文件:设置 'srcFs' 和 'dstFs' 路径及配置文件级字段,并将所有 rclone 标志放置在 '_config' 中。",
- "bisync": "双向同步 (Bisync) 配置文件:设置 'path1' 和 'path2' 路径及配置文件级字段,并将所有 rclone 标志放置在 '_config' 中。",
- "check": "检查配置文件:设置 “srcFs” 和 “dstFs” 路径、配置文件级别的字段,并将所有检查参数放在 “_config” 内部。",
- "mount": "挂载 (Mount) 配置文件:设置 'fs' 和 'mountPoint' 路径、'mountType' 及配置文件级字段,并将所有挂载选项放置在 'mountOpt' 中。",
- "serve": "服务 (Serve) 配置文件:设置 'fs' 路径、'serveType' 及配置文件级字段,并将所有服务选项放置在 '_config' 中。",
- "vfs": "VFS 配置文件:以键值对形式设置自定义虚拟文件系统(VFS)缓存、缓冲和兼容性选项。",
- "filter": "过滤配置文件:以键值对形式设置通配符模式、包含/排除规则以及文件过滤选项。",
- "backend": "后端配置文件:以键值对形式配置高级协议选项和特定远程存储的连接设置。",
- "runtimeRemote": "运行时远程存储:以键值对形式设置动态连接覆盖及性能调整项。"
+ "sync": "同步/复制/移动配置文件:设置 'srcFs' 和 'dstFs' 路径、配置文件级字段及 rclone 标志(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "bisync": "双向同步 (Bisync) 配置文件:设置 'path1' 和 'path2' 路径、配置文件级字段及 rclone 标志(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "check": "检查配置文件:设置 'srcFs' 和 'dstFs' 路径、配置文件级字段及检查参数(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "mount": "挂载 (Mount) 配置文件:设置 'fs' 和 'mountPoint' 路径、'mountType'、配置文件级字段及挂载选项(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "serve": "服务 (Serve) 配置文件:设置 'fs' 路径、'serveType'、配置文件级字段及服务选项(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "vfs": "VFS 配置文件:以键值对形式设置自定义虚拟文件系统(VFS)缓存、缓冲和兼容性选项(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "filter": "过滤配置文件:以键值对形式设置通配符模式、包含/排除规则以及文件过滤选项(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "backend": "后端配置文件:以键值对形式配置高级协议选项和特定远程存储的连接设置(移除前导 '--' 并将 '-' 替换为 '_')。",
+ "runtimeRemote": "运行时远程存储:以键值对形式设置动态连接覆盖及性能调整项(移除前导 '--' 并将 '-' 替换为 '_')。"
},
"runtimeRemoteWarning": {
"title": "运行时远程设置",
@@ -1139,6 +1217,10 @@
"enableWatch": "启用实时文件监控",
"watchDescription": "监控本地源目录的文件修改并自动同步更改。",
"watchDelay": "防抖延迟(秒)",
+ "watchDelayHint": "在触发同步之前,检测到最后一次更改后的等待时间。",
+ "watchZeroDelayWarning": "即时模式(0秒)在发生更改时立即触发同步。对于大文件或多次编辑,建议设置 3–5 秒以确保写入完成。",
+ "watchChangedOnly": "仅同步已更改的子目录",
+ "watchChangedOnlyHint": "当由文件监视器触发时,仅同步包含已修改文件的子目录,而不是扫描完整的根目录树。",
"watchRequiresLocalSource": "实时监控需要至少一个本地源目录。",
"watchRequiresLocal": "实时监控需要至少一个本地源或目标目录。",
"watchMixedSourcesNote": "系统仅会实时监控本地源目录。远程源目录中的更改不会自动触发同步。",
@@ -1286,6 +1368,10 @@
"title": "每月1号",
"description": "每月1号午夜执行"
}
+ },
+ "presets": {
+ "applied": "Default presets applied successfully",
+ "noRemoteSelected": "Please select a remote first"
}
},
"backup": {
@@ -1321,10 +1407,6 @@
"profiles": {
"title": "配置文件"
},
- "legacy": {
- "title": "检测到旧版备份",
- "description": "此备份创建于配置文件系统上线之前,将恢复至 default 配置文件。"
- },
"options": "恢复选项",
"scope": {
"all": "恢复全部",
@@ -1512,7 +1594,9 @@
"openNative": "在外部应用中打开",
"openNativeTooltip": "在默认外部应用中打开",
"openingNative": "正在外部应用中打开 {{name}}...",
- "errorOpenNative": "在外部应用中打开文件失败"
+ "errorOpenNative": "在外部应用中打开文件失败",
+ "showRawText": "显示原始内容",
+ "showPreview": "显示预览"
}
},
"dashboard": {
@@ -1576,6 +1660,7 @@
"stopping": "正在停止 {{op}}...",
"stop": "停止 {{op}}",
"notConfigured": "未配置",
+ "serve": "服务",
"serving": "服务运行中",
"accessibleVia": "可通过以下地址访问",
"mounting": "正在挂载...",
@@ -1594,7 +1679,8 @@
"dryRun": "模拟运行",
"dryRunActive": "模拟运行已激活 — 不会进行任何更改",
"resync": "重新同步",
- "resyncActive": "重新同步已激活 — 正在执行完整重新同步"
+ "resyncActive": "重新同步已激活 — 正在执行完整重新同步",
+ "remoteSettings": "远程设置"
},
"generalDetail": {
"automations": "自动化",
@@ -1640,6 +1726,7 @@
"loadConfig": "加载配置",
"exportConfig": "导出配置",
"toggleBrowser": "显示/隐藏文件浏览器",
+ "openFlowOverlay": "切换 Flow 工作区",
"closeDialog": "关闭对话框/取消操作"
},
"categories": {
@@ -1660,7 +1747,10 @@
"app": {
"shutdown": {
"title": "正在关闭",
- "message": "请等待应用安全关闭..."
+ "message": "请等待应用安全关闭...",
+ "confirmTitle": "有正在运行的任务",
+ "confirmMessage": "Rclone Manager 有正在运行的任务({{jobs}} 个传输任务,{{mounts}} 个挂载,{{serves}} 个服务)。您确定要停止所有任务并退出吗?",
+ "stopAndQuit": "停止并退出"
}
},
"modals": {
@@ -1722,7 +1812,6 @@
"aboutRclone": "关于 Rclone",
"credits": "致谢",
"legal": "法律信息",
- "donate": "捐赠",
"website": "官方网站",
"wiki": "Wiki 页面",
"reportIssues": "报告问题",
@@ -1959,14 +2048,6 @@
"label": "密码",
"placeholder": "留空表示不进行身份验证"
},
- "oauthHost": {
- "label": "OAuth 主机",
- "placeholder": "127.0.0.1",
- "description": "用于 OAuth 回调的连接主机。必须是可路由的地址 — 绝对不能是像 0.0.0.0 这样的通配符。在 Docker 中,将其设置为容器可访问的主机名。"
- },
- "oauthPort": {
- "label": "OAuth 端口"
- },
"configPassword": {
"label": "配置密码",
"description": "加密配置文件的密码"
@@ -1984,7 +2065,6 @@
"local": "本地",
"name": "名称",
"enableAuth": "自定义身份验证",
- "oauthSettings": "OAuth 设置 (未来将被移除)",
"selectConfigFile": "选择配置文件",
"activeConfigPath": "当前使用的配置路径",
"connectionTab": "连接",
@@ -2104,8 +2184,7 @@
"oauth": {
"manualOpenPrompt": "如果浏览器没有自动打开,请使用此认证链接:",
"openLink": "打开链接",
- "copyLink": "复制链接",
- "remoteFallback": "此处无法为远程后端提供手动 OAuth 链接。请检查远程后端日志/输出。"
+ "copyLink": "复制链接"
},
"remoteConfig": {
"aria": {
@@ -2154,17 +2233,12 @@
"inUseWarning": "无法删除配置文件 \"{{name}}\" - 正被 {{count}} 个活动 {{type}} 使用",
"disabledReason": {
"inUse": "配置文件正在被运行中的 {{operation}} 使用,请先停止它。"
- }
+ },
+ "duplicate": "复制配置文件"
},
"buttons": {
- "back": "上一步",
- "cancel": "取消",
- "create": "创建",
- "save": "保存",
- "next": "下一步",
"cleanup": "清理中",
- "processing": "处理中...",
- "continue": "继续"
+ "processing": "处理中..."
},
"editMode": {
"sections": {
@@ -2179,6 +2253,11 @@
"errors": {
"interactiveProcessingFailed": "处理交互式响应失败",
"loadFailed": "加载远程配置失败"
+ },
+ "profileSaved": "已为 {{remote}} 保存配置文件“{{profile}}”",
+ "profileSaveFailed": "保存配置文件失败",
+ "warnings": {
+ "selectRemoteToSave": "请选择要保存配置文件的远程"
}
},
"rcloneFlags": {
@@ -2360,7 +2439,8 @@
"newName": "新名称",
"counter": "计数器",
"date": "日期",
- "extension": "扩展名"
+ "extension": "扩展名",
+ "duplicateOrInvalid": "重复或无效的名称"
}
},
"errors": {
@@ -2431,7 +2511,9 @@
},
"view": {
"iconSize": "图标大小",
- "showHidden": "显示隐藏文件"
+ "showHidden": "显示隐藏文件",
+ "toggleLayout": "切换布局",
+ "viewOptions": "视图选项"
},
"notifications": {
"mkdirFailed": "创建目录失败: {{path}}",
@@ -2473,8 +2555,20 @@
"deleteRemote": "删除远程存储"
},
"deleteRemote": {
- "title": "删除确认",
- "message": "确定要删除 '{{name}}' 吗?此操作无法撤销。"
+ "title": "删除远程存储",
+ "message": "您确定要删除“{{name}}”吗?此操作无法撤消。",
+ "activeOperationsTitle": "正在运行的活动操作",
+ "activeOperationsDesc": "以下活动操作当前正在此远程存储上运行,将被强制终止:",
+ "willUnmount": "将卸载",
+ "willStop": "将停止",
+ "willCancel": "将取消",
+ "savedProfilesTitle": "已保存的配置 ({{count}})",
+ "quickRunsTitle": "关联的快捷运行 ({{count}})",
+ "automationsTitle": "计划的自动化 ({{count}})",
+ "types": {
+ "mount": "挂载点",
+ "serve": "服务"
+ }
},
"resetRemote": {
"title": "重置远程存储设置",
@@ -2485,9 +2579,7 @@
},
"errors": {
"generic": "发生意外错误。请检查日志获取更多详细信息。",
- "openFailed": "打开 {{name}} 失败",
- "resetSettingsFailed": "重置远程存储设置失败",
- "deleteRemoteFailed": "删除远程存储失败"
+ "openFailed": "打开 {{name}} 失败"
}
},
"transfer": {
@@ -2511,8 +2603,7 @@
"resetSuccess": "布局已恢复默认",
"toggleAutomationFailed": "切换自动化状态失败",
"showDetailed": "显示详细卡片",
- "showCompact": "显示紧凑卡片",
- "settings": "布局设置"
+ "showCompact": "显示紧凑卡片"
},
"bandwidth": {
"aria": {
@@ -2523,17 +2614,24 @@
"retry": "重试加载带宽",
"upload": "上传:",
"download": "下载:",
- "total": "总计:"
+ "total": "总计:",
+ "unlimited": "无限制 (关闭)",
+ "customPlaceholder": "自定义速率(如 10M, 10M:50M)",
+ "apply": "应用"
},
"system": {
"aria": {
"loading": "正在加载系统信息"
},
"loading": "正在加载系统信息...",
- "status": "Rclone 状态:",
+ "status": "引擎状态:",
+ "version": "引擎版本:",
+ "platform": "平台:",
+ "pid": "进程 ID:",
+ "goVersion": "Go 运行时:",
"totalRemotes": "远程存储总数:",
"activeJobs": "活动任务数:",
- "memoryUsage": "内存使用率:",
+ "memoryUsage": "堆内存:",
"uptime": "运行时间:",
"active": "活动",
"inactive": "未活动",
@@ -2593,31 +2691,42 @@
"mount": {
"pointEmpty": "挂载点不能为空",
"alreadyInUse": "挂载点 {{mountPoint}} 已被远程存储 {{remote}} 使用",
- "configIncomplete": "配置文件 '{{profile}}' 的挂载配置不完整"
+ "configIncomplete": "配置文件 '{{profile}}' 的挂载配置不完整",
+ "directoryAlreadyMounted": "挂载目录已被占用。请选择空文件夹或在配置文件中启用 '--allow-non-empty'。",
+ "directoryNotEmpty": "所选文件夹非空。请选择空文件夹或启用 '--allow-non-empty'。",
+ "winfspMissing": "未安装 WinFsp。在 Windows 上挂载虚拟驱动器需要安装 WinFsp。",
+ "fuseMissing": "系统未安装 FUSE (fuse3)。请安装 fuse3 以启用挂载功能。",
+ "macfuseMissing": "系统未安装 macFUSE / FUSE-T。在 macOS 上挂载需要安装 macFUSE。",
+ "driveLetterInUse": "所选盘符已被系统占用。",
+ "permissionDenied": "尝试挂载时权限不足。"
},
"operations": {
"configIncomplete": "配置文件 '{{profile}}' 配置不完整"
},
"serve": {
"parseFailed": "解析响应失败:{{error}}",
- "remoteEmpty": "远程存储名称不能为空"
+ "remoteEmpty": "远程存储名称不能为空",
+ "addressAlreadyInUse": "所选端口或地址已被其他程序占用。请更换端口。",
+ "privilegedPort": "1024 以下的端口需要管理员权限。请选择 1024 或更高的端口。",
+ "tlsError": "加载或解析 SSL/TLS 证书失败。",
+ "startFailed": "启动服务失败:{{error}}",
+ "stopFailed": "停止服务失败:{{error}}"
},
"request": {
"failed": "请求失败:{{error}}"
},
- "http": {
- "error": "HTTP/S {{status}}:{{body}}"
- },
"file": {
"driveRoot": "不能选择磁盘根目录(如 D:\\)作为挂载点,请选择或创建子文件夹。",
"folderNotEmpty": "所选文件夹非空",
"invalidPath": "路径无效:路径不能为空。",
"notFound": "路径不存在:{{path}}",
- "failedToOpen": "打开文件管理器失败:{{error}}"
+ "failedToOpen": "打开文件管理器失败:{{error}}",
+ "diskFull": "目标磁盘空间不足。",
+ "fileLocked": "文件当前已被锁定或被其他进程占用。",
+ "readOnly": "目标文件系统为只读或受写保护。"
},
"rclone": {
"unsupportedPlatform": "不支持的平台",
- "downloadError": "下载 Rclone 时发生未知错误",
"mountPluginInstallFailed": "安装挂载插件失败: {{error}}",
"mountPluginVerificationFailed": "安装成功但验证失败。可能需要重新启动。",
"configEncrypted": "配置已加密,未提供密码",
@@ -2640,7 +2749,8 @@
"invalidFlags": "检测到无效的 rclone 标志: {{error}}",
"updateRemoteUnsupported": "此 rclone 版本不支持远程更新",
"backupFailed": "备份当前 rclone 二进制文件失败:{{error}}",
- "rcAuthFailed": "Rclone 远程控制身份验证失败:{{error}}"
+ "rcAuthFailed": "Rclone 远程控制身份验证失败:{{error}}",
+ "downloadCancelled": "用户已取消下载"
},
"security": {
"passwordEmpty": "密码不能为空",
@@ -2654,14 +2764,8 @@
"rcloneError": "Rclone 错误:{{error}}"
},
"backup": {
- "unknownFormat": "未知备份格式",
- "integrityFailed": "完整性校验失败!备份可能已损坏。",
- "encryptedPasswordRequired": "备份已加密,需要密码。",
"unsupportedArchive": "不支持的压缩包类型,必须是 .rcman 文件",
"invalidArchive": "无效的备份存档格式",
- "manifestParseFailed": "解析备份清单失败: {{error}}",
- "missingManifest": "存档中缺少备份清单",
- "openFailed": "打开备份存档失败: {{error}}",
"restoreFailed": "备份恢复失败: {{error}}",
"secretRequirePassword": "此备份受密码保护,需要输入密码"
},
@@ -2676,7 +2780,8 @@
"job": {
"notFound": "未找到任务信息",
"monitoringFailed": "任务监控错误过多:{{error}}",
- "executionFailed": "任务执行失败:{{error}}"
+ "executionFailed": "任务执行失败:{{error}}",
+ "corruptedTransfer": "传输过程中文件损坏或校验和验证失败。"
},
"cache": {
"fetchRemotesFailed": "获取远程存储失败",
@@ -2695,12 +2800,14 @@
"automationNotFound": "未找到自动化"
},
"system": {
- "themeSetFailed": "设置应用主题失败: {{error}}",
- "unlockFailed": "解锁失败:{{error}}",
- "killFailed": "终止进程失败:{{error}}"
+ "unlockFailed": "解锁失败:{{error}}"
},
"remote": {
- "configFailed": "配置远程存储失败:{{error}}"
+ "configFailed": "配置远程存储失败:{{error}}",
+ "authExpired": "远程认证已过期或无效。请在设置中重新授权。",
+ "quotaExceeded": "远程存储 API 速率限制或配额已超限。请稍后重试。",
+ "networkError": "无法连接到远程服务器。请检查网络连接及远程地址。",
+ "notFound": "在远程上未找到目标目录或文件。"
},
"updater": {
"noPending": "暂无待处理更新",
@@ -2720,7 +2827,6 @@
"resetAllFailed": "重置所有设置失败:{{error}}",
"eventEmitFailed": "发送设置事件失败:{{error}}",
"subSettingsFailed": "获取子设置失败:{{error}}",
- "notFound": "未找到 '{{name}}' 的设置",
"deleteFailed": "删除远程存储设置失败:{{error}}"
}
},
@@ -2838,6 +2944,7 @@
"copyurlCount": "复制 URL [{{active}}/{{total}}]",
"archivecreateCount": "归档 [{{active}}/{{total}}]",
"serveCount": "服务 [{{active}}/{{total}}]",
+ "quickRunsCount": "快捷运行 [{{active}}/{{total}}]",
"tooltipDefault": "RClone Manager",
"tooltipTask": "1 个作业",
"tooltipTasks": "{{count}} 个作业",
@@ -2846,6 +2953,12 @@
"tooltipServe": "1 个服务",
"tooltipServes": "{{count}} 个服务"
},
+ "powerInhibitor": {
+ "reason": "正在运行活动操作:{{details}}",
+ "mounts": "{{count}} 个挂载",
+ "jobs": "{{count}} 个任务",
+ "serves": "{{count}} 个服务"
+ },
"notification": {
"title": {
"mountSucceeded": "挂载成功",
@@ -2919,7 +3032,8 @@
"engineConnectionFailed": "无法连接到 rclone 引擎:{{error}}",
"engineBinaryNotFound": "未找到 rclone 可执行文件,请检查您的设置。",
"enginePasswordRequired": "访问配置文件需要密码。",
- "engineAuthFailed": "无法通过 rclone 引擎身份验证:{{error}}"
+ "engineAuthFailed": "无法通过 rclone 引擎身份验证:{{error}}",
+ "powerInhibited": "正在运行的操作正在阻止系统休眠。"
}
},
"repairSheet": {
@@ -3042,7 +3156,119 @@
"clearCache": "清空缓存",
"openDevTools": "打开开发者工具",
"openDevToolsError": "打开开发者工具失败",
- "openDevToolsHint": "打开开发者工具进行调试",
"cleared": "数据已清空"
+ },
+ "flow": {
+ "title": "Flow",
+ "search": "搜索流程...",
+ "toggleSearch": "切换搜索",
+ "loading": "正在加载流程...",
+ "noResults": "未找到匹配的流程",
+ "toggleSidebar": "切换 Flow 侧边栏",
+ "empty": {
+ "description": "创建快捷运行或工作流以开始快速操作和管道。"
+ },
+ "quickRun": {
+ "title": "Quick Runs",
+ "new": "New Quick Run",
+ "badges": {
+ "scheduled": "Scheduled Task",
+ "watcher": "Folder Watcher Active",
+ "watcherChangedOnly": "Folder Watcher Active (Subdirectories only)",
+ "autostart": "Auto-Start Enabled"
+ },
+ "status": {
+ "running": "Running"
+ },
+ "detail": {
+ "configuration": "Configuration"
+ },
+ "editor": {
+ "createTitle": "Create Quick Run",
+ "editTitle": "Edit Quick Run",
+ "name": "Name",
+ "nameRequired": "Name is required",
+ "description": "Description (optional)",
+ "remote": "Remote",
+ "noRemotes": "No remotes configured",
+ "remoteRequired": "Remote is required",
+ "selectRemoteFirst": "Select a remote to view autocomplete",
+ "tabVfs": "VFS",
+ "tabFilter": "Filter",
+ "tabBackend": "Backend",
+ "tabRuntimeRemote": "Runtime Remote"
+ },
+ "actions": {
+ "start": "Start",
+ "stop": "Stop"
+ },
+ "overview": {
+ "stats": {
+ "total": "Total Quick Runs"
+ },
+ "quickLaunch": "Quick Launch",
+ "createFirst": "Create your first Quick Run to get started with fast, un-profiled operations.",
+ "noRunsForRemote": "未为 {{remote}} 配置快速运行。",
+ "createForRemote": "为 {{remote}} 创建快速运行"
+ }
+ },
+ "tabs": {
+ "quickRun": "快速运行",
+ "workflow": "工作流"
+ },
+ "builder": {
+ "placeholderTitle": "工作流构建器正在开发中",
+ "placeholderMessage": "用于多步骤 rclone 管道和条件任务链接的可视化画布即将推出。",
+ "viewRoadmap": "在 GitHub 上查看路线图"
+ }
+ },
+ "templates": {
+ "title": "模板",
+ "presetTitle": "预设与模板",
+ "applyPresets": "应用默认预设",
+ "userTemplates": "已保存的用户模板",
+ "saveAsTemplate": "将当前设置保存为模板...",
+ "manageTemplates": "管理模板...",
+ "manageTitle": "管理模板",
+ "noUserTemplates": "尚未保存自定义模板。",
+ "newTitle": "新建模板",
+ "templateName": "模板名称",
+ "templateDesc": "描述(可选)",
+ "selectAllKeys": "全选键",
+ "deselectAllKeys": "取消全选键",
+ "addKeyToCategory": "向分类添加键",
+ "addKey": "添加键",
+ "removeKey": "移除键",
+ "deleteTemplate": "删除模板",
+ "noCatKeys": "{{category}} 分类中尚未配置任何设置。",
+ "visualView": "可视化检查器",
+ "jsonView": "JSON 编辑器",
+ "key": "键",
+ "value": "值",
+ "namePlaceholder": "例如:我的快速 S3 备份设置",
+ "descPlaceholder": "这些设置的简要描述...",
+ "keyPlaceholder": "例如:dir_cache_time",
+ "valuePlaceholder": "例如:10m",
+ "selectedCount": "已选 {{selected}} / {{total}} 项",
+ "keyCount": "{{count}} 个键",
+ "keysCount": "{{count}} 个键",
+ "zeroKeys": "0 个键",
+ "applySuccess": "已成功应用模板 \"{{name}}\"。",
+ "savedSuccess": "已成功保存模板 \"{{name}}\"。",
+ "deletedSuccess": "已成功删除模板。"
+ },
+ "navigation": {
+ "dashboard": "仪表盘"
+ },
+ "provision": {
+ "stages": {
+ "downloading": "正在下载...",
+ "verifying": "正在校验哈希值...",
+ "extracting": "正在解压文件...",
+ "installing": "正在安装...",
+ "completed": "已完成",
+ "cancelled": "操作已取消",
+ "error": "错误"
+ }
}
}
diff --git a/resources/i18n/zh-CN/rclone.json b/resources/i18n/zh-CN/rclone.json
index a7e8167d5..5af170fb0 100644
--- a/resources/i18n/zh-CN/rclone.json
+++ b/resources/i18n/zh-CN/rclone.json
@@ -1207,6 +1207,10 @@
"title": "NFS 挂载",
"help": "使用 NFS 协议挂载"
},
+ "mount_type_saf": {
+ "title": "存储访问框架 (SAF)",
+ "help": "Android 原生存储访问框架挂载"
+ },
"serve_type_http": {
"title": "HTTP 服务器",
"help": "通过 HTTP 服务远程存储"
diff --git a/scripts/audit-i18n-keys.cjs b/scripts/audit-i18n-keys.cjs
index 4c8f981a6..c03dd40e9 100644
--- a/scripts/audit-i18n-keys.cjs
+++ b/scripts/audit-i18n-keys.cjs
@@ -42,7 +42,8 @@ for (const localeFile of localeFiles) {
const localeName = path.basename(path.dirname(localeFile));
const localeTree = readJson(localeFile);
const localeKeys = flattenKeys(localeTree);
- const localeMissing = localeName === 'en-US' ? englishMissingFromCode : diff(englishKeys, localeKeys);
+ const localeMissing =
+ localeName === 'en-US' ? englishMissingFromCode : diff(englishKeys, localeKeys);
const localeUnused = localeName === 'en-US' ? [] : diff(localeKeys, englishKeys);
const localeCodeUnused = findCodeUnused(localeKeys, usage);
@@ -98,7 +99,7 @@ function collectFiles(rootDir, extensions) {
}
function collectLocaleFiles(rootDir) {
- return collectFiles(rootDir, ['.json']).filter((file) => path.basename(file) === 'main.json');
+ return collectFiles(rootDir, ['.json']).filter(file => path.basename(file) === 'main.json');
}
function shouldSkipDir(name) {
@@ -175,8 +176,10 @@ function collectUsage(files, knownKeys, knownPrefixes) {
// Template literal with interpolation: `prefix.${var}.suffix`
// Extracts the prefix (before ${) as a dynamic prefix
- const tsTemplateDynamicRegex =
- /`([A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*)\.\$\{/g;
+ const tsTemplateDynamicRegex = /`([A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*)\.\$\{/g;
+
+ // Direct translate pipe regex: 'key.path' | translate
+ const translatePipeRegex = /['"`]([A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)+)['"`]\s*\|\s*translate/g;
// Dotted string literals in TS files — validated against known keys/prefixes
const tsStringLiteralRegex = /(['"])([A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)+)\1/g;
@@ -224,6 +227,20 @@ function collectUsage(files, knownKeys, knownPrefixes) {
}
if (isHtml) {
+ // Direct pipe invocations: 'key.path' | translate
+ for (const key of extractMatches(source, translatePipeRegex, 1)) {
+ frontend.add(key);
+ }
+
+ // Ternary pipe invocations: (cond ? 'key.one' : 'key.two') | translate
+ const ternaryTranslateRegex =
+ /\?\s*['"`]([A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)+)['"`]\s*:\s*['"`]([A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)+)['"`]\s*\)\s*\|\s*translate/g;
+ let ternaryMatch;
+ while ((ternaryMatch = ternaryTranslateRegex.exec(source)) !== null) {
+ if (ternaryMatch[1]) frontend.add(ternaryMatch[1]);
+ if (ternaryMatch[2]) frontend.add(ternaryMatch[2]);
+ }
+
// Dynamic prefix patterns → 'alerts.action.' + kind | translate
for (const prefix of extractMatchesNoFilter(source, htmlDynamicPrefixRegex, 1)) {
if (prefix.includes('.') && knownPrefixes.has(prefix)) {
@@ -252,6 +269,11 @@ function collectUsage(files, knownKeys, knownPrefixes) {
}
}
+ // Direct pipe invocations in inline templates
+ for (const key of extractMatches(source, translatePipeRegex, 1)) {
+ frontend.add(key);
+ }
+
// Template literal dynamic keys → extract prefix
for (const prefix of extractMatchesNoFilter(source, tsTemplateDynamicRegex, 1)) {
if (prefix.includes('.') && knownPrefixes.has(prefix)) {
@@ -297,7 +319,7 @@ function findCodeUnused(localeKeys, usageData) {
const prefixArray = [...dynamicPrefixes];
return [...localeKeys]
- .filter((key) => {
+ .filter(key => {
// If directly referenced, it's used
if (combined.has(key)) return false;
@@ -345,7 +367,7 @@ function stripRustComments(content) {
function diff(left, right) {
const rightSet = right instanceof Set ? right : new Set(right);
- return [...left].filter((item) => !rightSet.has(item)).sort();
+ return [...left].filter(item => !rightSet.has(item)).sort();
}
function printReport(reportData) {
@@ -372,10 +394,12 @@ function printReport(reportData) {
`\nTotals: missing=${missingCount}, unusedVsEnglish=${unusedCount}, unusedVsCode=${codeUnusedCount}`
);
- const hasLong =
- Object.values(reportData.locales).some(
- (l) => l.missing.length > MAX_INLINE || l.unused.length > MAX_INLINE || (l.codeUnused || []).length > MAX_INLINE
- );
+ const hasLong = Object.values(reportData.locales).some(
+ l =>
+ l.missing.length > MAX_INLINE ||
+ l.unused.length > MAX_INLINE ||
+ (l.codeUnused || []).length > MAX_INLINE
+ );
if (hasLong) {
console.log(`\nTip: Use --json for the full machine-readable report.`);
}
@@ -390,4 +414,4 @@ function printKeyList(label, keys, max) {
const remaining = keys.length - shown.length;
const suffix = remaining > 0 ? `, ... and ${remaining} more` : '';
console.log(`${label} (${keys.length}): ${shown.join(', ')}${suffix}`);
-}
\ No newline at end of file
+}
diff --git a/scripts/update-endpoints.cjs b/scripts/update-endpoints.cjs
index 86eee31e4..020c23d1f 100644
--- a/scripts/update-endpoints.cjs
+++ b/scripts/update-endpoints.cjs
@@ -2,29 +2,15 @@
/**
* update-endpoints.cjs
*
- * Regenerates endpoints.rs from a rclone `rc/list` dump (rc.json).
+ * Regenerates endpoints.rs from a rclone `rc/list` dump or live rclone rcd.
+ * Mirrors the conventions and workflow of update-flags.cjs.
*
* Usage:
- * node update-endpoints.cjs --input
+
+
+
+
+
+
+
+