Skip to content

feat: PDDiffPanel, a Monaco diff view - #248

Merged
davidnmbond merged 11 commits into
mainfrom
feature/pddiffpanel
Oct 16, 2026
Merged

davidnmbond merged 11 commits into
mainfrom
feature/pddiffpanel

Conversation

@davidnmbond

Copy link
Copy Markdown
Contributor

Adds PDDiffPanel, a Monaco diff view (BlazorMonaco StandaloneDiffEditor), and MonacoLanguage.FromFileName (file name to Monaco language id).

  • Parameters: Original, Modified, FileName, Language, SideBySide (toolbar toggle), ReadOnly, Height, Theme.
  • Text changes are swapped into the existing models, and the modified editor's scroll position is preserved across live refreshes.
  • Lifecycle: init race handled, bounded backoff retry when Monaco has not loaded yet (with a visible failed state), editor released before models are disposed, BlazorMonaco registry holders removed on release.
  • Demo page (/pddiffpanel), nav link, docs section, 31 bUnit tests and a 6-test Playwright spec (all passing locally).
  • First consumer: the NuGet governance app's AI Fix "Changes" tab.

Note: GenerateDocs.ps1 removes unrelated hand-written PDChat sections when run, so the PDDiffPanel rows in ComponentDocumentation.md were synced by hand.

🤖 Generated with Claude Code

davidnmbond and others added 9 commits October 15, 2026 22:35
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…off, MonacoLanguage

Rename DiffLanguage to MonacoLanguage and make EffectiveLanguage/HasChanges internal.
Remove BlazorMonaco registry holders and dispose the JS editor whenever it was created.
Swap text in JS and restore scroll, coalesce null texts, dispose the module handle,
retry with backoff for about 30s and show a failed state.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@codacy-production

codacy-production Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 123 complexity · 4 duplication

Metric Results
Complexity 123
Duplication 4

View in Codacy

🟢 Coverage 100.00% diff coverage · +0.00% coverage variation

Metric Results
Coverage variation ✅ +0.00% coverage variation
Diff coverage ✅ 100.00% diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (6aa4bc6) 18071 18048 99.87%
Head commit (111b111) 18147 (+76) 18124 (+76) 99.87% (+0.00%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#248) 76 76 100.00%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

AI Reviewer: run a review on demand. To trigger the first review automatically, go to your organization or repository integration settings. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

davidnmbond and others added 2 commits October 16, 2026 13:19
Split SyncAsync and OnEditorInitAsync into focused methods (Lizard), one declaration per
line in the .razor.css and move the BlazorMonaco container rule to main.scss (stylelint
::deep), make _initRetryDelay readonly (S2933), drop the unused GetOptions parameter
(S1172) and assign the editor through a property (S3459).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Move the null-coalescing texts and the JS-failure filter out of OnEditorInitAsync (Lizard CCN)
and write the editor reference through a setter backed by a field (S3459).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@davidnmbond
davidnmbond merged commit 33597b1 into main Oct 16, 2026
8 checks passed
@davidnmbond
davidnmbond deleted the feature/pddiffpanel branch October 17, 2026 19:51
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