Skip to content

HTTP fixes, arm64 support, custom servers, update check and release CI - #9

Open
BKPepe wants to merge 11 commits into
librespeed:compose-desktopfrom
BKPepe:feature/desktop-improvements
Open

HTTP fixes, arm64 support, custom servers, update check and release CI#9
BKPepe wants to merge 11 commits into
librespeed:compose-desktopfrom
BKPepe:feature/desktop-improvements

Conversation

@BKPepe

@BKPepe BKPepe commented Aug 10, 2026

Copy link
Copy Markdown
Member

What this changes

This branch improves the desktop client across networking, server selection, history, UI and packaging:

  • Fix malformed HTTP requests and accept all successful 2xx responses (should fix Test servers? #7).
  • Add persistent custom LibreSpeed servers, including IPv6 support (closes Add a option to use and save custom servers #8).
  • Fix arm64 support by using the full sqlite-jdbc artifact and correct macOS icon packaging.
  • Submit telemetry to the tested server first, with the central endpoint as fallback, and store the resulting share URL in history.
  • Add update checking, an About dialog, History actions, sortable history and CSV export.
  • Show IPv4/IPv6 and network adapter information where available.
  • Fix result-card layout and share URL handling.
  • Add release CI for Linux (x86_64/aarch64), macOS (Intel/Apple Silicon) and Windows (x64/arm64).

Testing

Tested on macOS Apple Silicon, including IPv6, custom servers, telemetry, history and export.

Linux and Windows were not tested on real hardware; release CI builds all target platforms.

Known limitations

  • Windows Wi-Fi generation detection depends on localized netsh output.
  • Telemetry path detection assumes the usual LibreSpeed backend/ + results/ layout.
  • AppImage uses Ubuntu 22.04 as its glibc baseline; those runners are scheduled for retirement.
  • Windows ARM64 packaging needs a smoke test on real hardware.

Copilot AI lite review requested due to automatic review settings August 10, 2026 08:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@sudodios

Copy link
Copy Markdown
Collaborator

Hi @BKPepe
Thank you for your work.

@BKPepe
BKPepe force-pushed the feature/desktop-improvements branch from 1fc9478 to a50bf9f Compare August 10, 2026 08:27
@BKPepe
BKPepe force-pushed the feature/desktop-improvements branch 3 times, most recently from 2d1e24c to 6bae55b Compare August 25, 2026 07:12
@BKPepe

BKPepe commented Aug 29, 2026

Copy link
Copy Markdown
Member Author

@sudodios kind ping. :)

@BKPepe
BKPepe force-pushed the feature/desktop-improvements branch from 6bae55b to 139c908 Compare September 2, 2026 13:20
Fix malformed request headers and accept successful responses
regardless of the status reason phrase. Keep the path of the
server URL, so servers listed as https://host/backend work.

Send each request in one write and report the full round trip as
ping: halving it used to hide the round trip that Nagle's algorithm
added to the separate writes. Leave the upload send buffer at the
socket default; the fixed 16 KB capped every stream at about 32 KB
per round trip, so Frankfurt read 31 instead of about 500 Mbit/s.
The random payload is built once per process.
The vendored jar lacked arm64 natives and jpackage on macOS needs an
.icns icon. Pass version and build date to the runtime and follow the
OS address ordering for IPv4/IPv6 connections. Ship only this
platform's native library from the jar; the build fails if none
matches.
Prefer the tested server's own results backend and only fall back to
the configured central endpoint.

Server selection pings 16 servers at once instead of 6 and stops
pinging a server as soon as it cannot beat the best one; the official
list takes about 2 s instead of 5 s. Stop closes the IP lookup
connection instead of waiting out its timeouts.
Best-effort platform detection of Wi-Fi generation or Ethernet, shown
instead of the bare interface name and without blocking the UI.
Store the share URL with a database migration, add a row detail
dialog and sortable columns, and stop clipping cell text. History is
read on an IO thread, so the transition stays smooth.
Allow users to persist self-hosted LibreSpeed servers and include
them in server selection. The history row is saved on an IO thread,
so the result screen does not wait for SQLite.
Check GitHub releases in the background and show an in-app About
dialog with version, build date and project links.
Native menu with Show History and Export to CSV.
Keep charts clear of the card texts and only offer share URL actions
when a result URL exists.
Build Linux, macOS and Windows packages for x86_64 and arm64 and
draft a release on tags.
The client announced itself as Librespeed-Desktop/1.0 whatever it was:
the version was a constant no release updated, and the header said
nothing about the machine, so an operator could not tell Windows from
macOS apart in their telemetry.

Build the header instead -- <product>/<version> (<os>; <arch>), the
shape the LibreSpeed CLIs and the Android client send -- taking the
version from the -Dapp.version the packaging already passes, and saying
dev when it is absent rather than claiming a release.

Add the first tests in this project to cover the shape, the build
version, and the header as a server actually receives it off a socket.
@BKPepe
BKPepe force-pushed the feature/desktop-improvements branch from 139c908 to 3c9c131 Compare September 2, 2026 19:25
@BKPepe

BKPepe commented Sep 13, 2026

Copy link
Copy Markdown
Member Author

@sudodios Gentle reminder

@sudodios

Copy link
Copy Markdown
Collaborator

@BKPepe Thank you very much.
I'm a bit swamped these days.
The only way is to be patient. ☺️

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.

Add a option to use and save custom servers Test servers?

3 participants