From 084db556fddca6936d96f8423b3511e535cae07a Mon Sep 17 00:00:00 2001 From: Matheus Cunha Date: Thu, 20 Aug 2026 01:37:07 -0300 Subject: [PATCH 1/3] feat: update Windows release artifact generation, improve select element styling, and simplify version retrieval logic --- .github/workflows/release.yml | 1 + frontend/scripts/generate-latest-json.js | 4 +++- .../components/ProblemForm.module.css | 5 +++++ .../src/features/releases/api/releasesApi.ts | 19 +++++-------------- frontend/src/index.css | 11 +++++++++++ .../src/routes/projects.$projectId.module.css | 5 +++++ 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ea4d07d..ad82610 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -273,6 +273,7 @@ jobs: release-assets/*.msi release-assets/*.dmg release-assets/*.AppImage + release-assets/*.exe release-assets/*.tar.gz release-assets/*.zip release-assets/*.sig diff --git a/frontend/scripts/generate-latest-json.js b/frontend/scripts/generate-latest-json.js index c5c5fb6..c218929 100644 --- a/frontend/scripts/generate-latest-json.js +++ b/frontend/scripts/generate-latest-json.js @@ -47,9 +47,11 @@ export function generateLatestJson(assetsDir, tag, repo = "MathCunha16/Devaulty" url: `${baseUrl}/${targetFileName}`, }); } - // Windows Updater Artifacts (NSIS zip) + // Windows Updater Artifacts (NSIS exe / zip) else if ( targetFileName.endsWith(".nsis.zip") || + targetFileName.endsWith("-setup.exe") || + (targetFileName.endsWith(".exe") && !targetFileName.endsWith(".msi")) || (targetFileName.includes("nsis") && !targetFileName.endsWith(".msi")) ) { const arch = diff --git a/frontend/src/features/problems/components/ProblemForm.module.css b/frontend/src/features/problems/components/ProblemForm.module.css index bfa7339..5d0c423 100644 --- a/frontend/src/features/problems/components/ProblemForm.module.css +++ b/frontend/src/features/problems/components/ProblemForm.module.css @@ -114,6 +114,11 @@ box-shadow: 0 0 0 1px var(--color-primary); } +.input option { + background-color: var(--color-background); + color: var(--color-foreground); +} + .textarea { background-color: var(--color-background); border: 1px solid var(--color-border); diff --git a/frontend/src/features/releases/api/releasesApi.ts b/frontend/src/features/releases/api/releasesApi.ts index 56ed4c9..146d09b 100644 --- a/frontend/src/features/releases/api/releasesApi.ts +++ b/frontend/src/features/releases/api/releasesApi.ts @@ -1,4 +1,3 @@ -import { getVersion } from "@tauri-apps/api/app"; import { check, Update } from "@tauri-apps/plugin-updater"; import { relaunch } from "@tauri-apps/plugin-process"; import pkg from "../../../../package.json"; @@ -12,19 +11,11 @@ let cachedUpdate: Update | null = null; export const releasesApi = { getCurrentVersion: async (): Promise => { - try { - const version = await getVersion(); - const current = version || pkg.version; - return { - currentVersion: current, - actualVersion: current, - }; - } catch { - return { - currentVersion: pkg.version, - actualVersion: pkg.version, - }; - } + const version = pkg.version; + return { + currentVersion: version, + actualVersion: version, + }; }, checkUpdates: async (): Promise => { diff --git a/frontend/src/index.css b/frontend/src/index.css index 92a6f91..d28eaad 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -38,6 +38,7 @@ @layer base { :root { + color-scheme: light; --background: 240 6% 96%; --foreground: 240 10% 3.9%; --card: 240 5% 98%; @@ -61,6 +62,7 @@ } .dark { + color-scheme: dark; --background: 240 10% 3.9%; --foreground: 0 0% 98%; --card: 240 10% 5.9%; @@ -94,6 +96,15 @@ font-family: var(--font-sans); transition: background-color 0.2s ease, border-color 0.2s ease; } + select { + color-scheme: inherit; + background-color: var(--color-card); + color: var(--color-foreground); + } + option { + background-color: var(--color-card); + color: var(--color-foreground); + } } /* Custom scrollbars for industrial look */ diff --git a/frontend/src/routes/projects.$projectId.module.css b/frontend/src/routes/projects.$projectId.module.css index 2bf65c5..580bbfc 100644 --- a/frontend/src/routes/projects.$projectId.module.css +++ b/frontend/src/routes/projects.$projectId.module.css @@ -82,6 +82,11 @@ border-color: var(--color-primary); } +.searchInput option { + background-color: var(--color-card); + color: var(--color-foreground); +} + .searchIcon { position: absolute; left: 0.625rem; From 41a991777e7eef6c4de59b498d1f475e9a463fc3 Mon Sep 17 00:00:00 2001 From: Matheus Cunha Date: Thu, 20 Aug 2026 01:39:52 -0300 Subject: [PATCH 2/3] chore: bump application version to v0.1.10-alpha --- backend/internal/domain/model/version.go | 2 +- frontend/package.json | 2 +- frontend/src-tauri/Cargo.toml | 2 +- frontend/src-tauri/tauri.conf.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/internal/domain/model/version.go b/backend/internal/domain/model/version.go index c17d366..e8c9732 100644 --- a/backend/internal/domain/model/version.go +++ b/backend/internal/domain/model/version.go @@ -2,4 +2,4 @@ package model // AppVersion stores the compiled version of the application. // Automatically maintained by scripts/sync-version.js and injected into the go build via -ldflags. -var AppVersion = "v0.1.9-alpha" +var AppVersion = "v0.1.10-alpha" diff --git a/frontend/package.json b/frontend/package.json index 1591c5f..99e3a0e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "0.1.9-alpha", + "version": "0.1.10-alpha", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src-tauri/Cargo.toml b/frontend/src-tauri/Cargo.toml index 347e492..8c0ee01 100644 --- a/frontend/src-tauri/Cargo.toml +++ b/frontend/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "devaulty" -version = "0.1.9-alpha" +version = "0.1.10-alpha" description = "Devaulty Desktop Client" authors = ["Matheus Cunha"] license = "" diff --git a/frontend/src-tauri/tauri.conf.json b/frontend/src-tauri/tauri.conf.json index f5515bd..3f96ffb 100644 --- a/frontend/src-tauri/tauri.conf.json +++ b/frontend/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "Devaulty", - "version": "0.1.9", + "version": "0.1.10", "identifier": "com.devaulty.app", "build": { "frontendDist": "../dist", From e1d401255b741c6d9458456903475dfbc87da205 Mon Sep 17 00:00:00 2001 From: Matheus Cunha Date: Thu, 20 Aug 2026 01:54:29 -0300 Subject: [PATCH 3/3] refactor: simplify updater manifest generation and support full SemVer in tauri.conf.json --- frontend/scripts/generate-latest-json.js | 61 +++++++++++++----------- frontend/scripts/sync-version.js | 10 ++-- frontend/src-tauri/tauri.conf.json | 2 +- 3 files changed, 38 insertions(+), 35 deletions(-) diff --git a/frontend/scripts/generate-latest-json.js b/frontend/scripts/generate-latest-json.js index c218929..d4ef748 100644 --- a/frontend/scripts/generate-latest-json.js +++ b/frontend/scripts/generate-latest-json.js @@ -18,15 +18,6 @@ export function generateLatestJson(assetsDir, tag, repo = "MathCunha16/Devaulty" platforms: {}, }; - const setPlatform = (platform, entry) => { - if (manifest.platforms[platform]) { - throw new Error( - `Conflict: platform "${platform}" was already assigned in manifest.` - ); - } - manifest.platforms[platform] = entry; - }; - for (const file of files) { if (file.endsWith(".sig")) { const targetFileName = file.slice(0, -4); // remove .sig @@ -36,18 +27,26 @@ export function generateLatestJson(assetsDir, tag, repo = "MathCunha16/Devaulty" // Linux Updater Artifacts (AppImage) if ( targetFileName.endsWith(".AppImage.tar.gz") || - (targetFileName.includes("AppImage") && !targetFileName.endsWith(".deb") && !targetFileName.endsWith(".rpm")) + targetFileName.endsWith(".AppImage") ) { const arch = targetFileName.includes("aarch64") || targetFileName.includes("arm64") ? "linux-aarch64" : "linux-x86_64"; - setPlatform(arch, { - signature, - url: `${baseUrl}/${targetFileName}`, - }); + + if (targetFileName.endsWith(".AppImage.tar.gz")) { + manifest.platforms[arch] = { + signature, + url: `${baseUrl}/${targetFileName}`, + }; + } else if (!manifest.platforms[arch]) { + manifest.platforms[arch] = { + signature, + url: `${baseUrl}/${targetFileName}`, + }; + } } - // Windows Updater Artifacts (NSIS exe / zip) + // Windows Updater Artifacts (prefer .nsis.zip for updater, fallback to -setup.exe) else if ( targetFileName.endsWith(".nsis.zip") || targetFileName.endsWith("-setup.exe") || @@ -58,37 +57,45 @@ export function generateLatestJson(assetsDir, tag, repo = "MathCunha16/Devaulty" targetFileName.includes("aarch64") || targetFileName.includes("arm64") ? "windows-aarch64" : "windows-x86_64"; - setPlatform(arch, { - signature, - url: `${baseUrl}/${targetFileName}`, - }); + + if (targetFileName.endsWith(".nsis.zip")) { + manifest.platforms[arch] = { + signature, + url: `${baseUrl}/${targetFileName}`, + }; + } else if (!manifest.platforms[arch]) { + manifest.platforms[arch] = { + signature, + url: `${baseUrl}/${targetFileName}`, + }; + } } // macOS Updater Artifacts (strictly .app.tar.gz, excluding .dmg) else if (targetFileName.endsWith(".app.tar.gz")) { if (targetFileName.includes("universal")) { - setPlatform("darwin-aarch64", { + manifest.platforms["darwin-aarch64"] = { signature, url: `${baseUrl}/${targetFileName}`, - }); - setPlatform("darwin-x86_64", { + }; + manifest.platforms["darwin-x86_64"] = { signature, url: `${baseUrl}/${targetFileName}`, - }); + }; } else if ( targetFileName.includes("x86_64") || targetFileName.includes("intel") || targetFileName.includes("x64") ) { - setPlatform("darwin-x86_64", { + manifest.platforms["darwin-x86_64"] = { signature, url: `${baseUrl}/${targetFileName}`, - }); + }; } else { // Default macOS build on GitHub Actions macos-latest runner (Apple Silicon ARM64) - setPlatform("darwin-aarch64", { + manifest.platforms["darwin-aarch64"] = { signature, url: `${baseUrl}/${targetFileName}`, - }); + }; } } } diff --git a/frontend/scripts/sync-version.js b/frontend/scripts/sync-version.js index 29788d0..49ac978 100644 --- a/frontend/scripts/sync-version.js +++ b/frontend/scripts/sync-version.js @@ -36,16 +36,12 @@ function syncVersion() { console.log(`Updated src-tauri/Cargo.toml -> ${version}`); } - // 3. Update tauri.conf.json - // Windows MSI (WiX Toolset) & macOS bundle require a strict numeric Major.Minor.Patch version. - // We extract the numeric prefix (e.g. "0.1.6-alpha.1" -> "0.1.6") for tauri.conf.json. - const numericVersion = version.split("-")[0]; - + // 3. Update tauri.conf.json (full SemVer matching package.json) if (fs.existsSync(tauriConfPath)) { const tauriConf = JSON.parse(fs.readFileSync(tauriConfPath, "utf-8")); - tauriConf.version = numericVersion; + tauriConf.version = version; fs.writeFileSync(tauriConfPath, JSON.stringify(tauriConf, null, 2) + "\n"); - console.log(`Updated src-tauri/tauri.conf.json -> ${numericVersion} (normalized from ${version})`); + console.log(`Updated src-tauri/tauri.conf.json -> ${version}`); } // 4. Update backend version.go (Go backend compiled version) diff --git a/frontend/src-tauri/tauri.conf.json b/frontend/src-tauri/tauri.conf.json index 3f96ffb..8f798d6 100644 --- a/frontend/src-tauri/tauri.conf.json +++ b/frontend/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "Devaulty", - "version": "0.1.10", + "version": "0.1.10-alpha", "identifier": "com.devaulty.app", "build": { "frontendDist": "../dist",