feat: VPN section with provider management and live stats - #1605
Conversation
Adds a VPN block to the Network page mirroring the Wi-Fi group: a header toggle, a connected-details panel (interface, live ping, protocol) or a context placeholder, and a Manage-providers row. Adds a provider list page and an add/edit page. Extends the VPN service with multi-provider config, live stats (ping, data in/out, server, connected-for) and a more robust WARP status parser.
|
Seeing a lot of changes for WARP, did you get to test with other providers as well? |
Actually, no.
You're right about the pattern this still keeps the old switch(providerName) + per-provider parsers and adds onto them, so it's not the aggregator yet. It could be refactored so each provider is an adapter implementing a common interface (status/connect/disconnect/stats) and the handler never switches on a name the management + stats + UI here would carry over mostly unchanged on top of that. |
| case "error": | ||
| return VPN.status.reason || qsTr("An error occurred"); | ||
| default: | ||
| return qsTr("Active"); |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Preserve connecting/disconnecting state between proc exit and 500ms status check timer
Instead of per provider enabled, since there can only be one selected provider at a time anyways
Co-authored-by: danny <danny@atropos.cc>
Possibly fixes disconnect toast showing new provider instead of the old one
Screw qmlformat
* upstream/main: fix: use GNUInstallDirs for install dirs (caelestia-dots#1762) fix: fp precision for nexus fix: nominatim compliance (caelestia-dots#1752) [CI] chore: update flake fix: repeated low battery warnings (caelestia-dots#1477) refactor: change IP-lookup API + handle retry on rate limited (caelestia-dots#1734) fix: eager load certain services (caelestia-dots#1733) feat: add utilities panel confs to nexus (caelestia-dots#1725) [CI] chore: update flake fix: file system model sorting fix: fully round toggled network filter chips feat: add saved networks sub page to nexus (caelestia-dots#1722) feat: cap networks shown in nexus (caelestia-dots#1719) fix: nexus network null warnings fix: battery time calc feat: nexus VPN section with provider management (caelestia-dots#1605) fix: add qtimageformats to nix qs dep (caelestia-dots#1716) ci: add nix build workflow (caelestia-dots#1715) fix: handle > INT_MAX player lengths overflowing in lyrics (caelestia-dots#1648) feat: hidden networks, per-network settings and IPv4 config (caelestia-dots#1604) fix: key ZFS filesystems by pool in storage service (caelestia-dots#1673) fix: support delayed "xesam:artist" for now playing toast (caelestia-dots#1700) fix: preserve unknown config keys on save (caelestia-dots#1675) fix: populate pipewire nodes immediately (caelestia-dots#1699) fix: launcher action searching (caelestia-dots#1695) chore: fix lint warnings (caelestia-dots#1705) [CI] chore: update flake [CI] chore: update flake fix: improve compact tray styling refactor: use Item instead of Loader for bar entries (caelestia-dots#1663) refactor: improve state handling & add component hooks (caelestia-dots#1661) fix: ethernet devices incorrect end rounding fix: text field outline outside of widget bounds feat: add lock howdy support (caelestia-dots#1515) fix: don't animate calendar today indicator chore: remove unused Tooltip component fix: menu/popup overlays overriding cursor shape feat: improve text controls (caelestia-dots#1647) # Conflicts: # modules/bar/Bar.qml # modules/bar/BarWrapper.qml # modules/bar/components/Tray.qml # modules/drawers/ContentWindow.qml # modules/drawers/Interactions.qml # modules/drawers/Panels.qml # modules/lock/NotifGroup.qml # services/Players.qml
* feat: VPN section with provider management and live stats Adds a VPN block to the Network page mirroring the Wi-Fi group: a header toggle, a connected-details panel (interface, live ping, protocol) or a context placeholder, and a Manage-providers row. Adds a provider list page and an add/edit page. Extends the VPN service with multi-provider config, live stats (ping, data in/out, server, connected-for) and a more robust WARP status parser. * fix: sub pages order * feat: add disabled state for switches * fix: visually disable vpn toggle * fix: add vpn cancel/confirm buttons * delete VpnPage and registry * fix: add vpn provider button label * fix: show all providers on main network page * feat: show vpn details when connected * feat: use QtObjects for vpn providers * feat: add delete provider button * feat: add shape morph to provider cancel/save * fix: refresh vpn on edit when connected * fix: reset editing provider state on add * fix: disable already active vpn provider * refactor: give vpn both connecting & disconnecting * fix: only watch disconnecting * feat: don't reload vpn when only display name changed * fix: handle vpn connect fail * fix: handle connect/disconnect proc not existing * fix: rename vpn provider active -> selected * fix: preserve (dis)connecting state Preserve connecting/disconnecting state between proc exit and 500ms status check timer * refactor: global vpn selectedProvider prop Instead of per provider enabled, since there can only be one selected provider at a time anyways * refactor: thank you danny Co-authored-by: danny <danny@atropos.cc> * chore: add vpn to network page sublabel * fix: defer setting selected provider on switch Possibly fixes disconnect toast showing new provider instead of the old one * chore: rename id -> providerId Screw qmlformat * fix: null warning on provider destruction * chore: fix section order violation * fix: sync config vpn enabled with transient state --------- Co-authored-by: Mestane <mestane@users.noreply.github.com> Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Co-authored-by: danny <danny@atropos.cc>
Adds a VPN section to the Network page with provider management UI, provider list/add-edit pages, and improved VPN service monitoring and status parsing.