-
-
Notifications
You must be signed in to change notification settings - Fork 467
opt.: docs l10n #1036
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
opt.: docs l10n #1036
Conversation
📝 WalkthroughWalkthroughAdds i18n configuration and translations to the Astro docs site, renames product references from "Flutter Server Box" to "Server Box", deletes multiple legacy English documentation pages, and adds extensive localized documentation pages (de, es, fr, ja, zh) across advanced, platforms, development, and principles sections. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (5)
🧰 Additional context used🧠 Learnings (2)📓 Common learnings📚 Learning: 2025-10-08T09:36:41.682ZApplied to files:
🪛 LanguageTooldocs/src/content/docs/de/principles/ssh.md[grammar] ~6-~6: Korrigiere das Wort (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_MULTIPLE) [style] ~16-~16: ‚Info‘ ist umgangssprachlich. (MATHE) [grammar] ~89-~89: Passe die Groß- und Kleinschreibung an (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~90-~90: Passe die Groß- und Kleinschreibung an (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~108-~108: Passe den Tippfehler an (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_OTHERCASE) [grammar] ~108-~108: Passe den Tippfehler an (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_OTHERCASE) [grammar] ~126-~126: Entferne ein Leerzeichen (QB_NEW_DE_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE) [style] ~126-~126: Möglicherweise ist es stilistisch besser, eine standardsprachliche Alternative zu benutzen. (HINTERM_MOND) [grammar] ~126-~126: Entferne ein Leerzeichen (QB_NEW_DE_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE) [grammar] ~126-~126: Ersetze das Satzzeichen (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION_PERIOD_QUESTION_MARK) [grammar] ~297-~297: Korrigiere die Fehler (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN) [grammar] ~298-~298: Passe die Groß- und Kleinschreibung an (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~298-~298: Korrigiere das Wort (QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPACE) docs/src/content/docs/es/principles/ssh.md[grammar] ~8-~8: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~32-~32: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~34-~34: Aquí puede haber un error. (QB_NEW_ES) [grammar] ~34-~34: Corrige la minúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_LOWERCASE) [grammar] ~65-~65: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~80-~80: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~82-~82: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~88-~88: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER) [grammar] ~89-~89: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER) [grammar] ~90-~90: Aquí puede haber un error. (QB_NEW_ES) [grammar] ~92-~92: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~92-~92: Aquí puede haber un error. (QB_NEW_ES) [grammar] ~101-~101: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~101-~101: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~102-~102: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~103-~103: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~104-~104: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~105-~105: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~106-~106: Aquí puede haber un error. (QB_NEW_ES) [grammar] ~108-~108: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~118-~118: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~119-~119: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~122-~122: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~122-~122: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~128-~128: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~140-~140: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~140-~140: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~140-~140: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~152-~152: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~183-~183: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~185-~185: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~210-~210: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~221-~221: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~221-~221: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~249-~249: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~251-~251: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~251-~251: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~251-~251: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~263-~263: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~276-~276: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~276-~276: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~287-~287: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~289-~289: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~291-~291: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER) [grammar] ~292-~292: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER) [grammar] ~293-~293: Aquí puede haber un error. (QB_NEW_ES) [grammar] ~295-~295: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~297-~297: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~298-~298: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE) [grammar] ~301-~301: Corrige la mayúscula. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~303-~303: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER) [grammar] ~304-~304: Cambia la palabra o signo. (QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER) [grammar] ~305-~305: Aquí puede haber un error. (QB_NEW_ES) docs/src/content/docs/fr/principles/ssh.md[grammar] ~34-~34: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~34-~34: « crée » semble plus probable dans ce contexte (QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_LOWERCASE) [grammar] ~34-~34: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~67-~67: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~101-~101: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~102-~102: Élément manquant (QB_NEW_FR_OTHER_ERROR_IDS_MISSING_OTHER) [grammar] ~103-~103: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~104-~104: Élément manquant (QB_NEW_FR_OTHER_ERROR_IDS_MISSING_OTHER) [grammar] ~105-~105: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~124-~124: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~133-~133: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~187-~187: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~201-~201: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~297-~297: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~297-~297: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~297-~297: Envisagez un remplacement (QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_SPACE_CLOSE_PARENTHESIS [grammar] ~298-~298: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~298-~298: « toutes » semble plus probable dans ce contexte (QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE) [grammar] ~298-~298: Envisagez un remplacement (QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_SPACE_ [grammar] ~299-~299: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~299-~299: Il y a peut-être une erreur ici (QB_NEW_FR) [grammar] ~303-~303: Élément manquant (QB_NEW_FR_OTHER_ERROR_IDS_MISSING_PUNCTUATION_PERIOD) [grammar] ~304-~304: Élément manquant (QB_NEW_FR_OTHER_ERROR_IDS_MISSING_PUNCTUATION_PERIOD) [grammar] ~305-~305: Il y a peut-être une erreur ici (QB_NEW_FR) docs/src/content/docs/zh/principles/ssh.md[uncategorized] ~292-~292: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:必要"地"断开 (wb4) 🔇 Additional comments (10)
✏️ Tip: You can disable this entire section by setting Comment |
Deploying serverbox with
|
| Latest commit: |
7bc53b0
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://e4384909.serverbox.pages.dev |
| Branch Preview URL: | https://lollipopkit-issue1035.serverbox.pages.dev |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of ChangesHello @lollipopkit, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request focuses on a significant enhancement to the project's documentation by implementing full localization for several languages. It involves a major overhaul of the documentation structure, transitioning from unlocalized individual files to a well-organized, language-specific directory system. Additionally, the project's branding has been updated throughout the documentation, ensuring consistency with the new 'Server Box' name. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces internationalization (i18n) to the documentation, adding support for multiple languages. The changes include configuring locales in Astro, adding translated markdown files, and updating the sidebar with translations. Additionally, the project name has been consistently updated from 'Flutter Server Box' to 'Server Box' across the documentation, and some outdated links and sections have been removed.
While the localization effort is a great improvement, I've noticed that with the removal of the 'Configuration' section, documentation for several key features like Jump Server, Backup & Restore, and Appearance seems to be missing from the new structure. Please see my detailed comment.
| @@ -17,73 +44,102 @@ export default defineConfig({ | |||
| sidebar: [ | |||
| { | |||
| label: 'Getting Started', | |||
| translations: { | |||
| zh: '开始使用', | |||
| de: 'Erste Schritte', | |||
| fr: 'Mise en route', | |||
| es: 'Primeros pasos', | |||
| ja: 'はじめに', | |||
| }, | |||
| items: [ | |||
| { label: 'Introduction', slug: 'introduction' }, | |||
| { label: 'Installation', slug: 'installation' }, | |||
| { label: 'Quick Start', slug: 'quick-start' }, | |||
| { label: 'Introduction', translations: { zh: '介绍', de: 'Einführung', fr: 'Introduction', es: 'Introducción', ja: 'はじめに' }, slug: 'introduction' }, | |||
| { label: 'Installation', translations: { zh: '安装', de: 'Installation', fr: 'Installation', es: 'Instalación', ja: 'インストール' }, slug: 'installation' }, | |||
| { label: 'Quick Start', translations: { zh: '快速开始', de: 'Schnellstart', fr: 'Démarrage rapide', es: 'Inicio rápido', ja: 'クイックスタート' }, slug: 'quick-start' }, | |||
| ], | |||
| }, | |||
| { | |||
| label: 'Features', | |||
| translations: { | |||
| zh: '特性', | |||
| de: 'Funktionen', | |||
| fr: 'Fonctionnalités', | |||
| es: 'Características', | |||
| ja: '特徴', | |||
| }, | |||
| items: [ | |||
| { label: 'Server Monitoring', slug: 'features/monitoring' }, | |||
| { label: 'Docker Management', slug: 'features/docker' }, | |||
| { label: 'Process & Services', slug: 'features/process' }, | |||
| { label: 'Command Snippets', slug: 'features/snippets' }, | |||
| { label: 'Network Tools', slug: 'features/network' }, | |||
| { label: 'PVE (Proxmox)', slug: 'features/pve' }, | |||
| ], | |||
| }, | |||
| { | |||
| label: 'Configuration', | |||
| items: [ | |||
| { label: 'Server Setup', slug: 'configuration/server' }, | |||
| { label: 'Terminal & SSH', slug: 'configuration/terminal' }, | |||
| { label: 'SFTP File Browser', slug: 'configuration/sftp' }, | |||
| { label: 'Jump Server', slug: 'configuration/jump-server' }, | |||
| { label: 'Backup & Restore', slug: 'configuration/backup' }, | |||
| { label: 'Appearance', slug: 'configuration/appearance' }, | |||
| { label: 'Localizations', slug: 'configuration/localizations' }, | |||
| { label: 'Server Monitoring', translations: { zh: '服务器监控', de: 'Server-Überwachung', fr: 'Surveillance du serveur', es: 'Monitoreo de servidor', ja: 'サーバー監視' }, slug: 'features/monitoring' }, | |||
| { label: 'Docker Management', translations: { zh: 'Docker 管理', de: 'Docker-Verwaltung', fr: 'Gestion Docker', es: 'Gestión de Docker', ja: 'Docker 管理' }, slug: 'features/docker' }, | |||
| { label: 'Process & Services', translations: { zh: '进程与服务', de: 'Prozesse & Dienste', fr: 'Processus et services', es: 'Procesos y servicios', ja: 'プロセスとサービス' }, slug: 'features/process' }, | |||
| { label: 'Command Snippets', translations: { zh: '命令片段', de: 'Befehls-Snippets', fr: 'Extraits de commande', es: 'Fragmentos de comando', ja: 'コマンドスニペット' }, slug: 'features/snippets' }, | |||
| { label: 'Network Tools', translations: { zh: '网络工具', de: 'Netzwerk-Tools', fr: 'Outils réseau', es: 'Herramientas de red', ja: 'ネットワークツール' }, slug: 'features/network' }, | |||
| { label: 'PVE (Proxmox)', translations: { zh: 'PVE (Proxmox)', de: 'PVE (Proxmox)', fr: 'PVE (Proxmox)', es: 'PVE (Proxmox)', ja: 'PVE (Proxmox)' }, slug: 'features/pve' }, | |||
| ], | |||
| }, | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change removes the 'Configuration' section from the sidebar, and the corresponding documentation files have also been deleted. While some topics like 'Terminal & SSH' and 'SFTP' have been moved to the 'How It Works' section, documentation for the following important configuration features appears to be missing entirely from the new structure:
- Server Setup
- Jump Server
- Backup & Restore
- Appearance
- Localizations
If this content has been moved to other pages, please ensure they are still easily discoverable. If the removal was intentional, it might be worth considering if this information is still valuable to users. If it was an oversight, please restore the documentation for these features.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 7
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (4)
docs/src/content/docs/principles/ssh.md (2)
36-43: Fix the invalidfinalreassignment in the code snippet.Line 38 declares
final socket, but line 42 reassigns it. Dart does not allow reassigningfinalvariables. Changefinal sockettovar socketor restructure the fallback logic to avoid reassignment.
154-156: Undefined variables in host-key storage example—inconsistent with documented format.
The documentation states the storage format as{spi.id}::{keyType}, but the code example uses undefined variables$keyIdand$keyType. Replace with${spi.id}::${key.type}or similar derived from available parameters (client,spi,key).docs/src/content/docs/features/pve.md (1)
93-96: Update PVE version requirements—documentation is significantly outdated.The documented requirement of PVE "6.x or 7.x" is no longer accurate. As of January 2026:
- PVE 7 is unsupported (security support ended July 31, 2024)
- PVE 8.x remains supported until August 31, 2026
- PVE 9.x is the latest version (released August 5, 2025)
Update the requirements to reflect supported versions: PVE 8.x and 9.x.
docs/src/content/docs/development/architecture.md (1)
68-72: Fix duplicated step number in data-flow list.Line 71 repeats “3.”; renumber to keep the sequence consistent (e.g., 3 → 4 → 5).
🤖 Fix all issues with AI agents
In `@docs/src/content/docs/de/principles/sftp.md`:
- Around line 292-305: The speedFormatted getter can divide by zero because
elapsed.inSeconds may be 0; update TransferProgress.speedFormatted to compute
elapsed as a floating-second value (using elapsed.inMilliseconds / 1000.0) and
guard against zero by falling back to a small nonzero denominator or using
transferred as the instantaneous rate when seconds == 0; change the calculation
in the speedFormatted getter (referencing TransferProgress, elapsed,
transferred, and formatSpeed) to use that guarded seconds value before calling
formatSpeed.
- Around line 199-211: The setPermissions example builds a shell command via
string interpolation (in setPermissions using ssh.exec('chmod $mode "$path"')),
which allows command injection; instead call the SSH client API in a way that
passes argv (avoid a single interpolated shell string) or properly
escape/validate the path and permissions before executing, or use the SFTP
client's chmod method returned by getSftpClient(spiId); update setPermissions to
either (1) use sftp.chmod(path, mode) or (2) use getSshClient(spiId) with an
exec/run method that accepts command and arguments (not a single shell string)
and validate/parsePermissions(permissions) output to ensure only numeric mode
bits are used.
In `@docs/src/content/docs/es/features/pve.md`:
- Line 95: Update the PVE version text that currently reads "Versión de PVE: 6.x
o 7.x" to reflect supported releases "PVE 8.x y 9.x" (update the visible string
"Versión de PVE" in docs content such as the Spanish entry and its counterparts
in other languages), and audit all localized/translated docs where the PVE
version is mentioned to replace the outdated 6.x/7.x constraint with "8.x y 9.x"
so it matches the code's version detection expecting PVE 8.0 or later.
In `@docs/src/content/docs/ja/advanced/json-settings.md`:
- Around line 14-61: Remove the obsolete serverTabUseOldUI section from the
document and update the timeout examples and description to use the correct JSON
key "timeOut" (capital O) everywhere (e.g., change {"timeout": 10} to
{"timeOut": 10}), leaving recordHistory and textFactor as-is; verify against the
StoreProperty definitions (e.g., occurrences of settingName = StoreProperty(...,
'timeOut', ...)) to ensure default, type and range values match the actual
setting.
In `@docs/src/content/docs/ja/features/pve.md`:
- Line 95: The docs currently state the supported Proxmox VE versions as the
text "**PVE バージョン**: 6.x または 7.x" — update this text to include current stable
releases (e.g., "**PVE バージョン**: 6.x、7.x、8.x、9.x" or similar phrasing) and scan
all language variants of the documentation for the same phrase and update them
consistently; ensure any related compatibility notes or requirements in
functions/sections referencing "PVE バージョン" are adjusted to reflect support for
8.x and 9.x as well.
In `@docs/src/content/docs/ja/platforms/desktop.md`:
- Around line 53-80: The keyboard shortcuts and multi-window claims in the
"キーボードショートカット" and "マルチウィンドウ" sections are inaccurate; update the docs to remove
or correct entries for the unimplemented shortcuts (remove "Cmd/Ctrl + N",
"Cmd/Ctrl + W", "Cmd/Ctrl + T") and the tab-drag-to-new-window statement, and
instead list only the confirmed shortcuts ("Cmd/Ctrl + ," for settings, "Cmd +
Q" for quit, and "Cmd + 1-9" for tab navigation) and explicitly note platform
limitations (menu/shortcut implementation present only on macOS / no
cross-platform menu support for Windows/Linux). Make the changes inside the
headings "### キーボードショートカット" and "### マルチウィンドウ" and retain the confirmed theme
entries (AMOLED, ライト/ダーク/システム).
In `@docs/src/content/docs/zh/features/pve.md`:
- Line 95: The doc currently lists "**PVE 版本**:6.x 或 7.x" which is outdated;
update that string to reflect supported Proxmox VE releases (e.g., "**PVE
版本**:8.x 或 9.x") and adjust any surrounding wording if necessary to indicate
"最新受支持版本(截至 2025)". Locate the exact markdown sentence containing "**PVE
版本**:6.x 或 7.x" in the PVE feature page and replace the version numbers with 8.x
or 9.x (or both) so the requirement accurately reflects current supported
releases.
🟡 Minor comments (44)
docs/src/content/docs/de/development/structure.md-10-23 (1)
10-23: Add a language to the fenced code block.
markdownlint flags this block for missing a language tag.🔧 Suggested fix
-``` +```text lib/ ├── core/ # Kern-Dienstprogramme und Erweiterungen ├── data/ # Datenschicht │ ├── model/ # Datenmodelle nach Funktionen │ ├── provider/ # Riverpod Provider │ └── store/ # Lokale Speicherung (Hive) ├── view/ # UI-Schicht │ ├── page/ # Hauptseiten │ └── widget/ # Wiederverwendbare Widgets ├── generated/ # Generierte Lokalisierung ├── l10n/ # Lokalisierungs-ARB-Dateien └── hive/ # Hive-Adapter</details> </blockquote></details> <details> <summary>docs/src/content/docs/fr/principles/sftp.md-10-37 (1)</summary><blockquote> `10-37`: **Add a fenced code language for the architecture block (MD040).** Markdownlint flags the ASCII diagram because the fenced block has no language. Use `text` for the diagram. <details> <summary>Proposed fix</summary> ```diff -``` +```text ┌─────────────────────────────────────────────┐ │ Couche UI SFTP │ │ - Navigateur de fichiers (distant) │ │ - Navigateur de fichiers (local) │ │ - File d'attente de transfert │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ Gestion de l'état SFTP │ │ - sftpProvider │ │ - Gestion des chemins │ │ - File d'attente d'opérations │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ Couche protocole SFTP │ │ - Sous-système SSH │ │ - Opérations sur les fichiers │ │ - Liste des répertoires │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ Transport SSH │ │ - Canal sécurisé │ │ - Streaming de données │ └─────────────────────────────────────────────┘ -``` +```docs/src/content/docs/fr/platforms/desktop.md-51-51 (1)
51-51: Avoid mixing English and French terms.The phrase "au boot" mixes English with French. Use fully French terminology such as "au démarrage" or "lors du démarrage" for consistency.
📝 Proposed fix
-- Option de démarrage automatique au boot +- Option de démarrage automatique au démarrage du systèmedocs/src/content/docs/fr/platforms/desktop.md-20-20 (1)
20-20: Grammar consistency: Use consistent verb form in bullet points.The bullet point uses the infinitive "Restaurer" while other bullets use either nouns or third-person verbs (e.g., "Mémorise" on line 19). For consistency, this should be either "Restaure la session précédente au lancement" or "Restauration de la session précédente au lancement".
📝 Proposed fix for consistency
-- Restaurer la session précédente au lancement +- Restaure la session précédente au lancementor
-- Restaurer la session précédente au lancement +- Restauration de la session précédente au lancementdocs/src/content/docs/de/platforms/desktop.md-49-49 (1)
49-49: Consider hyphenating the compound term for better German grammar.In German compound nouns that incorporate English technical terms, hyphens improve readability and conform to standard orthography. "Jump List Schnellaktionen" would be clearer as "Jump-List-Schnellaktionen".
📝 Proposed fix
-- Jump List Schnellaktionen +- Jump-List-Schnellaktionendocs/src/content/docs/de/principles/sftp.md-10-37 (1)
10-37: Specify language for the fenced code block.The ASCII architecture diagram should use a language identifier (e.g.,
text) to improve rendering and comply with markdown best practices.📝 Proposed fix
-``` +```text ┌─────────────────────────────────────────────┐ │ SFTP UI Schicht │docs/src/content/docs/de/features/pve.md-93-96 (1)
93-96: Update PVE version requirements to reflect current support.The documentation specifies PVE 6.x or 7.x, but PVE 7.x support ended on 31 July 2024 and PVE 6.x is significantly older. PVE 8.x has been available since June 2023 and is currently supported (through August 2026), with PVE 9.x released in August 2025. Update the requirements to accurately reflect that PVE 8.x or 9.x are the currently supported versions.
docs/src/content/docs/ja/features/snippets.md-40-42 (1)
40-42: Keep section headings consistent in Japanese.“### Disk Cleanup” stands out as English in an otherwise Japanese list. Consider translating it (e.g., 「ディスククリーンアップ」) for consistency.
docs/src/content/docs/zh/advanced/custom-logo.md-19-21 (1)
19-21: Add language identifiers to fenced code blocks to satisfy MD040.🔧 Suggested diff
-``` +```text https://example.com/{DIST}.png@@
-+text
https://example.com/{BRIGHT}.png@@ -``` +```text https://example.com/{DIST}-{BRIGHT}.png</details> Also applies to: 29-31, 37-39 </blockquote></details> <details> <summary>docs/src/content/docs/de/advanced/widgets.md-19-21 (1)</summary><blockquote> `19-21`: **Add a language identifier to the URL example block (MD040).** <details> <summary>🔧 Suggested diff</summary> ```diff -``` +```text https://ihr-server.com/status</details> </blockquote></details> <details> <summary>docs/src/content/docs/es/advanced/widgets.md-19-21 (1)</summary><blockquote> `19-21`: **Add a language identifier to the URL example block (MD040).** <details> <summary>🔧 Suggested diff</summary> ```diff -``` +```text https://tu-servidor.com/status</details> </blockquote></details> <details> <summary>docs/src/content/docs/ja/advanced/widgets.md-19-21 (1)</summary><blockquote> `19-21`: **Add a language identifier to the URL example block (MD040).** <details> <summary>🔧 Suggested diff</summary> ```diff -``` +```text https://your-server.com/status</details> </blockquote></details> <details> <summary>docs/src/content/docs/ja/principles/state.md-18-36 (1)</summary><blockquote> `18-36`: **Specify a language for the diagram block (MD040).** <details> <summary>🔧 Suggested diff</summary> ```diff -``` +```text ┌─────────────────────────────────────────────┐ │ UI レイヤー (Widget) │ @@ │ - ビジネスロジック │ │ - データアクセス │ └─────────────────────────────────────────────┘</details> </blockquote></details> <details> <summary>docs/src/content/docs/es/development/testing.md-23-31 (1)</summary><blockquote> `23-31`: **Add language specifier to code block.** The code block at line 23 should specify a language for proper syntax highlighting and improved readability. <details> <summary>📝 Proposed fix</summary> ```diff+text
test/
├── data/</details> </blockquote></details> <details> <summary>docs/src/content/docs/zh/features/snippets.md-20-22 (1)</summary><blockquote> `20-22`: **Keep the tab label consistent (“Snippets”).** Line 21 uses “Snippet” while Line 10 uses “Snippets”. If the UI tab is labeled “Snippets”, keep it consistent here to avoid confusing users. </blockquote></details> <details> <summary>docs/src/content/docs/de/advanced/bulk-import.md-36-38 (1)</summary><blockquote> `36-38`: **Fix markdown table separator spacing to satisfy MD060.** markdownlint flags the separator row at Line 37 for missing spaces around pipes. <details> <summary>Suggested fix</summary> ```diff -|-------|----------|-------------| +| ------- | ---------- | ------------- |docs/src/content/docs/zh/advanced/bulk-import.md-36-38 (1)
36-38: Fix markdown table separator spacing to satisfy MD060.markdownlint flags the separator row at Line 37 for missing spaces around pipes.
Suggested fix
-|-------|----------|-------------| +| ------- | ---------- | ------------- |docs/src/content/docs/ja/advanced/bulk-import.md-36-38 (1)
36-38: Fix markdown table separator spacing to satisfy MD060.markdownlint flags the separator row at Line 37 for missing spaces around pipes.
Suggested fix
-|-------|----------|-------------| +| ------- | ---------- | ------------- |docs/src/content/docs/es/development/architecture.md-10-29 (1)
10-29: Specify languages for fenced blocks to satisfy MD040.Both blocks are plain text diagrams; add
textfor clarity and lint compliance.✅ Suggested change
-``` +```text ┌─────────────────────────────────────┐ │ Capa de Presentación │ │ (lib/view/page/) │ │ - Páginas, Widgets, Controladores │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ Capa de Lógica de Negocio │ │ (lib/data/provider/) │ │ - Riverpod Providers │ │ - Gestión de Estado │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ Capa de Datos │ │ (lib/data/model/, store/) │ │ - Modelos, Almacén, Servicios │ └─────────────────────────────────────┘...
-+text
Acción de Usuario → Widget → Provider → Servicio/Almacén → Actualización de Modelo → Reconstrucción de UIAlso applies to: 64-66
docs/src/content/docs/zh/advanced/widgets.md-19-21 (1)
19-21: Add a language identifier to the fenced block.Markdownlint MD040 recommends specifying a language for fenced code blocks. Here it’s a URL, so
textorurlworks.✅ Suggested change
-``` +```text https://your-server.com/status</details> </blockquote></details> <details> <summary>docs/src/content/docs/fr/development/architecture.md-64-66 (1)</summary><blockquote> `64-66`: **Add language specifier to fenced code block.** The data flow diagram should have a language specifier for proper rendering. <details> <summary>📝 Proposed fix</summary> ```diff -``` +```text Action Utilisateur → Widget → Provider → Service/Store → Mise à jour Modèle → Reconstruction UIdocs/src/content/docs/fr/development/architecture.md-10-29 (1)
10-29: Add language specifier to fenced code block.The ASCII diagram should have a language specifier for proper rendering and accessibility.
📝 Proposed fix
-``` +```text ┌─────────────────────────────────────┐ │ Couche Présentation │docs/src/content/docs/es/development/structure.md-10-23 (1)
10-23: Add a language identifier to the fenced code block.Markdownlint flags fenced blocks without a language tag. This will keep lint clean and improve readability.
Suggested fix
-``` +```text lib/ ├── core/ # Utilidades centrales y extensiones ├── data/ # Capa de datos │ ├── model/ # Modelos de datos por función │ ├── provider/ # Riverpod providers │ └── store/ # Almacenamiento local (Hive) ├── view/ # Capa de UI │ ├── page/ # Páginas principales │ └── widget/ # Widgets reutilizables ├── generated/ # Localización generada ├── l10n/ # Archivos ARB de localización └── hive/ # Adaptadores de Hive</details> </blockquote></details> <details> <summary>docs/src/content/docs/es/advanced/troubleshooting.md-116-116 (1)</summary><blockquote> `116-116`: **Avoid bare URLs to satisfy markdownlint (MD034).** Replace the raw URL with a proper link. <details> <summary>Suggested fix</summary> ```diff -1. **Buscar en GitHub Issues:** https://github.com/lollipopkit/flutter_server_box/issues +1. **Buscar en GitHub Issues:** [GitHub Issues](https://github.com/lollipopkit/flutter_server_box/issues)docs/src/content/docs/fr/advanced/troubleshooting.md-112-116 (1)
112-116: Replace the bare URL with a Markdown link.This avoids the MD034 lint warning and improves scanability in lists.
✅ Suggested fix
-1. **Rechercher dans les Issues GitHub :** https://github.com/lollipopkit/flutter_server_box/issues +1. **Rechercher dans les Issues GitHub :** [GitHub Issues](https://github.com/lollipopkit/flutter_server_box/issues)docs/src/content/docs/ja/development/architecture.md-10-29 (1)
10-29: Specify a language for fenced code blocks.This resolves MD040 and keeps markdownlint clean.
✅ Suggested fix
-``` +```text ┌─────────────────────────────────────┐ │ プレゼンテーション層 │ │ (lib/view/page/) │ │ - ページ、ウィジェット、コントローラー │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ ビジネスロジック層 │ │ (lib/data/provider/) │ │ - Riverpod Provider │ │ - 状態管理 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ データ層 │ │ (lib/data/model/, store/) │ │ - モデル、ストレージ、サービス │ └─────────────────────────────────────┘ -``` +``` -``` +```text ユーザーアクション → Widget → Provider → サービス/ストア → モデル更新 → UI 再構築 -``` +```Also applies to: 64-66
docs/src/content/docs/fr/advanced/widgets.md-17-22 (1)
17-22: Add a language to the fenced URL example.This resolves MD040.
✅ Suggested fix
-``` +```text https://votre-serveur.com/status -``` +```docs/src/content/docs/zh/development/structure.md-10-23 (1)
10-23: Add a language tag to the fenced code block to satisfy MD040.The code fence lacks a language identifier and will trigger markdownlint.
✅ Suggested fix
-``` +```text lib/ ├── core/ # 核心工具类和扩展 ├── data/ # 数据层 │ ├── model/ # 按功能划分的数据模型 │ ├── provider/ # Riverpod provider │ └── store/ # 本地存储 (Hive) ├── view/ # UI 层 │ ├── page/ # 主要页面 │ └── widget/ # 可复用组件 ├── generated/ # 生成的本地化代码 ├── l10n/ # 本地化 ARB 文件 └── hive/ # Hive 适配器 -``` +```docs/src/content/docs/ja/principles/architecture.md-10-34 (1)
10-34: Add language identifiers to fenced code blocks (MD040).This file has multiple fenced blocks without language tags, which breaks markdownlint and reduces rendering clarity.
🧩 Proposed fix
-``` +```text ┌─────────────────────────────────────────────────┐ │ プレゼンテーション層 (UI) │ │ lib/view/page/, lib/view/widget/ │ │ - ページ、ウィジェット、コントローラー │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ ビジネスロジック層 │ │ lib/data/provider/ │ │ - Riverpod Provider, State Notifier │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ データアクセス層 │ │ lib/data/store/, lib/data/model/ │ │ - Hive Store, データモデル │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ 外部統合層 │ │ - SSH (dartssh2), ターミナル (xterm), SFTP │ │ - プラットフォーム固有コード (iOS, Android等) │ └─────────────────────────────────────────────────┘ -``` +``` -``` +```text make.dart (バージョン計算) → fl_build (ビルド実行) → プラットフォーム別出力 -``` +``` -``` +```text 1. タイマーが発火 → 2. Provider がサービスを呼び出す → 3. サービスが SSH コマンドを実行 → 4. レスポンスをモデルにパース → 5. 状態が更新される → 6. 新しいデータで UI が再構築される -``` +``` -``` +```text 1. ユーザーがボタンをタップ → 2. ウィジェットが Provider のメソッドを呼び出す → 3. Provider が状態を更新 → 4. 状態の変化により再構築がトリガーされる → 5. 新しい状態が UI に反映される -``` +```Also applies to: 170-172, 182-189, 193-199
docs/src/content/docs/de/principles/state.md-210-210 (1)
210-210: Normalize “Keep-Alive” vskeepAlivewording.The bullet title uses “Keep-Alive” while the API uses
keepAlive; consider aligning the label to avoid mixed terminology.🔧 Suggested tweak
-- **Provider Keep-Alive**: `@Riverpod(keepAlive: true)` verwenden, um automatische Entsorgung ohne Listener zu verhindern. +- **Provider keepAlive**: `@Riverpod(keepAlive: true)` verwenden, um automatische Entsorgung ohne Listener zu verhindern.docs/src/content/docs/zh/development/testing.md-23-31 (1)
23-31: Add a language tag to the fenced code block.The directory tree block lacks a language specifier, which trips MD040 and can reduce renderer consistency.
🔧 Suggested fix
-``` +```text test/ ├── data/ │ ├── model/ │ └── provider/ ├── view/ │ └── widget/ └── test_helpers.dart</details> </blockquote></details> <details> <summary>docs/src/content/docs/de/principles/state.md-18-36 (1)</summary><blockquote> `18-36`: **Specify a language for the architecture diagram fence.** This block currently has no language tag; `text` keeps linters and renderers happy. <details> <summary>🔧 Suggested fix</summary> ```diff -``` +```text ┌─────────────────────────────────────────────┐ │ UI-Schicht (Widgets) │ │ - ConsumerWidget / ConsumerStatefulWidget │ │ - ref.watch() / ref.read() │ └─────────────────────────────────────────────┘ ↓ beobachtet (watches) ┌─────────────────────────────────────────────┐ │ Provider-Schicht │ │ - `@riverpod` Annotationen │ │ - Generierte *.g.dart Dateien │ └─────────────────────────────────────────────┘ ↓ nutzt (uses) ┌─────────────────────────────────────────────┐ │ Service- / Store-Schicht │ │ - Business-Logik │ │ - Datenzugriff │ └─────────────────────────────────────────────┘</details> </blockquote></details> <details> <summary>docs/src/content/docs/es/advanced/bulk-import.md-36-38 (1)</summary><blockquote> `36-38`: **Fix markdown table spacing to satisfy MD060.** The table row lacks spaces around pipes, which triggers the markdownlint rule. Consider updating the header and separator row formatting. <details> <summary>Proposed fix</summary> ```diff -| Campo | Requerido | Descripción | -|-------|-----------|-------------| +| Campo | Requerido | Descripción | +| ----- | --------- | ----------- |docs/src/content/docs/zh/development/architecture.md-10-29 (1)
10-29: Add language to fenced code blocks.MD040 requires a language tag;
textis appropriate for ASCII diagrams.Proposed fix
-``` +```text ┌─────────────────────────────────────┐ │ 表现层 (Presentation) │ │ (lib/view/page/) │ │ - 页面、组件、控制器 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 业务逻辑层 (Business Logic) │ │ (lib/data/provider/) │ │ - Riverpod Provider │ │ - 状态管理 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 数据层 (Data) │ │ (lib/data/model/, store/) │ │ - 模型、存储、服务 │ └─────────────────────────────────────┘@@
-+text
用户操作 → Widget → Provider → 服务/存储 → 模型更新 → UI 重构Also applies to: 64-66
docs/src/content/docs/de/advanced/troubleshooting.md-116-116 (1)
116-116: Replace bare URL with a Markdown link.MD034 flags bare URLs; use a Markdown link to satisfy linting and improve readability.
Proposed fix
-1. **GitHub Issues durchsuchen:** https://github.com/lollipopkit/flutter_server_box/issues +1. **GitHub Issues durchsuchen:** [GitHub Issues](https://github.com/lollipopkit/flutter_server_box/issues)docs/src/content/docs/es/principles/state.md-18-36 (1)
18-36: Add a language tag to the ASCII diagram block.MD040 requires a fenced language;
textfits here.Proposed fix
-``` +```text ┌─────────────────────────────────────────────┐ │ Capa UI (Widgets) │ │ - ConsumerWidget / ConsumerStatefulWidget │ │ - ref.watch() / ref.read() │ └─────────────────────────────────────────────┘ ↓ observa (watches) ┌─────────────────────────────────────────────┐ │ Capa de Provider │ │ - Anotaciones `@riverpod` │ │ - Archivos *.g.dart generados │ └─────────────────────────────────────────────┘ ↓ usa (uses) ┌─────────────────────────────────────────────┐ │ Capa de Servicio / Store │ │ - Lógica de negocio │ │ - Acceso a datos │ └─────────────────────────────────────────────┘</details> </blockquote></details> <details> <summary>docs/src/content/docs/es/principles/sftp.md-419-419 (1)</summary><blockquote> `419-419`: **Fix typo in heading.** There's a spelling error: "Erreores" should be "Errores" (Errors). <details> <summary>📝 Proposed fix</summary> ```diff -### Erreores de Conexión +### Errores de Conexióndocs/src/content/docs/zh/principles/terminal.md-226-248 (1)
226-248: Additional "Special Features" section only in Chinese version.The Chinese documentation includes a "特色功能" (Special Features) section with
executeSnippetandopenSftpexamples (lines 226-248) that other language versions lack. This should be synchronized across all documentation.Consider either:
- Adding this valuable "Special Features" section to all other language versions (de, es, fr, ja), or
- Moving it to a separate advanced features page that can be referenced from all versions
This ensures users of all languages have access to the same level of documentation detail.
docs/src/content/docs/zh/principles/terminal.md-118-140 (1)
118-140: Documentation inconsistency: Chinese version contains additional content not present in other language versions.The Chinese documentation (248 lines) includes extra sections not found in de, es, fr, and ja versions (all 198 lines):
TerminalTabsclass implementation (lines 118-140)executeSnippetsection (included in "特色功能" section starting around line 226)Decide whether this additional content should be:
- Added to all other language versions for consistency, or
- Removed from the Chinese version to maintain parity with other languages
docs/astro.config.mjs-9-10 (1)
9-10: Doc site title still uses the old brand name.Most docs pages now use “Server Box”; consider updating the site title to keep navigation and SEO consistent.
Suggested fix
- title: 'Flutter Server Box', + title: 'Server Box',docs/src/content/docs/es/principles/ssh.md-150-166 (1)
150-166: Fix undefined variables in storage key to match documented{spi.id}::{keyType}format.The code references undefined
keyIdandkeyTypevariables.keyIdshould usespi.idandkeyTypeshould be extracted fromkey.type, as specified in the documentation.Suggested fix
Future<void> verifyHostKey(SSHClient client, Spi spi) async { final key = await client.hostKey; final fingerprint = md5Hex(key); // o base64 + final keyType = key.type; final stored = SettingStore.sshKnownHostsFingerprints - ['$keyId::$keyType']; + ['${spi.id}::$keyType']; if (stored == null) { // Nuevo host - preguntar al usuario final trust = await promptUser( 'Host desconocido', 'Huella: $fingerprint', ); if (trust) { SettingStore.sshKnownHostsFingerprints - ['$keyId::$keyType'] = fingerprint; + ['${spi.id}::$keyType'] = fingerprint; }docs/src/content/docs/es/principles/ssh.md-36-43 (1)
36-43: Changefinaltovarand add null check before creating SSHClient.Line 38:
final socketcannot be reassigned on line 42; usevarinstead. Additionally, if bothconnect()calls fail,socketremains null and is passed toSSHClientwithout validation, which will cause a runtime error.Suggested fix
-Future<SSHClient> genClient(Spi spi) async { - // 1. Establecer socket - final socket = await connect(spi.ip, spi.port); +Future<SSHClient> genClient(Spi spi) async { + // 1. Establecer socket + var socket = await connect(spi.ip, spi.port); // 2. Probar URL alternativa si falla if (socket == null && spi.alterUrl != null) { socket = await connect(spi.alterUrl, spi.port); } + + if (socket == null) { + throw ConnectionException('No se pudo conectar'); + }docs/src/content/docs/ja/introduction.mdx-3-3 (1)
3-3: Minor grammatical issue in the description.The phrase "とはその何か" is grammatically awkward in Japanese. The word "その" is unnecessary here.
Proposed fix
-description: Server Box とはその何か、何ができるのかを学ぶ +description: Server Box とは何か、何ができるのかを学ぶdocs/src/content/docs/introduction.mdx-23-28 (1)
23-28: Add watchOS back to the Supported Platforms section.The watchOS platform was removed from introduction.mdx but remains listed in index.mdx (line 35) and all localized versions. Extensive watchOS documentation exists throughout the codebase, including installation guides, widgets, and troubleshooting sections. Restore watchOS to maintain consistency with the rest of the documentation.
🧹 Nitpick comments (17)
docs/src/content/docs/de/platforms/desktop.md (1)
62-67: Consider using German terminology for "Themes" for consistency.The section uses the English term "Themes" while the rest of the document is in German. Consider using a German equivalent such as "Designs" or "Farbschemas" for better linguistic consistency, unless "Theme" matches the actual UI terminology.
💡 Alternative German terminology
-### Themes +### Designs -- Helles Theme -- Dunkles Theme -- AMOLED Theme (reines Schwarz) -- System-Theme (folgt dem Betriebssystem) +- Helles Design +- Dunkles Design +- AMOLED-Design (reines Schwarz) +- System-Design (folgt dem Betriebssystem)docs/src/content/docs/es/advanced/custom-logo.md (3)
19-21: Add language specifier to fenced code block.The fenced code block should have a language identifier for proper rendering and accessibility.
📝 Suggested improvement
-``` +```text https://ejemplo.com/{DIST}.png</details> --- `29-31`: **Add language specifier to fenced code block.** The fenced code block should have a language identifier for proper rendering. <details> <summary>📝 Suggested improvement</summary> ```diff -``` +```text https://ejemplo.com/{BRIGHT}.png</details> --- `37-39`: **Add language specifier to fenced code block.** The fenced code block should have a language identifier for proper rendering. <details> <summary>📝 Suggested improvement</summary> ```diff -``` +```text https://ejemplo.com/{DIST}-{BRIGHT}.png</details> </blockquote></details> <details> <summary>docs/src/content/docs/ja/advanced/custom-logo.md (3)</summary><blockquote> `19-21`: **Add language specifier to fenced code block.** The fenced code block should have a language identifier for proper rendering and consistency with markdown best practices. <details> <summary>📝 Suggested improvement</summary> ```diff -``` +```text https://example.com/{DIST}.png</details> --- `29-31`: **Add language specifier to fenced code block.** The fenced code block should have a language identifier for proper rendering. <details> <summary>📝 Suggested improvement</summary> ```diff -``` +```text https://example.com/{BRIGHT}.png</details> --- `37-39`: **Add language specifier to fenced code block.** The fenced code block should have a language identifier for proper rendering. <details> <summary>📝 Suggested improvement</summary> ```diff -``` +```text https://example.com/{DIST}-{BRIGHT}.png</details> </blockquote></details> <details> <summary>docs/src/content/docs/fr/development/testing.md (1)</summary><blockquote> `23-31`: **Add language specifier to directory structure block.** The fenced code block displaying the directory tree should have a language identifier for consistent rendering. <details> <summary>📝 Suggested improvement</summary> ```diff -``` +```text test/ ├── data/ │ ├── model/ │ └── provider/ ├── view/ │ └── widget/ └── test_helpers.dart</details> </blockquote></details> <details> <summary>docs/src/content/docs/de/advanced/custom-logo.md (1)</summary><blockquote> `19-41`: **Consider adding language specifiers to code blocks for better syntax highlighting.** The URL example code blocks (lines 19, 29, 37) could benefit from a language specifier like `text` or `url` for consistent rendering, though this is a minor enhancement. <details> <summary>📝 Optional improvement for code blocks</summary> ```diff -``` +```text https://example.com/{DIST}.pngApply similar changes to the other URL examples at lines 29 and 37. </details> </blockquote></details> <details> <summary>docs/src/content/docs/ja/development/testing.md (1)</summary><blockquote> `23-31`: **Consider adding a language identifier to the fenced code block.** The directory structure is clear, but adding a language identifier (e.g., `text` or `bash`) would satisfy linting tools and improve consistency. <details> <summary>📝 Optional improvement</summary> ```diff -``` +```text test/ ├── data/ │ ├── model/docs/src/content/docs/zh/advanced/troubleshooting.md (1)
116-116: Consider formatting the raw URL as a Markdown link.This improves readability and consistency with the rest of the docs.
🔧 Suggested tweak
-1. **搜索 GitHub Issues:** https://github.com/lollipopkit/flutter_server_box/issues +1. **搜索 GitHub Issues:** [GitHub Issues](https://github.com/lollipopkit/flutter_server_box/issues)docs/src/content/docs/fr/principles/ssh.md (1)
10-12: Add language tags to plaintext fences to satisfy markdownlint.These fenced blocks are plaintext/diagrams and currently omit a language tag, which triggers MD040. Consider adding
text(orplaintext) to each non-code fence.✅ Example fix
-``` +```text Entrée utilisateur → Configuration Spi → genClient() → Client SSH → Session -``` +```Also applies to: 125-133, 138-145, 217-241
docs/src/content/docs/ja/principles/sftp.md (1)
10-37: Add a language tag to the ASCII diagram fence.This diagram fence appears to be plaintext; adding
textavoids MD040 linting.✅ Example fix
-``` +```text ┌─────────────────────────────────────────────┐ │ SFTP UI レイヤー │ │ - ファイルブラウザ (リモート) │ │ - ファイルブラウザ (ローカル) │ │ - 転送キュー │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ SFTP 状態管理 │ │ - sftpProvider │ │ - パス管理 │ │ - 操作キュー │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ SFTP プロトコルレイヤー │ │ - SSH サブシステム │ │ - ファイル操作 │ │ - ディレクトリ一覧取得 │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ SSH 転送 │ │ - セキュアチャネル │ │ - データストリーミング │ └─────────────────────────────────────────────┘ -``` +```docs/src/content/docs/fr/principles/architecture.md (1)
10-34: Add language tags to plaintext fences to satisfy markdownlint.These fenced blocks are diagrams/steps and omit a language tag. Adding
text(orplaintext) will prevent MD040 warnings.✅ Example fix
-``` +```text ┌─────────────────────────────────────────────────┐ │ Couche de présentation (UI) │ │ lib/view/page/, lib/view/widget/ │ │ - Pages, Widgets, Contrôleurs │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ Couche logique métier │ │ lib/data/provider/ │ │ - Riverpod Providers, State Notifiers │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ Couche d'accès aux données │ │ lib/data/store/, lib/data/model/ │ │ - Hive Stores, Modèles de données │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ Couche d'intégration externe │ │ - SSH (dartssh2), Terminal (xterm), SFTP │ │ - Code spécifique à la plateforme (iOS, etc.) │ └─────────────────────────────────────────────────┘ -``` +```Also applies to: 170-172, 182-189, 194-199
docs/src/content/docs/es/index.mdx (1)
44-44: Consider using the direct F-Droid app link.Same issue as in the French index page - the F-Droid link points to the root domain rather than the specific app page.
Suggested fix
-- **Descarga**: Disponible en [App Store](https://apps.apple.com/app/id1586449703), [GitHub](https://github.com/lollipopkit/flutter_server_box/releases) y [F-Droid](https://f-droid.org/) ++ **Descarga**: Disponible en [App Store](https://apps.apple.com/app/id1586449703), [GitHub](https://github.com/lollipopkit/flutter_server_box/releases) y [F-Droid](https://f-droid.org/packages/tech.lolli.toolbox/)docs/src/content/docs/es/features/pve.md (1)
48-51: Consider using a placeholder for the password in the example.The example shows a plaintext password (
mypass) in the command. While this is documentation, it would be better practice to use a placeholder or environment variable to encourage secure password handling.Suggested improvement
```bash -pveum useradd myuser -password mypass +pveum useradd myuser -password <YOUR_SECURE_PASSWORD> pveum aclmod /vms -user myuser@pve -role VMAdmin</details> </blockquote></details> <details> <summary>docs/src/content/docs/fr/index.mdx (1)</summary><blockquote> `44-44`: **Link to the specific F-Droid app page.** The F-Droid link points to the root domain instead of the Server Box app page. For consistency with the App Store and GitHub links, use the direct app link. <details> <summary>Suggested fix</summary> ```diff -- **Téléchargement**: Disponible sur l'[App Store](https://apps.apple.com/app/id1586449703), [GitHub](https://github.com/lollipopkit/flutter_server_box/releases) et [F-Droid](https://f-droid.org/) ++ **Téléchargement**: Disponible sur l'[App Store](https://apps.apple.com/app/id1586449703), [GitHub](https://github.com/lollipopkit/flutter_server_box/releases) et [F-Droid](https://f-droid.org/packages/tech.lolli.toolbox/)
|
@coderabbitai 还有什么需要修改才能approve? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 170372
必须修复后我才能 approve(阻断项)
可选项(不阻断,可后续 PR 处理)
PR 元信息小建议(非阻断)
请确认是否按以上“阻断项”修一下。我这边在你推送这些修复后立即复审并给出 approve。如需,我也可以把“可选项”拆成跟进 issues。 |
Fixes #1035
|
@coderabbitai 已经没有features chapter了 |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 827 🏁 Script executed: Length of output: 374
让我更正一下阻断项清单,实际上只剩下 3 项: 必须修复的阻断项(3项)1) 修正 SSH 文档里的 Dart 代码片段
2) 修正 JSON 隐藏设置(日文页)
3) 纠正桌面快捷键说明(日文页)
✅ 站点标题已经正确:我刚查看了
修复这 3 项后我立即 approve! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 10
🤖 Fix all issues with AI agents
In `@docs/src/content/docs/de/principles/ssh.md`:
- Around line 18-28: Add the missing id field to the Spi model snippet: update
the class Spi declaration to include a unique identifier property (e.g., add
`String id; // eindeutige ID / unique identifier`) so that later references to
`spi.id` in the doc are consistent with the model; ensure the new `id` field
appears alongside existing properties like `name`, `ip`, `port`, `user`, `pwd`,
`keyId`, `jumpId`, and `alterUrl`.
- Around line 10-12: Several fenced code blocks are missing language specifiers
(MD040); find the fences containing the lines "Benutzereingabe →
Spi-Konfiguration → genClient() → SSH-Client → Sitzung", "{spi.id}::{keyType}",
"mein-server::ssh-ed25519", "aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99",
"SHA256:AbCdEf1234567890...=", and the ASCII-art box and update each opening ```
to include a language tag (use ```text for these examples) so every fenced block
has a language specifier; apply the same change to the other similar fences in
this file.
In `@docs/src/content/docs/es/principles/ssh.md`:
- Around line 18-28: The Spi model snippet is missing the id property referenced
later as spi.id; update the Dart class Spi by adding a unique identifier field
(e.g., String id; // ID del servidor) so the example matches later usage, and
apply the same addition to the other identical Spi snippets in the file (the
other occurrence around lines 129-171) to keep examples consistent.
- Around line 10-12: Several fenced code blocks in
docs/src/content/docs/es/principles/ssh.md are missing language specifiers
(causing MD040); update each triple-backtick fence around the shown examples
(e.g., the block containing "Entrada de Usuario → Configuración Spi →
genClient() → Cliente SSH → Sesión", the blocks with "{spi.id}::{keyType}",
"mi-servidor::ssh-ed25519", the MAC "aa:bb:...", the fingerprint
"SHA256:AbCdEf...", and the ASCII art table) to include a language tag such as
text (i.e., change ``` to ```text) and apply the same change to the other ranges
noted (lines ~129-149 and ~222-246) so every fenced block has a language
specifier.
In `@docs/src/content/docs/fr/principles/ssh.md`:
- Around line 18-28: The Spi model snippet is missing the id property used later
as spi.id; update the class Spi declaration to include an id field (e.g., String
id) alongside the other properties so the example matches usages elsewhere —
locate the class Spi in the snippet and add the id member with the same
type/nullable semantics as your other identifiers.
- Around line 10-12: Several fenced code blocks in
docs/src/content/docs/fr/principles/ssh.md are missing language specifiers
(MD040); update each triple-backtick fence shown (e.g., the block containing
"Entrée utilisateur → Configuration Spi → genClient() → Client SSH → Session",
the blocks with "{spi.id}::{keyType}", "mon-serveur::ssh-ed25519" /
"ecdsa-sha2-nistp256", the hex/mac/SHA256 fingerprint blocks, and the ASCII
diagram) to include a language tag such as ```text (apply the same change to the
other ranges noted: 129-149 and 222-246) so every fenced code block has a
language identifier.
In `@docs/src/content/docs/ja/principles/ssh.md`:
- Around line 18-28: The Spi model snippet is missing the identifier field used
later as spi.id; add a unique id property to the Spi class definition (e.g.,
include a field named id or spiId) so examples referencing spi.id match the
model; update the class declaration (class Spi) to include this identifier
alongside name, ip, port, user, pwd, keyId, jumpId, and alterUrl and ensure the
same field name is used throughout the docs where spi.id is referenced.
- Around line 10-12: Several fenced code blocks in
docs/src/content/docs/ja/principles/ssh.md are missing language specifiers
(MD040); locate each triple-backtick block (``` ... ```) — including the
examples containing "ユーザー入力 → Spi 構成 → genClient() → SSH クライアント → セッション",
"{spi.id}::{keyType}", "my-server::ssh-ed25519", "aa:bb:...:99",
"SHA256:AbCdEf1234567890...=", and the ASCII diagram — and add a language tag
(e.g., ```text) to each opening fence so all code blocks include a language
specifier; apply the same change to the other fenced blocks mentioned in the
comment (the ranges around the ASCII diagram and the other examples).
In `@docs/src/content/docs/zh/principles/ssh.md`:
- Around line 18-28: The Spi model snippet is missing the unique identifier used
elsewhere; update the class Spi declaration (the Spi model snippet) to include a
String id field with comment like "唯一标识" so later references to spi.id are valid
and consistent with fingerprint storage; make the same addition to the other Spi
snippet occurrence referenced in the doc to keep both examples consistent.
- Around line 10-12: Several fenced code blocks (e.g., the blocks containing
"用户输入 → Spi 配置 → genClient() → SSH 客户端 → 会话 (Session)", "{spi.id}::{keyType}",
"my-server::ssh-ed25519", "aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99",
"SHA256:AbCdEf1234567890...=", and the ASCII diagram) are missing a language tag
and trigger MD040; update each opening fence from ``` to ```text (or another
appropriate language) so every fenced block has a language specifier—apply the
same change to all similar fences in the file (including the other ranges noted)
to satisfy the linter.
🧹 Nitpick comments (1)
docs/src/content/docs/advanced/json-settings.md (1)
58-58: Consider adding this guideline to other language versions.The English version includes an additional best practice: "Change one at a time - Test each setting". This helpful guidance is missing from the French, German, Spanish, and Japanese versions. Consider adding it for consistency.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
docs/astro.config.mjsdocs/src/content/docs/advanced/json-settings.mddocs/src/content/docs/de/advanced/json-settings.mddocs/src/content/docs/de/principles/ssh.mddocs/src/content/docs/es/advanced/json-settings.mddocs/src/content/docs/es/principles/ssh.mddocs/src/content/docs/fr/advanced/json-settings.mddocs/src/content/docs/fr/principles/ssh.mddocs/src/content/docs/ja/advanced/json-settings.mddocs/src/content/docs/ja/platforms/desktop.mddocs/src/content/docs/ja/principles/ssh.mddocs/src/content/docs/zh/advanced/json-settings.mddocs/src/content/docs/zh/principles/ssh.md
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/src/content/docs/zh/advanced/json-settings.md
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: GT-610
Repo: lollipopkit/flutter_server_box PR: 0
File: :0-0
Timestamp: 2026-01-22T05:10:54.502Z
Learning: For all future pull requests in the flutter_server_box repository, check if participants from issues resolved by the PR are added to the `participants` field in `lib/data/res/github_id.dart`. If any participants are missing, propose adding them. First verify if they already exist or have been added in the PR commits.
Learnt from: CR
Repo: lollipopkit/flutter_server_box PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-10-08T09:36:41.682Z
Learning: Applies to lib/l10n/**/*.arb : Keep localized strings in ARB files under lib/l10n/ (Flutter i18n)
📚 Learning: 2025-10-08T09:36:41.682Z
Learnt from: CR
Repo: lollipopkit/flutter_server_box PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-10-08T09:36:41.682Z
Learning: Applies to lib/l10n/**/*.arb : Keep localized strings in ARB files under lib/l10n/ (Flutter i18n)
Applied to files:
docs/astro.config.mjs
📚 Learning: 2025-10-08T09:36:41.682Z
Learnt from: CR
Repo: lollipopkit/flutter_server_box PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-10-08T09:36:41.682Z
Learning: Applies to lib/data/model/ssh/**/*.dart : Place SSH models under lib/data/model/ssh/
Applied to files:
docs/src/content/docs/es/principles/ssh.md
🪛 LanguageTool
docs/src/content/docs/es/principles/ssh.md
[grammar] ~8-~8: Corrige la mayúscula.
Context: ...exiones SSH en Server Box. ## Flujo de Conexión Entrada de Usuario → Configuración Spi → genClient() → Cliente SSH → Sesión ### Paso 1: Configuración El modelo Spi (...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~31-~31: Corrige la mayúscula.
Context: ...ativa } ### Paso 2: Generación del Cliente `genClient(spi)` crea el cliente SSH: dart Future<SS...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~33-~33: Aquí puede haber un error.
Context: ...Generación del Cliente genClient(spi) crea el cliente SSH: ```dart Future<SSH...
(QB_NEW_ES)
[grammar] ~33-~33: Corrige la minúscula.
Context: ...eneración del Cliente genClient(spi) crea el cliente SSH: ```dart Future<SSHClie...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_LOWERCASE)
[grammar] ~64-~64: Corrige la mayúscula.
Context: ... client; } ``` ### Paso 3: Servidor de Salto (si está configurado) Para servidores ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~79-~79: Corrige la mayúscula.
Context: ...l socket reenviado } ## Métodos de Autenticación ### Autenticación por Contraseña dart on...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~81-~81: Corrige la mayúscula.
Context: ...de Autenticación ### Autenticación por Contraseña dart onPasswordRequest: () => spi.pwd - Contraseña almacenada cifrada en Hive - ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~87-~87: Cambia la palabra o signo.
Context: ... - Contraseña almacenada cifrada en Hive - Descifrada al conectar - Enviada al serv...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~88-~88: Cambia la palabra o signo.
Context: ...cifrada en Hive - Descifrada al conectar - Enviada al servidor para verificación #...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~89-~89: Aquí puede haber un error.
Context: ... - Enviada al servidor para verificación ### Autenticación por Clave Privada ```dart...
(QB_NEW_ES)
[grammar] ~91-~91: Corrige la mayúscula.
Context: ...ara verificación ### Autenticación por Clave Privada ```dart onIdentityRequest: () ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~91-~91: Aquí puede haber un error.
Context: ...rificación ### Autenticación por Clave Privada dart onIdentityRequest: () async { final key = await KeyStore.get(spi.keyId); return decyptPem(key.pem, key.password); } Proceso de Carga de Clave: 1. Recupera...
(QB_NEW_ES)
[grammar] ~100-~100: Corrige la mayúscula.
Context: ...pem, key.password); } ``` Proceso de Carga de Clave: 1. Recuperar clave cifrada ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~100-~100: Corrige la mayúscula.
Context: ...password); } ``` Proceso de Carga de Clave: 1. Recuperar clave cifrada de KeyStore 2....
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~101-~101: Cambia la palabra o signo.
Context: ... Clave:** 1. Recuperar clave cifrada de KeyStore 2. Descifrar contraseña (biometría/aviso) 3...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~102-~102: Cambia la palabra o signo.
Context: .... Descifrar contraseña (biometría/aviso) 3. Analizar formato PEM 4. Estandarizar fin...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~103-~103: Cambia la palabra o signo.
Context: ...biometría/aviso) 3. Analizar formato PEM 4. Estandarizar finales de línea (LF) 5. Re...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~104-~104: Cambia la palabra o signo.
Context: ...EM 4. Estandarizar finales de línea (LF) 5. Retornar para autenticación ### Interac...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~105-~105: Aquí puede haber un error.
Context: ...ínea (LF) 5. Retornar para autenticación ### Interacción por Teclado (Keyboard-Intera...
(QB_NEW_ES)
[grammar] ~107-~107: Corrige la mayúscula.
Context: ...para autenticación ### Interacción por Teclado (Keyboard-Interactive) ```dart onUserI...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~117-~117: Cambia la palabra o signo.
Context: ... Soporta: - Autenticación por contraseña - Tokens OTP - Autenticación de doble fact...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~118-~118: Cambia la palabra o signo.
Context: ...utenticación por contraseña - Tokens OTP - Autenticación de doble factor (2FA) ## ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~121-~121: Corrige la mayúscula.
Context: ... doble factor (2FA) ## Verificación de Clave de Host ### ¿Por qué verificar las cla...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~121-~121: Corrige la mayúscula.
Context: ...ctor (2FA) ## Verificación de Clave de Host ### ¿Por qué verificar las claves de host? ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~127-~127: Corrige la mayúscula.
Context: ...ctas al mismo servidor. ### Formato de Almacenamiento {spi.id}::{keyType} Ejemplo: ``` mi-servidor::ssh-ed25519 mi...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~139-~139: Corrige la mayúscula.
Context: ...cdsa-sha2-nistp256 ### Formatos de Huella Digital (Fingerprint) **MD5 Hex:**...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~139-~139: Corrige la mayúscula.
Context: ...a2-nistp256 ### Formatos de Huella Digital (Fingerprint) **MD5 Hex:** aa:bb:c...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~139-~139: Corrige la mayúscula.
Context: ...56 ### Formatos de Huella Digital (Fingerprint) **MD5 Hex:** aa:bb:cc:dd:ee:ff:00...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~151-~151: Corrige la mayúscula.
Context: ...:AbCdEf1234567890...= ### Flujo de Verificación dart Future verifyHostKey(SSHClient client, Spi spi) async { final key = await client.hostKey; final keyType = key.type; final fingerprint = md5Hex(key); // o base64 final stored = SettingStore.sshKnownHostsFingerprints ['${spi.id}::$keyType']; if (stored == null) { // Nuevo host - preguntar al usuario final trust = await promptUser( 'Host desconocido', 'Huella:
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~182-~182: Corrige la mayúscula.
Context: ... MITM', ); } } ``` ## Gestión de Sesiones ### Pool de Conexiones Clientes activos man...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~184-~184: Corrige la mayúscula.
Context: ...`` ## Gestión de Sesiones ### Pool de Conexiones Clientes activos mantenidos en `ServerPr...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~209-~209: Corrige la mayúscula.
Context: ...sendKeepAlive(), ); ### Reconexión Automática Al perder la conexión: dart client.o...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~220-~220: Corrige la mayúscula.
Context: ...)); reconnect(); }); ## Ciclo de Vida de la Conexión ┌─────────────┐ │ ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~220-~220: Corrige la mayúscula.
Context: ...nect(); }); ## Ciclo de Vida de la Conexión ┌─────────────┐ │ Inicial │ └──────┬──────┘ │ connect() ↓ ┌─────────────┐ │ Conectando │ ←──┐ └──────┬──────┘ │ │ éxito │ ↓ │ fallo (reintento) ┌─────────────┐ │ │ Conectado │───┘ └──────┬──────┘ │ ↓ ┌─────────────┐ │ Activo │ ──→ Enviar comandos └──────┬──────┘ │ ↓ (error/desconexión) ┌─────────────┐ │ Desconectado│ └─────────────┘ ``` ## Gestión de Errores ### Tiempo de Espera...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~248-~248: Corrige la mayúscula.
Context: ...ado│ └─────────────┘ ## Gestión de Errores ### Tiempo de Espera Agotado (Timeout) d...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~250-~250: Corrige la mayúscula.
Context: ...` ## Gestión de Errores ### Tiempo de Espera Agotado (Timeout) ```dart try { awai...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~250-~250: Corrige la mayúscula.
Context: ...estión de Errores ### Tiempo de Espera Agotado (Timeout) ```dart try { await client...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~250-~250: Corrige la mayúscula.
Context: ... Errores ### Tiempo de Espera Agotado (Timeout) ```dart try { await client.connect(...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~262-~262: Corrige la mayúscula.
Context: ...conexión agotado'); } ### Fallo de Autenticación dart onAuthFail: (error) { if (error.contains('password')) { return 'Contraseña no válida'; } else if (error.contains('key')) { return 'Clave SSH no válida'; } return 'Fallo de autenticación'; } ### Discrepancia en Clave de Host dart o...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~275-~275: Corrige la mayúscula.
Context: ...enticación'; } ### Discrepancia en Clave de Host dart onHostKeyMismatch: (st...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~275-~275: Corrige la mayúscula.
Context: ...n'; } ### Discrepancia en Clave de Host dart onHostKeyMismatch: (stored, current) { showSecurityWarning( '¡La clave de host ha cambiado!', 'Posible ataque MITM', ); } ``` ## Consideraciones de Rendimiento ### Reut...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~286-~286: Corrige la mayúscula.
Context: ...ITM', ); } ``` ## Consideraciones de Rendimiento ### Reutilización de Conexiones - Reutiliza...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~288-~288: Corrige la mayúscula.
Context: ...es de Rendimiento ### Reutilización de Conexiones - Reutilizar clientes entre funciones - No...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~290-~290: Cambia la palabra o signo.
Context: ...s - Reutilizar clientes entre funciones - No desconectar/reconectar innecesariamen...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~291-~291: Cambia la palabra o signo.
Context: ... desconectar/reconectar innecesariamente - Pool de conexiones para operaciones conc...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~292-~292: Aquí puede haber un error.
Context: ...conexiones para operaciones concurrentes ### Ajustes Óptimos - Timeout: 30 segun...
(QB_NEW_ES)
[grammar] ~294-~294: Corrige la mayúscula.
Context: ...a operaciones concurrentes ### Ajustes Óptimos - Timeout: 30 segundos (ajustable) - **K...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~296-~296: Cambia la palabra o signo.
Context: ... - Timeout: 30 segundos (ajustable) - Keep-alive: Cada 30 segundos - **Retra...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~297-~297: Cambia la palabra o signo.
Context: ...able) - Keep-alive: Cada 30 segundos - Retraso de reintento: 5 segundos ### ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_SPACE)
[grammar] ~300-~300: Corrige la mayúscula.
Context: ...ntento**: 5 segundos ### Eficiencia de Red - Conexión única para múltiples operacione...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~302-~302: Cambia la palabra o signo.
Context: ...onexión única para múltiples operaciones - Comandos en tubería (pipeline) cuando se...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~303-~303: Cambia la palabra o signo.
Context: ...en tubería (pipeline) cuando sea posible - Evitar abrir múltiples conexiones
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~304-~304: Aquí puede haber un error.
Context: ...ible - Evitar abrir múltiples conexiones
(QB_NEW_ES)
docs/src/content/docs/fr/principles/ssh.md
[grammar] ~16-~16: Il y a peut-être une erreur ici
Context: ...Le modèle Spi (Server Parameter Info) contient : dart class Spi { String name; // Nom du serveur String ip; // Adresse IP int port; // Port SSH (par défaut 22) String user; // Nom d'utilisateur String? pwd; // Mot de passe (chiffré) String? keyId; // ID de la clé SSH String? jumpId; // ID du serveur de rebond (Jump server) String? alterUrl; // URL alternative } ### Étape 2 : Génération du client `genClie...
(QB_NEW_FR)
[grammar] ~33-~33: Il y a peut-être une erreur ici
Context: ...: Génération du client genClient(spi) crée le client SSH : ```dart Future<SSH...
(QB_NEW_FR)
[grammar] ~33-~33: « crée » semble plus probable dans ce contexte
Context: ... Génération du client genClient(spi) crée le client SSH : ```dart Future<SSHClie...
(QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_LOWERCASE)
[grammar] ~33-~33: Il y a peut-être une erreur ici
Context: ...client genClient(spi) crée le client SSH : dart Future<SSHClient> genClient(Spi spi) async { // 1. Établir le socket var socket = await connect(spi.ip, spi.port); // 2. Essayer l'URL alternative en cas d'échec if (socket == null && spi.alterUrl != null) { socket = await connect(spi.alterUrl, spi.port); } if (socket == null) { throw ConnectionException('Unable to connect'); } // 3. Authentifier final client = SSHClient( socket: socket, username: spi.user, onPasswordRequest: () => spi.pwd, onIdentityRequest: () => loadKey(spi.keyId), ); // 4. Vérifier la clé d'hôte await verifyHostKey(client, spi); return client; } ### Étape 3 : Serveur de rebond (si configur...
(QB_NEW_FR)
[grammar] ~66-~66: Il y a peut-être une erreur ici
Context: ... Pour les serveurs de rebond, connexion récursive : dart if (spi.jumpId != null) { final jumpClient = await genClient(getJumpSpi(spi.jumpId)); final forwarded = await jumpClient.forwardLocal( spi.ip, spi.port, ); // Se connecter via le socket transféré } ## Méthodes d'authentification ### Authent...
(QB_NEW_FR)
[grammar] ~100-~100: Il y a peut-être une erreur ici
Context: ... } ``` Processus de chargement de la clé : 1. Récupérer la clé chiffrée depuis `...
(QB_NEW_FR)
[grammar] ~101-~101: Élément manquant
Context: ...la clé :** 1. Récupérer la clé chiffrée depuis KeyStore 2. Déchiffrer le mot de passe...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_OTHER)
[grammar] ~102-~102: Il y a peut-être une erreur ici
Context: ...iffrer le mot de passe (biométrie/invite) 3. Analyser le format PEM 4. Standardis...
(QB_NEW_FR)
[grammar] ~103-~103: Élément manquant
Context: ...biométrie/invite) 3. Analyser le format PEM 4. Standardiser les fins de ligne (LF) ...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_OTHER)
[grammar] ~104-~104: Il y a peut-être une erreur ici
Context: ...EM 4. Standardiser les fins de ligne (LF) 5. Retourner pour l'authentification #...
(QB_NEW_FR)
[grammar] ~123-~123: Il y a peut-être une erreur ici
Context: ... d'hôte ### Pourquoi vérifier les clés d'hôte ? Empêche les attaques de type **Man-in-th...
(QB_NEW_FR)
[grammar] ~132-~132: Il y a peut-être une erreur ici
Context: ... stockage {spi.id}::{keyType} Exemple : mon-serveur::ssh-ed25519 mon-serveur::ecdsa-sha2-nistp256 ### Formats d'empreinte MD5 Hex : ``` a...
(QB_NEW_FR)
[grammar] ~186-~186: Il y a peut-être une erreur ici
Context: ...Pooling) Clients actifs maintenus dans ServerProvider : dart class ServerProvider { final Map<String, SSHClient> _clients = {}; SSHClient getClient(String spiId) { return _clients[spiId] ??= connect(spiId); } } ### Keep-Alive Maintenir la connexion penda...
(QB_NEW_FR)
[grammar] ~200-~200: Il y a peut-être une erreur ici
Context: ...p-Alive Maintenir la connexion pendant l'inactivité : dart Timer.periodic( Duration(seconds: 30), (_) => client.sendKeepAlive(), ); ### Reconnexion automatique En cas de perte...
(QB_NEW_FR)
[grammar] ~296-~296: Il y a peut-être une erreur ici
Context: ...es ### Paramètres optimaux - Timeout : 30 secondes (ajustable) - **Keep-aliv...
(QB_NEW_FR)
[grammar] ~296-~296: Il y a peut-être une erreur ici
Context: ... ### Paramètres optimaux - Timeout : 30 secondes (ajustable) - Keep-alive : Toutes l...
(QB_NEW_FR)
[grammar] ~296-~296: Envisagez un remplacement
Context: ... - Timeout : 30 secondes (ajustable) - Keep-alive : Toutes les 30 secondes - ...
(QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_SPACE_CLOSE_PARENTHESIS
CLOSE_PARENTHESIS_
)
[grammar] ~297-~297: Il y a peut-être une erreur ici
Context: ...: 30 secondes (ajustable) - Keep-alive : Toutes les 30 secondes - **Délai de r...
(QB_NEW_FR)
[grammar] ~297-~297: « toutes » semble plus probable dans ce contexte
Context: ...0 secondes (ajustable) - Keep-alive : Toutes les 30 secondes - *Délai de relecture...
(QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~297-~297: Envisagez un remplacement
Context: ...justable) - Keep-alive : Toutes les 30 secondes - Délai de relecture : 5 secondes ### E...
(QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_SPACE_
__
)
[grammar] ~298-~298: Il y a peut-être une erreur ici
Context: ...s les 30 secondes - Délai de relecture : 5 secondes ### Efficacité du réseau ...
(QB_NEW_FR)
[grammar] ~298-~298: Il y a peut-être une erreur ici
Context: ...es 30 secondes - Délai de relecture : 5 secondes ### Efficacité du réseau - Connexion unique...
(QB_NEW_FR)
[grammar] ~302-~302: Élément manquant
Context: ...seau - Connexion unique pour plusieurs opérations - Commandes en pipeline si possible - É...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_PUNCTUATION_PERIOD)
[grammar] ~303-~303: Élément manquant
Context: ...s opérations - Commandes en pipeline si possible - Éviter d'ouvrir plusieurs connexions ...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_PUNCTUATION_PERIOD)
[grammar] ~304-~304: Il y a peut-être une erreur ici
Context: ...e - Éviter d'ouvrir plusieurs connexions
(QB_NEW_FR)
docs/src/content/docs/de/principles/ssh.md
[grammar] ~6-~6: Korrigiere das Wort
Context: ...-- Verständnis der SSH-Verbindungen in Server Box. ## Verbindungsablauf ``` Benutzerein...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_MULTIPLE)
[style] ~16-~16: ‚Info‘ ist umgangssprachlich.
Context: ...figuration Das Spi (Server Parameter Info) Modell enthält: ```dart class Spi { ...
(MATHE)
[grammar] ~88-~88: Passe die Groß- und Kleinschreibung an
Context: ...ort verschlüsselt in Hive gespeichert - Bei Verbindung entschlüsselt - Zur Verifizi...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~89-~89: Passe die Groß- und Kleinschreibung an
Context: ...ichert - Bei Verbindung entschlüsselt - Zur Verifizierung an den Server gesendet #...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~107-~107: Passe den Tippfehler an
Context: ...entifizierung zurückgeben ### Tastatur-Interaktiv (Keyboard-Interactive) ```dart onUserI...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_OTHERCASE)
[grammar] ~107-~107: Passe den Tippfehler an
Context: ...eben ### Tastatur-Interaktiv (Keyboard-Interactive) ```dart onUserInfoRequest: (instructi...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_OTHERCASE)
[grammar] ~125-~125: Entferne ein Leerzeichen
Context: ...izieren? Verhindert Man-in-the-Middle (MITM) Angriffe, indem sichergestellt ...
(QB_NEW_DE_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[style] ~125-~125: Möglicherweise ist es stilistisch besser, eine standardsprachliche Alternative zu benutzen.
Context: ...ieren? Verhindert Man-in-the-Middle (MITM) Angriffe, indem sichergestellt wird,...
(HINTERM_MOND)
[grammar] ~125-~125: Entferne ein Leerzeichen
Context: ... Verhindert Man-in-the-Middle (MITM) Angriffe, indem sichergestellt wird, das...
(QB_NEW_DE_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~125-~125: Ersetze das Satzzeichen
Context: ...ird, dass Sie sich mit demselben Server verbinden. ### Speicherformat ``` {spi.id}::{keyType} ...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION_PERIOD_QUESTION_MARK)
[grammar] ~296-~296: Korrigiere die Fehler
Context: ... - Timeout: 30 Sekunden (anpassbar) - Keep-Alive: Alle 30 Sekunden - **Wiede...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)
[grammar] ~297-~297: Passe die Groß- und Kleinschreibung an
Context: ... Sekunden (anpassbar) - Keep-Alive: Alle 30 Sekunden - **Wiederholungsverzögerun...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~297-~297: Korrigiere das Wort
Context: ...sbar) - Keep-Alive: Alle 30 Sekunden - Wiederholungsverzögerung: 5 Sekunden ...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPACE)
docs/src/content/docs/de/advanced/json-settings.md
[grammar] ~22-~22: Ergänze ein Wort
Context: ...kunden. json {"timeOut": 10} Typ: Integer | Standard: 5 | **Bereich...
(QB_NEW_DE_OTHER_ERROR_IDS_MISSING_NOUN)
[grammar] ~22-~22: Ersetze das Satzzeichen
Context: ...nteger | Standard: 5 | Bereich: 1-60 ### recordHistory Verlauf speichern (SFTP-P...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION_DASH_–)
[grammar] ~32-~32: Ergänze ein Wort
Context: ... json {"recordHistory": true} Typ: Boolean | Standard: true ### tex...
(QB_NEW_DE_OTHER_ERROR_IDS_MISSING_NOUN)
[grammar] ~36-~36: Entferne ein Satzzeichen
Context: ...e ### textFactor Textskalierungsfaktor. json {"textFactor": 1.2} Typ: Double | Standard: 1.0 | **Be...
(QB_NEW_DE_OTHER_ERROR_IDS_UNNECESSARY_PUNCTUATION_PERIOD)
[grammar] ~42-~42: Ergänze ein Wort
Context: ...or. json {"textFactor": 1.2} Typ: Double | Standard: 1.0 | **Bereic...
(QB_NEW_DE_OTHER_ERROR_IDS_MISSING_NOUN)
[grammar] ~42-~42: Ersetze das Satzzeichen
Context: ...le | Standard: 1.0 | Bereich: 0.8-1.5 ## Weitere Einstellungen finden All...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION_DASH_–)
[grammar] ~56-~56: Hier könnte ein Fehler sein.
Context: ...tig Vor dem Bearbeiten: - Backup erstellen - Falsche Einstellungen können dazu füh...
(QB_NEW_DE)
[grammar] ~56-~56: Entferne ein Wort
Context: ...em Bearbeiten:** - Backup erstellen - Falsche Einstellungen können dazu führen, dass ...
(QB_NEW_DE_OTHER_ERROR_IDS_UNNECESSARY_NOUN)
[grammar] ~57-~57: Passe das Symbol an
Context: ...ie App nicht mehr öffnet - Sorgfältig bearbeiten - JSON muss gültig sein ## Wiederherstel...
(QB_NEW_DE_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~61-~61: Hier könnte ein Fehler sein.
Context: ...iederherstellung Wenn die App nach dem Bearbeiten nicht mehr öffnet: 1. App-Daten löschen...
(QB_NEW_DE)
docs/src/content/docs/es/advanced/json-settings.md
[grammar] ~6-~6: Agrega un signo de puntuación.
Context: ...ajustes están ocultos en la interfaz de usuario pero son accesibles a través del editor...
(QB_NEW_ES_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~12-~12: Corrige la mayúscula.
Context: ... para abrir el editor JSON. ## Ajustes Ocultos Comunes ### timeOut Tiempo de espera ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~12-~12: Aquí puede haber un error.
Context: ...rir el editor JSON. ## Ajustes Ocultos Comunes ### timeOut Tiempo de espera de conexión en...
(QB_NEW_ES)
[grammar] ~22-~22: Aquí puede haber un error.
Context: ...gundos. json {"timeOut": 10} Tipo: entero | Predeterminado: 5 | **Ra...
(QB_NEW_ES)
[grammar] ~22-~22: Agrega un espacio.
Context: ... json {"timeOut": 10} Tipo: entero | Predeterminado: 5 | **Rango...
(QB_NEW_ES_OTHER_ERROR_IDS_MISSING_ORTHOGRAPHY_SPACE)
[grammar] ~22-~22: Agrega una palabra o signo.
Context: ... json {"timeOut": 10} Tipo: entero | Predeterminado: 5 | Rango: 1-...
(QB_NEW_ES_OTHER_ERROR_IDS_MISSING_OTHER)
[grammar] ~32-~32: Aquí puede haber un error.
Context: ... json {"recordHistory": true} Tipo: booleano | Predeterminado: true ...
(QB_NEW_ES)
[grammar] ~32-~32: Agrega un espacio.
Context: ...n {"recordHistory": true} ``` Tipo: booleano | Predeterminado: true ###...
(QB_NEW_ES_OTHER_ERROR_IDS_MISSING_ORTHOGRAPHY_SPACE)
[grammar] ~32-~32: Agrega una palabra o signo.
Context: ... {"recordHistory": true} ``` Tipo: booleano | Predeterminado: true ### textFac...
(QB_NEW_ES_OTHER_ERROR_IDS_MISSING_OTHER)
[grammar] ~44-~44: Corrige la mayúscula.
Context: ... 1.0 | Rango: 0.8-1.5 ## Encontrar Más Ajustes Todos los ajustes están defini...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~44-~44: Aquí puede haber un error.
Context: ... | Rango: 0.8-1.5 ## Encontrar Más Ajustes Todos los ajustes están definidos en [`s...
(QB_NEW_ES)
[grammar] ~56-~56: Cambia la palabra o signo.
Context: ...ectos pueden hacer que la app no se abra - Edita con cuidado: el JSON debe ser vá...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~57-~57: Aquí puede haber un error.
Context: ...a con cuidado**: el JSON debe ser válido ## Recuperación Si la aplicación no se abr...
(QB_NEW_ES)
[grammar] ~62-~62: Cambia la palabra o signo.
Context: ... datos de la aplicación (último recurso) 2. Reinstala la aplicación 3. Restaura desd...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~63-~63: Cambia la palabra o signo.
Context: ...timo recurso) 2. Reinstala la aplicación 3. Restaura desde una copia de seguridad
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~64-~64: Aquí puede haber un error.
Context: ...3. Restaura desde una copia de seguridad
(QB_NEW_ES)
docs/src/content/docs/fr/advanced/json-settings.md
[grammar] ~22-~22: Il y a peut-être une erreur ici
Context: ...condes. json {"timeOut": 10} Type : entier | Par défaut : 5 | **Plag...
(QB_NEW_FR)
[grammar] ~22-~22: Typographie
Context: ... json {"timeOut": 10} Type : entier | Par défaut : 5 | **Plage :*...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_ORTHOGRAPHY_SPACE)
[grammar] ~22-~22: Mot manquant
Context: ...json {"timeOut": 10} Type : entier | Par défaut : 5 | Plage : 1-60...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_ADJECTIVE)
[grammar] ~32-~32: Il y a peut-être une erreur ici
Context: ... json {"recordHistory": true} Type : booléen | Par défaut : true ###...
(QB_NEW_FR)
[grammar] ~32-~32: Typographie
Context: ... {"recordHistory": true} ``` Type : booléen | Par défaut : true ### tex...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_ORTHOGRAPHY_SPACE)
[grammar] ~42-~42: Typographie
Context: ...json {"textFactor": 1.2} Type : double | Par défaut : 1.0 | **Pla...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_ORTHOGRAPHY_SPACE)
[grammar] ~42-~42: Typographie
Context: ...json {"textFactor": 1.2} ``` Type : double | Par défaut : 1.0 | **Plage ...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_ORTHOGRAPHY_SPACE)
[grammar] ~42-~42: Mot manquant
Context: ...son {"textFactor": 1.2} ``` Type : double | Par défaut : 1.0 | Plage : 0....
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_ADJECTIVE)
[typographical] ~46-~46: Caractère d’apostrophe incorrect.
Context: ... Tous les paramètres sont définis dans [setting.dart](https://github.com/lollip...
(APOS_INCORRECT)
[grammar] ~47-~47: Il y a peut-être une erreur ici
Context: ...lob/main/lib/data/store/setting.dart). Recherchez : dart late final settingName = StoreProperty(box, 'settingKey', defaultValue); ##
(QB_NEW_FR)
[grammar] ~56-~56: Envisagez un remplacement
Context: ...d'éditer :** - Créer une sauvegarde - De mauvais paramètres peuvent empêcher ...
(QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION_DASH_–)
[grammar] ~56-~56: Élément manquant
Context: ...amètres peuvent empêcher l'ouverture de l'application - Éditer avec soin - Le JSON doit ê...
(QB_NEW_FR_OTHER_ERROR_IDS_MISSING_PUNCTUATION_PERIOD)
[grammar] ~57-~57: Envisagez un remplacement
Context: ...de l'application - Éditer avec soin - Le JSON doit être valide ## Récupérati...
(QB_NEW_FR_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION_DASH_–)
[grammar] ~57-~57: Il y a peut-être une erreur ici
Context: ...r avec soin** - Le JSON doit être valide ## Récupération Si l'application ne s'ouvr...
(QB_NEW_FR)
docs/src/content/docs/zh/principles/ssh.md
[uncategorized] ~291-~291: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:必要"地"断开
Context: ...## 性能考量 ### 连接复用 - 在不同功能间复用客户端 - 避免不必要的断开和重连 - 为并发操作建立连接池 ### 最佳设置 - 超时时间...
(wb4)
🪛 markdownlint-cli2 (0.20.0)
docs/src/content/docs/ja/principles/ssh.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
129-129: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
134-134: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
142-142: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
147-147: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
222-222: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
docs/src/content/docs/es/principles/ssh.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
129-129: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
134-134: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
142-142: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
147-147: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
222-222: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
docs/src/content/docs/zh/principles/ssh.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
129-129: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
134-134: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
142-142: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
147-147: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
222-222: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Cloudflare Pages
🔇 Additional comments (12)
docs/astro.config.mjs (2)
9-37: LGTM! Title change and i18n configuration look correct.The title change from 'Flutter Server Box' to 'Server Box' addresses the branding consistency requirement from the PR review. The i18n configuration follows Starlight conventions properly:
- Using
rootasdefaultLocalewith English is the recommended pattern- All locale entries have the required
labelandlangproperties- Six languages configured (en, zh, de, fr, es, ja)
44-126: Sidebar translations are well-structured.The translations are properly organized with:
- Group-level translations for section headers
- Item-level translations for individual navigation entries
- Consistent translation coverage across all supported locales
- Proper JavaScript string escaping (e.g.,
'Gestion d\'état'on line 106)docs/src/content/docs/advanced/json-settings.md (1)
14-42: LGTM! JSON settings documentation is accurate.All three documented hidden settings (timeOut, recordHistory, textFactor) use the correct JSON keys and have accurate type/default/range information.
docs/src/content/docs/fr/advanced/json-settings.md (1)
14-42: LGTM! French documentation is accurate.All JSON setting keys (timeOut, recordHistory, textFactor) and their examples are correct and consistent with the codebase.
docs/src/content/docs/ja/advanced/json-settings.md (1)
14-42: LGTM! Previous blocking issues have been resolved.The Japanese documentation now correctly uses:
timeOutwith proper capitalization ({"timeOut": 10})- Only valid settings (serverTabUseOldUI has been removed)
All settings are accurate and consistent with the verified codebase definitions.
docs/src/content/docs/es/advanced/json-settings.md (1)
14-42: LGTM! Spanish documentation is accurate.All JSON setting keys and examples are correct. The documentation properly uses
timeOut(with capital O) and includes only valid settings.docs/src/content/docs/de/advanced/json-settings.md (1)
14-42: LGTM! German documentation is accurate.All JSON setting keys and examples are correct. The documentation properly documents the three valid hidden settings with accurate types, defaults, and ranges.
docs/src/content/docs/ja/platforms/desktop.md (4)
55-64: Keyboard shortcuts section is now accurate and complete! ✓The keyboard shortcuts documentation correctly lists only the implemented shortcuts (Cmd + ,, Cmd + Q, Cmd + 1-9), properly scopes them to macOS only, and includes an appropriate note about Windows/Linux limitations. This resolves the previously flagged blocking issue.
8-51: Platform-specific features are well-documented.The macOS, Linux, and Windows sections appropriately describe standard platform capabilities (menu bar integration, system tray, jump lists, Touch Bar, etc.) with proper platform scoping. The optional/device-specific qualifications (e.g., Touch Bar for compatible devices) are appropriately noted.
66-78: Cross-platform features and desktop advantages accurately described.The themes section correctly lists the available theme options (confirmed in previous code verification), and the desktop advantages section provides appropriate general guidance about desktop platform benefits.
1-78: Documentation accurately reflects desktop platform capabilities.This Japanese desktop documentation file correctly describes the platform-specific and cross-platform features, with accurate scoping of capabilities to their respective platforms. The previously identified blocking issue regarding keyboard shortcuts has been successfully resolved, and all feature claims align with the application's actual implementation.
docs/src/content/docs/zh/principles/ssh.md (1)
1-4: Verify issue participants are recorded inlib/data/res/github_id.dart.This PR fixes
#1035. Confirm that participants from that issue are added to theparticipantsfield inlib/data/res/github_id.dart, or add them if missing. (Requires access to issue details to identify participants.)
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
|
@coderabbitai 可以approve了吗 |
🧩 Analysis chain🏁 Script executed: Length of output: 3418
修正確認結果✅ 1) SSH ドキュメント (zh|de|fr|es|ja)/principles/ssh.md
✅ 2) 日本語 JSON 設定ページ
✅ 3) 日本語デスクトップページ
すべての必須修正が完了していますので、approve します!🎉 ✅ Actions performedComments resolved and changes approved. |
Fixes #1035
Summary by CodeRabbit
New Features
Documentation
Chores
✏️ Tip: You can customize this high-level summary in your review settings.