# Changelog All notable changes to JellyTau are documented here. Entries are grouped by the capability they change, not by commit. Requirement IDs in parentheses point at [docs/requirements.md](docs/requirements.md); the generated trace matrix lives in [docs/traceability.md](docs/traceability.md). For how long each fixed defect had been shipping before it was found, see [docs/defect-windows.md](docs/defect-windows.md). ## v0.7.0 ### ✨ Changes - **Native Android video is now the default.** Video decodes on the device's hardware decoder instead of the built-in web player, which is easier on the battery and lets picture-in-picture show the video rather than the app. The default had been held back deliberately since the picture defects were fixed, because returning from background audio left playback dead on that path; both blockers below are fixed and verified on a device, which is the standard this default has been held to since it last shipped early. The Settings toggle remains, now as the fallback to the web player, and an explicit choice still wins in both directions β€” anyone who turned it off keeps it off. (UR-003, UR-004 β†’ DR-188) ### πŸ› Fixes - **The letterbox bars stop showing things that are no longer there.** With native video on, the padding around the picture kept whatever had last been drawn in it: the previous frame flashing on rotation, a ghost copy of the control bar stranded at the top of the screen, each new clock digit drawn over the one before it, and the sleep-timer and quality menus leaving their imprint after closing. One cause under all of it β€” nothing painted those bars. The window surface is opaque, and for an opaque surface Android's renderer skips clearing the damaged region and assumes the view hierarchy covers every pixel; the video view covers only the letterboxed rect, so the bars were the window background's alone to paint, and enabling compositing had cleared that background to transparent. Three earlier attempts missed because they aimed at the window's rotation animation and at video-frame retention β€” which is also why the artefact reproduced standing still, with no rotation involved. (UR-003, UR-066 β†’ DR-194) - **Returning from background audio brings the picture back.** On the native path, coming back from the lockscreen left a black screen: a play overlay pinned at 0:00 and a play button that did nothing. Nothing had crashed β€” the transition was simply dropped. The two render paths resume by different means, and only one of them was performed: the web player reloads from its stream URL, while the native player owns no element and nothing watches that URL on its behalf, so it has to be handed the item again explicitly. It now is, at the position the audio reached. (UR-040, UR-003 β†’ DR-196) - **Next Up stops repeating what Continue Watching already shows.** The same episode could occupy both home rows at once. (UR-023 β†’ DR-197) ## v0.6.0 ### πŸ› Fixes - **Android native video actually shows a picture.** It shipped once as *audio with no picture* and was reverted with the compositing named as the suspect (DR-172). The compositing was not at fault; five independent defects sat between ExoPlayer and the screen, each able to produce that symptom alone. The app shell painted over the video surface through a CSS rule targeting `[data-app-shell]`, an attribute no component had ever set in any commit (DR-185). The poster/title card had no way to lift on a path that renders no `