Eingebautes Terminal (xterm.js + portable-pty) und Start/Beenden-Button
- Terminal-Fenster als eigener Prozess (--terminal <projekt>) mit eigener PTY, startet claude-sync im Projektordner - Projektliste: ein Button pro Zeile — grün Starten (open_terminal) bzw. rot Beenden (stop_project, SIGTERM auf exakte PID / Ghostty-Quit) - is_running erfasst Ghostty oder laufenden Terminal-Prozess - Status-Kreis ohne Prozess unsichtbar
This commit is contained in:
@@ -29,9 +29,18 @@ async function refresh() {
|
||||
}
|
||||
}
|
||||
|
||||
async function start(project: Project) {
|
||||
async function stop(project: Project) {
|
||||
try {
|
||||
await invoke("start_project", { project: project.name });
|
||||
await invoke("stop_project", { project: project.name });
|
||||
await refresh();
|
||||
} catch (e) {
|
||||
error.value = String(e);
|
||||
}
|
||||
}
|
||||
|
||||
async function openTerminal(project: Project) {
|
||||
try {
|
||||
await invoke("open_terminal", { project: project.name });
|
||||
await refresh();
|
||||
} catch (e) {
|
||||
error.value = String(e);
|
||||
@@ -112,9 +121,8 @@ onUnmounted(() => window.clearInterval(timer));
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<button @click="start(p)">
|
||||
{{ p.running ? "Aktivieren" : "Starten" }}
|
||||
</button>
|
||||
<button v-if="p.running" class="stop" @click="stop(p)">Beenden</button>
|
||||
<button v-else class="start" @click="openTerminal(p)">Starten</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
Reference in New Issue
Block a user