Skip to content

Add web-based plan analysis via Blazor WASM (#2)#174

Merged
erikdarlingdata merged 2 commits intodevfrom
feature/web-blazor-wasm
Apr 7, 2026
Merged

Add web-based plan analysis via Blazor WASM (#2)#174
erikdarlingdata merged 2 commits intodevfrom
feature/web-blazor-wasm

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Summary

  • Adds PlanViewer.Web, a Blazor WebAssembly project that runs the full 30-rule analysis pipeline entirely in the browser — no server, no data leaves the machine
  • Links 11 source files from PlanViewer.Core directly (avoids WASM-incompatible SqlClient/CredentialManager/ScriptDom dependencies)
  • Insights panel with runtime, missing indexes, parameters, and wait stats matching desktop layout
  • Visual plan tree with operator icons, SVG connectors, tooltips, and cost/time coloring
  • Darling Data branding with brand guide colors, Armata font, and logo
  • GitHub Pages deploy workflow targeting plans.erikdarling.com
  • CI updated with wasm-tools workload and Web project build step

Before going live

  • Add CNAME DNS record: plans.erikdarling.comerikdarlingdata.github.io
  • Enable GitHub Pages in repo Settings → Pages (source: GitHub Actions)
  • Verify deploy workflow runs successfully on merge to main

Test plan

  • dotnet build PlanViewer.sln — all projects compile (0 errors)
  • dotnet test — 64/64 tests pass
  • Upload .sqlplan file → full analysis with plan tree and insights
  • Paste XML → analysis works
  • Upload garbage XML → friendly error message, no crash
  • Upload 6.8 MB plan (sp_whoisactive) → loads successfully
  • dotnet publish -c Release — trimmed build, no trim warnings, 17 MB output
  • CI workflow builds the new project

🤖 Generated with Claude Code

erikdarlingdata and others added 2 commits April 6, 2026 19:12
Adds PlanViewer.Web, a Blazor WASM project that runs the full analysis
pipeline entirely in the browser with zero server dependencies. Uses
linked source files from PlanViewer.Core to avoid pulling in
WASM-incompatible packages (SqlClient, CredentialManager, ScriptDom).

Features:
- Paste XML or upload .sqlplan files (up to 10 MB, UTF-16 handled)
- Insights panel with runtime, missing indexes, parameters, wait stats
- Visual plan tree with operator icons, connector lines, and tooltips
- Statement tabs for multi-statement plans
- Warnings strip with severity badges
- Darling Data branding with brand guide colors and Armata font
- CI updated with wasm-tools workload and build step

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds deploy-web.yml that publishes the Blazor WASM app to GitHub Pages
on pushes to main. Includes CNAME for custom domain, .nojekyll to
prevent Jekyll from ignoring _framework/, and 404.html fallback for
client-side routing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 92d7e77 into dev Apr 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant