Local selection loads the unchanged original into this tab; it does not upload anything. Published references load directly into the same audio manager. Nothing here authenticates you or substitutes a generated soundtrack. Local selections must be repeated after reload.
The supplied HTML contains no server upload request: its file selector creates a local
blob: reference. Therefore the editor's “Error uploading to the server” is
outside that code. No project workspace, server logs, failed response, or editor identity
is accessible from the supplied document. Its server-side cause remains unverified.
To diagnose the real asset-manager failure, open the editor's browser DevTools → Network, enable Preserve log, retry the original upload, and inspect the failed request's Request URL, method, payload field, HTTP status and Response. A request blocked before reaching the server also needs its Console error. Do not share cookies, authorization headers, session tokens, or signed URLs publicly.
Only use the sender below with your project's documented endpoint and request contract. It sends the selected original bytes, without renaming or conversion, and captures the response. It cannot discover your editor's asset-manager menus, storage bucket, limits, CSRF requirements, or undocumented API. If those are unknown, use the editor's own uploader and provide its failed response instead. A successful HTTP response alone is not a playback test.
Changed: real-reference loading, local-file decoding checks, explicit upload response capture, cancellation/timeouts, event-based playback evidence, and race-safe shared music/effect players. No audio file was available or executed during authoring; no server fix or passed file test is claimed. The results above are populated only by actual events after you supply your originals. They cannot prove your speakers are audible.
Keep the existing real login handler. Only after authentication succeeds, call
window.AshOathSession.loginSucceeded(stableSessionId) with a non-secret
identifier; call loginFailed() or logout() on those events.
Begin your calling only enters the game. No login implementation was supplied, so
no real handler can be patched here.
The host can supply actual references before this module runs through
window.AshOathAudioConfig = { assets: [{ url: actualURL, name: originalName, role: 'music' }] },
or afterward through window.AshOathAudio.configure(configuration).
Up to two originals are supported. Optional upload configuration accepts
endpoint, method, field, responsePath,
credentials, headers, maxBytes,
formats, and storage from your real API contract.
Limits and storage supplied this way are labelled host declarations, not server discoveries.
Credentials and custom headers must be configured by trusted host code, not pasted into a report.
To finish deployment: successfully import each unchanged original using your editor's actual asset manager, copy its published reference, supply it above or in host configuration, confirm its purpose, sign in through the real service, enter the game, then allow audio if prompted. Verify both recordings, playlist advancement, repeated login, failed login, logout, tab hiding, scene changes and autoplay denial in your target browsers.
Characters remain procedural Three.js rigs. GLTFLoader is retained for future model integration. No external model URL was supplied. A rigged GLB with embedded textures and animations can replace the fallback once its actual accessible URL is provided.