Repository navigation
Roku Control 2.1.0: fix "doesn't work" reviews, keyboard control, power-on, in-app feedback - #2
Merged
Merged
Conversation
Store reviews said the app didn't work at all, or only volume worked. Causes found and fixed: - The app opened pointed at two hard-coded home TVs, so every other user's buttons went to an address that didn't exist. Removed; the app now discovers on launch and selects what it finds. - Roku OS 14.1+ ships "Control by mobile apps" in Limited mode, which answers 403 to everything but volume. HTTP status was never checked, so failures were silent. Errors are now typed (unreachable, limited, unsupported) and the UI shows the exact setting to change. - The fallback scan probed 762 fixed addresses one at a time with a 3s timeout (~38 min). It now probes the machine's own private subnets in parallel, and SSDP is sent from every adapter so VPN/Hyper-V adapters can't swallow it. - System proxies could intercept LAN requests; the client is now direct. - The "connected" dot was always green. Status is now a real device-info check every 8s, and devices are matched by serial so a new DHCP address is re-resolved automatically. - The close button and window drag were denied by missing capabilities. New: Turn on (PowerOn, then Wake-on-LAN with retries, MAC from device-info or the ARP cache); keyboard shortcuts for every key with hold-to-repeat; live typing into the TV with correct UTF-8 Lit_ encoding; real channel icons, TV inputs by name, now playing; add by IP; mini always-on-top remote; help and troubleshooting; report a problem / suggest an idea as pre-filled GitHub issues (no IPs, names or serials); MoveWeight.com and source links; a one-time rating prompt after ten minutes of use once the app has worked. Commands to a device are serialized so presses arrive in order. Rust tests cover parsing, validation, and a fake Roku over loopback. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK
The in-app "Report a problem" and "Suggest an idea" links open these forms with the version and a non-personal device summary pre-filled. CI runs clippy and the Rust tests on Linux and Windows; the build workflow produces installers for Windows, macOS and Linux on demand or on a version tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK
The privacy policy now covers what the new features store locally (device MACs for Wake-on-LAN, usage counters for the one-time rating prompt) and the opt-in links. The Store listing drops the widget-mode claim and describes the mini remote, keyboard control and power-on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Artifacts from a workflow run are zipped and need a GitHub login. A version tag now also attaches every installer to a release: suffixed tags (v2.1.0-beta.1) publish a pre-release for testers, plain version tags create a draft to review before publishing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK
Labelling a pull request "build-installers" builds the Windows, macOS and Linux installers from its branch and publishes them as a "preview-pr<N>" pre-release, replaced on each push, so testers get a direct download link before anything is merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK
The Store listing is an MSIX product, so each Windows build now packs roku-control.exe with msix/AppxManifest.xml and its assets using the Windows SDK's makeappx, and attaches the .msix to the release. Partner Center signs it on upload. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK
Running "Build installers" by hand can now publish a GitHub release with a given tag and, when the Partner Center secrets are set, submit the MSIX to the Microsoft Store with Microsoft's msstore CLI. Also fixes loose ends for going live: the Store listing's privacy policy URL pointed at an old gist and now points at privacy.txt in this repo; docs/index.html was plain text rather than HTML; STORE.md described converting an MSI by hand and a widget mode that no longer exists; the README sent people to workflow artifacts instead of releases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK
BlizzHacker
marked this pull request as ready for review
September 26, 2026 17:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Try it
Preview builds of this branch are published automatically while the PR has the
build-installerslabel: preview-pr2.makeappx..dmg, Linux.deb/.rpm/.AppImageare on the same page.Why
Recent Microsoft Store reviews are all 1★ with the same story: "didn't work at all, I only got as far as connecting it", "still doesn't work on the living room TV", "doesn't work except volume controls — error anywhere else". I traced each one to a cause in the code.
192.168.0.126/.124), and refreshing never changed the selection, so every button went to an address that doesn't exist on the user's networkunreachable/limited/unsupported); the app shows the exact setting to change, before you press anything if device-info reports itsel ? 'on' : 'off', i.e. always greenprocess:allow-exitandcore:window:allow-start-draggingwere never grantedAlso fixed: a system proxy could intercept LAN requests (the HTTP client is now direct-only); rapid presses could arrive out of order (commands are serialized); typed text didn't encode spaces/symbols/accents properly;
&showed in channel names.What's new
PowerOnfirst; if the TV is off the network, Wake-on-LAN to every known MAC (from device-info, falling back to the OS ARP cache), with retries for about 25 s. If it still can't wake the TV, the app explains Fast TV start.+/−/M volume, and more (?shows them all). Hold to repeat, the matching on-screen button lights up, and clicking a button never steals Enter..exe,.msi, Store.msix), macOS and Linux. It runs on demand, onv*tags (publishing a release: draft for plain versions, pre-release for suffixed ones), or on PRs labelledbuild-installers(publishing apreview-pr<N>pre-release).Removed: the volume slider. Rokus can't report their volume, so it was always a guess. Press-and-hold −/+ is accurate.
Testing
cargo test: 21 tests, including a fake Roku over loopback (403 → Limited, 404 → unsupported,Lit_encoding and ordering, PowerOn → Home fallback on players, parallel subnet scan) plus parsers for device-info/apps/SSDP/ARP (Windows, macOS and Linux formats), MAC/magic-packet, and link allowlist.cargo clippy --all-targets -- -D warningsis clean on Linux and cross-checked forx86_64-pc-windows-msvc. CI runs it natively on Windows too.makeappxaccepted the MSIX manifest.Before publishing
privacy.txt, or point it atdocs/privacy.html.2.1.0.0. Upload the.msixabove in Partner Center → Roku Control → Start update → Packages, paste "What's new" fromSTORE-LISTING.txt, then submit for certification.🤖 Generated with Claude Code
https://claude.ai/code/session_01T1KVxxyYNj32N3J63JDkSK