Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project follows Semantic Versioning.
[Unreleased]
[0.1.0] - 2026-08-15
Added
- Safe cross-platform
uninstall.ps1support with interactive installed-version discovery/selection, exact-path confirmation, deterministic-Version/-AllVersionsautomation,-WhatIf, custom destination roots, module identity/path safety checks, and release-artifact packaging. - Cross-platform PowerShell Gallery package validation in the normal quality gate, including manifest/export checks and an isolated fresh-process import of the exact staged package.
- Explicit engineering principles for pragmatic SOLID, single responsibility, DRY, cohesion/coupling, stable error contracts, destructive-operation clarity, and risk-based testing in PowerShell.
- Guarded manual stable-release dispatch from GitHub Actions for phone/web publication, with explicit confirmation, current-
mainSHA validation, exact tag/version validation, reusable quality gating, annotated tag creation, and the same Gallery/GitHub publication path used by tag-triggered releases. - Guided repository-copy orchestration through
Start-CopyGitHubRepositoryWizard, including source filtering, safe defaults, Back/Next/Cancel navigation, real-PlanOnlyreview before mutation, FullHistory selection, and same-name archive/exact-confirmation handling. - Node 24-compatible pinned
actions/checkoutversion for the quality gate. - Repository discovery through GitHub CLI and GitHub API.
- GitHub CLI prerequisite and authentication checks.
- Direct repository lookup by
owner/name. - Repository filters for owner, name, visibility, and archived status.
- Structured repository objects with permission summary fields.
- Dry-run migration planning with
Copy-GitHubRepository -PlanOnly. - Destination and archive non-overwrite checks during planning.
- Empty source repository rejection before destination checks or mutation.
- Markdown and JSON migration plan rendering.
- Destination repository creation behind
ShouldProcess. - Destination verification after repository creation.
- Snapshot content copy into one new root commit from the source Git tree object.
- Git LFS object transfer for Snapshot migrations when the source uses Git LFS.
- Snapshot migration verification for tree identity and clean destination history.
- FullHistory migration for ordinary branches, tags, reachable history, default branch, and reachable Git LFS objects.
- FullHistory verification for branch/tag targets, reachable commit counts, branch-tip trees, default branch, and LFS availability.
- Same-name Snapshot replacement with archive-first verification and exact confirmation.
- Same-name FullHistory replacement with immutable pre-rename identity capture and archive verification before replacement creation.
- Durable JSON recovery reports for failures after destination creation and same-name archive/replacement mutations.
- Differential repository-level settings restoration with GitHub read-back verification for description, homepage, Issues/Projects/Wiki/Discussions flags, merge settings, auto-merge, delete-branch-on-merge, update-branch allowance, web commit signoff, and topics.
- Markdown and JSON execution reports.
- Isolated Git authentication through GitHub CLI credentials for private and non-interactive repository operations.
- Child-process-scoped native-command environment overrides that avoid mutating process-wide environment state.
- Controlled opt-in end-to-end harnesses for Snapshot, recovery, Git LFS, same-name Snapshot, new-destination FullHistory, same-name FullHistory, and repository-settings restoration.
- Deterministic release ZIP generation with fixed entry ordering/timestamps and SHA-256 checksum output.
- A release-package installer that targets the current user’s PowerShell module location and requires explicit
-Forcebefore replacing the same version. - A stable one-line
install-release.ps1bootstrap that installs the latest stable release by default or an exact stable release when-Version X.Y.Zis supplied, verifies the release ZIP against its published SHA-256 checksum, runs the packaged installer, and cleans temporary files. - A separate one-line
install-prerelease.ps1bootstrap for development and release-candidate testing that resolvesmainto an exact commit SHA before downloading and installing that unreleased source archive. - Stable GitHub release automation for exact version-tag pushes and guarded manual dispatch, validating
v<ModuleVersion>, rerunning the quality gate, building the release artifact, publishing PowerShell Gallery, and publishing the ZIP plus checksum as a GitHub Release. - Initial PowerShell module and thin launcher.
- Public command surface for
Copy-GitHubRepository,Get-GitHubRepository,Start-CopyGitHubRepositoryWizard, andTest-GitHubRepositoryMigration. - Pester and PSScriptAnalyzer quality-gate foundation.
- Enforced Pester code-coverage reporting and minimum coverage threshold.
- Cross-platform continuous integration configuration with bounded job runtime and diagnostic artifacts.
- Project PowerShell style guide and focused PSScriptAnalyzer policy for objective, low-noise enforcement.
- Architecture, command-design, contribution, security, and versioning documentation.
- Community code of conduct.
Changed
- PowerShell Gallery manifest description and tags now use the current repository-copy terminology and include
Copyfor package discovery while retainingMigrationfor compatibility and searchability. - Gallery package validation now rejects unexpected cmdlet, alias, or variable exports and missing declared formatting files before publication.
- Removed the prerelease
alphamarker from the module manifest in preparation for the initial stable0.1.0release. - Supported settings are written only when the destination differs from the source and are verified after GitHub read-back.
- Removed obsolete compatibility paths that bypassed current same-name migration and repository-settings verification contracts.
- Extracted new-destination Snapshot execution into a dedicated
Invoke-CgrNewDestinationSnapshotorchestration helper while preserving public behavior. - Native command execution now applies environment overrides directly to child processes while preserving stdout, stderr, and exit-code capture.
- Renamed the stable convenience bootstrap from
install-latest.ps1toinstall-release.ps1so the same installer can target either the latest stable release or an explicitly requested stable version. - The repository-root launcher now starts the same public guided wizard exposed by the installed module.
Validated
- Guided wizard plan-before-mutation, cancellation/no-change, FullHistory option flow, same-name confirmation flow, and delegation to the deterministic migration API through controlled Pester interaction boundaries.
- Snapshot migration against disposable public and private repositories.
- Snapshot Git LFS transfer and retrieval.
- Same-name Snapshot replacement with archive preservation.
- New-destination FullHistory migration including branches, annotated tags, reachable history, default branch, and Git LFS.
- Same-name FullHistory replacement including archive and replacement identity verification.
- Supported repository-settings restoration with independent source/destination GitHub API comparison.
- Deterministic release artifact generation across repeated builds.
- Release ZIP extraction, isolated current-user-style module installation, installed manifest validation, exact four-command public surface, overwrite refusal, and explicit forced replacement.
- Windows, Ubuntu, and macOS quality gates.