Architecture, Livestream Reliability, Accessibility, and Security Improvements
General project update
July 18, 2026, 10:57 p.m.
Completed a broad technical refactor of Sonocast following version 1.0.0, covering the platform interface, livestream lifecycle, content authorization, accessibility, security, and search-engine integration.
- Implemented a standalone Sonocast layout with dedicated navigation, account and notification controls, service notices, usage-limit information, footer links, and moderator pending-post indicators.
- Rebuilt the post detail, archive, search, pending-review, contribution-guidelines, livestream listing, listener, and Broadcast Studio interfaces around the standalone design.
- Introduced explicit pending, live, ending, and ended states for livestreams, allowing the interface and back end to represent each stage of a broadcast lifecycle consistently.
- Added browser broadcast-session tracking and heartbeat processing to coordinate Broadcast Studio tabs, identify stale sessions, and prevent multiple browser studios from publishing simultaneously.
- Added pre-broadcast shareable stream links. Listeners can now open a stream before the publisher connects and remain on a waiting screen until broadcasting begins.
- Added listener heartbeat tracking and automatic removal of stale listener sessions.
- Updated capacity enforcement to count active SRS publishers rather than pending stream records or inactive browser sessions.
- Improved stream reconciliation so temporary SRS failures do not terminate valid broadcasts. Missing publishers are now given a grace period, and active streams are preserved while SRS is temporarily unavailable.
- Made stream shutdown idempotent so repeated stop requests cannot apply duplicate termination operations. Shutdown now consistently clears listener records, stores the final stream duration, and applies quota-based termination.
- Prevented stale studio tabs, temporary SRS errors, duplicate shutdown requests, and external-publisher conflicts from incorrectly ending or replacing active broadcasts.
- Improved the custom audio player by retaining native browser controls until JavaScript initialization completes, exposing seek and volume values to screen readers, and avoiding interception of keyboard commands used within interactive controls.
- Consolidated comment rendering into a recursive template and improved heading structure, reply previews, pagination semantics, validation feedback, and screen-reader navigation.
- Added semantic landmarks, a skip link, consistent heading levels, current-page indicators, labeled regions, and live status announcements throughout Sonocast.
- Improved accessible names and state reporting for audio controls, livestream controls, chat interfaces, dialogs, toggles, copy buttons, and pagination components.
- Updated search and archive pagination to retain active search and filtering query parameters.
- Restricted unpublished or unconverted audio content across detail, embed, media, metadata, like, and comment endpoints to users with the required authorization.
- Limited like, embed, and comment controls to audio posts that have been published and successfully converted.
- Enforced comment boundaries by rejecting comments when commenting is disabled and preventing replies or upvotes from referencing comments belonging to another post.
- Preserved audio-post rendering when the original uploader account has been deleted.
- Preserved complete return URLs, including query parameters, when redirecting unauthenticated users to the login page.
- Sanitized rendered Markdown and removed unsafe template-rendering and HTML-insertion paths from notifications, reply previews, archive events, likes, and pagination.
- Escaped structured-data values and user-controlled content inserted through browser-side updates.
- Added
robots.txt, an XML sitemap, canonical URLs, Open Graph metadata, Twitter metadata, and structured data for the website, organization, and published audio. - Added regression coverage for post visibility rules, comment relationship boundaries, template safety, sitemap exposure, and livestream lifecycle handling.
The result is a more isolated and maintainable Sonocast interface, a fault-tolerant livestream lifecycle, stricter content-access enforcement, improved screen reader support, safer rendering of user-controlled data, and broader metadata coverage for search engines and link previews.