Skip to content

2.0.7 rollup 2: Fastboot, rpiboot, compute modules, text scaling, proxy support#1548

Merged
tdewey-rpi merged 16 commits into
mainfrom
dev/tdewey/2.0.7-rollup-2
Mar 16, 2026
Merged

2.0.7 rollup 2: Fastboot, rpiboot, compute modules, text scaling, proxy support#1548
tdewey-rpi merged 16 commits into
mainfrom
dev/tdewey/2.0.7-rollup-2

Conversation

@tdewey-rpi

Copy link
Copy Markdown
Collaborator

No description provided.

…ule imaging

- Added bundled libusb for USB communication with rpiboot.
- Introduced new classes and methods for handling rpiboot and fastboot protocols.
- Enhanced drive list model to recognize rpiboot devices and updated UI components accordingly.
- Implemented threading for efficient image flashing via fastboot.
- Updated CMake configuration to include necessary dependencies and sources for rpiboot functionality.
…nce Wayland socket detection

- Changed xhost command to use +SI:localuser:root for improved security when granting root access to the X11 display.
- Added functionality to dynamically detect Wayland compositor sockets in the user's XDG_RUNTIME_DIR, accommodating various setups.
- Refactored the display access logic to ensure it runs as the original user after DISPLAY and XAUTHORITY are configured.
…stboot support

- Added new performance events for rpiboot and fastboot processes, including firmware setup, protocol execution, and device opening.
- Updated the performance analysis scripts to include new event types and descriptions.
- Enhanced the drive list model to support enabling/disabling rpiboot scanning.
- Integrated UI elements to allow users to enable rpiboot and fastboot support in the settings.
- Improved logging and debugging options for better visibility into rpiboot operations.
Add post-flash customisation support for Compute Module imaging via
the fastboot protocol's stage/upload and OEM file transfer commands.

Protocol layer (fastboot_protocol.cpp):
- Refactor download() into shared sendData() helper
- Add stage(), upload(), writeDeviceFile(), readDeviceFile()
- Clear _lastError at entry to public methods so callers can
  distinguish empty-file returns from transport errors

Thread layer (fastbootflashthread.cpp):
- Add applyCustomisation() performing read-modify-write of config.txt
  and cmdline.txt, plus creation of firstrun.sh / cloud-init files
- Guard against readDeviceFile failure before modifying boot files
- Wire customisation data from ImageWriter via setImageCustomisation()

Tests: 43 test cases (was 24), covering stage/upload/writeDeviceFile/
readDeviceFile, progress callbacks, lastError clearing, and
customisation-pattern integration tests with realistic file content.
)

Switch all QML font sizes from pixelSize to pointSize so Qt's DPI-aware
text rendering scales correctly on high-DPI displays. Additionally, detect
the platform's text-scaling preference (GSettings on Linux, system font
on Windows) and apply as a multiplier to all font, spacing, and layout
tokens in Style.qml. Window dimensions also scale proportionally.

Users can override detection via textScaleFactor in QSettings.
…ntrols

Introduce a fontDpiCorrection multiplier (72/96 on Windows/Linux, 1.0 on
macOS) so that font point sizes render at the same visual size on all
platforms. Apply this correction — combined with the OS accessibility text
scale — via a new fontScale token in Style.qml, used exclusively for font
sizes; layout, spacing, and window dimensions continue to use textScale only.

Add explicit font.family and font.pointSize to all Qt Controls wrapper
components (ImButton, ImButtonRed, ImCheckBox, ImRadioButton, ImTextField,
ImComboBox, ImToggleTab) and to the drive name text and confirmation text
field in ConfirmSystemDriveDialog, preventing them from inheriting the
platform's unscaled default system font. Also scale the storage list item
row height and the warning icon point size via the Style helpers.
Add a checkbox to the user account customisation step that allows
enabling passwordless sudo. The setting is session-only (never
persisted) so users must explicitly opt in each time, given the
security implications. Checking the box triggers a warning dialog
explaining the risks before the setting takes effect.

Both customisation generators are updated:
- systemd: writes a sudoers.d drop-in with shell-quoted paths
- cloud-init: adds `sudo: ALL=(ALL) NOPASSWD:ALL` to the user entry

Also removes the pre-existing behaviour where SSH key-only setups
unconditionally granted passwordless sudo — this now requires the
explicit opt-in like any other configuration.

An ⓘ info icon (borrowing the pattern from the capital city selector)
provides a tooltip on hover/focus explaining the implications, with
full screen reader accessibility.
Display the verification read speed alongside the "Verifying written data"
status text, reusing the existing bottleneck display infrastructure.
…failure

Windows 11 users behind corporate proxies saw the app as offline despite
having browser connectivity, because libcurl proxy support was compiled
out (CURL_DISABLE_PROXY ON). Enable proxy support and auto-detect system
proxy settings via QNetworkProxyFactory before the first OS list fetch.

Also auto-retry with IPv4-only mode when the initial fetch fails but
network adapters are up — this catches broken IPv6 routing where DNS
returns AAAA records but connections time out, while browsers silently
fall back via Happy Eyeballs.
@tdewey-rpi tdewey-rpi merged commit 070a9e5 into main Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant