Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b522897
Add devices refact (#183)
joaozinhom Dec 16, 2025
8bdc8bf
fix: replace `typing.re` for `typing.Pattern` (#189)
qlrd Dec 16, 2025
39003af
chore(pylint): comment the unsupported `suggestion-mode` option (#191)
qlrd Dec 16, 2025
a59169f
Bump actions/upload-artifact from 5 to 6 (#192)
dependabot[bot] Dec 16, 2025
8a517c4
Bump urllib3 from 2.6.0 to 2.6.2 (#193)
dependabot[bot] Dec 16, 2025
d1f4f06
ci: add conventional commits to krux-installer (#190)
qlrd Dec 16, 2025
5b26744
chore: bump poethepoet from 0.38.0 to 0.39.0 (#198)
dependabot[bot] Jan 5, 2026
5b8f016
refactor:remove pillow, zbar and opencv (#196)
joaozinhom Jan 6, 2026
2cfa4cf
chore: bump cryptography from 46.0.3 to 46.0.4 (#209)
dependabot[bot] Feb 9, 2026
da43dd0
chore: bump webiny/action-conventional-commits from 1.3.0 to 1.3.1 (#…
dependabot[bot] Feb 9, 2026
6aefc2a
chore: bump pyinstaller from 6.17.0 to 6.18.0 (#206)
dependabot[bot] Feb 9, 2026
e311d80
chore: bump black from 25.12.0 to 26.1.0 (#207)
dependabot[bot] Feb 9, 2026
0b0ef03
chore: bump tomli from 2.3.0 to 2.4.0 (#203)
dependabot[bot] Feb 9, 2026
db331f0
chore: bump poethepoet from 0.39.0 to 0.40.0 (#204)
dependabot[bot] Feb 9, 2026
c448bc5
feat: add wonder_k device and test coverage (#202)
joaozinhom Feb 9, 2026
7ea102b
Fix build issues (#210)
joaozinhom Feb 10, 2026
4d9c9d8
fix: ESC button kill aplication and red circles appear when another m…
joaozinhom Feb 12, 2026
b4b5556
chore: bump cryptography from 46.0.4 to 46.0.5 (#214)
dependabot[bot] Feb 18, 2026
e6e87f4
chore: bump pyinstaller from 6.18.0 to 6.19.0 (#213)
dependabot[bot] Feb 18, 2026
9119a2e
chore: bump pylint from 4.0.4 to 4.0.5 (#218)
dependabot[bot] Feb 25, 2026
9639f10
chore: bump poethepoet from 0.41.0 to 0.42.0 (#217)
dependabot[bot] Feb 25, 2026
7e12a54
fix: solve artix problem (#220)
joaozinhom Mar 4, 2026
10e99b4
chore: bump poethepoet from 0.42.0 to 0.42.1 (#222)
dependabot[bot] Mar 4, 2026
1267dc5
chore: bump actions/upload-artifact from 6 to 7 (#221)
dependabot[bot] Mar 4, 2026
c6a9275
fix: add Tor proxy support for Tails OS (#223)
joaozinhom Mar 9, 2026
4883336
chore: bump black from 26.1.0 to 26.3.0 (#224)
dependabot[bot] Mar 9, 2026
fb965ef
chore: bump black from 26.3.0 to 26.3.1 (#226)
dependabot[bot] Mar 18, 2026
8b7a0eb
docs: add contributing guidelines
qlrd Jan 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions .ci/create-spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,14 @@
ICON = join(ASSETS, "icon.png")
I18NS = str(ROOT_PATH / "src" / "i18n")

BUILDER_ARGS = [ ]
if SYSTEM == "Darwin":
ICON = join(ASSETS, "icon.icns")
elif SYSTEM == "Windows":
ICON = join(ASSETS, "icon.ico")
else:
ICON = join(ASSETS, "icon.png")

BUILDER_ARGS = []

# The app name
BUILDER_ARGS.append(f"--name={PYNAME}")
Expand All @@ -67,38 +74,37 @@
if SYSTEM == "Linux":
# Tha application is a GUI
BUILDER_ARGS.append("--onefile")

elif SYSTEM == "Windows":
# Tha application is a GUI with a hidden console
# to keep `sys` module enabled (necessary for Kboot)
BUILDER_ARGS.append("--onefile")
BUILDER_ARGS.append("--console")
BUILDER_ARGS.append("--hidden-import=win32timezone")
BUILDER_ARGS.append("--hide-console=minimize-early")

elif SYSTEM == "Darwin":
# Tha application is a GUI in a bundled .app
BUILDER_ARGS.append("--onefile")
BUILDER_ARGS.append("--noconsole")

# For darwin system, will be necessary
# to add a hidden import for ssl
# (necessary for request module)
BUILDER_ARGS.append("--hidden-import=ssl")
BUILDER_ARGS.append("--hidden-import=pillow")
BUILDER_ARGS.append("--optimize=2")

# Necessary for get version and
# another infos in application
BUILDER_ARGS.append("--add-data=pyproject.toml:.")
# some assets

# some assets
for f in listdir(ASSETS):
asset = join(ASSETS, f)
if isfile(asset):
if asset.endswith("png") or asset.endswith("gif") or asset.endswith("ttf"):
BUILDER_ARGS.append(f"--add-data={asset}:assets")
BUILDER_ARGS.append(f"--add-data={asset}:assets")

# Add i18n translations
for f in listdir(I18NS):
i18n_abs = join(I18NS, f)
Expand All @@ -107,7 +113,6 @@
if findall(r"^[a-z]+\_[A-Z]+\.UTF-8\.json$", f):
BUILDER_ARGS.append(f"--add-data={i18n_abs}:{i18n_rel}")


args = p.parse_args(BUILDER_ARGS)

# Now generate spec
Expand Down
19 changes: 10 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
name: Build

on:
workflow_run:
workflows: Tests
types: completed
push:
branches:
- main
- '!develop'
- develop
pull_request:
branches:
- main
workflow_dispatch:

jobs:

Expand All @@ -25,7 +27,6 @@ jobs:
arch: arm64

runs-on: ${{ matrix.os }}
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'main' }}

steps:

Expand Down Expand Up @@ -230,7 +231,7 @@ jobs:

- name: Upload artifact deb (Linux)
if: ${{ runner.os == 'Linux' }}
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: ${{ steps.release-deb.outputs.pkg }}
path: |
Expand All @@ -239,7 +240,7 @@ jobs:

- name: Upload artifact rpm (Linux)
if: ${{ runner.os == 'Linux' }}
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: ${{ steps.release-rpm.outputs.pkg }}
path: |
Expand All @@ -248,7 +249,7 @@ jobs:

- name: Upload artifacts (MacOS)
if: ${{ runner.os == 'macOS' }}
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: ${{ steps.release-macos.outputs.pkg }}
path: |
Expand All @@ -257,7 +258,7 @@ jobs:

- name: Upload artifacts (Windows)
if: ${{ runner.os == 'Windows' }}
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: ${{ steps.release-windows.outputs.pkg }}
path: |
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/conventional-commits.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: Conventional Commits

on:
pull_request: # We only need to check commit messages in PRs

jobs:
conventional-commits:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: webiny/action-conventional-commits@v1.3.1
with:
allowed-commit-types: "feat,fix,docs,style,refactor,test,i18n,ci,chore"
2 changes: 1 addition & 1 deletion .pylint/src
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ source-roots=

# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes
# suggestion-mode=yes

# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
Expand Down
2 changes: 1 addition & 1 deletion .pylint/tests
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ source-roots=

# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes
# suggestion-mode=yes

# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
Expand Down
66 changes: 32 additions & 34 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,63 @@
# CHANGELOG

## 0.0.20
# 0.0.20

- Automatic check of latest official firmware;
- Optional selection of older firmware versions;
- Supported devices: M5stickV, Sipeed Amigo, Sipeed Bit, Sipeed Dock, Sipeed Cube, Yahboom,
WonderMV;
- Supported devices: M5stickV, Sipeed Amigo, Sipeed Bit, Sipeed Dock,
Sipeed Cube, Yahboom and WonderMV;
- Flash official firmware with automatic integrity/authenticity verification;
- Flash beta firmware devices;
- Air-gap update devices with SDcard;
- Flash beta firmware devices;
- Air-gapped update devices with SDcard;
- Wipe devices;
- 12 locale support;
- support for Windows, MacOS Arm, MacOS Intel, Debian-like OS and Fedora;
- Fixed Fedora crashes;
- Better error handling during flash procedure;
- Better error handling during wipe procedure;
- Better error handling during air-gap update procedure;
- Better error handling during air-gapped update procedure;

## 0.0.20-beta

**Major update**
### Major update

* make an airgapped update:
* user will be requested to insert a SDCard on computer;
* user can select among recognized removable drives;
* both `firmware.bin` and `firmware.bin.sig` will be copied to sdcard;
* after the copy, user will be requested to eject sdcard and insert it on device;
* at same time, the `firmware.bin`'s computed hash will appear to compare with the computed hash
on device;
- Make an air-gapped update:
- user will be requested to insert a SDCard on computer;
- user can select among recognized removable drives;
- both `firmware.bin` and `firmware.bin.sig` will be copied to sdcard;
- after the copy, user will be requested to eject sdcard and insert it on
device;
- at same time, the `firmware.bin`'s computed hash will appear to compare
with the computed hash
on device;

**Minor updates**
### Minor updates

* added support to de_DE locale;
* added support to ja_JP locale;
* fixes on Windows bug that didn't allow users to select a custom asset folder;
- Added support to de_DE locale;
- Added support to ja_JP locale;
- Fixed Windows bug that didn't allow users to select a custom asset folder;

## 0.0.20-alpha-3

- Fix the bug that crash when a new firmware version is added on `selfcustody/krux`, but not it
isnt a valid one in `VALID_DEVICES_VERSIONS`;
- The fix suggested by @odudex to manage new versions (good when a hot fix is made) in line 101 of
`src/app/screens/select_device_screen.py`;
- Fix the bug that crash when a new firmware version is added on
`selfcustody/krux`, but it isn't listed as a valid one in
`VALID_DEVICES_VERSIONS`;
- The fix suggested by @odudex to manage new versions (good when a hot fix is
made) in line 101 of `src/app/screens/select_device_screen.py`;

## 0.0.20-alpha-2

- Changed the version from `0.0.2-alpha` to `0.0.20-alpha-2` as suggested by @odudex;
- Changed the version from `0.0.2-alpha` to `0.0.20-alpha-2` as suggested by
@odudex;
- Refactored the code a little bit to be more pythonic;
- Removed startup messages as suggested by @tadeubas:
- On linux the `GreetingsScreen` class will check:
- if user is on `dialout`/`uucp` group (debian and fedora based / archlinux);
- internet connection
- On MacOS an Windows the `GreetingsScreen` class will check:
- On MacOS and Windows the `GreetingsScreen` class will check:
- internet connection
- Added the window resize behaviour;
- Removed fullscreen on startup;
- Fedora and Ubuntu:
- fixed desktop icon entry on `.ci/create-deb`;
- fixed desktop icon entry on `.ci/create-rpm`;
- Added more tests:
- ask_permissions_dialout_screen;
- error_screen.
- fixed desktop icon entry on `.ci/create-deb`;
- fixed desktop icon entry on `.ci/create-rpm`;
- Added more tests.

## 0.0.2-alpha

Expand Down Expand Up @@ -112,5 +110,5 @@ isnt a valid one in `VALID_DEVICES_VERSIONS`;
- to suit `wdio-electron-service` major updates that break E2E tests;
- renamed extensions to `mts` to suit `vite-plugin-electron`;
- updated krux firmware version checks to `23.09.1`;
- Updated `openssl` for windows to `3.2.0` *;
- Updated `openssl` for Windows to `3.2.0`;
- Removed MacOS release since the current approach did not worked well on MacOS;
Loading
Loading