Clicking a channel opens that channel. (#37) Three separate bugs were stacked on the same symptom — "jumps to a different channel, then source error". The title matcher truncated every id at the first : — a rule written for IMDb's tt…:season:episode — so every channel id (cs:channel:<hash>) collapsed to cs and whichever you pressed, you got the first one. Then the item id field itself was 16 bytes, and cs:channel:globo-tv-integracao-ituiutaba does not fit: twelve distinct channels became the same item. And channels were still being asked about at Cinemeta as if they were movies. All three fixed, in that order; the id field is now 64 bytes and the matcher only splits on a real :season:episode suffix.
The play/pause button on the Samsung remote works. (#40) The media keys were registered correctly all along — the bug was downstream. The browser hands the app keyCode 10252 (or 415/19 on older remotes), the SDL table only knows PC keyboard codes, and the event died in between, exactly the way the Return key once did before someone taught it to become Escape. The six media keyCodes are now translated the same way: PlayPause/Play/Pause become OK, Stop becomes Back, Rewind/FastForward become the seek arrows. And the translation only exists while the player is on screen — before, play/pause anywhere in the app was an invisible OK press on whatever had focus, which is how a season once got marked watched by accident.
The parental guide shows when the episode starts, not after you touch the menu. (#31) The panel's draw block sat below the early return for "clean playback, controls faded" — so it only ever ran on the one frame where toggling the menu brought the OSD back. It computes its own timing and was never meant to be tied to the OSD; it had simply been left behind when the neighbouring blocks were moved above that same return for the same bug. Now it sits with them.
The subtitle menu speaks your language, and remembers your settings. (#41, #42) Two leaks: the style labels ("Style", "Opacity", "Border"…) had no translation keys at all, and composed track names like "Português · 5.1" could never match a key because the language name was only translated after being glued into the string — a string that exists in no table. Both fixed, and the i18n sweep script now catches the second pattern so it cannot come back a third time. Also in #42: the player's subtitle style and aspect settings were being written to the art directory instead of the data directory — on a TV, where the system kills the app rather than closing it, everything in there was lost. They now live where every other setting lives.
Continue watching opens the season you are actually in. (#43) The detail page chose its starting season tab from the first episode of the whole series, ignoring your progress, and a second spot stamped the season column back to zero when you moved down to pick an episode — so it opened on the wrong season and "returned" you to S1E1 when you tried to fix it. Both now seed from the same progress the Resume button uses.