Ghostty raus, Session-Watcher mit Sync-Opt-in, Tooltip WKWebView-tauglich

- Ghostty komplett entfernt: bundle_id/ghostty_running/open_project/start_project
  weg, is_running nur noch über terminal_pids; restart_project über das interne
  Terminal (kill_terminals + open_terminal) statt osascript-Quit
- Session-Watcher im Tray-Prozess: synct das claude-projects-Repo bei
  Session-Ende (Prozess verschwindet, greift auch bei HUP/Kill)
- Sync als Opt-in (~/.config/ai-control/settings.json, default aus) und nur
  wenn ein Git-Repo vorhanden ist; Commands sync_setting/set_sync_setting
- Löschen-Button in der Pool-Übersicht gesperrt bei laufendem Projekt, Grund per
  CSS-Hover-Pop (WKWebView zeigt keine nativen title-Tooltips)
This commit is contained in:
marcus.hinz
2026-07-04 19:09:06 +02:00
parent 20fc8474d2
commit 3e022311ee
2 changed files with 139 additions and 73 deletions
+2 -3
View File
@@ -93,7 +93,7 @@ pub fn build_window(
/// Startet die PTY für das rufende Fenster: `claude-sync` im Projektordner.
/// zsh -i lädt die .zshrc (PATH, fnm); Pool, Sentinel und git-Sync macht
/// claude-sync selbst — identisch zum Ghostty-Starter.
/// claude-sync selbst.
#[tauri::command]
pub fn term_start(
window: tauri::WebviewWindow,
@@ -181,8 +181,7 @@ pub fn term_resize(
}
/// Beim Schließen eines Terminal-Fensters: Kind killen, Session verwerfen.
/// Das Droppen des Masters schließt die PTY — claude bekommt HUP wie beim
/// Fenster-X in Ghostty.
/// Das Droppen des Masters schließt die PTY — claude bekommt HUP.
pub fn close(window: &tauri::Window) {
let terminals = window.state::<Terminals>();
let session = terminals.0.lock().unwrap().remove(window.label());