mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
3a0c61ffbc
Three defects, found while planning the Android client: - The email module's providers, preferences, templates, recipient groups, tests and send requests had no types in packages/types, so every client mirrored them from server code. They are typed now, from the JSON the routes return and accept, and the services and DTOs declare them. No response changes. - Narration audio paths were decoded twice: the router decodes the wildcard, and the route decoded it again, so a name holding a literal % resolved to the wrong entry or none. A path is now decoded once and matched to the playlist's hrefs exactly, with an exact entry name preferred. Each request also read the whole audio entry into memory; it is now streamed, read from its offset when stored and inflated and skipped when deflated, with the same headers and Range handling, and an open range at or past the end is a 416. Both narration audio routes skip response compression, which dropped Content-Length. - A playlist's section starts left out any clip of unknown length. They now use the media:duration each overlay declares when a clip's own length is unknown. A seq that interleaves par and seq children was reordered by the XML parser's grouping; SMIL is now read in document order.