diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index 1e8bb7d..3bc208a 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -300,7 +300,7 @@ pub fn create_note( pub fn create_daily_note(state: State<'_, AppState>, date: Option) -> Result { let config = state.config.lock().map_err(|e| e.to_string())?; let vault_path = config.active_vault.as_ref().ok_or("No active vault")?; - let entry = operations::create_daily_note(vault_path, date.as_deref())?; + let entry = operations::create_daily_note(vault_path, date.as_deref(), &config.daily_title_format)?; if let Ok(search_guard) = state.search_index.lock() { if let Some(ref search) = *search_guard { @@ -1068,6 +1068,7 @@ pub fn set_general_settings( compact_notes: bool, time_format: String, week_start: String, + daily_title_format: String, gpu_acceleration: bool, autostart: bool, pdf_preview: bool, @@ -1088,6 +1089,7 @@ pub fn set_general_settings( config.restore_last_session = restore_last_session; config.time_format = time_format; config.week_start = week_start; + config.daily_title_format = daily_title_format; config.gpu_acceleration = gpu_acceleration; config.autostart = autostart; config.pdf_preview = pdf_preview; diff --git a/src-tauri/src/types.rs b/src-tauri/src/types.rs index 1a69cf7..6fd7d69 100644 --- a/src-tauri/src/types.rs +++ b/src-tauri/src/types.rs @@ -79,6 +79,8 @@ pub struct AppConfig { pub time_format: String, #[serde(default = "default_week_start")] pub week_start: String, + #[serde(default = "default_daily_title_format")] + pub daily_title_format: String, #[serde(default)] pub gpu_acceleration: bool, #[serde(default)] @@ -178,6 +180,10 @@ fn default_week_start() -> String { "monday".to_string() } +fn default_daily_title_format() -> String { + "localized".to_string() +} + fn default_max_versions() -> u32 { 20 } @@ -201,6 +207,7 @@ impl Default for AppConfig { show_note_dates: true, time_format: "relative".to_string(), week_start: "monday".to_string(), + daily_title_format: "localized".to_string(), gpu_acceleration: true, autostart: false, pdf_preview: false, diff --git a/src-tauri/src/vault/operations.rs b/src-tauri/src/vault/operations.rs index cdb99de..340cd1e 100644 --- a/src-tauri/src/vault/operations.rs +++ b/src-tauri/src/vault/operations.rs @@ -520,15 +520,27 @@ fn get_system_locale() -> Locale { } } -pub fn create_daily_note(vault_path: &str, date: Option<&str>) -> Result { +pub fn create_daily_note( + vault_path: &str, + date: Option<&str>, + format: &str, +) -> Result { let target_date = match date { Some(d) => chrono::NaiveDate::parse_from_str(d, "%Y-%m-%d") .map_err(|e| format!("Invalid date: {}", e))?, None => Local::now().date_naive(), }; let date_str = target_date.format("%Y-%m-%d").to_string(); - let locale = get_system_locale(); - let title = target_date.format_localized("%B %d, %Y", locale).to_string(); + let title = match format { + "iso" => target_date.format("%Y-%m-%d").to_string(), + "long" => target_date.format("%B %-d, %Y").to_string(), + "us" => target_date.format("%m/%d/%Y").to_string(), + "eu" => target_date.format("%d/%m/%Y").to_string(), + _ => { + let locale = get_system_locale(); + target_date.format_localized("%B %d, %Y", locale).to_string() + } + }; let dir = Path::new(vault_path).join("Daily"); fs::create_dir_all(&dir).map_err(|e| e.to_string())?; diff --git a/src/lib/api.ts b/src/lib/api.ts index 34bf5c5..f677e25 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -216,6 +216,7 @@ export async function setGeneralSettings( compactNotes: boolean, timeFormat: string, weekStart: string, + dailyTitleFormat: string, gpuAcceleration: boolean, autostart: boolean, pdfPreview: boolean, @@ -234,6 +235,7 @@ export async function setGeneralSettings( compactNotes, timeFormat, weekStart, + dailyTitleFormat, gpuAcceleration, autostart, pdfPreview, diff --git a/src/lib/components/SettingsPanel.svelte b/src/lib/components/SettingsPanel.svelte index 3f0e986..cc2d5cf 100644 --- a/src/lib/components/SettingsPanel.svelte +++ b/src/lib/components/SettingsPanel.svelte @@ -461,6 +461,7 @@ let restoreLastSession = $state($appConfig?.restore_last_session ?? false); let timeFormat = $state($appConfig?.time_format ?? 'relative'); let weekStart = $state($appConfig?.week_start ?? 'monday'); + let dailyTitleFormat = $state($appConfig?.daily_title_format ?? 'localized'); let gpuAcceleration = $state($appConfig?.gpu_acceleration ?? true); let autostart = $state($appConfig?.autostart ?? false); @@ -519,6 +520,7 @@ $appConfig.restore_last_session = restoreLastSession; $appConfig.time_format = timeFormat; $appConfig.week_start = weekStart; + $appConfig.daily_title_format = dailyTitleFormat; $appConfig.gpu_acceleration = gpuAcceleration; $appConfig.autostart = autostart; $appConfig.pdf_preview = pdfPreview; @@ -531,7 +533,7 @@ $appConfig.close_to_tray = closeToTray; $appConfig.enable_wiki_links = enableWikiLinks; } - setGeneralSettings(compactNotes, timeFormat, weekStart, gpuAcceleration, autostart, pdfPreview, pdfHeight, titleMode, hideTitleInBody, showLineNumbers, defaultViewMode, showTrayIcon, closeToTray, enableWikiLinks, showNoteDates, restoreLastSession) + setGeneralSettings(compactNotes, timeFormat, weekStart, dailyTitleFormat, gpuAcceleration, autostart, pdfPreview, pdfHeight, titleMode, hideTitleInBody, showLineNumbers, defaultViewMode, showTrayIcon, closeToTray, enableWikiLinks, showNoteDates, restoreLastSession) .catch((e) => console.error('Failed to save general settings:', e)); } @@ -656,6 +658,7 @@ restoreLastSession = $appConfig.restore_last_session ?? false; timeFormat = $appConfig.time_format ?? 'relative'; weekStart = $appConfig.week_start ?? 'monday'; + dailyTitleFormat = $appConfig.daily_title_format ?? 'localized'; gpuAcceleration = $appConfig.gpu_acceleration ?? true; autostart = $appConfig.autostart ?? false; pdfPreview = $appConfig.pdf_preview ?? false; @@ -801,6 +804,17 @@ +
+

Daily note title format

+
+ + + + + +
+
+ {#if isMobile}

Vault

diff --git a/src/lib/types.ts b/src/lib/types.ts index 14e1962..c6f0546 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -59,6 +59,7 @@ export interface AppConfig { show_note_dates: boolean; time_format: string; week_start: string; + daily_title_format: string; gpu_acceleration: boolean; autostart: boolean; pdf_preview: boolean;