#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] mod git; use git::{ SearchCancellationState, apply_file_patch, cancel_code_search, cancel_file_history, checkout_branch, commit, commit_ai_generate, commit_ai_status, compare_commits, compare_file_to_head, compare_file_to_parent, create_branch, cred_delete, cred_load, cred_save, delete_branch, diff_file_against_working_tree, get_file_patch, get_remote_url, get_status, list_branches, list_commits, list_file_history, list_repository_files, merge_branch, open_repo_in_explorer, open_repository, open_repository_bundle, open_repository_file, pull, push, read_conflict, rename_branch, resolve_conflict, resolve_conflict_side, restore_file_from_commit, restore_files, restore_to_commit, search_code_introductions, stage_files, unstage_files, }; fn main() { let commit_ai_engine = commit_ai::CommitAiEngine::new(); tauri::Builder::default() .plugin(tauri_plugin_updater::Builder::new().build()) .manage(SearchCancellationState::default()) .manage(commit_ai_engine.clone()) .plugin(tauri_plugin_dialog::init()) .setup(move |_app| { // Kick off the (first-run-only) download and model load in the background so the // "Generate with AI" button becomes enabled once it's ready, without blocking startup. let engine = commit_ai_engine.clone(); tauri::async_runtime::spawn(async move { engine.ensure_loaded().await; }); Ok(()) }) .invoke_handler(tauri::generate_handler![ open_repository, open_repo_in_explorer, open_repository_file, get_status, list_branches, checkout_branch, create_branch, rename_branch, delete_branch, stage_files, unstage_files, restore_files, get_file_patch, apply_file_patch, commit, commit_ai_status, commit_ai_generate, pull, push, list_commits, restore_to_commit, restore_file_from_commit, merge_branch, list_repository_files, open_repository_bundle, list_file_history, cancel_file_history, compare_commits, compare_file_to_head, compare_file_to_parent, diff_file_against_working_tree, search_code_introductions, cancel_code_search, read_conflict, resolve_conflict, resolve_conflict_side, get_remote_url, cred_load, cred_save, cred_delete ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }