Adds two Starlink status lines under the physical (non-VPN gateway) pane — the last pane: pane B with two, the only pane with one.
Behavior. Detection is a TCP connect to the dish's fixed endpoint 192.168.100.1:9200, bound to the physical interface exactly as the latency probes bind. The dish sits behind the Starlink router, so this is not a gateway-address check. rtnetmon probes once a minute until a dish answers, then reads get_status every 5s; until then nothing is drawn and no status RPC is made. Detection and the fetch sit behind a small Client interface; the loop and the pure Render function are tested with a fake — no dish, no network.
Dependency decision (mine). Option (a): vendor generated bindings for get_status only, under internal/starlink/pb, generated from a minimal proto in this repo. Its field numbers, message names and the DishState enum are transcribed from the community bindings github.com/starlink-community/starlink-grpc-go @ 2e89f3d (get_status=1004, dish_get_status=2004) — smaller and plainer than vendoring the whole device API or a reflection client. Adds google.golang.org/grpc + google.golang.org/protobuf (pinned protobuf 1.36.6 / grpc 1.67.1 to match the generator); recorded in GO_PACKAGE_DEFAULTS.md.
Disclosures.
Nothing was run against a real dish; tests use the fake only.
One lint rule suppressed: //nolint:gosec G115 on the uint64-to-Duration uptime conversion (never near int64 max).
Deviation: generated a minimal proto here rather than copying the community's full .pb.go, to keep it get_status-only.
make check is green.
Model: opus-4-8
Adds two Starlink status lines under the physical (non-VPN gateway) pane — the last pane: pane B with two, the only pane with one.
**Behavior.** Detection is a TCP connect to the dish's fixed endpoint `192.168.100.1:9200`, bound to the physical interface exactly as the latency probes bind. The dish sits behind the Starlink router, so this is not a gateway-address check. rtnetmon probes once a minute until a dish answers, then reads `get_status` every 5s; until then nothing is drawn and no status RPC is made. Detection and the fetch sit behind a small `Client` interface; the loop and the pure `Render` function are tested with a fake — no dish, no network.
**Dependency decision (mine).** Option (a): vendor generated bindings for `get_status` only, under `internal/starlink/pb`, generated from a minimal proto in this repo. Its field numbers, message names and the DishState enum are transcribed from the community bindings `github.com/starlink-community/starlink-grpc-go` @ 2e89f3d (get_status=1004, dish_get_status=2004) — smaller and plainer than vendoring the whole device API or a reflection client. Adds `google.golang.org/grpc` + `google.golang.org/protobuf` (pinned protobuf 1.36.6 / grpc 1.67.1 to match the generator); recorded in `GO_PACKAGE_DEFAULTS.md`.
**Disclosures.**
- Nothing was run against a real dish; tests use the fake only.
- One lint rule suppressed: `//nolint:gosec` G115 on the uint64-to-Duration uptime conversion (never near int64 max).
- Deviation: generated a minimal proto here rather than copying the community's full `.pb.go`, to keep it get_status-only.
`make check` is green.
Model: opus-4-8
When the non-VPN physical gateway is a Starlink dish, two lines are shown
under that pane: state, uptime, obstruction and alert count; then pop-ping
latency and drop rate with downlink/uplink throughput. They turn red when
the dish is not connected or an alert is active.
Detection is a TCP connect to the dish's fixed endpoint 192.168.100.1:9200,
bound to the physical interface the same way the latency probes bind. Until
a dish answers nothing is drawn and no status is fetched, so an absent dish
adds no noise. Status comes from the dish's local get_status gRPC call.
Detection and the fetch sit behind a small Client interface; the loop and
the pure Render function are tested with a fake, no dish and no network.
Model: opus-4-8
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Adds two Starlink status lines under the physical (non-VPN gateway) pane — the last pane: pane B with two, the only pane with one.
Behavior. Detection is a TCP connect to the dish's fixed endpoint
192.168.100.1:9200, bound to the physical interface exactly as the latency probes bind. The dish sits behind the Starlink router, so this is not a gateway-address check. rtnetmon probes once a minute until a dish answers, then readsget_statusevery 5s; until then nothing is drawn and no status RPC is made. Detection and the fetch sit behind a smallClientinterface; the loop and the pureRenderfunction are tested with a fake — no dish, no network.Dependency decision (mine). Option (a): vendor generated bindings for
get_statusonly, underinternal/starlink/pb, generated from a minimal proto in this repo. Its field numbers, message names and the DishState enum are transcribed from the community bindingsgithub.com/starlink-community/starlink-grpc-go@ 2e89f3d (get_status=1004, dish_get_status=2004) — smaller and plainer than vendoring the whole device API or a reflection client. Addsgoogle.golang.org/grpc+google.golang.org/protobuf(pinned protobuf 1.36.6 / grpc 1.67.1 to match the generator); recorded inGO_PACKAGE_DEFAULTS.md.Disclosures.
//nolint:gosecG115 on the uint64-to-Duration uptime conversion (never near int64 max)..pb.go, to keep it get_status-only.make checkis green.Model: opus-4-8
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.