Skip to content

Commit e7d6b1c

Browse files
authored
Merge branch 'main' into peter/wip
2 parents 8aea07e + 44453c4 commit e7d6b1c

3 files changed

Lines changed: 51 additions & 19 deletions

File tree

app/EXO/EXO/Services/NetworkSetupHelper.swift

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,35 @@ enum NetworkSetupHelper {
3131
# Remove Thunderbolt Bridge from VirtualNetworkInterfaces in preferences.plist
3232
/usr/libexec/PlistBuddy -c "Delete :VirtualNetworkInterfaces:Bridge:bridge0" "$PREFS" 2>/dev/null || true
3333
34+
networksetup -listlocations | grep -q exo || {
35+
networksetup -createlocation exo
36+
}
37+
38+
networksetup -switchtolocation exo
39+
networksetup -listallhardwareports \\
40+
| awk -F': ' '/Hardware Port: / {print $2}' \\
41+
| while IFS=":" read -r name; do
42+
case "$name" in
43+
"Ethernet Adapter"*)
44+
;;
45+
"Thunderbolt Bridge")
46+
;;
47+
"Thunderbolt "*)
48+
networksetup -listallnetworkservices \\
49+
| grep -q "EXO $name" \\
50+
|| networksetup -createnetworkservice "EXO $name" "$name" 2>/dev/null \\
51+
|| continue
52+
networksetup -setdhcp "EXO $name"
53+
;;
54+
*)
55+
networksetup -listallnetworkservices \\
56+
| grep -q "$name" \\
57+
|| networksetup -createnetworkservice "$name" "$name" 2>/dev/null \\
58+
|| continue
59+
;;
60+
esac
61+
done
62+
3463
networksetup -listnetworkservices | grep -q "Thunderbolt Bridge" && {
3564
networksetup -setnetworkserviceenabled "Thunderbolt Bridge" off
3665
} || true

dashboard/parts.nix

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,28 @@
33
perSystem =
44
{ pkgs, lib, ... }:
55
let
6+
# Filter source to ONLY include package.json and package-lock.json
7+
# This ensures prettier-svelte only rebuilds when lockfiles change
8+
dashboardLockfileSrc = lib.cleanSourceWith {
9+
src = inputs.self;
10+
filter =
11+
path: type:
12+
let
13+
baseName = builtins.baseNameOf path;
14+
isDashboardDir = baseName == "dashboard" && type == "directory";
15+
isPackageFile =
16+
(lib.hasInfix "/dashboard/" path || lib.hasSuffix "/dashboard" (builtins.dirOf path))
17+
&& (baseName == "package.json" || baseName == "package-lock.json");
18+
in
19+
isDashboardDir || isPackageFile;
20+
};
21+
622
# Stub source with lockfiles and minimal files for build to succeed
723
# This allows prettier-svelte to avoid rebuilding when dashboard source changes
824
dashboardStubSrc = pkgs.runCommand "dashboard-stub-src" { } ''
925
mkdir -p $out
10-
cp ${inputs.self}/dashboard/package.json $out/
11-
cp ${inputs.self}/dashboard/package-lock.json $out/
26+
cp ${dashboardLockfileSrc}/dashboard/package.json $out/
27+
cp ${dashboardLockfileSrc}/dashboard/package-lock.json $out/
1228
# Minimal files so vite build succeeds (produces empty output)
1329
echo '<!DOCTYPE html><html><head></head><body></body></html>' > $out/index.html
1430
mkdir -p $out/src

src/exo/utils/info_gatherer/info_gatherer.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -366,13 +366,8 @@ def shutdown(self):
366366
async def _monitor_misc(self):
367367
if self.misc_poll_interval is None:
368368
return
369-
prev = await MiscData.gather()
370-
await self.info_sender.send(prev)
371369
while True:
372-
curr = await MiscData.gather()
373-
if prev != curr:
374-
prev = curr
375-
await self.info_sender.send(curr)
370+
await self.info_sender.send(await MiscData.gather())
376371
await anyio.sleep(self.misc_poll_interval)
377372

378373
async def _monitor_system_profiler_thunderbolt_data(self):
@@ -382,15 +377,12 @@ async def _monitor_system_profiler_thunderbolt_data(self):
382377
if iface_map is None:
383378
return
384379

385-
old_idents = []
386380
while True:
387381
data = await ThunderboltConnectivity.gather()
388382
assert data is not None
389383

390384
idents = [it for i in data if (it := i.ident(iface_map)) is not None]
391-
if idents != old_idents:
392-
await self.info_sender.send(MacThunderboltIdentifiers(idents=idents))
393-
old_idents = idents
385+
await self.info_sender.send(MacThunderboltIdentifiers(idents=idents))
394386

395387
conns = [it for i in data if (it := i.conn()) is not None]
396388
await self.info_sender.send(MacThunderboltConnections(conns=conns))
@@ -427,22 +419,17 @@ async def _monitor_gpu_info(self):
427419
async def _watch_system_info(self):
428420
if self.interface_watcher_interval is None:
429421
return
430-
old_nics = []
431422
while True:
432423
nics = await get_network_interfaces()
433-
if nics != old_nics:
434-
old_nics = nics
435-
await self.info_sender.send(NodeNetworkInterfaces(ifaces=nics))
424+
await self.info_sender.send(NodeNetworkInterfaces(ifaces=nics))
436425
await anyio.sleep(self.interface_watcher_interval)
437426

438427
async def _monitor_thunderbolt_bridge_status(self):
439428
if self.thunderbolt_bridge_poll_interval is None:
440429
return
441-
prev: ThunderboltBridgeInfo | None = None
442430
while True:
443431
curr = await ThunderboltBridgeInfo.gather()
444-
if curr is not None and prev != curr:
445-
prev = curr
432+
if curr is not None:
446433
await self.info_sender.send(curr)
447434
await anyio.sleep(self.thunderbolt_bridge_poll_interval)
448435

0 commit comments

Comments
 (0)