Skip to content

Commit 1cbc668

Browse files
committed
Merge phase/19b-release-desktop-installers
2 parents d3cc697 + cfa8bab commit 1cbc668

7 files changed

Lines changed: 47 additions & 9 deletions

File tree

.github/workflows/desktop-packages.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66
tags:
77
- "desktop-v*"
88

9+
permissions:
10+
contents: write
11+
912
jobs:
1013
build-desktop:
1114
name: Build ${{ matrix.platform }}
@@ -68,3 +71,17 @@ jobs:
6871
name: fwb-desktop-${{ matrix.platform }}
6972
path: desktop/src-tauri/target/release/bundle/**/*
7073
if-no-files-found: error
74+
75+
- name: Publish installer to GitHub Release
76+
uses: softprops/action-gh-release@v2
77+
with:
78+
name: Firmware Security Workbench Desktop ${{ github.ref_name }}
79+
tag_name: ${{ github.ref_name }}
80+
body: |
81+
Desktop installer build for Firmware Security Workbench.
82+
83+
Assets:
84+
- macOS: DMG installer
85+
- Windows: MSI installer
86+
- Linux: DEB package
87+
files: desktop/src-tauri/target/release/bundle/**/*

desktop/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

desktop/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "firmware-security-workbench-desktop",
3-
"version": "0.4.0",
3+
"version": "0.5.0",
44
"private": true,
55
"type": "module",
66
"scripts": {

desktop/src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "firmware-security-workbench"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
description = "Firmware Security Workbench desktop shell"
55
authors = ["Firmware Security Workbench Contributors"]
66
edition = "2021"

desktop/src-tauri/tauri.conf.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "Firmware Security Workbench",
4-
"version": "0.4.0",
4+
"version": "0.5.0",
55
"identifier": "dev.fwb.desktop",
66
"build": {
77
"beforeDevCommand": "npm run preview",
@@ -28,6 +28,13 @@
2828
"bundle": {
2929
"active": true,
3030
"targets": "all",
31+
"icon": [
32+
"icons/32x32.png",
33+
"icons/128x128.png",
34+
"icons/128x128@2x.png",
35+
"icons/icon.icns",
36+
"icons/icon.ico"
37+
],
3138
"category": "DeveloperTool",
3239
"shortDescription": "Firmware analysis desktop workbench",
3340
"longDescription": "A local-first firmware security analysis desktop shell for scanning firmware, reviewing Risk DNA, and planning hardening actions."

docs/phase-19-nextgen-ui-packaging.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ The workflow uploads desktop bundle artifacts for each operating system.
5858
You can also create a desktop package tag. Use a fresh tag for each packaging attempt:
5959

6060
```bash
61-
git tag desktop-v0.4.0
62-
git push origin desktop-v0.4.0
61+
git tag desktop-v0.5.0
62+
git push origin desktop-v0.5.0
6363
```
6464

6565
## Packaging Notes
6666

67-
The current desktop app is an alpha shell that talks to the existing FastAPI backend when it is running. The package workflow builds focused release artifacts for macOS (`dmg`), Windows (`msi`), and Linux (`deb`) and regenerates platform icons from `desktop/app-icon.svg` before running Tauri.
67+
The current desktop app is an alpha shell that talks to the existing FastAPI backend when it is running. The package workflow builds focused release artifacts for macOS (`dmg`), Windows (`msi`), and Linux (`deb`), regenerates platform icons from `desktop/app-icon.svg`, and attaches installers to a GitHub Release for the pushed desktop tag.
6868

6969
The next packaging milestone should bundle the scanner/runtime as a Tauri sidecar so the desktop app is fully self-contained.
7070

tests/test_desktop_shell.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,30 @@ def test_desktop_package_workflow_targets_three_operating_systems(self) -> None:
123123
self.assertIn("bundle: dmg", workflow)
124124
self.assertIn("bundle: msi", workflow)
125125
self.assertIn("bundle: deb", workflow)
126+
self.assertIn("permissions:", workflow)
127+
self.assertIn("contents: write", workflow)
126128
self.assertIn("actions/upload-artifact@v4", workflow)
129+
self.assertIn("softprops/action-gh-release@v2", workflow)
127130

128131
def test_desktop_build_generates_icons_before_packaging(self) -> None:
129132
package_json = json.loads(
130133
(self.repo_root / "desktop" / "package.json").read_text(encoding="utf-8")
131134
)
132-
self.assertEqual(package_json["version"], "0.4.0")
135+
self.assertEqual(package_json["version"], "0.5.0")
133136
self.assertEqual(package_json["scripts"]["prebuild"], "tauri icon app-icon.svg")
134137
self.assertEqual(package_json["scripts"]["build"], "tauri build")
135138

139+
def test_tauri_config_declares_platform_icons(self) -> None:
140+
config = json.loads(
141+
(self.repo_root / "desktop" / "src-tauri" / "tauri.conf.json").read_text(
142+
encoding="utf-8"
143+
)
144+
)
145+
icons = config["bundle"]["icon"]
146+
self.assertIn("icons/icon.ico", icons)
147+
self.assertIn("icons/icon.icns", icons)
148+
self.assertIn("icons/128x128.png", icons)
149+
136150

137151
if __name__ == "__main__":
138152
unittest.main()

0 commit comments

Comments
 (0)