Skip to content

Commit

Permalink
Merge pull request #331 from selfcustody/release-24.03.0
Browse files Browse the repository at this point in the history
Release 24.03.0
  • Loading branch information
odudex committed Mar 13, 2024
2 parents 7add64a + e1b511f commit acf5f1c
Show file tree
Hide file tree
Showing 664 changed files with 15,258 additions and 69,670 deletions.
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,21 @@ assignees: ''

---

#### Summary

<!-- Describe some general things about the bug -->

**Device**
- [ ] Amigo
- [ ] M5stickV
- [ ] Dock
- [ ] Bit
- [ ] Yahboom

**Version**
- [ ] Official release (selfcustody/krux): <!-- Specify version, like v23.09.1 -->
- [ ] Beta release (odudex/krux_binaries): <!-- Specify version, like v24.01.0-beta14 -->

#### Describe the bug

<!-- Give some details about it -->
8 changes: 6 additions & 2 deletions .github/codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,9 @@ coverage:
status:
project:
default:
target: 100%
threshold: 15%
target: 95%
threshold: 5%
patch:
default:
target: 95%
threshold: 5%
110 changes: 58 additions & 52 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,30 @@ jobs:
build:
strategy:
matrix:
device: [maixpy_m5stickv, maixpy_amigo_ips, maixpy_amigo_tft, maixpy_bit, maixpy_dock]
device: [maixpy_m5stickv, maixpy_amigo, maixpy_bit, maixpy_dock, maixpy_yahboom]
runs-on: ubuntu-latest
services:
registry:
image: registry:2
ports:
- 5000:5000
steps:
- name: Remove unnecessary files
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
with:
driver-opts: network=host
- name: Cache Docker layers
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
Expand All @@ -37,7 +43,7 @@ jobs:
- name: Build for M5StickV
if: matrix.device == 'maixpy_m5stickv'
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
build-args: DEVICE=maixpy_m5stickv
Expand All @@ -48,68 +54,44 @@ jobs:
- name: Extract firmware for M5StickV
id: extract-m5stickv
if: matrix.device == 'maixpy_m5stickv'
uses: shrink/actions-docker-extract@v2
uses: shrink/actions-docker-extract@v3
with:
image: localhost:5000/selfcustody/krux-builder-m5stickv:latest
path: /src/firmware/Kboot/build/.
- name: Upload firmware for M5StickV
if: matrix.device == 'maixpy_m5stickv'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
path: ${{ steps.extract-m5stickv.outputs.destination }}
name: build-m5stickv

- name: Build for Amigo IPS
if: matrix.device == 'maixpy_amigo_ips'
uses: docker/build-push-action@v4
with:
context: .
build-args: DEVICE=maixpy_amigo_ips
push: true
tags: localhost:5000/selfcustody/krux-builder-amigo-ips:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Extract firmware for Amigo IPS
id: extract-amigo-ips
if: matrix.device == 'maixpy_amigo_ips'
uses: shrink/actions-docker-extract@v2
with:
image: localhost:5000/selfcustody/krux-builder-amigo-ips:latest
path: /src/firmware/Kboot/build/.
- name: Upload firmware for Amigo IPS
if: matrix.device == 'maixpy_amigo_ips'
uses: actions/upload-artifact@v3
with:
path: ${{ steps.extract-amigo-ips.outputs.destination }}
name: build-amigo-ips

- name: Build for Amigo TFT
if: matrix.device == 'maixpy_amigo_tft'
uses: docker/build-push-action@v4
- name: Build for Amigo
if: matrix.device == 'maixpy_amigo'
uses: docker/build-push-action@v5
with:
context: .
build-args: DEVICE=maixpy_amigo_tft
build-args: DEVICE=maixpy_amigo
push: true
tags: localhost:5000/selfcustody/krux-builder-amigo-tft:latest
tags: localhost:5000/selfcustody/krux-builder-amigo:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Extract firmware for Amigo TFT
id: extract-amigo-tft
if: matrix.device == 'maixpy_amigo_tft'
uses: shrink/actions-docker-extract@v2
- name: Extract firmware for Amigo
id: extract-amigo
if: matrix.device == 'maixpy_amigo'
uses: shrink/actions-docker-extract@v3
with:
image: localhost:5000/selfcustody/krux-builder-amigo-tft:latest
image: localhost:5000/selfcustody/krux-builder-amigo:latest
path: /src/firmware/Kboot/build/.
- name: Upload firmware for Amigo TFT
if: matrix.device == 'maixpy_amigo_tft'
uses: actions/upload-artifact@v3
- name: Upload firmware for Amigo
if: matrix.device == 'maixpy_amigo'
uses: actions/upload-artifact@v4
with:
path: ${{ steps.extract-amigo-tft.outputs.destination }}
name: build-amigo-tft
path: ${{ steps.extract-amigo.outputs.destination }}
name: build-amigo

- name: Build for Bit
if: matrix.device == 'maixpy_bit'
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
build-args: DEVICE=maixpy_bit
Expand All @@ -120,20 +102,20 @@ jobs:
- name: Extract firmware for Bit
id: extract-bit
if: matrix.device == 'maixpy_bit'
uses: shrink/actions-docker-extract@v2
uses: shrink/actions-docker-extract@v3
with:
image: localhost:5000/selfcustody/krux-builder-bit:latest
path: /src/firmware/Kboot/build/.
- name: Upload firmware for Bit
if: matrix.device == 'maixpy_bit'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
path: ${{ steps.extract-bit.outputs.destination }}
name: build-bit

