Add 9Router control plugin - #291
Conversation
This commit introduces the initial version of the 9Router panel plugin. It provides a Noctalia panel to manage 9Router model combos directly from the bar, without requiring the web dashboard. Key features: - List, create, rename, and delete model combos. - Reorder models within a combo via drag-and-drop. - Change combo routing kind (fallback, round-robin, fusion). - Search and filter combos. - Supports 9Router dashboard authentication via CLI token or password. Includes a bar widget showing connection status, a full UI panel, and a background service to interact with the 9Router REST API. Translations for English and Vietnamese are included.
Update plugin IDs, IPC commands, and internal references.
8d53319 to
d59cdac
Compare
The user-configurable data_dir is concatenated directly into a shell command without quoting. Shell metacharacters in this setting can execute arbitrary commands in the user's session when CLI-token computation runs after an authentication challenge. Pass paths through a safe argument API or apply complete shell quoting before invoking the command.
The user-configurable server_host becomes part of an unquoted curl URL. Shell metacharacters in the host are interpreted when password login runs, allowing arbitrary command execution. Use the native HTTP API for login, a non-shell argument API, or correctly quote the complete URL.
The manifest declares no dependencies, but service.luau:155, service.luau:169, and service.luau:466 spawn external commands including sleep, cat, sha256sum, cut, and curl. Authentication can fail when these commands are unavailable, and the catalog cannot communicate the requirements. Declare the required commands and document each one under README.md's Requirements section. |
Add shell_quote() for URLs, bodies, and file paths passed to noctalia.runAsync. Declare required external commands in plugin.toml and document them in the README.
This commit introduces the initial version of the 9Router control plugin. It provides a Noctalia panel to manage 9Router model combos directly from the bar, without requiring the web dashboard.
Key features:
Includes a bar widget showing connection status, a full UI panel, and a background service to interact with the 9Router REST API. Translations for English and Vietnamese are included.
Plugin
weinguyen/9router-panelplugin.toml)What it does
External dependencies
Testing
Screenshots / Videos
Checklist
idafter the/inplugin.tomlexactly.plugin.toml,README.md,thumbnail.webp, andtranslations/en.json.README.mdfollows theREADME template, documents
every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.
thumbnail.webpwith the thumbnail generator.versionfollows semver and is bumped in this PR;plugin_apiis the oldest API level this plugin requires.understand that language well enough to review and maintain it (no unreviewed machine/LLM translations).
catalog.toml; CI generates it.Code review attestation
Plugins run as trusted, unsandboxed Luau in the user's session. Confirm:
licensedeclared inplugin.toml.