A small WinForms / DevExpress companion for Claude Code. It watches a folder for HTML and Markdown artifacts and renders them in tabbed WebView2 panes — so the CLI writes files, the viewer shows them, and the two stay in sync.
- Watch a folder (
C:\Projects\.artifactsby default) and list every.html/.mdfile there in a DevExpress grid, newest at the top. - Render on click — HTML loads via
WebView2.Navigate(file://…), Markdown is run through Markdig with a broadsheet CSS theme so MD output looks like a real document, not a code dump. - Live-reload — overwrite a file Claude Code wrote earlier and the open tab refreshes automatically. Reads tolerate locked files mid-write.
- Title sniffing — pulls
<title>from HTML and the first# headingfrom Markdown to populate the grid's Title column. - Folder picker —
Change…button on the artifact panel; choice is persisted to%LOCALAPPDATA%\ClaudeViewer\settings.json.
- Windows 10 / 11
- .NET 10 SDK (
net10.0-windows) - DevExpress WinForms (using
DevExpress.Win25.2.5 — adjust to whatever is licensed on the machine) - WebView2 Runtime (shipped with Windows 11)
dotnet build
dotnet run --project ClaudeViewerOr open ClaudeViewer.sln in Visual Studio.
| Setting | Where | Notes |
|---|---|---|
| Watched folder | Change… button OR %LOCALAPPDATA%\ClaudeViewer\settings.json |
Persists across runs. |
| Override (CI / launchers) | CLAUDE_VIEWER_DIR env var |
Wins over the settings file; the picker is disabled while this is set. |
ClaudeViewer/
├── Program.cs entry point + skin
├── MainForm.cs DockManager (left) + DocumentManager (tabs)
├── Models/Artifact.cs file metadata
├── Services/
│ ├── ArtifactWatcher.cs FileSystemWatcher → BindingList<Artifact>
│ ├── MarkdownRenderer.cs Markdig + broadsheet CSS
│ └── Settings.cs JSON persistence
└── Controls/ArtifactForm.cs XtraForm hosting WebView2 (one per tab)
Tell Claude Code (in CLAUDE.md or per request) to write generated HTML /
Markdown artifacts under your watched folder, e.g. C:\Projects\.artifacts\.
Anything it writes appears at the top of the grid and renders on click.