Skip to content

Conversation

@Chizaruu
Copy link
Owner

@Chizaruu Chizaruu commented Oct 18, 2025

Promote Interface Extractor v1.2.1 from development to production release.

All features tested and validated:

  • ✅ Interface preview dialog
  • ✅ Multi-file partial class analysis
  • ✅ Record type support
  • ✅ Internal member extraction
  • ✅ Implementation stub generation

Chizaruu and others added 30 commits October 18, 2025 17:07
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.
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
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'.
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.
Copilot AI review requested due to automatic review settings October 18, 2025 13:14
Copy link
Contributor

Copilot AI left a 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?"
Copy link

Copilot AI Oct 18, 2025

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.

Suggested change
Text="What would you like to overwrite?"
Text="What would you like to do?"

Copilot uses AI. Check for mistakes.
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.
Copilot AI review requested due to automatic review settings October 18, 2025 13:23
@Chizaruu Chizaruu changed the title Release v1.2.0 Release v1.2.1 Oct 18, 2025
Copy link
Contributor

Copilot AI left a 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.

…e.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Abdul-Kadir Coskun <59434446+Chizaruu@users.noreply.github.com>
Copilot AI review requested due to automatic review settings October 18, 2025 13:26
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>
Copy link
Contributor

Copilot AI left a 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 ===");
Copy link

Copilot AI Oct 18, 2025

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.

Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Abdul-Kadir Coskun <59434446+Chizaruu@users.noreply.github.com>
Copilot AI review requested due to automatic review settings October 18, 2025 13:27
@Chizaruu Chizaruu enabled auto-merge October 18, 2025 13:28
Copy link
Contributor

Copilot AI left a 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.

Comment on lines +388 to +394
var invalidCode = @"
namespace Test
{
public partial class DataService @#$%^&*()
public void SaveData() { }
}
}";
Copy link

Copilot AI Oct 18, 2025

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.

Copilot uses AI. Check for mistakes.
Comment on lines +532 to +533
// 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;
Copy link

Copilot AI Oct 18, 2025

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.

Suggested change
// 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;

Copilot uses AI. Check for mistakes.
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}";
Copy link

Copilot AI Oct 18, 2025

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.

Suggested change
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}";

Copilot uses AI. Check for mistakes.
Comment on lines +442 to +443
env:
GH_TOKEN: ${{ github.token }}
Copy link

Copilot AI Oct 18, 2025

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.

Copilot uses AI. Check for mistakes.
@Chizaruu Chizaruu disabled auto-merge October 18, 2025 13:30
@Chizaruu Chizaruu enabled auto-merge October 18, 2025 13:37
@github-actions
Copy link
Contributor

github-actions bot commented Oct 18, 2025

Test Results

131 tests   131 ✅  12s ⏱️
  1 suites    0 💤
  1 files      0 ❌

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.
@Chizaruu Chizaruu merged commit 889f77c into main Oct 18, 2025
7 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.

2 participants