21c9a66cce38ff83c36104e3e2f4780457224c93
# Description This Pull Request integrates the premium mobile-first layout enhancements, a responsive, full-bleed Reader Toolbar, and critical authorization flow stabilizations for the NexusReader Blazor application (targeting .NET 10 with Native AOT compatibility). Resolves #62 Resolves #63 Resolves #15 ## Key Changes ### 📱 1. Mobile-First Reader Layout & Toolbar - **Full-Bleed Responsive Layout**: Redesigned `ReaderLayout` to feature a premium mobile-first three-tab bottom navigation system (Chapters, Graph, Assistant) and a glassmorphic floating action button (FAB) for the AI assistant. - **Header & Escaping Routes**: Built `MobileReaderToolbar` with seamless exit paths back to the "Pulpit" (dashboard) and smooth transitions. - **Custom Iconography**: Added the custom `NexusIcon` component supporting dynamic theme styling and responsive layouts without relying on external CSS frameworks. ### 🔐 2. Authentication Flow UX Stabilization - **WASM Transition Hydration**: Implemented `AuthenticationStatePersister` and loading preloaders to eliminate authorization race conditions during Blazor WASM interactive hydration. - **AOT-Compatible JWT Validation**: Integrated a robust, AOT-compatible `JwtTokenValidator` with unit tests (`JwtTokenValidatorTests.cs`) to cleanly parse claims without throwing performance-heavy runtime exceptions. - **Secure Header Propagation**: Standardized token transmission in WASM (`AuthenticationHeaderHandler.cs`) and MAUI Hybrid client layers (`MobileAuthenticationHeaderHandler.cs`), ensuring cookies are correctly propagated. ### 📊 3. D3.js Knowledge Graph & Interaction - **Dynamic Viewport Synchronization**: Refactored `knowledgeGraph.js` to ensure the SVG graph behaves correctly under flexbox containment, handles panel expansion/collapse gracefully, and avoids infinite loop redraws. - **Interaction Hook**: Connected graph node clicks directly to chapter jumps via a new `IReaderInteractionService` abstraction. ### 🏗️ 4. Infrastructure & Central Package Management (CPM) - **Beta Deployment Configuration**: Added `.env.test.template`, `docker-compose.test.yml`, and `appsettings.Test.json` with hardened environment security guards. - **Docker-Compose Cache Optimization**: Maintained CPM consistency during multi-stage Docker builds. ## Verification & Build Results - Run a successful local build check: ```bash dotnet build NexusReader.slnx --no-restore ``` **Status**: Successfully completed with `0` compilation errors. --------- Co-authored-by: Marek Jasiński <jasins.marek@gmail.com> Reviewed-on: #61 Co-authored-by: Antigravity <antigravity@google.com> Co-committed-by: Antigravity <antigravity@google.com>
feat(ui): implement premium gamified Concepts Map dashboard, unify design tokens, and enforce scoped CSS (#54)
feat(ui): implement premium mobile-first reader toolbar, bottom navigation, and auth ux stabilization (#61)
feat(ui): implement premium mobile-first reader toolbar, bottom navigation, and auth ux stabilization (#61)
feat(ui): implement premium mobile-first reader toolbar, bottom navigation, and auth ux stabilization (#61)
chore: add Central Package Management files and NexusReader.Data project to Dockerfile build process
feat(ai-ux): deduplicate AI queries, handle ServiceUnavailable retries, and optimize reader canvas graph prerendering (#44)
📖 Nexus Reader
Nexus Reader is a state-of-the-art, cross-platform Blazor .NET 10 immersive e-book reader, powered by Native AOT, Clean Architecture, CQRS, and interactive D3.js Relationship Graphs built on vector-based AI semantics.
✨ Features & Architecture Highlights
📁 Ingestion & Description persistence
- Extracted and persistent book descriptions from EPUB package metadata during book ingestion.
- The
Descriptionfield propagates cleanly from theEbookentity through Mapster toLastReadBookDtoandUserProfileDto.
🔗 Deep-Link Routing
- Implemented deep-link route activation:
/reader/{bookId}?chapter=N. - Allows instant resume of reading session coordinates and loads the specific chapter chapter directly via URL query parameters.
🛡️ Downstream AI Resilience
- Standard resilience engine in
DependencyInjection.csutilizing the Polly package (ai-retry). - Automatically intercepts, handles, and retries on both rate-limits (
429 Too Many Requests) and downstream capacity overloads (503 ServiceUnavailable/high demand).
⚙️ Concurrent Request Deduplication
- Multi-client InteractiveAuto Blazor circuit synchronization is backed by a thread-safe active task registry in
KnowledgeServicewhich ensures that identical concurrent requests await a single shared task instance, eliminating redundant LLM queries.
🛠️ Build & Verification Gate
Ensure the dotnet workload matches the active SDK, and compile the full solution utilizing:
dotnet build NexusReader.slnx --no-restore
Run test suite:
dotnet test --no-restore
Description
Languages
C#
46.2%
HTML
25.8%
CSS
23%
JavaScript
4.1%
Shell
0.8%
Other
0.1%