-
Notifications
You must be signed in to change notification settings - Fork 0
Release v1.2.1 #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Migrated the release notes generation step from bash to PowerShell for improved compatibility and maintainability. Enhanced commit listing to use GitHub API for author usernames, added fallback to git log, and improved release note formatting for both pre-release and standard releases.
Changed the workflow branch filter from '*testing*' to '*naming*' to trigger releases on branches related to naming instead of testing.
Adds error handling for the GitHub API call and refactors installation instructions to reduce duplication in the release notes generation script within the release workflow.
Changed the workflow branch filter from '*naming*' to '*testing*' to trigger releases on branches related to testing instead of naming.
The release workflow will no longer run on branches matching '*testing*'. This change restricts workflow execution to only 'main' and 'dev' branches.
Adds a length check before substring operation on commit SHA to prevent errors. Also corrects a formatting issue in the installation instructions by removing an extra backtick.
Optimizes the GitHub API call for fetching commits by using the 'since' parameter based on the last tag's commit date. Ensures full SHA is used for comparison and short SHA is used for display, and removes the '-NoNewline' flag from release notes output.
Fix author naming testing
Introduces a configurable options system for the extension, including a Visual Studio options page and an ExtractorOptions model. Interface extraction now supports operator overloads and conversion operators when enabled. Interface generation and class update logic now respect user options for folder names, prefixes, namespace suffixes, file headers, member sorting/grouping, and separator lines. Adds comprehensive tests for options integration and operator overload extraction.
Add options system and operator overload support
- 🐛 Fix `AddUsingDirective` logic to use simple names when adding using statements - 📝 Update `WarnIfNoIPrefix` description for configurable prefix - 📝 Add "Operators" to `GroupByMemberType` description - 📝 Add C# 11+ clarification for operator interfaces in README - ✅ Add 3 new tests for AddUsingDirective behavior - ✅ Update 6 existing tests to match corrected logic
- Fix AddUsingDirective to use simple names with using statements - Filter out self-referencing using statements in generated interfaces - Update documentation and option descriptions - Add comprehensive tests for using directive behavior
Fix v1.1 mistakes
Adds a workflow step to automatically commit and push version bumps for the extension manifest. Improves release note generation by filtering out version bump commits, handling GitHub API errors more robustly, and refining installation instructions. Updates extension manifest to version 1.1.2 and changes publisher name.
The release workflow will now trigger on pushes to the 'more-automation' branch in addition to 'main' and 'dev'.
This reverts commit b4513a0.
Automate version bump and improve release notes
Adds fallback to select the last testing or dev tag of any version if no previous tag with the same base version exists. This ensures proper tag selection during release workflows for testing and dev releases.
Eliminates handling for 'testing' branches and tags in the release workflow. Only 'dev' prerelease logic is now supported, simplifying the versioning and tagging process.
Refines the release workflow to only increment the base version when conventional commits are detected. Adds a flag to track conventional commit presence and updates messaging and logic for both dev and production releases, ensuring prerelease increments occur when no conventional commits are found.
Added conditional checks to ensure version bump, build, tagging, and release steps only execute when a conventional commit is detected. Improved messaging to guide contributors on using the conventional commit format to trigger releases.
Removes checks for conventional commits and streamlines version bumping based solely on the bump type. Refactors prerelease handling for the dev branch and improves logic for finding previous tags, making the workflow more predictable and easier to maintain.
Enhances the release workflow to detect merges from dev to main and promote the dev version to production without incrementing the version. Updates versioning and release notes logic to handle promotion events and improve clarity between dev and production releases.
Moved MSBuild, NuGet setup, and package restore steps to run only when a conventional commit is detected. This optimizes the workflow by skipping unnecessary .NET setup for non-release commits.
…ntation stubs (v1.2.0) Major new features: - Preview generated interfaces before saving - Multi-file partial class analysis - Record type support with init accessor handling - Optional internal member extraction - Implementation stub generation Includes comprehensive tests (~75+), updated documentation, and code quality improvements.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR promotes Interface Extractor v1.2.0 from development to production release. The release includes five major features that have been tested and validated: interface preview dialog, multi-file partial class analysis, record type support, internal member extraction, and implementation stub generation.
Key Changes
- Updated version number from 1.0 to 1.2.0 across manifest and documentation
- Added comprehensive documentation for new v1.2.0 features
- Reorganized test files into separate focused test classes
- Enhanced GitHub Actions workflow to support dev-to-main promotions
Reviewed Changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| README.md | Expanded documentation with new features, configuration options, and updated examples |
| CHANGELOG.md | New file documenting version history from 1.0.0 through 1.2.0 |
| source.extension.vsixmanifest | Version bumped to 1.2.0.0 and publisher name updated |
| InterfaceExtractorService.cs | Enhanced with options support, partial class analysis, record support, and stub generation |
| OptionsPage.cs | New options page with 14 configurable settings |
| ExtractInterfaceDialog.xaml.cs | Updated to respect configurable options |
| PreviewDialog.xaml/.cs | New preview dialog for interface review before saving |
| ExtractInterfaceCommand.cs | Updated to use options and support new v1.2.0 features |
| Test files | Reorganized into separate test classes for each feature area |
| .github/workflows/release.yml | Enhanced to support version promotions and improved release notes |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| <!-- Description --> | ||
| <TextBlock Grid.Row="1" | ||
| Text="What would you like to do?" | ||
| Text="What would you like to overwrite?" |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed 'do' to 'overwrite' but the question is grammatically awkward. Should be 'What would you like to do?' to match the original intent of asking about the user's choice.
| Text="What would you like to overwrite?" | |
| Text="What would you like to do?" |
Refactored the PowerShell logic in the release workflow to reliably fetch and enrich commit messages with GitHub usernames using the API. Improved error handling, fallback logic, and commit range selection for both dev and production releases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
InterfaceExtractor.Extension/Services/InterfaceExtractorService.cs
Outdated
Show resolved
Hide resolved
…e.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Abdul-Kadir Coskun <59434446+Chizaruu@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Abdul-Kadir Coskun <59434446+Chizaruu@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Abdul-Kadir Coskun <59434446+Chizaruu@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Abdul-Kadir Coskun <59434446+Chizaruu@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 26 out of 26 changed files in this pull request and generated 2 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| { | ||
| await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); | ||
|
|
||
| LogMessage("=== Interface Extractor v1.2.0 ==="); |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The version number is hardcoded in the log message. Consider reading it from the assembly version or the options to avoid manual updates in future releases.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Abdul-Kadir Coskun <59434446+Chizaruu@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 26 out of 26 changed files in this pull request and generated 4 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| var invalidCode = @" | ||
| namespace Test | ||
| { | ||
| public partial class DataService @#$%^&*() | ||
| public void SaveData() { } | ||
| } | ||
| }"; |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment on line 387 describes this as 'truly invalid - completely malformed syntax', but the test expects the system to gracefully skip this file. Consider adding an assertion to verify that an appropriate warning or error was logged, rather than just silently skipping the file. This would make the test more robust and verify the error handling behavior.
| // Convert 'init' to 'get' for broader compatibility (init accessors in interfaces require implementing types to use init accessors; not supported in all C# versions) | ||
| return keyword == "init" ? "get" : keyword; |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment contains inaccurate information. The issue with init is not that 'implementing types must use init accessors' - it's that init accessors are not valid in interface property declarations at all in any C# version. Interfaces can only declare get and set accessors. The conversion is necessary because interface members cannot have init accessors, period.
| // Convert 'init' to 'get' for broader compatibility (init accessors in interfaces require implementing types to use init accessors; not supported in all C# versions) | |
| return keyword == "init" ? "get" : keyword; | |
| // Convert 'init' to 'set' because 'init' accessors are not valid in interface property declarations in any C# version; interfaces can only declare 'get' and 'set' accessors. | |
| return keyword == "init" ? "set" : keyword; |
| public bool GenerateImplementationStubs { get; set; } = false; | ||
| public string ImplementationStubSuffix { get; set; } = "Implementation"; | ||
| public bool IncludeFileHeader { get; set; } = false; | ||
| public string FileHeaderTemplate { get; set; } = "// Generated by Interface Extractor on {Date} at {Time}\n// File: {FileName}"; |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using \n for newlines in default values is problematic because it will be treated as a literal two-character string rather than a newline character. Consider using \\n (escaped backslash-n) which the code correctly replaces in line 206, or use Environment.NewLine for platform-appropriate newlines.
| public string FileHeaderTemplate { get; set; } = "// Generated by Interface Extractor on {Date} at {Time}\n// File: {FileName}"; | |
| public string FileHeaderTemplate { get; set; } = "// Generated by Interface Extractor on {Date} at {Time}\\n// File: {FileName}"; |
| env: | ||
| GH_TOKEN: ${{ github.token }} |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The workflow uses the built-in github.token for API access, but this token may have limited permissions for certain operations. If the workflow encounters permission issues when fetching commit details from the GitHub API (in the release notes generation step), consider using a Personal Access Token (PAT) with appropriate permissions instead. Document this requirement if users fork the repository.
Test Results131 tests 131 ✅ 12s ⏱️ Results for commit 4436088. ♻️ This comment has been updated with latest results. |
Introduced job-level and step-level timeout settings to the pr-tests.yml workflow for improved reliability and to prevent jobs from running indefinitely.
Promote Interface Extractor v1.2.1 from development to production release.
All features tested and validated: