From a15b267614bb4a5372e4c24e8beebaead2181e32 Mon Sep 17 00:00:00 2001 From: Yuri Karamian Date: Wed, 26 Aug 2026 17:16:16 +0200 Subject: [PATCH] Add scroll font size preference and bump v1.3.5 --- package.json | 4 +-- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/src/commands.rs | 16 +++++++++++ src-tauri/src/lib.rs | 1 + src-tauri/src/types.rs | 18 +++++++++++++ src-tauri/tauri.conf.json | 2 +- src/lib/api.ts | 4 +++ src/lib/components/SettingsPanel.svelte | 22 +++++++++++++++- src/lib/types.ts | 1 + src/lib/utils/editor-zoom.test.mjs | 35 +++++++++++++++++++++++++ src/lib/utils/editor-zoom.ts | 16 +++++++++++ src/routes/+page.svelte | 15 +++++++++-- 13 files changed, 130 insertions(+), 8 deletions(-) create mode 100644 src/lib/utils/editor-zoom.test.mjs create mode 100644 src/lib/utils/editor-zoom.ts diff --git a/package.json b/package.json index aa8797d..fa52336 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "helixnotes", "private": true, "license": "AGPL-3.0-or-later", - "version": "1.3.4", + "version": "1.3.5", "type": "module", "scripts": { "dev": "vite dev", @@ -11,7 +11,7 @@ "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test": "node --test tests/*.test.mjs", + "test": "node --test tests/*.test.mjs src/lib/utils/*.test.mjs", "test:rust": "cargo test --manifest-path src-tauri/Cargo.toml", "lint:rust": "cargo fmt --manifest-path src-tauri/Cargo.toml --check && cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings", "verify": "pnpm check && pnpm test && pnpm test:rust && pnpm lint:rust && pnpm build", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 74f2385..cf3b9c0 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1776,7 +1776,7 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "helixnotes" -version = "1.3.4" +version = "1.3.5" dependencies = [ "arboard", "chrono", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a9ba701..23f85e0 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "helixnotes" -version = "1.3.4" +version = "1.3.5" description = "Local markdown note-taking app" authors = ["HelixNotes"] license = "AGPL-3.0-or-later" diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index cbcfe62..0fe9e04 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -470,6 +470,22 @@ pub fn set_font_size(app: AppHandle, state: State<'_, AppState>, size: u32) -> R .map_err(|e| e.to_string()) } +#[tauri::command] +pub fn set_scroll_to_change_font_size( + app: AppHandle, + state: State<'_, AppState>, + enabled: bool, +) -> Result<(), String> { + let mut config = state.config.lock().map_err(|e| e.to_string())?; + config.scroll_to_change_font_size = enabled; + save_app_config(&config)?; + drop(config); + + use tauri::Emitter; + app.emit("scroll-to-change-font-size-changed", enabled) + .map_err(|e| e.to_string()) +} + #[tauri::command] pub fn set_font_family(state: State<'_, AppState>, family: String) -> Result<(), String> { let mut config = state.config.lock().map_err(|e| e.to_string())?; diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index e2388fa..0680ac0 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -172,6 +172,7 @@ pub fn run() { commands::export_custom_theme, commands::import_custom_themes, commands::set_font_size, + commands::set_scroll_to_change_font_size, commands::set_font_family, commands::set_line_height, commands::set_ui_scale, diff --git a/src-tauri/src/types.rs b/src-tauri/src/types.rs index e5080b9..190290e 100644 --- a/src-tauri/src/types.rs +++ b/src-tauri/src/types.rs @@ -124,6 +124,8 @@ pub struct AppConfig { pub accent_color: Option, #[serde(default)] pub font_size: Option, + #[serde(default = "default_true")] + pub scroll_to_change_font_size: bool, #[serde(default)] pub font_family: Option, #[serde(default)] @@ -296,6 +298,7 @@ impl Default for AppConfig { system_dark_theme: default_system_dark_theme(), accent_color: None, font_size: None, + scroll_to_change_font_size: true, font_family: None, line_height: None, ui_scale: None, @@ -554,4 +557,19 @@ mod startup_view_tests { assert!(!config.show_note_switcher); } + + #[test] + fn scroll_font_sizing_stays_enabled_for_new_and_existing_configs() { + let config = AppConfig::default(); + assert!(config.scroll_to_change_font_size); + + let mut value = serde_json::to_value(config).unwrap(); + value + .as_object_mut() + .unwrap() + .remove("scroll_to_change_font_size"); + let config: AppConfig = serde_json::from_value(value).unwrap(); + + assert!(config.scroll_to_change_font_size); + } } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 8e652d3..2fa3a4d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "HelixNotes", - "version": "1.3.4", + "version": "1.3.5", "identifier": "com.helixnotes.app", "build": { "frontendDist": "../build", diff --git a/src/lib/api.ts b/src/lib/api.ts index cff32bf..4a3b6ac 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -71,6 +71,10 @@ export async function setFontSize(size: number): Promise { return invoke("set_font_size", { size }); } +export async function setScrollToChangeFontSize(enabled: boolean): Promise { + return invoke("set_scroll_to_change_font_size", { enabled }); +} + export async function setFontFamily(family: string): Promise { return invoke("set_font_family", { family }); } diff --git a/src/lib/components/SettingsPanel.svelte b/src/lib/components/SettingsPanel.svelte index 3eda45b..db5223a 100644 --- a/src/lib/components/SettingsPanel.svelte +++ b/src/lib/components/SettingsPanel.svelte @@ -1,6 +1,6 @@