feat(pinokio): clean one-click launcher for multi-tts-server

- install: clone app source, create venv, install deps + torch + models
- start: daemon uvicorn on 127.0.0.1 with auto-captured URL
- reset: remove venv/cache/models but keep source
- update: pull both launcher and app, then re-install
- sanitized: no local env details, no TODO/DONE
- icon.png included
This commit is contained in:
2026-07-04 01:38:23 +08:00
commit 65c2ea3d50
10 changed files with 403 additions and 0 deletions
+94
View File
@@ -0,0 +1,94 @@
// Multi-TTS-Server Pinokio launcher
// One-click install/start for hermes/multi-tts-server
module.exports = {
version: "1.0.0",
title: "Multi-TTS-Server",
description: "XTTS + F5-TTS server with OpenAI-compatible API, Gradio Web UI, and MultiTTS Android export.",
icon: "icon.png",
menu: async (kernel, info) => {
// Marker: app/venv exists after install
let installed = info.exists("app/venv/Scripts/python.exe") ||
info.exists("app/venv/bin/python")
let running = {
install: info.running("install.js"),
start: info.running("start.js"),
update: info.running("update.js"),
reset: info.running("reset.js"),
}
if (running.install) {
return [{
default: true,
icon: "fa-solid fa-plug",
text: "Installing",
href: "install.js",
}]
}
if (running.start) {
let local = info.local("start.js")
if (local && local.url) {
return [{
default: true,
icon: "fa-solid fa-rocket",
text: "Open Web UI",
href: local.url,
}, {
icon: "fa-solid fa-terminal",
text: "Terminal",
href: "start.js",
}]
}
return [{
default: true,
icon: "fa-solid fa-terminal",
text: "Starting",
href: "start.js",
}]
}
if (running.update) {
return [{
default: true,
icon: "fa-solid fa-terminal",
text: "Updating",
href: "update.js",
}]
}
if (running.reset) {
return [{
default: true,
icon: "fa-solid fa-terminal",
text: "Resetting",
href: "reset.js",
}]
}
if (installed) {
return [{
default: true,
icon: "fa-solid fa-power-off",
text: "Start",
href: "start.js",
}, {
icon: "fa-solid fa-plug",
text: "Update",
href: "update.js",
}, {
icon: "fa-regular fa-circle-xmark",
text: "<div><strong>Reset</strong><div>Revert to pre-install state</div></div>",
href: "reset.js",
confirm: "Are you sure you wish to reset the app? This deletes the venv and any downloaded models.",
}]
}
return [{
default: true,
icon: "fa-solid fa-plug",
text: "Install",
href: "install.js",
}]
}
}