Files
ai-control/src-tauri/build.rs
T
marcusH df828daea9 Pools können auf ein vorhandenes Config-Verzeichnis verweisen
Wer claude schon benutzt, hat einen fertigen Login in ~/.claude. Bisher
begann ai-control trotzdem bei null: jeder Pool war ein neu angelegtes
Verzeichnis, der erste Sessionstart verlangte /login. Ein Pool kann jetzt
stattdessen auf ein bestehendes Verzeichnis zeigen.

pool.json trägt dafür optional `dir` (home-kontrahiert). Der Pool-Ordner
ist dann nur die Hülle für diese Datei; pool_config_dir() löst auf und
ist die einzige Stelle, über die Sessionstart, Verbrauchsstatistik,
Panel-Provisionierung und Keychain-Name gehen.

Zeigt ein Pool auf claudes Default-Verzeichnis, bleibt CLAUDE_CONFIG_DIR
ungesetzt: claude nimmt dieses Verzeichnis von sich aus und damit den
unsuffixierten Keychain-Eintrag, an dem der bestehende Login hängt (am
Keychain gegengeprüft — "Claude Code-credentials" ohne Suffix neben den
suffixierten Pool-Einträgen). Ein Verweis auf ein anderes Verzeichnis
setzt die Variable wie gewohnt.

Das verwiesene Verzeichnis gehört der App nicht: dort entsteht nur die
Panel-Ausstattung (Skill, MCP-Eintrag, Freigabe-Ergänzung, alles
additiv), keine settings.json-Grundausstattung. Löschen trifft nur die
Hülle; Runtime-Symlinks und das Zurücksetzen des Keychain-Eintrags sind
gesperrt. Ein Verzeichnis kann nur ein Pool belegen, Ziele innerhalb von
pools/ sind ausgeschlossen.

In der UI erscheint der Knopf nur, wenn ~/.claude existiert und noch
kein Pool darauf zeigt; die Liste zeigt den Pfad unter dem Namen und
statt "Zurücksetzen" den Hinweis, dass die Anmeldung claude gehört.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 09:43:00 +02:00

73 lines
1.9 KiB
Rust

fn main() {
// App-ACL-Manifest: erzeugt pro Command allow-/deny-Permissions. Sobald das
// Manifest existiert, gilt deny-by-default — jedes Command muss in einer
// Capability einem Fenster zugeteilt sein (capabilities/*.json), sonst
// lehnt Tauri den Aufruf ab. Neue Commands hier UND in der passenden
// Capability eintragen.
tauri_build::try_build(
tauri_build::Attributes::new().app_manifest(tauri_build::AppManifest::new().commands(&[
"list_projects",
"create_project_full",
"add_project",
"delete_preview",
"delete_project_scoped",
"project_work_dirs",
"set_project_dir",
"add_work_dir",
"remove_work_dir",
"list_pools",
"create_oauth_pool",
"create_apikey_pool",
"create_reference_pool",
"default_config_dir",
"rename_pool",
"delete_pool",
"assign_pool",
"unassign_pool",
"set_terminal_config",
"project_icon",
"pool_label",
"todo_state",
"set_todo",
"usage_stats",
"stop_project",
"restart_project",
"start_or_focus_cmd",
"open_main_window",
"quit_app",
"sync_setting",
"set_sync_setting",
"terminal_font_size",
"set_terminal_font_size",
"link_pool_runtime",
"oauth_login",
"keychain_status",
"set_apikey",
"panel_archive_dir_cmd",
"panel_archive_cmd",
"set_archive_home_cmd",
"change_archive_home_cmd",
"clear_archive_home_cmd",
"archive_docs_cmd",
"reveal_path_cmd",
"spellcheck_lang",
"open_terminal",
"term_start",
"term_log",
"term_write",
"term_resize",
"panel_read",
"commands_read",
"commands_delete",
"panel_set",
"search_read",
"search_run",
"panel_load",
"wiki_read",
"wiki_open",
"open_panel_window",
])),
)
.expect("tauri-build");
}