diff --git a/internal/handlers/auth.go b/internal/handlers/auth.go index 0a702213..ce929b4e 100644 --- a/internal/handlers/auth.go +++ b/internal/handlers/auth.go @@ -124,8 +124,10 @@ type UserProfile struct { Role string `json:"role"` Theme string `json:"theme,omitempty"` // User-level default audiobook playback speed (plan §8); 0 omits. - DefaultAudioSpeed float64 `json:"default_audio_speed,omitempty"` - // Whether the web reader/player should hold a Screen Wake Lock. + // Response-only struct: omit nothing — default_audio_speed is NOT NULL + // DEFAULT 1.0 (writes validate 0.25–4), so a real profile always emits + // it; omitempty here would drop a contract field from the docs gate. + DefaultAudioSpeed float64 `json:"default_audio_speed"` // Whether the web reader/player should hold a Screen Wake Lock. KeepScreenAwake bool `json:"keep_screen_awake"` // Resume rewind: seconds before the saved position the audio // player starts (open-resume and every genuine unpause). 0 is a