John O'Keefe
9cf9e1d305
feat(api): expose and validate the audio resume rewind setting
...
GET/PUT /api/auth/profile now carries audio_resume_rewind_seconds
(always-present on the response: 0 is a real value, exact resume; the
request shape is the keep_screen_awake string precedent so the form
select can send an explicit 0=Off while JSON clients that omit it
leave the column untouched — a plain int with an omitempty contract
could not express 'set to off'). Strict allow-list {0,5,10}: the UI
offers exactly three choices and the API refuses everything else.
The audiobook chapters endpoint embeds resume_rewind_seconds in its
existing payload — it already loads the user row for playback speed,
so both players (web + Android, phone UI and the Android Auto service)
get the value with the fetch they perform anyway; zero extra round
trips.
Profile page gains the Resume Rewind select (Off / 5 s before /
10 s before) next to Default Playback Speed.
2026-11-01 17:19:58 -05:00
..
2026-10-28 09:37:14 -04:00
2026-10-31 23:27:21 -04:00
2026-10-28 09:37:14 -04:00
2026-10-31 23:27:21 -04:00
2026-10-13 12:24:12 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-31 23:27:21 -04:00
2026-10-30 13:54:37 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 13:22:54 -04:00
2026-10-31 23:27:21 -04:00
2026-10-30 10:12:43 -04:00
2026-10-31 23:27:21 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-25 17:22:40 -04:00
2026-10-25 18:14:44 -04:00
2026-10-25 18:14:44 -04:00
2026-10-31 23:27:21 -04:00
2026-10-30 15:52:14 -04:00
2026-10-31 23:27:21 -04:00
2026-10-30 12:03:44 -04:00
2026-10-31 23:27:21 -04:00
2026-10-29 16:05:03 -04:00
2026-05-24 21:20:24 -04:00
2026-03-27 15:52:02 -04:00
2026-11-01 16:22:35 -05:00
2026-11-01 16:22:35 -05:00
2026-10-31 23:27:21 -04:00
2026-10-18 12:08:20 -04:00
2026-10-27 23:33:52 -04:00
2026-10-31 23:27:21 -04:00
2026-10-31 15:40:21 -04:00
2026-11-01 16:22:35 -05:00
2026-11-01 16:22:35 -05:00
2026-10-31 23:27:21 -04:00
2026-10-31 13:39:24 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-26 08:17:49 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-11-01 16:34:25 -05:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-31 23:27:21 -04:00
2026-08-10 13:43:13 -04:00
2026-10-31 23:27:21 -04:00
2026-10-19 18:59:36 -04:00
2026-11-01 15:43:52 -05:00
2026-11-01 15:43:52 -05:00
2026-10-31 23:27:21 -04:00
2026-08-05 16:45:02 -04:00
2026-10-31 23:27:21 -04:00
2026-10-31 13:14:05 -04:00
2026-10-31 23:27:21 -04:00
2026-10-29 16:17:55 -04:00
2026-10-31 23:27:21 -04:00
2026-10-25 16:58:28 -04:00
2026-10-31 23:27:21 -04:00
2026-10-30 20:50:38 -04:00
2026-10-31 23:27:21 -04:00
2026-10-24 19:44:34 -04:00
2026-10-31 13:14:05 -04:00
2026-10-31 23:27:21 -04:00
2026-10-30 14:13:39 -04:00
2026-10-30 12:03:44 -04:00
2026-10-31 23:27:21 -04:00
2026-10-30 12:03:44 -04:00
2026-11-01 17:19:58 -05:00
2026-11-01 17:19:58 -05:00
2026-10-31 23:27:21 -04:00
2026-08-05 16:45:02 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-24 19:44:34 -04:00
2026-10-24 19:44:34 -04:00
2026-10-31 15:40:21 -04:00
2026-10-31 15:40:21 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 15:11:49 -04:00
2026-10-31 23:27:21 -04:00
2026-10-28 10:12:20 -04:00
2026-10-03 23:54:07 -04:00
2026-10-24 19:44:34 -04:00
2026-10-24 19:44:34 -04:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-18 12:08:07 -04:00
2026-10-18 12:08:07 -04:00
2026-10-18 12:08:07 -04:00
2026-10-31 23:27:21 -04:00
2026-05-10 16:13:21 -04:00
2026-11-01 17:19:58 -05:00
2026-10-31 23:27:21 -04:00
2026-10-27 23:33:52 -04:00
2026-10-19 18:59:36 -04:00
2026-11-01 16:34:25 -05:00