First plug-in after a reboot takes iOS 20-30s to bring the interface up
and complete DHCP; the 4s sleep reported false 'enable hotspot' advice
when the hotspot was already on. Also broadens the failure advice
(unlock once after phone restart, replug as last resort).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fixes from a two-agent bug review, all verified:
- active_uplink/tether_ip never fail (bare assignments were killing the
TUI when offline or on mid-check unplug; netns-tested)
- all TUI menu actions guarded with || true; risky steps inside
cmd_install/tui_switch/revive_usbmuxd individually guarded since
|| true disables errexit inside the callee
- pause on tui_connect error paths so warnings survive the redraw
- tui_switch: require non-empty uplink before claiming success
- strip_windowrules refuses to range-delete without the end marker;
newline guard before append (both fixture-tested)
- probes drain output instead of grep -q (pipefail SIGPIPE)
- removed dead pair_wait; quoted .desktop Exec path; priority rejects
unknown args; unpair reports failure; help no longer prints set line
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
.desktop now uses --app-id=omatether; install writes a marker-delimited
float/center/size rule block into ~/.config/hypr/windows.conf (backed up
once, removed on uninstall). Dropped udevadm trigger from install — it
wedges an already-connected iPhone (device unconfigured); targeted
usbmuxd restart instead.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Context-aware menu: Connect phone (USB wait + Trust walkthrough),
Switch internet → iPhone / back, live status header. install now
writes a TUI.float .desktop entry and restarts elephant.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>