V0.10.0/dotnet nuget update - #40
Open
gimlichael wants to merge 22 commits into
Open
Conversation
Introduce complete NuGet dependency audit and update workflow with support for central package management and project-level versioning. Handles TFM-aware updates, stable/prerelease intent tracking, major version approval batching, and offline-testable scenarios. Includes bundled scripts for audit, comparison, and structured file edits.
Add dotnet-nuget-update to the Available Skills catalog table with full skill description, include the npx installation command in the setup section, and add a 'Why dotnet-nuget-update?' community health section explaining the need for complete dependency graph auditing, TFM-band awareness, and preservation of intentional pins and compatibility markers.
|
Enhance file encoding detection to support UTF-32 and UTF-16 variants. Improve line-ending preservation with better handling of mixed styles. Refactor XML and NuGet version parsing with more sophisticated patterns and error handling. Strengthen cross-line tag parsing and version validation for edge cases in package updates and audit workflows.
Improve central vs project package declaration routing to correctly handle updates targeting project files. Enhance conflict reporting to enumerate all conflicting sources when unspecified. Fix property resolution precedence to preserve first-matched declarations instead of overwriting with later files.
The Get-TargetFrameworks.ps1 static scanner resolves property declarations through Directory.Build.props/targets and recursive imports, but it does not evaluate MSBuild conditions or SDK-supplied properties. The documentation now clarifies this scope so users understand when to verify results with project-specific MSBuild evaluation.
Restructured the property-map walker to handle import chains and property-token resolution recursively. The scanner now traverses Directory.Build.props and .targets files in the correct order, resolves property references within each scope, and preserves unresolved tokens for later discovery. This fixes edge cases where projects in different directories share property names or where scoped .props files define properties that should not leak across project boundaries.
Added eval case #8 to verify that the framework scanner correctly handles projects in different directories with their own Directory.Build.props scope. The test fixture includes three projects with scoped properties to ensure the scanner does not borrow framework versions from sibling projects or resolve properties from unimported files. This eval validates the scoped-property fix in Get-TargetFrameworks.
Added test-target-frameworks.ps1 as a standalone validation harness for Get-TargetFrameworks.ps1. The script builds complex fixture hierarchies with nested Directory.Build.props, property tokens, and conditional framework declarations, then verifies the scanner correctly resolves each project's target frameworks. This enables rapid validation during development without requiring full skill evals.
The commit grouping guidance in SKILL.md is now sufficiently detailed to warrant a dedicated reference document. This extracts the 'Repo-aligned grouping example' and 'Commit body guidance' sections into references/grouping-examples.md for clarity and easier maintenance, while improving the overall skill structure without changing its core workflow or validation logic.
Adds three new eval cases to git-visual-commits testing: untracked file discovery (eval 26), path handling with spaces and untracked directories (eval 27), and explicit scope narrowing excluding in-scope changes (eval 28). These tests validate the skill handles file inventory, mixed staged/unstaged/untracked changes, and scope boundaries correctly.
Finalize 0.10.0 release notes with the release date and add description of git-visual-commits refactoring and enhancements that complete this release.
Update repository agent guidelines (AGENTS.md) and installation documentation (README.md) to explicitly specify concurrent suite dispatch for agent-driven validation, bounded concurrency of at least two workers, per-suite exit codes, and the prohibition on sequential aggregate runs. Clarify that agents must use the suite matrix from GitHub Actions workflows as the source of truth, include user-instruction overrides for testing suspension, and report limitations instead of falling back to sequential execution.
Update test assertions in validate-skill-templates.ps1 to match the refined quality-gate guidance in git-visual-commits SKILL.md. The assertion now verifies that agents explicitly refresh the Step 1 inventory and explain each path's rationale, audience, and lifecycle before classification rather than only checking git status.
Enable concurrent NuGet package version lookups with bounded parallelism (default concurrency: 8, timeout: 15s). Audit deduplicates package IDs and reuses responses for repeated declarations. Adds Update-NuGetPackages.ps1 orchestration script to keep audit, in-memory plan construction, and structural apply in one process for attended and yolo modes. Updates SKILL.md documentation and related validation/test infrastructure. All independent lookups now batch through bounded-parallel feed resolution rather than sequential requests.
Add comprehensive validation coverage for git-visual-commits grouping-examples.md reference file, testing both current and historical reference layouts. Validates six test cases covering: current linked reference, historical inline examples, historical linked reference with broken link, missing current reference, missing historical content, and edge cases. Ensures repository tooling validates skill content integrity across reference-structure variations.
Add test coverage for Codex eval runner path resolution and validation. Tests verify that runner-owned and orchestrator-owned delegation paths are correctly resolved and validated. Ensures eval runner infrastructure properly handles path contracts and runner configuration validation. Updates runner-common.ps1 shared infrastructure to support enhanced path validation workflow.
Update README.md to reflect recent repository enhancements and clarifications for eval infrastructure, skill validation, and release workflows. Ensures documentation matches current repository capabilities and provides accurate guidance for contributors and maintainers.
| } | ||
|
|
||
| $applyResults = @($applyResult.results) | ||
| $successfulApplyCount = @($applyResults | Where-Object { $_.outcome -in @('applied', 'dry-run') }).Count |
There was a problem hiding this comment.
When -DryRun previews pending safe updates, this count includes each dry-run outcome in appliedCount, even though Apply-PackageUpdates.ps1 does not write those changes. Callers using this field to distinguish a preview from a completed update therefore receive an inaccurate summary.
Suggested change
| $successfulApplyCount = @($applyResults | Where-Object { $_.outcome -in @('applied', 'dry-run') }).Count | |
| $successfulApplyCount = @($applyResults | Where-Object { $_.outcome -eq 'applied' }).Count |
Prompt To Fix With AI
This is a comment left during a code review.
Path: skills/dotnet-nuget-update/scripts/Update-NuGetPackages.ps1
Line: 79
Comment:
**Dry Runs Count As Applied**
When `-DryRun` previews pending safe updates, this count includes each `dry-run` outcome in `appliedCount`, even though `Apply-PackageUpdates.ps1` does not write those changes. Callers using this field to distinguish a preview from a completed update therefore receive an inaccurate summary.
```suggestion
$successfulApplyCount = @($applyResults | Where-Object { $_.outcome -eq 'applied' }).Count
```
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces the new
dotnet-nuget-updateskill, a deterministic tool for auditing and updating NuGet dependencies in .NET repositories. It ensures every declared package version is accounted for before any update, supports both central and project-level package management, preserves compatibility markers, and offers both interactive and automated update modes. The update also adds comprehensive documentation, test coverage, and offline-testable scripts.New skill:
dotnet-nuget-updatedotnet-nuget-updateskill for complete NuGet dependency auditing and updating, supporting central and project-level versioning, TFM-band awareness, stable/prerelease intent inference, and two interactive modes (normal and yolo). [1] [2]README.mdwith catalog entry, installation instructions, and a detailed "Why dotnet-nuget-update?" section explaining its approach to dependency management. [1] [2] [3]Release and documentation updates
0.10.0release entry inCHANGELOG.mddescribing the new skill and its features.