"1.马克思主义" was segmented after "1." and normalised to "一.", so the number was spoken as its own sentence. A list marker (1. / 一. / (3). at a line or clause start; never a decimal, version or IP) no longer ends a server or standalone-reader segment and is read as "一、". Python and static reader.js share the rule (parity test); narration identity becomes phrases-v13-list-markers.
Restrict parent origin/window/channel and frame ancestors; import bounded original text/context without auto synthesis or private bookmark restoration. Reuse existing independent player and require explicit active-speech replacement. Add cross-frame keyboard and collapse/stop controls while leaving inference and quote API unchanged.
feat: add optional duration-preserving CPU pitch audition
Preserve original text/UTF-16 positions and pinned CPU models. Keep dates, versions and labelled numeric IDs whole across source plans; use the same idempotent spoken forms in contextual and acoustic frontends. Add browser-only 0.5-2 playback rates and nonpersistent clip/deadline sleep timers with progress-safe cancellation.
feat: add source clip navigation, structural pauses and pause-aware prefetch
Keep original UTF-16 text and complete MP3 API. Publish source plans before synthesis, add safe source highlighting and previous/next/click seeks, vary supplemental silence by structure, and stop speculative tasks/audio preloads while paused. Release late job capabilities and ignore obsolete play promises without changing CPU, models, voices or quote data.
fix: keep speech retries stable across proxy and mobile IP changes
Bind secret random retry capabilities to request content rather than peer IP while retaining observed-peer and global rate limits. Use 192-bit reader tokens and wait for restored voice options before enabling playback.
feat: publish completed speech parts and add resumable long reader
Preserve complete MP3 API, quote/data contracts and pinned two-thread CPU models. Add bounded atomic part publication with cancellation-safe leases, contextual adjacent batches and idempotent retries. Audition reader supports opt-in local bookmarks, at most one following batch and MP3 preload, and explicit recovery without skipping text.
feat: add contextual g2pW readings and use both CPU cores
Keep Kokoro voices and quote API/data unchanged. Add pinned offline g2pW ONNX polyphone disambiguation, preserve lexical tones and reviewed regional dictionary readings, retain source offsets across synthesis splits, and use two CPU threads sequentially in the existing single worker.
fix: clean up audition sessions and audio API schema
Preserve original quote routes and data. Add one isolated Kokoro CPU worker, checksum-pinned build assets, bounded admission/cache, job cancellation, native MP3/Range playback and cross-site CORS. Consolidate case-colliding readme into the HF README for Android development.