mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-07-19 11:52:18 +00:00
Smart televisons are effectively e-waste. When they are manufactured,
the manufacturer creates them and then loads some version of Google
Chrome on them, does basic tests, and then releases it into the market.
From this point they do not update it and instead offer consumers apps
that are not moderated in any way, shape, or form. These apps often
give consumers the choice of seeing ads or acting as vessels of
"internet research", which adds them to massive scraping botnets[1].
Either way, certain models of LG Smart TVs have been marooned on Chrome
79 and this poses a problem as Anubis uses the JavaScript feature
Optional Chaining, which allows you to look through deeply nested
objects without the risk of throwing an error.
Anubis uses it to invoke the progress callback function if it is
defined:
```javascript
progressCallback?.(event.data);
```
The equivalent JavaScript code without Optional Chaining would look like
this:
```javascript
if (progressCallback) {
progressCallback(event.data);
}
```
esbuild will convert syntax of the former to the latter, meaning that
Anubis should work properly on abandoned LG Smart TVs from 2019.
DISCLAIMER: None of the code or documentation in this PR was written by
AI models. The use of generative AI in the production of this PR was
solely done to automate researching the versions of Chrome that certain
LG Smart TV models use, attempting to figure out how to make the LG
Smart TV simulator give me a normal browser, and doing a mass audit of
the Anubis JavaScript codebase to try and find things that are causing
it to fail on older versions of Chrome. One of the most helpful things
was the caniuse MCP server, which greatly sped up the process.
I hate smart TVs. You should really do yourself a favor and get some
kind of home theatre PC or Raspberry Pi running a normal human operating
system to do this kind of media enjoyment.
[1]: https://thehackernews.com/2026/06/free-apps-are-quietly-turning-smart-tvs.html
[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
Closes: #1728
Assisted-by: Claude Sonnet 5 via Claude Desktop
Assisted-by: Claude Opus 4.8 via Claude Code
Signed-off-by: Xe Iaso <[email protected]>