Add ChatController that proxies POST /api/chat to the local Responses API
(localhost:8317/v1/responses) with SSE streaming. Client reads tokens via
SetBrowserResponseStreamingEnabled and renders them incrementally. Includes
thinking indicator, input disabled during streaming, and error handling.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Install MudBlazor 9.2.0, replace Bootstrap layout with MudLayout/MudAppBar,
create Chat.razor with message list, text input, auto-scroll, and hardcoded
responses. Add ChatMessage shared model. Remove template pages (Counter,
Weather), move health check to /health. Include OpenSpec change artifacts
for the upcoming wire-responses-api work.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Client now detects whether it was loaded over HTTP or HTTPS and
selects the corresponding API base URL, so both protocols work
without manual config changes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add shared HealthResponse DTO in ChatAgent.Shared
- Add HealthController API endpoint with CORS policy for localhost:5200
- Add ChatApiClient typed HttpClient wrapper in WASM client
- Update Home.razor to display health check result on load
- Simplify MainLayout to minimal centered layout
- Add global imports for Services and Shared.Models
- Replace app.css with clean Phase 1 light theme styles
- Remove unused OpenAPI package from API project
- All files include tutorial-style inline comments (CODE-01)
- ChatAgent.sln at repo root with Client, Api, Shared projects
- Blazor WASM client, ASP.NET Core Web API, shared class library
- Both Client and Api reference Shared project
- Removed template boilerplate (WeatherForecast, Class1)
- Added .NET ignores to .gitignore
- Pinned .NET 9 SDK via global.json
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>