declare the whisper server as a setting

This plugin ships no web/, so there was nowhere to set its server URL — the only
way in was an HTTP call somebody had to already know about. That is not a
setting, it is a secret handshake, and it is the state this shipped in.

Declared rather than rendered: the platform draws the form on the plugin detail
page and PUTs to this plugin's own /config. It stores nothing, so the URL stays
where this plugin already kept it and the validation against the server still
happens here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
2026-08-24 04:00:03 +00:00
co-authored by Claude Opus 5
parent 3da6d11c00
commit 3d2e4afd4e
+20 -1
View File
@@ -25,7 +25,7 @@ import type { PluginManifest } from '@@/plugins/manifest';
* *
* Nothing shells out. The sidecar reaches whisper.cpp with `fetch`, the same as the code it replaces did. * Nothing shells out. The sidecar reaches whisper.cpp with `fetch`, the same as the code it replaces did.
* *
* ── No `web/` ── * ── No `web/`, and no settings screen of its own ──
* *
* This plugin ships no dashboard route and no dock tile — `plugin.web` gates the tile, and a * This plugin ships no dashboard route and no dock tile — `plugin.web` gates the tile, and a
* backend-only plugin has nothing to pin one to. It is reached from a task's right-click menu and by an * backend-only plugin has nothing to pin one to. It is reached from a task's right-click menu and by an
@@ -41,6 +41,25 @@ export const manifest: PluginManifest = {
icon: 'AudioLines', icon: 'AudioLines',
color: '#f97316', color: '#f97316',
/**
* The whisper.cpp server this talks to. Declared rather than rendered: this plugin ships no `web/`, so
* without a declaration there is nowhere to set it and the only way in is an HTTP call somebody has to
* know about — which is the state it shipped in.
*
* The platform renders the form and PUTs to this plugin's own `/config`. It stores nothing: the URL
* lives where this plugin keeps it, and validation against the server still happens here.
*/
settings: [
{
key: 'url',
label: 'Whisper server',
hint: 'The whisper.cpp server to transcribe through. Checked before it is saved.',
type: 'url',
required: true,
placeholder: 'http://127.0.0.1:8178',
},
],
permissions: [ permissions: [
{ {
key: 'transcribe', key: 'transcribe',