From a10757ba7ce631510c258aaa854fd4f89f22ac08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Mon, 24 Aug 2026 03:39:54 +0000 Subject: [PATCH] marketplace: transcribe in the catalogue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without an entry the plugin is invisible to every server but the one it was built on — the catalogue is what a remote host reads, and the bundled constant is only the fallback when marketplace.officer.dev cannot be reached. Declares no osDependencies, matching the plugin's own manifest: it reaches whisper.cpp with fetch and shells out to nothing. An entry claiming ffmpeg would make an install demand a binary the code never calls. Synced. 19 in the catalogue, and the repository answers an anonymous https clone. Co-Authored-By: Claude Opus 5 Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043 --- src/servers/plugins/marketplace.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/servers/plugins/marketplace.ts b/src/servers/plugins/marketplace.ts index 246362d8..d11d91d6 100644 --- a/src/servers/plugins/marketplace.ts +++ b/src/servers/plugins/marketplace.ts @@ -311,6 +311,27 @@ const BUNDLED: CatalogueEntry[] = [ // No schema. The session is processes and a wine prefix on disk, and none of that belongs in Postgres. has: { api: true, schema: false, sidecar: true, web: true }, }, + { + appName: 'transcribe', + publisher: 'officerdev', + version: '1.0.0', + platform: '>=1.0.0', + label: 'Transcribe', + summary: 'Speech-to-text over your own whisper.cpp server', + color: '#f97316', + icon: 'AudioLines', + source: 'https://gitea.officer.dev/plugins/transcribe.git', + permissions: [ + { + key: 'transcribe', + label: 'Transcribe', + description: 'Turn audio into text over your own whisper.cpp server', + }, + ], + // No web/. A backend-only plugin has no screen to pin, which `plugin.web` already gates — this one is + // reached through the file browser and by whatever else asks the platform to turn audio into text. + has: { api: true, schema: false, sidecar: true, web: false }, + }, { appName: 'jellyfin', publisher: 'officerdev',