Merge back into reysic’s project#28
Open
alta01 wants to merge 10 commits intoreysic:mainfrom
Open
Conversation
- Updated GitHub Actions workflow to use .NET SDK 10.0 and actions/checkout@v4. - Enhanced release script to validate MSBuild version and ensure compatibility with .NET 10 ClickOnce publishing. - Revised README.md to reflect new repository ownership and installation links. - Improved error handling and user prompts in the SubscriptionsManagerDialog for better onboarding experience. - Refactored certificate loading logic in CertificateDialog and CertificateValueObject to utilize X509CertificateLoader. - Updated ClickOnce publish profile to target .NET 10 and adjusted paths accordingly. - Cleaned up T4 template build process in t4.targets for improved performance. - Added new features and improvements to the application, including better tenant selection and subscription handling.
Reintroduce tenant selection in subscription flow, re-auth on tenant change, and prevent saving vault config without a signed-in account context. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use MSBuild /restore publish with RuntimeIdentifier to ensure runtime packs are resolved during ClickOnce release, and pin setup-dotnet SDK to match VS/MSBuild resolver behavior in GitHub Actions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Ensure release updates gh-pages root redirect to local VaultExplorer.application and point README install link directly to the manifest. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Ignore non-vault activation URLs at startup, update fork activation constants, and show tenant display name with tenant id in selector. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…d AGENTS.md - Replace all alta01 GitHub/Pages URLs with reysic across Globals.cs, ClickOnceProfile.pubxml, README.md, and release.md - Rename "Alta01 Updates" README section to "Recent Updates" - SubscriptionsManagerDialog: defer onboarding MessageBox to Shown event so the form renders fully before any prompt appears - SubscriptionsManagerDialog: wrap Vaults.GetAsync in try-catch so a failed vault detail fetch shows a clear error and leaves the dialog open (previously an unhandled exception could leave the OK button permanently disabled or crash the form) - SubscriptionsManagerDialog.Designer: add MinimumSize to prevent the form from being resized small enough to clip the OK/Cancel buttons - Add AGENTS.md explaining project layout, conventions, and key files https://claude.ai/code/session_01XZMMdq42h652d3PnEC8jZf
D1 Copy as env var (NAME=value), D2 Copy as Docker --env, D3 Copy as Kubernetes Secret YAML, D4 Copy name only (Ctrl+Shift+N) — all added to the Share toolbar dropdown and the right-click context menu. U2 Remember last-used vault alias across sessions (LastUsedVaultAlias setting), restored automatically on startup via RestoreLastVault(). U3+U6 Status bar now shows vault alias prefix and expiring item count; window title gains a "| N expiring" badge when secrets are about to expire. U4 Show/Hide toggle button in SecretDialog masks the value with asterisks; TextChanged handler guarded so PropertyObject.Value is not corrupted. U5 "Expires" list column renamed to "Expires in" to reflect the relative time format already produced by Utils.ExpirationToString. https://claude.ai/code/session_01XZMMdq42h652d3PnEC8jZf
Removes all three deprecated NuGet packages: - Microsoft.Azure.KeyVault v3.0.5 - Microsoft.Azure.Management.KeyVault v3.1.0 - Microsoft.Rest.ClientRuntime v2.3.24 Replaces with actively maintained Azure SDK Track-2 packages: - Azure.Security.KeyVault.Secrets v4.7.0 - Azure.Security.KeyVault.Certificates v4.7.0 - Azure.ResourceManager.KeyVault v1.2.0 - Azure.Identity v1.13.0 (for ArmClient credential bridge) New infrastructure files: - Vault/Library/ObjectIdentifier.cs — local Name/Identifier/Version/Vault record - Vault/Library/VaultAccessTokenCredential.cs — MSAL → TokenCredential bridge - Vault/Explorer/Dialogs/Subscriptions/StaticTokenCredential.cs — static ARM token - Vault/Explorer/Model/Files/Secrets/SecretFileData.cs — JSON-serializable secret DTO - Vault/Explorer/Model/Files/Secrets/CertificateFileData.cs — JSON-serializable cert DTO Key changes: - VaultKeyValueClient replaces KeyVaultClientEx; holds SecretClient + CertificateClient - Vault.cs: all methods updated for new SDK types and AsyncPageable iteration - New GetCertificatePolicyAsync added (policy no longer embedded in GetCertificateAsync) - Management plane: ArmClient + StaticTokenCredential replaces KeyVaultManagementClient - SubscriptionsManagerDialog: uses GetKeyVaultsAsync with await foreach - All model/dialog/list files updated for SecretProperties, CertificateProperties, KeyVaultSecret, KeyVaultCertificate, CertificatePolicy flat-structure types - RequestFailedException replaces CloudException/KeyVaultErrorException - CertificatePolicyAction replaces ActionType enum in lifetime actions https://claude.ai/code/session_01XZMMdq42h652d3PnEC8jZf
…icyEntryItem The null-coalescing fallback used a string[] EmptyList cast to IList<IdentityAccessKeyPermission/SecretPermission/CertificatePermission> which would fail at compile time. Replace with Array.Empty<T>() of the correct typed permission types for each property. https://claude.ai/code/session_01XZMMdq42h652d3PnEC8jZf
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.
Summary
This PR brings
alta01/AzureKeyVaultExplorerup to date againstreysic/AzureKeyVaultExplorer:main, contributing 9 commits (52 files changed, +1738 / −795 lines) across four areas: a .NET 10 migration, Azure SDK Track-2 migration, developer/UX quick wins, and a set of CI/ClickOnce stability fixes.1. .NET 10 + CI / ClickOnce Migration
actions/checkout@v4ClickOnceProfile.pubxml) to target .NET 10 with correct framework/path settingsrelease.ps1to validate MSBuild version and handle .NET 10 ClickOnce publishing edge casest4.targetsT4 template build process for improved performancesetup-dotnetSDK in CI to match VS/MSBuild resolver behaviorMSBuild /restorepublish withRuntimeIdentifierso runtime packs resolve correctly in CIVaultExplorer.applicationand corrected README install link to the manifest2. Azure SDK Track-2 Migration
Removes three deprecated NuGet packages:
Microsoft.Azure.KeyVaultv3.0.5Microsoft.Azure.Management.KeyVaultv3.1.0Microsoft.Rest.ClientRuntimev2.3.24Replaces with actively maintained Track-2 packages:
Azure.Security.KeyVault.Secretsv4.7.0Azure.Security.KeyVault.Certificatesv4.7.0Azure.ResourceManager.KeyVaultv1.2.0Azure.Identityv1.13.0 (forArmClientcredential bridge)New infrastructure files:
Vault/Library/ObjectIdentifier.cs— local Name/Identifier/Version/Vault recordVault/Library/VaultAccessTokenCredential.cs— MSAL →TokenCredentialbridgeVault/Explorer/Dialogs/Subscriptions/StaticTokenCredential.cs— static ARM tokenVault/Explorer/Model/Files/Secrets/SecretFileData.cs— JSON-serializable secret DTOVault/Explorer/Model/Files/Secrets/CertificateFileData.cs— JSON-serializable cert DTOKey changes:
VaultKeyValueClientreplacesKeyVaultClientEx; holdsSecretClient+CertificateClientVault.cs: all methods updated for new SDK types andAsyncPageableiterationGetCertificatePolicyAsyncadded (policy no longer embedded inGetCertificateAsync)ArmClient+StaticTokenCredentialreplacesKeyVaultManagementClientSecretProperties,CertificateProperties,KeyVaultSecret,KeyVaultCertificate,CertificatePolicyflat-structure typesRequestFailedExceptionreplacesCloudException/KeyVaultErrorExceptionCertificatePolicyActionreplacesActionTypeenum in lifetime actionsstring[]cast inAccessPolicyEntryItemwith correctly typedArray.Empty<T>()calls3. Developer Workflow & UX Quick Wins
New copy formats in the Share toolbar dropdown and right-click context menu:
NAME=value)--envCtrl+Shift+N)UX improvements:
LastUsedVaultAliassetting), restored on startup| N expiringbadgeSecretDialogmasks value with asterisks;TextChangedhandler guarded to avoid corruptingPropertyObject.ValueUtils.ExpirationToString4. ClickOnce / Auth / Onboarding Fixes
MessageBoxto theShownevent so the form renders before any prompt appearsVaults.GetAsyncin try/catch so a failed vault detail fetch shows a clear error without crashing or permanently disabling the OK buttonMinimumSizetoSubscriptionsManagerDialogto prevent button clipping on resizeOther
AGENTS.mddocumenting project layout, conventions, and key filesalta01toreysicacrossGlobals.cs,ClickOnceProfile.pubxml,README.md, andrelease.mdCertificateDialogandCertificateValueObjectto useX509CertificateLoader