2026-10-04 — From a TV switch to a household control suite
A practical problem
Smarthome began with a small inconvenience: control an LG webOS television without finding its remote. The repository history starts on September 2, 2026, with an Android and Go project scaffold and an issue describing the first power-off feature. Over the following few days, the project grew into a two-platform companion for television control and selected FRITZ!Box parental-control actions.
For an outside reader, the useful distinction is that this is not only a phone app. Its shared Kotlin core drives Android features, while a Go command-line companion provides a host-side way to inspect and control devices. That second path made it possible to probe network behavior quickly and keep the same capabilities useful from a terminal.
What was built
The project speaks LG webOS's SSAP protocol for power, playback, app launching, and volume. It discovers televisions on the local network, exchanges connection details through QR codes and smarthome:// links, and can wake a television with Wake-on-LAN. For FRITZ!Box routers, it uses TR-064 for status and parental-control operations such as bonus time and internet access blocking. The Android app adds settings, encrypted credential storage, theming, and device discovery; the Go companion has a Cobra command tree for TV, FRITZ!Box, and QR operations.
The work is unusually well recorded. Tickets serve as a running product backlog and implementation record. The repository also contains protocol notes, canary-first guidance, retrospectives, release instructions, and checks for licensing and public-release hygiene. Commits from September 2 through September 5 show a rapid development burst: 194 commits in the recent six-week window, with no later commits by October 4. The volume is evidence of concentrated activity, not proof that every feature is equally mature.
A small bug with broad consequences
The volume control episode shows why the companion CLI mattered. After volume buttons were added, the app's slider could jump back to zero after a volume adjustment. The CLI showed the same incorrect reading. Issue 056 records the cause: the television returned volume and mute values inside a nested volumeStatus object, while both the Go and Kotlin clients looked for those fields at the top level. Both implementations therefore received default zero values.
The fix updated both clients to understand the nested response while retaining support for top-level fields, then updated Go and Kotlin tests with the actual response shape. The ticket records live verification as well. This is a concrete example of a cross-platform defect being traced to one wire-format assumption, corrected in both clients, and captured as a regression case. The Go tool made the protocol response observable without relying on an Android build and install cycle.
Another documented episode involved the app's discovered-TV dialog crashing during Android layout inflation. Issue 050 and the September 4 sprint retrospective describe a theme-attribute mismatch: a layout referenced an attribute that the app's Material Components theme could not resolve. The fix used attributes supported by the project's theme and verified the dialog on-device. These episodes show two different kinds of debugging: protocol parsing from a real payload and platform UI behavior confirmed on hardware.
What agentic development contributed
The history suggests that agents were most useful as a disciplined implementation loop rather than as a source of one large code dump. Issues were opened, moved through implementation, linked to commits, and closed; several studies capture the decision and verification trail. The repository's development guidance explicitly asks engineers to test device and protocol changes through Go canaries first. The September 4 sprint study records 35 commits across tickets 033–050 in roughly six hours, covering a CLI consolidation, volume controls, discovery UI, theming, and build workflow improvements.
That breadth matters. One developer still made the product decisions and reviewed behavior, but agentic workflows could handle many bounded changes across Go, Kotlin, Android resources, tests, scripts, and documentation while preserving a ticket trail. The result is not evidence that agents remove the need for device access or judgment. It shows how a careful issue queue, quick protocol probes, and regression tests can let one person coordinate work across several layers without losing the thread of why each change exists.
Facts
| Item | Verified fact |
|---|---|
| Stack | Go 1.26.6; Kotlin; Android/Gradle; Cobra; webOS SSAP; FRITZ!Box TR-064 |
| Repository size | 194 commits in the six weeks before 2026-10-04; 57 numbered tickets through issue 057 |
| Test footprint | 17 files matching Go or Android test-file patterns |
| Activity | Initial work began 2026-09-02; last commit in the review window was 2026-09-05 |
| Recent milestone | Dual-target/router-assisted Wake-on-LAN in issue 057; volume parsing fix in issue 056 |