Review of #660 found the legacy user_profiles.auto_skip_intro column
could be moved by an enum write and never moved back, and a new
three-way control landing on the web device screen beside the switch it
replaces.
- The column now tracks every canonical profile-scope change to either
half of the pair. Previously only playback.intro_skip_mode wrote it,
so an "always" write pinned it true: a following auto_skip_intro=false
stored false in the rows while GET /profiles kept saying true, and a
DELETE that went back to inheriting left the column asserting a choice
nobody held — which the web player reads straight out of the profile
DTO and acts on.
- Clearing a profile-scope row now falls the column back to the
contract default, read from the manifest rather than spelled in the
handler.
- playback.intro_skip_mode is hidden from the web device settings
screen for this release. It had no group entry, so it fell through to
its manifest category and rendered under Picture while
"Auto-skip intros" stayed under Episodes: two controls for one
preference, each silently rewriting the other through the mirror, and
a "never" the player cannot honour yet. Its group is recorded so
unhiding it in the player follow-up is one deletion.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>