Skip to content

Network Overhaul#139

Open
Abscissa24 wants to merge 4 commits into
mainfrom
Network-Overhaul
Open

Network Overhaul#139
Abscissa24 wants to merge 4 commits into
mainfrom
Network-Overhaul

Conversation

@Abscissa24

Copy link
Copy Markdown
Member

Network Overhaul

What's New

Sensitive Info & Connection Details

  • Added a connection details switch for those who need it.
  • When Sensitive Infois switched off, all sensitive information like IP addresses, BSSIDS - etc are hidden for privacy.
Image

Connection Details

  • If enabled, displays automatically when connected via Ethernet or Wi-Fi.

  • The section has several useful details about the current connection, such as:

    • Signal Strength
    • Latency
    • Download / Upload speed
    • DNS provider
    • Frequency
    • Security
  • Frequency is no longer shown with the combined channel like, 2462. It is now shown more aesthetically, example, "2,4GHz, Channel 11"

  • Speed test directly integrated, so the user can perform a network test directly from the sleex settings if they wish. Uses the cloudflare provider.

On Wifi

Image

On Ethernet

Image

Custom DNS

  • Added a switch for those who need it
  • Includes several DNS providers, which are changeable on the fly
  • Throwback to Custom dns #56 :)
Image

Improved the look of Available Networks

Image

Improved the look of the search feature

Image

Integration of QR Codes

  • A useful feature for those who need it
  • Generated and shown only when button is pressed, in expanded view
  • Stop manually typing passwords out
  • Makes sleex wifi settings feel more complete
Image

Full Showcase

Image

- Implemented completely new, custom-developed core network features like speed test integration, signal strength, latency, custom dns-switching -etc.
- Overhauled the user interface and visual design for a modernised look.
- Optimised the code for smoothness and efficiency while sustaining all new and improved features
Added new properties for networking configuration.
@Abscissa24 Abscissa24 self-assigned this Jul 3, 2026
@Abscissa24 Abscissa24 added the enhancement New feature or request label Jul 3, 2026
@Abscissa24 Abscissa24 removed their assignment Jul 3, 2026
@Abscissa24 Abscissa24 linked an issue Jul 3, 2026 that may be closed by this pull request
@Abscissa24

Abscissa24 commented Jul 3, 2026

Copy link
Copy Markdown
Member Author

Hmmm, am not really sure about how to link this to the existing event in the Kanban

EDIT: Okay, I think i figured it out!

@Abscissa24 Abscissa24 requested a review from LeVraiArdox July 3, 2026 09:20
@LeVraiArdox

LeVraiArdox commented Jul 3, 2026

Copy link
Copy Markdown
Member

That's really sick !!

I just want to make a pre code review about some stuff I noticed

image

The speed test is shown for every other networks. I don't think this is supposed to happen.

image

The DNS can overflow when the app is shrinken. Maybe wrap them after the comma.

That's pretty much all I noticed. Anyway, great job, I love it !

Replaced latency, downloadSpeed, and uploadSpeed properties with a JSON-serialised map for speed test results.
@Abscissa24

Abscissa24 commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

@LeVraiArdox all done :P

Each network shows their unique stats, as intended.

image

Extremely long DNS addresses no longer overflow from the tab when the window's dimensions are decreased

image

@LeVraiArdox LeVraiArdox left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Some stuff to change in the code. Also, I would prefer you to make backend logic in C++ (see network.cpp and network.hpp) than using the frontend file to add backend logic. Or, if you don't want to dirt your hands, make a Network.qml file in services/ that does these stuff.

// Keeping it per-SSID (rather than the old single latency/downloadSpeed/
// uploadSpeed strings) means each network's last speed test result
// survives switching networks, reconnecting, and shell restarts.
property string speedTestResultsJson: "{}"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I don't think results should be in a json config. We can keep them in RAM and not display them when we don't have value. After all, the results can change anytime.

Comment on lines +33 to +40
readonly property var activeNetwork: {
let _t = root.refreshTrigger;
const nets = Network.networks || [];
for (let i = 0; i < nets.length; i++) {
if (nets[i].active) return nets[i];
}
return null;
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

There is a Network.active variable in the Sleex network service that returns the AccessPoint object of the active network. See network.cpp and network.hpp

Comment on lines +63 to +77
function cacheSpeedTestResult(ssid) {
if (!ssid) return;
const next = Object.assign({}, root.speedTestResults);
next[ssid] = {
pingMs: root.speedTestPingMs,
downloadMbps: root.speedTestDownloadMbps,
uploadMbps: root.speedTestUploadMbps
};
root.speedTestResults = next; // reassign (not mutate) so bindings notice
try {
Config.options.networking.speedTestResultsJson = JSON.stringify(next);
} catch (e) {
// Non-fatal - worst case the result just won't survive a restart.
}
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

As previously said, we shouldn't save results, especially not in the config section

Comment on lines +320 to +329
function loadSavedSpeedTestResults() {
const raw = Config.options.networking.speedTestResultsJson;
if (!raw) return {};
try {
const parsed = JSON.parse(raw);
return (parsed && typeof parsed === "object") ? parsed : {};
} catch (e) {
return {};
}
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If we don't save, dump this

Layout.alignment: Qt.AlignHCenter
text: parent.parent.hasResult
? parent.parent.pingValue.toFixed(0) + " ms"
: (parent.parent.isLive && root.speedTestStage === "ping" ? "…" : "—")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Just don't show if there is no result instead of showing —

@Abscissa24

Copy link
Copy Markdown
Member Author

Some stuff to change in the code. Also, I would prefer you to make backend logic in C++ (see network.cpp and network.hpp) than using the frontend file to add backend logic. Or, if you don't want to dirt your hands, make a Network.qml file in services/ that does these stuff.

Aye aye, captain!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Network Overhaul

2 participants