Closing a book in Aoede did not actually stop Aoede from working on it. Backing out of a document only cleared the selection; the MLX Kokoro engine kept its cache resident, and worse, the synthesis scheduler kept running. I had set its lookahead to 1000 sentences, so the moment you opened a book it raced ahead synthesizing essentially the whole thing, and it kept churning even while paused, because the scheduler only relaxes as audio actually plays through. On the Mac this mostly hid as memory and CPU that never came back down after you were done reading. On iOS, where overshooting RAM gets your app killed, it was not so quiet.
The louder iOS problem was a crash on backgrounding. iOS forbids GPU work in the background, and MLX submitting a command buffer there aborts the app outright ("Insufficient Permission to submit GPU work from background"). The naive fix is to stop everything when the app leaves the foreground, but that also kills audio you are allowed to keep playing. So the app now suspends only the neural synthesis: it watches the scene phase, pauses Kokoro's GPU work as early as it goes inactive (giving any in-flight work a moment to finish), purges the MLX cache, and resumes on return. Apple's voices are CPU-only, so they play straight through the background. Kokoro plays out its buffered cushion, then waits, and picks up where it left off when you come back.
The lookahead is bounded to a few sentences now, closing a book stops synthesis and purges the cache, and the cache cap scales to the device. Most of this was iOS forcing the issue, but the work that lingered after closing a book was a bug on every platform. It just took a system that kills you for it to make me notice.