feat: add temp file management system for file uploads (#62)

Implements the foundation for file upload support by adding a temp file
management system that tracks files per conversation.

- Add temp_manager.rs module with TempFileManager struct
- Add Tauri commands: save_temp_file, register_temp_file, get_temp_files,
  cleanup_temp_files, cleanup_all_temp_files, cleanup_orphaned_temp_files
- Clean up orphaned files from previous sessions on app startup
- Clean up temp files when conversation is deleted
- Store temp files in /tmp/hikari-uploads/ with unique UUIDs
This commit is contained in:
2026-01-24 13:50:50 -08:00
committed by Naomi Carrigan
parent bbeff7ae2e
commit 2e5de9dc5e
5 changed files with 243 additions and 4 deletions
+18
View File
@@ -4,6 +4,7 @@ mod commands;
mod config;
mod notifications;
mod stats;
mod temp_manager;
mod types;
mod vbs_notification;
mod windows_toast;
@@ -14,6 +15,7 @@ use bridge_manager::create_shared_bridge_manager;
use commands::load_saved_achievements;
use commands::*;
use notifications::*;
use temp_manager::create_shared_temp_manager;
use vbs_notification::*;
use windows_toast::*;
use wsl_notifications::*;
@@ -21,6 +23,7 @@ use wsl_notifications::*;
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
let bridge_manager = create_shared_bridge_manager();
let temp_manager = create_shared_temp_manager().expect("Failed to create temp file manager");
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
@@ -31,9 +34,18 @@ pub fn run() {
.plugin(tauri_plugin_os::init())
.plugin(tauri_plugin_http::init())
.manage(bridge_manager.clone())
.manage(temp_manager.clone())
.setup(move |app| {
// Initialize the app handle in the bridge manager
bridge_manager.lock().set_app_handle(app.handle().clone());
// Clean up any orphaned temp files from previous sessions
if let Ok(count) = temp_manager.lock().cleanup_orphaned_files() {
if count > 0 {
println!("Cleaned up {} orphaned temp files", count);
}
}
Ok(())
})
.invoke_handler(tauri::generate_handler![
@@ -58,6 +70,12 @@ pub fn run() {
validate_directory,
list_skills,
check_for_updates,
save_temp_file,
register_temp_file,
get_temp_files,
cleanup_temp_files,
cleanup_all_temp_files,
cleanup_orphaned_temp_files,
])
.run(tauri::generate_context!())
.expect("error while running tauri application");