PrompterOne.Shared contains the routed Razor UI, exact design shell, CSS assets, thin browser interop, and browser-side service wiring.
AppShell/Routes.razorAppShell/Layout/MainLayout.razorAppShell/Services/PrompterOneServiceCollectionExtensions.csEditor/*Library/*Learn/*Teleprompter/*GoLive/*Settings/*Diagnostics/*Media/*wwwroot/design/*Diagnostics/Services/BrowserConnectivityService.csDiagnostics/Components/ConnectivityOverlay.razorwwwroot/media/browser-media.js
- Keep markup aligned with
design. - Use
designonly as a static HTML/CSS reference. Final routed UI must be authored as Blazor components and C#-owned state in this project. - When a screen has a
design/*.htmlcounterpart, parity work must port the whole screen structure and intended interactions into Blazor instead of approximating only selected sections. - Keep routed pages, feature components, renderers, and feature-local services inside their owning slice folders.
- Keep app-specific UI logic here, but keep business rules in
PrompterOne.Core. - Keep feature styles owned by their routed screen;
LearnandTelepromptermust not share one feature stylesheet manifest. - Preserve
data-testidselectors used by Playwright. - Do not add server-only dependencies.
- Keep keyboard shortcuts, screen ids/selectors, and reusable UI constants in Blazor/C# contracts when possible; leave JS only with unavoidable browser API interop and direct DOM work that Blazor cannot replace cleanly.
- Prefer removing JS files that only orchestrate UI behavior, reader state, or shell interactions; keep those flows in Razor components or C# services and let JS expose only the minimal browser or SDK call surface.
- TPS 1.1.0 removed legacy inline color tags, so editor, reader, menus, examples, and tests in this project must not expose or insert
[red],[green], or other deprecated color-tag authoring paths.
dotnet build ./src/PrompterOne.Shared/PrompterOne.Shared.csprojdotnet test ./tests/PrompterOne.App.Tests/PrompterOne.App.Tests.csprojdotnet test ./tests/PrompterOne.App.UITests/PrompterOne.App.UITests.csproj
playwrightfor routed UI verification and interaction debugging
- Small class-name changes can break design fidelity badly because the CSS comes from
design. AppShell,Contracts,Localization, andwwwrootare cross-cutting; do not turn them back into dumping grounds for feature code.- Routed shell and page navigation belong in Blazor; keep remaining
wwwrootJavaScript limited to browser/runtime interop. - JS interop and saved browser state are part of the real runtime contract; do not treat them as decorative.