Conversation
There was a problem hiding this comment.
Pull request overview
Updates network detection to ignore VPN policy routes and retain the physical LAN interface.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Changes:
- Selects the lowest-metric default route from the main routing table.
- Adds a regression test using stubbed network commands.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
bin/omarchy-network-status |
Uses main-table routes for standard and verbose status. |
test/shell.d/network-status-test.sh |
Tests physical-route selection behind policy routing. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| IP_CALLS="$test_tmp/ip-calls" PATH="$stub_bin:$ROOT/bin:$PATH" \ | ||
| "$ROOT/bin/omarchy-network-status" --verbose >"$test_tmp/status" |
Extend the VPN policy-route fix to prefer an active physical NetworkManager device (wifi/ethernet) rather than only reading the main-table default route. This keeps the network panel on the LAN connection even for full-tunnel VPNs or Tailscale exit nodes that replace the default route.
|
Independent confirmation on a Environment
Before ( After (this PR's The tunnel interface has no One extra symptom worth recording: the bar icon and the panel's header text A local workaround for the glyph half, for anyone hitting this before the # /etc/NetworkManager/conf.d/95-wireguard-unmanaged.conf
[keyfile]
unmanaged-devices=type:wireguard
|
|
Thanks for the independent repro on a On the second symptom, you split it correctly and I agree it is two halves. The header text comes from Your |
|
Thanks. Issue #10619 already tracks the false-disconnected Wi-Fi icon, so I added our observations there rather than create a duplicate: #10619 (comment) One correction to my earlier comment: the full-fan/slashed-fan cycling continued after |
|
Reviewed against Four other open pull requests fix the same bug: #12071, #13529, #13666 and #13808. I read all five against
#13529 and #13808 read only the main table's default, so a NetworkManager VPN that installs its own default there (metric 50) is still shown as the uplink. #13666 also adds a Nothing was run on a worker for this branch, since it is not the fix I would bring forward. The second opinion (Codex Medium) did not run: its daily review budget was spent when this was checked, so this comparison is one model's reading and has not been checked by a second. Waiting on the maintainer to choose between the competing fixes. |
Summary
Why
ip route get 1.1.1.1follows policy routing. With a Tailscale exit node enabled it resolves totailscale0, so the Network panel labels the connection as Ethernet and displays the Tailnet address instead of the active Wi-Fi/Ethernet address. Reading only the main routing table fixes policy-route VPNs but still follows a VPN that replaces the default route; preferring the active NetworkManager physical device covers both cases.Verification
bash -n bin/omarchy-network-status test/shell.d/network-status-test.shtest/shell.d/network-status-test.shpasses with stubbednmcli/ip(connected Wi-Fi + connectedtailscale0)