TrackCard, TracksGallery, DDIcons, DeepDrftPalettes (Default+Cms), DeepDrftFontLinks,
and palette CSS tokens extracted. Both hosts and DeepDrftCms reference the shared RCL.
Routes needs no render mode — layouts declare the interactive mode.
MainLayout (WASM) and CmsLayout (Server) are top-level islands with no
conflicting parent render mode. DefaultLayout removed so AuthBlocks auth
pages render self-contained without being forced into the WASM layout.
Routes moves to InteractiveServer so the server router always sees all
assemblies (including AuthBlocksWeb). MainLayout declares
@rendermode InteractiveWebAssembly — the single source of WASM
interactivity for all public pages. CmsLayout in DeepDrftCms provides
a server-rendered admin shell without the audio dock. Assembly-level
_Imports.razor files set the default layout for each group; no per-page
rendermode declarations needed. Routes.razor moves to the server host
(its correct home) carrying the full AdditionalAssemblies list.
Content API:
- Enabling CORS for access from Blazor app
Web Server:
- Content API URL environment config
- Web Audio API JS Interop layer in TypeScript
- HttpClient configs
Web Client:
- Audio Tack player controls
- Audio Player example page
- Audio Interop Service Layer
- Named HttpClients