From 792f8eadcca56c0855fa6d3dc538699fbdff0b94 Mon Sep 17 00:00:00 2001 From: kylethedeveloper <8023096+kylethedeveloper@users.noreply.github.com> Date: Wed, 25 Mar 2026 19:58:54 -0400 Subject: [PATCH 1/2] feat: Implement update checking functionality and add support links --- src/index.html | 28 ++++++++++++++++++++---- src/main.js | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/src/index.html b/src/index.html index b84c003..dc306e7 100644 --- a/src/index.html +++ b/src/index.html @@ -156,13 +156,33 @@

OratioText

-

Loading - version...

+
+

Loading version... +

+
+ + +
+

OratioText is a speech to text application that runs entirely on your local machine, ensuring full privacy.
It uses the whisper.cpp models under the hood.

- GitHub Repository +
+ +
+
+ GitHub Repository + | + Report an Issue +
diff --git a/src/main.js b/src/main.js index a531066..f7d3c66 100644 --- a/src/main.js +++ b/src/main.js @@ -462,3 +462,62 @@ function toggleTheme() { themeToggle.addEventListener("click", toggleTheme); initTheme(); +// ---- Update Check --------------------------------------------------------- + +const checkUpdateBtn = document.getElementById("check-update-btn"); +const updateStatus = document.getElementById("update-status"); + +if (checkUpdateBtn) { + checkUpdateBtn.addEventListener("click", checkForUpdates); +} + +async function checkForUpdates() { + checkUpdateBtn.disabled = true; + checkUpdateBtn.textContent = "Checking..."; + updateStatus.classList.add("hidden"); + + try { + const response = await fetch("https://api.github.com/repos/kylethedeveloper/OratioText/releases/latest"); + if (!response.ok) throw new Error("Failed to check for updates"); + const data = await response.json(); + + // Tag names typically have a 'v' prefix, e.g. 'v1.0.1'. Clean it up easily: + const latestVersion = data.tag_name.replace(/^v/, ''); + const currentVersion = await invoke("get_app_version"); + + const isNewer = compareVersions(latestVersion, currentVersion) > 0; + + updateStatus.classList.remove("hidden"); + if (isNewer) { + updateStatus.textContent = "⚠ Newer version available!"; + updateStatus.style.color = "var(--color-warning)"; + updateStatus.style.pointerEvents = "auto"; + updateStatus.style.cursor = "pointer"; + } else { + updateStatus.textContent = "☑ App up to date!"; + updateStatus.style.color = "var(--color-success)"; + updateStatus.style.pointerEvents = "none"; + updateStatus.style.cursor = "default"; + } + } catch (err) { + console.error("Update check failed", err); + updateStatus.textContent = "Failed to check update."; + updateStatus.style.color = "var(--color-error)"; + updateStatus.classList.remove("hidden"); + } finally { + checkUpdateBtn.disabled = false; + checkUpdateBtn.textContent = "Check for updates"; + } +} + +function compareVersions(v1, v2) { + const parts1 = v1.split('.').map(Number); + const parts2 = v2.split('.').map(Number); + for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) { + const n1 = parts1[i] || 0; + const n2 = parts2[i] || 0; + if (n1 > n2) return 1; + if (n1 < n2) return -1; + } + return 0; +} From 518690a65c8db6d94c16bb854ce36728fa1dc544 Mon Sep 17 00:00:00 2001 From: kylethedeveloper <8023096+kylethedeveloper@users.noreply.github.com> Date: Wed, 25 Mar 2026 19:59:29 -0400 Subject: [PATCH 2/2] fix: update version --- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 8e0143b..f3d7e33 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oratiotext" -version = "1.0.1" +version = "1.0.2" description = "A cross-platform desktop application for converting speech to text using Whisper" authors = ["kylethedeveloper"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index d43bb98..4c66ab1 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json", "productName": "OratioText", - "version": "1.0.1", + "version": "1.0.2", "identifier": "com.oratiotext.app", "build": { "frontendDist": "../src"