From 494f59526dd975dc6b3207b97b13779dbcda3dfb Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Tue, 29 Sep 2026 15:20:51 -0400 Subject: [PATCH] Drop the stale ScottPlot.Avalonia ignore and Avalonia 11 references The Dependabot ignore held ScottPlot.Avalonia below 5.1.59 until the Avalonia 12 migration. That migration merged in #549 and the pin is already 5.1.59, so the entry now blocks every future ScottPlot.Avalonia update. The Avalonia major ignore stays; its comment no longer calls the migration parked, and it records the NU1605 trap for the next major, which the removed entry used to document. CONTRIBUTING.md still called the app Avalonia 11, and the maintenance skill named upgrade/avalonia-12, which no longer exists on the remote, as a branch to keep. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_019tS6P95Dtzs4aeMpb1xqzX --- .claude/skills/maintenance/SKILL.md | 2 +- .github/dependabot.yml | 18 ++++++++---------- CONTRIBUTING.md | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.claude/skills/maintenance/SKILL.md b/.claude/skills/maintenance/SKILL.md index 86d4125c..9d565b9f 100644 --- a/.claude/skills/maintenance/SKILL.md +++ b/.claude/skills/maintenance/SKILL.md @@ -53,7 +53,7 @@ Low-risk patch/minor bumps can go in one PR; majors and anything release-critica 10. **Git repo hygiene.** - **Line endings / `.gitattributes`.** If the repo has no `.gitattributes`, line endings drift (CRLF/LF mixed, `core.autocrlf=false`) and bulk edits balloon diffs. Add one and run a **dedicated** `git add --renormalize .` commit (its own PR, when no other work is in flight — it touches nearly every file). - - **Stale branches & worktrees.** `git worktree list` — remove leftover worktrees (anything under `.claude/worktrees/` or other agent/isolation worktrees) with `git worktree remove`. Then `git fetch --prune` to drop stale remote-tracking refs, and audit: `git branch --merged origin/dev` (local branches already in dev — safe to delete) and `git branch -r` (remote branches from closed/merged PRs). Delete merged/dead branches; **keep intentionally-parked ones** (note which and why — e.g. a blocked-upgrade branch like `upgrade/avalonia-12`). For branches *you didn't create*, surface and confirm before deleting rather than assuming abandoned. Confirm open PRs are still wanted. + - **Stale branches & worktrees.** `git worktree list` — remove leftover worktrees (anything under `.claude/worktrees/` or other agent/isolation worktrees) with `git worktree remove`. Then `git fetch --prune` to drop stale remote-tracking refs, and audit: `git branch --merged origin/dev` (local branches already in dev — safe to delete) and `git branch -r` (remote branches from closed/merged PRs). Delete merged/dead branches; **keep intentionally-parked ones** (note which and why — e.g. a major-upgrade branch that waits on a manual test pass). For branches *you didn't create*, surface and confirm before deleting rather than assuming abandoned. Confirm open PRs are still wanted. ## C. App data & runtime hygiene (lighter) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 724be32f..d3280985 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -44,20 +44,18 @@ updates: # --- Deliberate pins. Removing an ignore here without doing the matching # migration will produce a PR that builds but breaks at runtime. --- - # Avalonia 12 is a completed-but-parked migration on branch - # upgrade/avalonia-12. Take 11.x servicing, never the major. + # An Avalonia major is a migration, not a version bump. 11 -> 12 (#549) + # changed behavior in ways that still compiled, and only behavior tests + # and a GUI test pass caught them. Take 12.x servicing, and do the next + # major by hand. This pattern covers AvaloniaEdit too, but not + # ScottPlot.Avalonia. When a ScottPlot.Avalonia PATCH starts to require + # the next Avalonia major, restore fails with NU1605 and takes the whole + # grouped PR down with it. Pin that version with a `versions` ignore + # until the migration, as 5.1.59 was pinned while Avalonia 12 waited. - dependency-name: "Avalonia*" update-types: - version-update:semver-major - # 5.1.58 is the last build targeting Avalonia 11; 5.1.59+ requires - # Avalonia >= 12 and hard-fails restore with NU1605. This is a PATCH bump, - # so an update-type ignore would not catch it. Drop this entry as part of - # the Avalonia 12 migration. - - dependency-name: "ScottPlot.Avalonia" - versions: - - ">= 5.1.59" - # Pinned to keep the native libs in the [119.0, 120.0) range that managed # SkiaSharp 3.x requires. A 4.x bump reintroduces GitHub issue #139 # (TypeInitializationException on Linux at startup). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e876774..d05e2c04 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -51,7 +51,7 @@ PerformanceStudio/ ## Architecture - **PlanViewer.Core** is the shared library. It contains the XML parser (`ShowPlanParser`), analysis rules (`PlanAnalyzer`), plan layout engine, text/JSON formatters, and all models. Both the GUI and CLI depend on it. -- **PlanViewer.App** is an Avalonia 11 desktop app using code-behind (no MVVM framework). It renders plan trees on a Canvas with the same operator icons as SSMS. +- **PlanViewer.App** is an Avalonia 12 desktop app using code-behind (no MVVM framework). It renders plan trees on a Canvas with the same operator icons as SSMS. - **PlanViewer.Cli** is a System.CommandLine-based CLI tool that wraps Core for command-line use. ## Code Style