- name: Build for Dock
if: matrix.device == 'maixpy_dock'
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
build-args: DEVICE=maixpy_dock
Expand All @@ -144,16 +126,40 @@ jobs:
- name: Extract firmware for Dock
id: extract-dock
if: matrix.device == 'maixpy_dock'
uses: shrink/actions-docker-extract@v2
uses: shrink/actions-docker-extract@v3
with:
image: localhost:5000/selfcustody/krux-builder-dock:latest
path: /src/firmware/Kboot/build/.
- name: Upload firmware for Dock
if: matrix.device == 'maixpy_dock'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
path: ${{ steps.extract-dock.outputs.destination }}
name: build-dock

- name: Build for Yahboom
if: matrix.device == 'maixpy_yahboom'
uses: docker/build-push-action@v5
with:
context: .
build-args: DEVICE=maixpy_yahboom
push: true
tags: localhost:5000/selfcustody/krux-builder-yahboom:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Extract firmware for Yahboom
id: extract-yahboom
if: matrix.device == 'maixpy_yahboom'
uses: shrink/actions-docker-extract@v3
with:
image: localhost:5000/selfcustody/krux-builder-yahboom:latest
path: /src/firmware/Kboot/build/.
- name: Upload firmware for Yahboom
if: matrix.device == 'maixpy_yahboom'
uses: actions/upload-artifact@v4
with:
path: ${{ steps.extract-yahboom.outputs.destination }}
name: build-yahboom

- name: Move cache
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ jobs:
build-gh-pages:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ jobs:
lint-black:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: psf/black@stable
Expand All @@ -40,9 +40,9 @@ jobs:
lint-pylint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
Expand All @@ -59,9 +59,9 @@ jobs:
check-translations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Validate translations
Expand All @@ -70,11 +70,11 @@ jobs:
run-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
Expand All @@ -89,11 +89,11 @@ jobs:
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
Expand Down
67 changes: 67 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,70 @@
# Changelog 24.03.0 - March 12, 2024

## Changes

### Wipe Device
Option on tools to wipe the device, permanently removing settings and stored encrypted mnemonics by erasing every single bit of user's flash space.

### Better Deletion of Mnemonics Stored on SD card
When deleting an encrypted mnemonic from an SD card, Krux will now overwrite the memory area making it impossible to recover the previously stored data.

### Save and Load Wallet Output Descriptor from SD card
Create or load from a wallet output descriptor file on an SD card. The backup file format is compatible with most coordinators.

### Sign Messages at a Derived Bitcoin address
Sign messages from Sparrow and Specter, via QR code, also attesting a Bitcoin address belongs to you.

### Reproducible Builds
To enhance the reproducibility of firmware builds, random variables such as file write timestamps have been removed from the build process. As a result, builds from developers' computers, those built within GitHub Actions from published code, and those you compile locally are more likely to be identical and have the same hash checksum as the official and beta releases. This change ensures greater consistency and traceability across all builds.

### Add Entropy Quality Estimation for Mnemonic Creation.
Entropy quality estimators, like Shannon's entropy, were added to mnemonic generation through dice rolls and camera snapshot.

### IRQ Interfaces
Button and touch presses are now detected by the application through IO interrupts. Meaning inputs events will be registered and handled even if they happened when other tasks were being executed by the processor, resulting in a better UX.

### Restore Default Settings
Option to restore the device's settings to its factory state.

### Optimized Settings Storage
Device's storage is now used more efficiently, data is stored less frequently, only in case a setting is changed from defaults.

### Amigo's Power Manager Enhancements
The power management behavior for the Amigo device has been standardized. Previously, some devices would not wake up from shutdown or sleep mode. Now, these devices will fully shut down when the shutdown option is selected from the menu, and they will always power on when the power button is pressed for 1 second.

### GUI Enhancements
Icons, information text boxes, and rounded shapes are now present at the GUI.

### Mnemonic Numbers
To match the input options, export mnemonics as decimal, hexadecimal, or octal numbers. When loading from numbers, a new numbers confirmation screen was added.

### Optimized QR codes
QR codes rendering is faster and uses less RAM.

### Export QR Codes as Images to SD Card
Some QR codes can be exported as images to SD card.

### Screensaver
Optional screensaver to reduce pixels' burn-in and grab the attention of the user when the device is left powered on.

### Addresses Exploring
More receive and change addresses per page are shown on bigger screens.

### Update Embit to version 0.7
Use the latest Embit release.

### Maix Dock Simulator
Now Krux PC simulator can also run in Maix Dock mode, mimicking appearance and characteristics of the most DIY Krux device.

### New Compatible Device - Yahboom
The Yahboom Aimotion K210 module, a compact touchscreen device, now has its first official firmware release.

### Join Amigo IPS and Amigo TFT firmwares
Users will be able to flash a single firmware and change display settings if their device was shipped with a display different from standard TFT.

### Other Small Fixes and Code Optimizations
Many other small fixes and optimizations under the hood.

# Version 23.09.1 - November 18, 2023
This release contain bugfixes:

Expand Down
Loading

0 comments on commit acf5f1c

Please sign in to comment.