Spoiler-free mode, HTTP hardening, and TTS underrun fix (1.6.0) - #5
Merged
Conversation
- Spoiler protection: global spoiler_free_mode preference, phone/watcher setup toggles, dedicated hot-update API, and market-alert suppression semantics (docs/releases/1.6.0.md) - Fix HTTP head-of-line blocking: requests are served concurrently with a 45s per-connection watchdog, a concurrency cap, and listener auto-restart. Previously a stalled POST body froze the server until reboot and every spoken alert made it deaf for the whole playback - Vendor a rejection-safe listener (matchday/listen-safe) so early peer resets can no longer become silent "unhandled rejection" restarts; consume lastAbort at boot so /api/status only reports the previous run - Vendor the remote TTS streamer (matchday/tts-remote-safe) with a 1500ms buffer and 16-slot audio queue, removing audible mid-sentence dropouts on long speeches; falls back to the host tts-remote on stock hosts - Archive the Moddable SDK tcp.c race patch and its analysis (host/sdk-patches, upstream moddable#1655 / PR moddable#1656) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Xiaoyi He <xymeow@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ships Matchday Mod 1.6.0 — full bilingual notes in
docs/releases/1.6.0.md.Spoiler protection / 防剧透模式
spoiler_free_modepreference with toggles on the device/setuppage and the watcher-local page, plus a dedicated hot-update API (POST /api/match-setup/spoiler).Reliability fixes
/api/statusstays responsive through a 36-second speech.matchday/listen-safe) observes both connection promises at creation, ending theunhandled rejectionaborts;lastAbortis consumed at boot so it only ever reports the immediately previous run.matchday/tts-remote-safe) with a 1500ms buffer and 16-slot audio queue (the host pins 600ms and the default 8-slot queue halves the effective depth). Measured via the streamer'sReadytraces: 2 mid-sentence underruns per long speech → 0 under normal load. Falls back to the hosttts-remoteon stock hosts.tcp.crace patch and analysis underhost/sdk-patches/(upstream ESP32: use-after-free panic in ECMA-419 TCP tcpReceive when a socket closes with data in flight (lwIP tcpip thread vs XS thread race) Moddable-OpenSource/moddable#1655, PR ESP32 419 TCP: marshal the teardown callback clear to the tcpip task Moddable-OpenSource/moddable#1656).Testing
python3 -m unittest discover -s tools: 191 tests green, including new layout guards and anhttp-server-safebehavior suite (stalled-body isolation, watchdog reclaim, load shedding, error paths).🤖 Generated with Claude Code