From 3aaf32f9ee2d6ab1e877da985c39abcb8323c3ea Mon Sep 17 00:00:00 2001 From: NimBold Date: Sun, 5 Jul 2026 00:02:31 +0330 Subject: [PATCH] fix(window): enable custom titlebar controls --- CHANGELOG.md | 5 +++++ README.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- scripts/window-capabilities.node-test.js | 26 ++++++++++++++++++++++++ src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/capabilities/default.json | 3 +++ src-tauri/tauri.conf.json | 2 +- src/components/SettingsView.tsx | 2 +- 10 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 scripts/window-capabilities.node-test.js diff --git a/CHANGELOG.md b/CHANGELOG.md index c8ff89d..58c5a52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to Firelink will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.0.1] - 2026-07-04 + +### Fixed +- Fix custom window controls on Windows and Linux so close, minimize, and maximize work in packaged builds. + ## [1.0.0] - 2026-07-04 ### Highlights diff --git a/README.md b/README.md index 0816b4b..12cdd9a 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ **A fast, focused desktop download manager for macOS, Windows, and Linux.** - [![Version](https://img.shields.io/badge/version-1.0.0-6f42c1?style=flat-square)](https://github.com/nimbold/Firelink/releases) + [![Version](https://img.shields.io/badge/version-1.0.1-6f42c1?style=flat-square)](https://github.com/nimbold/Firelink/releases) [![macOS](https://img.shields.io/badge/macOS-111111?style=flat-square&logo=apple&logoColor=white)](#platforms) [![Windows](https://img.shields.io/badge/Windows-0078D6?style=flat-square&logo=windows11&logoColor=white)](#platforms) [![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black)](#platforms) diff --git a/package-lock.json b/package-lock.json index 4b66aff..d16b35c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "firelink", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "firelink", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "dependencies": { "@formkit/auto-animate": "^0.9.0", diff --git a/package.json b/package.json index 4c0c555..4430b4f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "firelink", "private": true, - "version": "1.0.0", + "version": "1.0.1", "description": "A fast cross-platform desktop download manager powered by Rust, Tauri, React, aria2, and yt-dlp.", "license": "MIT", "homepage": "https://github.com/nimbold/Firelink", diff --git a/scripts/window-capabilities.node-test.js b/scripts/window-capabilities.node-test.js new file mode 100644 index 0000000..2300a47 --- /dev/null +++ b/scripts/window-capabilities.node-test.js @@ -0,0 +1,26 @@ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import test from 'node:test'; + +const capability = JSON.parse(fs.readFileSync('src-tauri/capabilities/default.json', 'utf8')); +const permissions = new Set(capability.permissions); + +test('custom window controls have required Tauri permissions', () => { + const windowControls = fs.readFileSync('src/components/WindowControls.tsx', 'utf8'); + const requiredPermissions = new Map([ + ['.close()', 'core:window:allow-close'], + ['.minimize()', 'core:window:allow-minimize'], + ['.startDragging()', 'core:window:allow-start-dragging'], + ['.toggleMaximize()', 'core:window:allow-toggle-maximize'], + ]); + + for (const [apiCall, permission] of requiredPermissions) { + if (windowControls.includes(apiCall)) { + assert.equal( + permissions.has(permission), + true, + `${apiCall} requires ${permission} in src-tauri/capabilities/default.json` + ); + } + } +}); diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index b0517b6..282e9c5 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1310,7 +1310,7 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "firelink" -version = "1.0.0" +version = "1.0.1" dependencies = [ "async-trait", "axum", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 32b07d5..50cf2c1 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "firelink" -version = "1.0.0" +version = "1.0.1" description = "A fast cross-platform desktop download manager powered by Rust and Tauri" authors = ["NimBold"] edition = "2021" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index 2cab0ae..b7e8a74 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -5,7 +5,10 @@ "windows": ["main"], "permissions": [ "core:default", + "core:window:allow-close", + "core:window:allow-minimize", "core:window:allow-start-dragging", + "core:window:allow-toggle-maximize", "opener:default", "dialog:default", "log:default", diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 86d7295..0a30391 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Firelink", - "version": "1.0.0", + "version": "1.0.1", "identifier": "com.nimbold.firelink", "build": { "beforeDevCommand": "node scripts/stage-engines.js && npm run dev", diff --git a/src/components/SettingsView.tsx b/src/components/SettingsView.tsx index beeaf70..2beade1 100644 --- a/src/components/SettingsView.tsx +++ b/src/components/SettingsView.tsx @@ -269,7 +269,7 @@ const [engineStatus, setEngineStatus] = useState(null const [expandedEngine, setExpandedEngine] = useState(null); const [isRecheckingEngines, setIsRecheckingEngines] = useState(false); const engineRunId = useRef(0); -const [appVersion, setAppVersion] = useState('1.0.0'); +const [appVersion, setAppVersion] = useState('1.0.1'); const [extensionServerPort, setExtensionServerPort] = useState(null); // Local state for adding site login