diff --git a/Directory.Build.props b/Directory.Build.props index a533505..5c1649d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - 0.1.0-alpha.1 + 0.1.0-alpha.2 enable enable true diff --git a/README.md b/README.md index 19a932e..9a98c76 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ English | [Português (Brasil)](README.pt-BR.md) **The SQL Server Management Studio experience, for PostgreSQL.** A native Windows client with Object Explorer, F5 to run, execution plans, session monitoring and backup/restore, built for people who already think in SSMS. -**[Download v0.1.0-alpha.1 for Windows x64](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1)** · Graphical installer (EN/pt-BR) or portable ZIP, .NET runtime included · Works with PostgreSQL 17 and 18 +**[Download v0.1.0-alpha.2 for Windows x64](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2)** · Graphical installer (EN/pt-BR) or portable ZIP, .NET runtime included · Works with PostgreSQL 17 and 18 ![PGMS editor, Object Explorer and query results](docs/assets/pgms-results-m959.jpg) @@ -43,7 +43,13 @@ PGMS releases are not code-signed yet, so Windows may show "Windows protected yo Get-FileHash .\PGMS-* -Algorithm SHA256 ``` -Compare the hashes with `SHA256SUMS.txt` and the installer's `.sha256` file in the release. v0.1.0-alpha.1 was built on the maintainer's machine, so it has checksums but no build provenance attestation; releases produced by the [release workflow](.github/workflows/release.yml) can additionally be verified with `gh attestation verify`. Code signing through the SignPath Foundation open source program is planned. +Compare the hashes with `SHA256SUMS.txt` in the release. Starting with v0.1.0-alpha.2 the assets are built by the [release workflow](.github/workflows/release.yml) on GitHub Actions and carry a build provenance attestation, so you can also confirm that the ZIP or installer came from that workflow and this repository (requires the [GitHub CLI](https://cli.github.com/)): + +```powershell +gh attestation verify .\PGMS-0.1.0-alpha.2-Setup-x64.exe --repo leoars/PostgresManagementStudio +``` + +v0.1.0-alpha.1 was built on the maintainer's machine and has checksums only. Code signing through the SignPath Foundation open source program is planned. ### Build from source diff --git a/README.pt-BR.md b/README.pt-BR.md index 1a9de8f..4f3f7cf 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -6,7 +6,7 @@ **A experiência do SQL Server Management Studio, para PostgreSQL.** Cliente nativo Windows com Object Explorer, F5 para executar, planos de execução, monitor de sessões e backup/restore, feito para quem já pensa em SSMS. -**[Baixar v0.1.0-alpha.1 para Windows x64](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1)** · Instalador gráfico (EN/pt-BR) ou ZIP portátil, runtime .NET incluído · Funciona com PostgreSQL 17 e 18 +**[Baixar v0.1.0-alpha.2 para Windows x64](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2)** · Instalador gráfico (EN/pt-BR) ou ZIP portátil, runtime .NET incluído · Funciona com PostgreSQL 17 e 18 ![Editor, Object Explorer e resultados do PGMS](docs/assets/pgms-results-m959.jpg) @@ -43,7 +43,13 @@ As releases do PGMS ainda não são assinadas digitalmente, então o Windows pod Get-FileHash .\PGMS-* -Algorithm SHA256 ``` -Compare os hashes com o `SHA256SUMS.txt` e com o arquivo `.sha256` do instalador na release. A v0.1.0-alpha.1 foi compilada na máquina do mantenedor, então tem checksums mas não tem atestado de proveniência de build; releases geradas pelo [workflow de release](.github/workflows/release.yml) podem ser verificadas também com `gh attestation verify`. A assinatura de código pelo programa open source da SignPath Foundation está planejada. +Compare os hashes com o `SHA256SUMS.txt` da release. A partir da v0.1.0-alpha.2 os assets são compilados pelo [workflow de release](.github/workflows/release.yml) no GitHub Actions e trazem atestado de proveniência de build, então você também pode confirmar que o ZIP ou o instalador saiu desse workflow e deste repositório (exige o [GitHub CLI](https://cli.github.com/)): + +```powershell +gh attestation verify .\PGMS-0.1.0-alpha.2-Setup-x64.exe --repo leoars/PostgresManagementStudio +``` + +A v0.1.0-alpha.1 foi compilada na máquina do mantenedor e tem apenas checksums. A assinatura de código pelo programa open source da SignPath Foundation está planejada. ### Compilar a partir do código diff --git a/SECURITY.md b/SECURITY.md index 289c0cf..4c08cae 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ English | [Português (Brasil)](SECURITY.pt-BR.md) -PGMS is in development. There is no published supported release series or guaranteed response time. Current development and the v0.1.0-alpha.1 pre-release are the starting points for investigation; historical packages do not automatically receive fixes. +PGMS is in development. There is no published supported release series or guaranteed response time. Current development and the v0.1.0-alpha.2 pre-release are the starting points for investigation; historical packages do not automatically receive fixes. Do not disclose an unpatched vulnerability or real credentials in a public issue. Use GitHub's **Report a vulnerability** on this repository if private reporting is enabled. If it is unavailable, open an issue asking the maintainer for a private contact channel without including vulnerability details. Never post database dumps, saved profiles, DPAPI payloads, access tokens or private keys. diff --git a/SECURITY.pt-BR.md b/SECURITY.pt-BR.md index 6fb0a8e..2017813 100644 --- a/SECURITY.pt-BR.md +++ b/SECURITY.pt-BR.md @@ -2,7 +2,7 @@ [English](SECURITY.md) | Português (Brasil) -O PGMS está em desenvolvimento. Não há série de releases publicada com suporte nem prazo de resposta garantido. O desenvolvimento atual e a pré-release v0.1.0-alpha.1 são o ponto de partida para investigação; pacotes históricos não recebem correções automaticamente. +O PGMS está em desenvolvimento. Não há série de releases publicada com suporte nem prazo de resposta garantido. O desenvolvimento atual e a pré-release v0.1.0-alpha.2 são o ponto de partida para investigação; pacotes históricos não recebem correções automaticamente. Não divulgue vulnerabilidade sem correção ou credenciais reais em uma issue pública. Use **Report a vulnerability** no GitHub deste repositório se o relato privado estiver habilitado. Se estiver indisponível, abra uma issue pedindo ao mantenedor um canal privado, sem detalhes da vulnerabilidade. Nunca publique dumps, perfis salvos, payloads DPAPI, tokens ou chaves privadas. diff --git a/docs/en/distribution.md b/docs/en/distribution.md index c0ec493..c303cac 100644 --- a/docs/en/distribution.md +++ b/docs/en/distribution.md @@ -1,4 +1,4 @@ -# PGMS v0.1.0-alpha.1 — portable distribution (M1008) +# PGMS v0.1.0-alpha.2 — portable distribution (M1008) English | Português (Brasil): LEIA-ME.md in the package, or docs/pt-BR/distribution.md in the source repository. @@ -14,4 +14,4 @@ Verify integrity with ./Verify-Package.ps1 -PackagePath . in PowerShell 7; manif Source, bilingual guides and reporting: https://github.com/leoars/PostgresManagementStudio . Original work is MIT; third-party licenses and trademark terms remain separate. PGMS is independent and does not claim full SSMS parity or endorsement. -Optional release installer: Install-PGMS-0.1.0-alpha.1.ps1 requires PowerShell 7, downloads the fixed release ZIP and verifies its pinned SHA256 before invoking managed installation. Use -ArchivePath for an already downloaded archive and -InstallRoot for another managed target. It does not launch the application, change execution policy or install PostgreSQL. Source and checksums are available on the release page. +Release assets are built by GitHub Actions from a version tag and published as a draft that the maintainer reviews. The release page provides a single SHA256SUMS.txt covering every asset and a build provenance attestation, verifiable with the GitHub CLI: gh attestation verify --repo leoars/PostgresManagementStudio. A graphical installer EXE (English/pt-BR, current user or all users) is published alongside this ZIP; the v0.1.0-alpha.1 PowerShell download installer is not part of this release. diff --git a/docs/en/getting-started.md b/docs/en/getting-started.md index c86cd94..f845d09 100644 --- a/docs/en/getting-started.md +++ b/docs/en/getting-started.md @@ -2,7 +2,7 @@ English | [Português (Brasil)](../pt-BR/getting-started.md) -[Download v0.1.0-alpha.1](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1): [graphical installer](graphical-installer.md), portable ZIP or PowerShell 7 installer. The graphical installer offers current-user and all-users modes and does not require PowerShell. See [release notes](release-notes.md). +[Download v0.1.0-alpha.2](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2): [graphical installer](graphical-installer.md), portable ZIP or PowerShell 7 installer. The graphical installer offers current-user and all-users modes and does not require PowerShell. See [release notes](release-notes.md). ### Windows SmartScreen warning @@ -12,7 +12,13 @@ PGMS releases are not code-signed yet, so Windows may show "Windows protected yo Get-FileHash .\PGMS-* -Algorithm SHA256 ``` -Compare the hashes with `SHA256SUMS.txt` and the installer's `.sha256` file in the release. v0.1.0-alpha.1 was built on the maintainer's machine, so it has checksums but no build provenance attestation; releases produced by the [release workflow](../../.github/workflows/release.yml) can additionally be verified with `gh attestation verify` (see [development](development.md)). Code signing through the SignPath Foundation open source program is planned. +Compare the hashes with `SHA256SUMS.txt` in the release. Starting with v0.1.0-alpha.2 the assets are built by the [release workflow](../../.github/workflows/release.yml) on GitHub Actions and carry a build provenance attestation, so you can also confirm that the ZIP or installer came from that workflow and this repository (requires the [GitHub CLI](https://cli.github.com/); see [development](development.md)): + +```powershell +gh attestation verify .\PGMS-0.1.0-alpha.2-Setup-x64.exe --repo leoars/PostgresManagementStudio +``` + +v0.1.0-alpha.1 was built on the maintainer's machine and has checksums only. Code signing through the SignPath Foundation open source program is planned. ## Requirements diff --git a/docs/en/graphical-installer.md b/docs/en/graphical-installer.md index 4fc6f4c..27c4095 100644 --- a/docs/en/graphical-installer.md +++ b/docs/en/graphical-installer.md @@ -2,7 +2,7 @@ English | [Português (Brasil)](../pt-BR/graphical-installer.md) -Download `PGMS-0.1.0-alpha.1-Setup-x64.exe` and its `.sha256` file from the [alpha.1 release](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1). This additional installer wraps the exact existing M1008 application payload; the portable ZIP, original checksums and tag remain unchanged. The installer does not require PowerShell or a separately installed .NET runtime. +Download `PGMS-0.1.0-alpha.2-Setup-x64.exe` from the [alpha.2 release](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2) and check it against `SHA256SUMS.txt` (and, optionally, `gh attestation verify`). Since v0.1.0-alpha.2 the installer is built by the release workflow from the same payload as the portable ZIP of that release; in v0.1.0-alpha.1 it was added later to wrap the existing M1008 payload. The installer does not require PowerShell or a separately installed .NET runtime. ## Installation choices diff --git a/docs/en/release-notes.md b/docs/en/release-notes.md index 5684f67..2fdad76 100644 --- a/docs/en/release-notes.md +++ b/docs/en/release-notes.md @@ -1,31 +1,42 @@ -# v0.1.0-alpha.1 — Windows x64 +# v0.1.0-alpha.2 — Windows x64 English | [Português (Brasil)](../pt-BR/release-notes.md) -First public binary pre-release of PGMS. This is an alpha for evaluation with synthetic/disposable data. Build label: M1008. Original work is MIT; dependency notices and licenses accompany the package. +Second public pre-release of PGMS and the first one built by continuous integration. It is an alpha for evaluation with synthetic/disposable data. Build label: M1008, the same application source as v0.1.0-alpha.1; this release changes how the binaries are produced, verified and installed, not the application code. Original work is MIT; dependency notices and licenses accompany the package. + +## What changed since v0.1.0-alpha.1 + +- **Built by GitHub Actions.** The ZIP and the graphical installer come from the [release workflow](../../.github/workflows/release.yml) on a GitHub-hosted Windows runner, from the tagged commit, with deterministic build settings (`ContinuousIntegrationBuild`, `Deterministic`) and a locked NuGet restore. v0.1.0-alpha.1 was built on the maintainer's machine. +- **Build provenance attestation.** The ZIP and the installer carry a GitHub artifact attestation that binds each file to this repository, the workflow and the commit. Verify it with the GitHub CLI (see below). +- **Graphical installer in the same release and from the same payload.** `PGMS-0.1.0-alpha.2-Setup-x64.exe` (Inno Setup 7.1.1, English/pt-BR, current user or all users, native uninstall) is built in the same run from the exact payload packed in the ZIP. In v0.1.0-alpha.1 the installer was added to the release later. +- **One checksum file.** `SHA256SUMS.txt` covers every asset; there are no per-asset `.sha256` files. +- **No PowerShell download installer.** `Install-PGMS-.ps1` is not published for this release; the managed PowerShell 7 scripts inside the ZIP (install, launch, rollback, uninstall) remain available. +- **Documentation.** New README landing (value proposition, Install / Build from source), Windows SmartScreen guidance with checksum and attestation verification, release process documented in [development](development.md). + +The application itself is unchanged: the `src/` tree is identical to v0.1.0-alpha.1 (milestone M1008). Public-source changes since alpha.1 are limited to the graphical installer sources, build/test scripts, CI workflows, community files and documentation. ## Downloads -From [this release](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1): +From [this release](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2): | File | Purpose | | --- | --- | -| `PGMS-0.1.0-alpha.1-win-x64.zip` | Portable application with .NET/WPF runtime. Extract the entire folder and run PGMS.exe. | -| `Install-PGMS-0.1.0-alpha.1.ps1` | Optional PowerShell 7 installer: downloads this exact ZIP, checks its pinned SHA256, then installs for the current user. | -| `SHA256SUMS.txt` | SHA256 values for the ZIP, the PowerShell installer and the release notes. The graphical installer EXE, added later, has its own `.sha256` file. Hashes check correspondence, not a digital signature. Future releases will publish a single checksum file covering every asset. | +| `PGMS-0.1.0-alpha.2-Setup-x64.exe` | Graphical installer (English/pt-BR). Current user without administrator rights, or all users with elevation. No PowerShell or separate .NET runtime required. | +| `PGMS-0.1.0-alpha.2-win-x64.zip` | Portable application with .NET/WPF runtime. Extract the entire folder and run PGMS.exe. Includes the managed PowerShell 7 scripts. | +| `SHA256SUMS.txt` | SHA256 of every asset in this release. Hashes check correspondence, not authorship. | +| `package-manifest.json` | SHA256 manifest of every file inside the ZIP, as checked by `Verify-Package.ps1`. | +| `RELEASE-NOTES.md`, `RELEASE-NOTES.pt-BR.md` | These notes. | -The portable application does not need PowerShell 7 or a global .NET runtime. The installer and management scripts require PowerShell 7 and install without changing system execution policy. The graphical installer was added to this same release later, as described in [graphical installer](graphical-installer.md); there is no MSI. Review unsigned scripts according to your organization's policy. +## Verify what you downloaded + +The binaries are not code-signed, so Windows SmartScreen may warn on first launch. Before choosing **Run anyway**, confirm the checksum and the provenance: ```powershell -Get-FileHash ./PGMS-0.1.0-alpha.1-win-x64.zip -Algorithm SHA256 -pwsh -File ./Install-PGMS-0.1.0-alpha.1.ps1 +Get-FileHash .\PGMS-* -Algorithm SHA256 +gh attestation verify .\PGMS-0.1.0-alpha.2-Setup-x64.exe --repo leoars/PostgresManagementStudio ``` -The installer defaults to `%LOCALAPPDATA%/Programs/PGMS`, preserves earlier managed versions and refuses an unmanaged nonempty target. `-InstallRoot` chooses another managed location; `-ArchivePath` uses an already downloaded ZIP with the same required hash. It does not launch PGMS or connect to a database. Launch the executable path printed by the installer, or use Start-Pgms.ps1 from the installed version folder. Rollback and removal scripts are included; local profiles/state are retained. See the [distribution guide](distribution.md). - -## Graphical installer added after the original release - -`PGMS-0.1.0-alpha.1-Setup-x64.exe` and its separate `.sha256` add a native wizard in English/pt-BR, current-user/all-users selection, default desktop shortcut and native uninstall. Application files, original ZIP/assets and tag are unchanged. This installer passed 17 current-user checks and visual review; elevated all-users execution is still untested. See the [graphical installer guide](graphical-installer.md) for requirements, source, build instructions and limits. The PowerShell installer described above remains available. +Compare the hashes with `SHA256SUMS.txt`. The second command needs the [GitHub CLI](https://cli.github.com/) and confirms that the file was produced by this repository's release workflow at the tagged commit; run it for the ZIP as well. Code signing through the SignPath Foundation open source program is planned; no date is promised. ## Scope @@ -33,14 +44,16 @@ SQL editor and independent sessions, Object Explorer, bounded Results/Messages a ## Validation -Complete PostgreSQL 17.11 regression passed: **2,115 integration +3,072 WPF =5,187 checks**, using an isolated cluster on loopback port 55441, stopped afterward. Eleven test-port parser checks and two invalid runner-port checks passed separately. A test-only readiness-file race found on the first attempt was corrected with atomic publication; focused process checks passed 26+20, then the full suite above passed. No firewall changes or unrelated process termination were needed. - -The final Release package passed manifest, MIT/third-party license and bilingual-guide checks, ZIP extraction validation, and opening/normal exit with its bundled .NET/WPF 10.0.14 runtime. Debug symbols are excluded and a scan found no local developer build paths or user-state files in the package. +Application behavior: the M1008 source previously passed the complete PostgreSQL 17.11 regression (**2,115 integration + 3,072 WPF = 5,187 checks**) on an isolated loopback cluster, as recorded in the v0.1.0-alpha.1 notes and in [validation](validation.md). That suite was not rerun for this release because the application source did not change; it does not run in CI. -The pinned installer passed **12 checks**, including changed-hash rejection, unmanaged-target protection, duplicate-install refusal, installed upgrade/rollback/reactivation and complete removal. Four installed launches used their own runtime and exited 0; external synthetic data was preserved. These checks ran on the development host with isolated state, not a newly certified clean-Windows VM. +Release pipeline: the workflow validates that the tag matches `installer/release.json`, `Directory.Build.props` and `BuildInfo.cs`; publishes with `Publish.ps1 -SelfContained` (SDK selected by `global.json`, bundled .NET/WPF 10.0.14, ReadyToRun); runs `Verify-Package.ps1`, `Test-Package.ps1` and `Test-PackageGuides.ps1`; creates the ZIP with `New-PackageArchive.ps1`; installs the pinned, hash-verified Inno Setup 7.1.1 and builds the installer; runs an informational launch smoke on the runner; attests the ZIP and the installer; and opens a draft pre-release that the maintainer reviews before publishing. A dry run of the same workflow on the preceding commit (test tag `v0.1.0-alpha.1+ci.1`, later deleted) completed, and its assets passed checksum comparison, `gh attestation verify`, `Verify-Package.ps1`, `Test-PackageArchive.ps1`, `Test-PackageGuides.ps1`, `Test-PackageLaunch.ps1` and the 17 current-user checks of `Test-GraphicalInstaller.ps1` on the maintainer's machine. The same local verification is repeated on this release's draft assets before publication and reported in the release pull request. -Review the [installer source](../../scripts/Install-PgmsRelease.ps1) before running it. +All-users (elevated) installation, a clean-Windows VM installation and physical DPI/keyboard/screen-reader observations are not newly certified by this release. ## Known limits -Windows x64 only. Unsigned executable/scripts; SmartScreen has not been tested. No MSI, automatic update or production-support guarantee. Full SSMS parity is not claimed. Results/recovery are bounded; large SQL lines may pause rendering. Cancellation is not proof of rollback. Restore SQL must be trusted and can control transactions, reconnect or execute local psql commands. DPAPI state is tied to the Windows user. Historical physical/clean-Windows observations retain their original scope; a new clean-Windows VM installation of this release is not certified. See [validation](validation.md) and [security](../../SECURITY.md). +Windows x64 only. Unsigned executable and installer; SmartScreen warns. No MSI, automatic update or production-support guarantee. Full SSMS parity is not claimed. Results/recovery are bounded; large SQL lines may pause rendering. Cancellation is not proof of rollback. Restore SQL must be trusted and can control transactions, reconnect or execute local psql commands. DPAPI state is tied to the Windows user. The frozen manifest hash in `installer/release.json` describes a locally built payload, not the CI payload; the CI build compares milestone and product version instead. See [validation](validation.md) and [security](../../SECURITY.md). + +## Previous release + +v0.1.0-alpha.1 (2026-10-31) remains available with its original assets and notes; it was built on the maintainer's machine and has checksums but no attestation. diff --git a/docs/en/validation.md b/docs/en/validation.md index e520c05..14b0714 100644 --- a/docs/en/validation.md +++ b/docs/en/validation.md @@ -2,7 +2,7 @@ English | [Português (Brasil)](../pt-BR/validation.md) -Current pre-release: v0.1.0-alpha.1, build label M1008. Milestone labels are internal identifiers, not guarantees that a local rebuild has the same binary identity. The initial public source import used M1002. The private operational history and raw acceptance evidence are intentionally not included. +Current pre-release: v0.1.0-alpha.2, build label M1008 (same application source as v0.1.0-alpha.1, rebuilt by the release workflow on GitHub Actions with a build provenance attestation). Milestone labels are internal identifiers, not guarantees that a local rebuild has the same binary identity. The initial public source import used M1002. The private operational history and raw acceptance evidence are intentionally not included. The imported implementation previously passed 5,187 automated checks (2,115 PostgreSQL integration and 3,072 WPF), plus package opening, installed profile preservation and three-draft recovery through rollback/restart. Those are historical observations, not newly executed tests for every source revision. Reproduce current behavior with the public build and test scripts; report your actual environment and results. The clean-import checks for the initial public revision are recorded below after execution. diff --git a/docs/pt-BR/distribution.md b/docs/pt-BR/distribution.md index 1ebdebc..3d9653c 100644 --- a/docs/pt-BR/distribution.md +++ b/docs/pt-BR/distribution.md @@ -1,4 +1,4 @@ -# PGMS v0.1.0-alpha.1 — distribuição portátil (M1008) +# PGMS v0.1.0-alpha.2 — distribuição portátil (M1008) [English]: READ-ME.md no pacote, ou docs/en/distribution.md no repositório. Português (Brasil). @@ -14,4 +14,4 @@ Confira integridade com ./Verify-Package.ps1 -PackagePath . no PowerShell 7; has Fonte, guias bilíngues e relatos: https://github.com/leoars/PostgresManagementStudio . Trabalho próprio MIT; licenças de terceiros e condições de marca são separadas. PGMS é independente, sem paridade integral SSMS ou endosso. -Instalador opcional da release: Install-PGMS-0.1.0-alpha.1.ps1 exige PowerShell 7, baixa o ZIP fixo da versão e verifica SHA256 fixado antes da instalação gerenciada. Use -ArchivePath para ZIP já baixado e -InstallRoot para outro destino gerenciado. Não abre o aplicativo, altera política de execução ou instala PostgreSQL. Fonte e checksums estão na página da release. +Os assets da release são compilados pelo GitHub Actions a partir de uma tag de versão e publicados como rascunho revisado pelo mantenedor. A página da release traz um único SHA256SUMS.txt cobrindo todos os assets e um atestado de proveniência de build, verificável com o GitHub CLI: gh attestation verify --repo leoars/PostgresManagementStudio. Um instalador gráfico EXE (inglês/pt-BR, por usuário ou para todos) é publicado junto com este ZIP; o instalador PowerShell de download da v0.1.0-alpha.1 não faz parte desta release. diff --git a/docs/pt-BR/getting-started.md b/docs/pt-BR/getting-started.md index 44af3b7..159c9b1 100644 --- a/docs/pt-BR/getting-started.md +++ b/docs/pt-BR/getting-started.md @@ -2,7 +2,7 @@ [English](../en/getting-started.md) | Português (Brasil) -[Baixar v0.1.0-alpha.1](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1): [instalador gráfico](graphical-installer.md), ZIP portátil ou instalador PowerShell 7. O instalador gráfico oferece modos por usuário e para todos, dispensando PowerShell. Veja [notas da versão](release-notes.md). +[Baixar v0.1.0-alpha.2](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2): [instalador gráfico](graphical-installer.md), ZIP portátil ou instalador PowerShell 7. O instalador gráfico oferece modos por usuário e para todos, dispensando PowerShell. Veja [notas da versão](release-notes.md). ### Aviso do SmartScreen do Windows @@ -12,7 +12,13 @@ As releases do PGMS ainda não são assinadas digitalmente, então o Windows pod Get-FileHash .\PGMS-* -Algorithm SHA256 ``` -Compare os hashes com o `SHA256SUMS.txt` e com o arquivo `.sha256` do instalador na release. A v0.1.0-alpha.1 foi compilada na máquina do mantenedor, então tem checksums mas não tem atestado de proveniência de build; releases geradas pelo [workflow de release](../../.github/workflows/release.yml) podem ser verificadas também com `gh attestation verify` (veja [desenvolvimento](development.md)). A assinatura de código pelo programa open source da SignPath Foundation está planejada. +Compare os hashes com o `SHA256SUMS.txt` da release. A partir da v0.1.0-alpha.2 os assets são compilados pelo [workflow de release](../../.github/workflows/release.yml) no GitHub Actions e trazem atestado de proveniência de build, então você também pode confirmar que o ZIP ou o instalador saiu desse workflow e deste repositório (exige o [GitHub CLI](https://cli.github.com/); veja [desenvolvimento](development.md)): + +```powershell +gh attestation verify .\PGMS-0.1.0-alpha.2-Setup-x64.exe --repo leoars/PostgresManagementStudio +``` + +A v0.1.0-alpha.1 foi compilada na máquina do mantenedor e tem apenas checksums. A assinatura de código pelo programa open source da SignPath Foundation está planejada. ## Pré-requisitos diff --git a/docs/pt-BR/graphical-installer.md b/docs/pt-BR/graphical-installer.md index 33dd396..a7fdff5 100644 --- a/docs/pt-BR/graphical-installer.md +++ b/docs/pt-BR/graphical-installer.md @@ -2,7 +2,7 @@ [English](../en/graphical-installer.md) | Português (Brasil) -Baixe `PGMS-0.1.0-alpha.1-Setup-x64.exe` e seu arquivo `.sha256` na [release alpha.1](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1). Este instalador adicional inclui exatamente o aplicativo M1008 existente; o ZIP portátil, os checksums originais e a tag permanecem inalterados. O instalador dispensa PowerShell e runtime .NET instalado separadamente. +Baixe `PGMS-0.1.0-alpha.2-Setup-x64.exe` na [release alpha.2](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2) e confira contra o `SHA256SUMS.txt` (e, opcionalmente, com `gh attestation verify`). Desde a v0.1.0-alpha.2 o instalador é compilado pelo workflow de release a partir do mesmo payload do ZIP portátil daquela release; na v0.1.0-alpha.1 ele foi adicionado depois, embrulhando o payload M1008 existente. O instalador dispensa PowerShell e runtime .NET instalado separadamente. ## Opções de instalação diff --git a/docs/pt-BR/release-notes.md b/docs/pt-BR/release-notes.md index f851492..f242d4d 100644 --- a/docs/pt-BR/release-notes.md +++ b/docs/pt-BR/release-notes.md @@ -1,31 +1,42 @@ -# v0.1.0-alpha.1 — Windows x64 +# v0.1.0-alpha.2 — Windows x64 [English](../en/release-notes.md) | Português (Brasil) -Primeira pré-release binária pública do PGMS. É uma versão alpha para avaliação com dados sintéticos/descartáveis. Rótulo de build: M1008. Trabalho próprio MIT; avisos e licenças das dependências acompanham o pacote. +Segunda pré-release pública do PGMS e a primeira compilada por integração contínua. É uma versão alpha para avaliação com dados sintéticos/descartáveis. Rótulo de build: M1008, a mesma fonte do aplicativo da v0.1.0-alpha.1; esta release muda como os binários são produzidos, verificados e instalados, não o código do aplicativo. Trabalho próprio MIT; avisos e licenças das dependências acompanham o pacote. + +## O que mudou desde a v0.1.0-alpha.1 + +- **Compilada pelo GitHub Actions.** O ZIP e o instalador gráfico saem do [workflow de release](../../.github/workflows/release.yml) em um runner Windows hospedado pelo GitHub, a partir do commit da tag, com build determinístico (`ContinuousIntegrationBuild`, `Deterministic`) e restore NuGet travado. A v0.1.0-alpha.1 foi compilada na máquina do mantenedor. +- **Atestado de proveniência de build.** O ZIP e o instalador trazem um atestado de artefato do GitHub que vincula cada arquivo a este repositório, ao workflow e ao commit. Verifique com o GitHub CLI (veja abaixo). +- **Instalador gráfico na mesma release e do mesmo payload.** `PGMS-0.1.0-alpha.2-Setup-x64.exe` (Inno Setup 7.1.1, inglês/pt-BR, por usuário ou para todos, desinstalação nativa) é compilado na mesma execução a partir do payload exato empacotado no ZIP. Na v0.1.0-alpha.1 o instalador foi adicionado à release depois. +- **Um único arquivo de checksums.** `SHA256SUMS.txt` cobre todos os assets; não há arquivos `.sha256` por asset. +- **Sem instalador PowerShell de download.** `Install-PGMS-.ps1` não é publicado nesta release; os scripts gerenciados PowerShell 7 dentro do ZIP (instalar, abrir, rollback, remover) continuam disponíveis. +- **Documentação.** Novo topo do README (proposta de valor, Instalar / Compilar a partir do código), orientação sobre o SmartScreen do Windows com verificação de checksum e atestado, processo de release documentado em [desenvolvimento](development.md). + +O aplicativo em si não mudou: a árvore `src/` é idêntica à da v0.1.0-alpha.1 (marco M1008). As mudanças na fonte pública desde a alpha.1 se limitam às fontes do instalador gráfico, scripts de build/teste, workflows de CI, arquivos de comunidade e documentação. ## Downloads -Nesta [release](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.1): +Nesta [release](https://github.com/leoars/PostgresManagementStudio/releases/tag/v0.1.0-alpha.2): | Arquivo | Finalidade | | --- | --- | -| `PGMS-0.1.0-alpha.1-win-x64.zip` | Aplicativo portátil com runtime .NET/WPF. Extraia toda a pasta e execute PGMS.exe. | -| `Install-PGMS-0.1.0-alpha.1.ps1` | Instalador opcional PowerShell 7: baixa este ZIP exato, confere SHA256 fixado e instala para o usuário atual. | -| `SHA256SUMS.txt` | Valores SHA256 do ZIP, do instalador PowerShell e das notas da versão. O EXE do instalador gráfico, adicionado depois, tem arquivo `.sha256` próprio. Hash confere correspondência, não é assinatura digital. Releases futuras publicarão um único arquivo de checksums cobrindo todos os assets. | +| `PGMS-0.1.0-alpha.2-Setup-x64.exe` | Instalador gráfico (inglês/pt-BR). Por usuário sem direitos de administrador, ou para todos com elevação. Não exige PowerShell nem runtime .NET separado. | +| `PGMS-0.1.0-alpha.2-win-x64.zip` | Aplicativo portátil com runtime .NET/WPF. Extraia toda a pasta e execute PGMS.exe. Inclui os scripts gerenciados PowerShell 7. | +| `SHA256SUMS.txt` | SHA256 de todos os assets desta release. Hash confere correspondência, não autoria. | +| `package-manifest.json` | Manifesto SHA256 de cada arquivo dentro do ZIP, conferido por `Verify-Package.ps1`. | +| `RELEASE-NOTES.md`, `RELEASE-NOTES.pt-BR.md` | Estas notas. | -O aplicativo portátil não exige PowerShell 7 ou runtime .NET global. Instalador e scripts gerenciados exigem PowerShell 7 e não alteram a política de execução do sistema. O instalador gráfico foi adicionado a esta mesma release posteriormente, conforme [instalador gráfico](graphical-installer.md); não há MSI. Revise scripts sem assinatura conforme a política da sua organização. +## Verifique o que baixou + +Os binários não são assinados digitalmente, então o SmartScreen do Windows pode avisar na primeira execução. Antes de escolher **Executar assim mesmo**, confirme o checksum e a proveniência: ```powershell -Get-FileHash ./PGMS-0.1.0-alpha.1-win-x64.zip -Algorithm SHA256 -pwsh -File ./Install-PGMS-0.1.0-alpha.1.ps1 +Get-FileHash .\PGMS-* -Algorithm SHA256 +gh attestation verify .\PGMS-0.1.0-alpha.2-Setup-x64.exe --repo leoars/PostgresManagementStudio ``` -O instalador usa `%LOCALAPPDATA%/Programs/PGMS`, preserva versões gerenciadas anteriores e recusa destino não gerenciado não vazio. `-InstallRoot` escolhe outro local gerenciado; `-ArchivePath` usa ZIP já baixado com o mesmo hash obrigatório. Não abre PGMS nem conecta ao banco. Abra o caminho do executável informado pelo instalador, ou use Start-Pgms.ps1 da pasta da versão instalada. Scripts de rollback/remoção estão incluídos; perfis/estado local são preservados. Veja o [guia de distribuição](distribution.md). - -## Instalador gráfico adicionado após a release original - -`PGMS-0.1.0-alpha.1-Setup-x64.exe` e seu `.sha256` separado adicionam assistente nativo em inglês/pt-BR, escolha por usuário/para todos, atalho padrão na área de trabalho e desinstalação nativa. Arquivos do aplicativo, ZIP/assets originais e tag permanecem iguais. Este instalador passou em 17 checks por usuário e revisão visual; execução elevada para todos ainda não foi testada. Veja o [guia do instalador gráfico](graphical-installer.md) para requisitos, fonte, compilação e limites. O instalador PowerShell descrito acima continua disponível. +Compare os hashes com o `SHA256SUMS.txt`. O segundo comando exige o [GitHub CLI](https://cli.github.com/) e confirma que o arquivo foi produzido pelo workflow de release deste repositório no commit da tag; execute-o também para o ZIP. A assinatura de código pelo programa open source da SignPath Foundation está planejada; nenhuma data é prometida. ## Escopo @@ -33,14 +44,16 @@ Editor SQL e sessões independentes, Object Explorer, Results/Messages com limit ## Validação -Regressão completa PostgreSQL 17.11 aprovada: **2.115 integração +3.072 WPF =5.187 checks**, com cluster isolado em loopback na porta 55441, encerrado ao final. Onze checks do parser de porta e duas recusas de porta inválida no runner passaram separadamente. Uma corrida no sinal de prontidão de um teste, encontrada na primeira tentativa, foi corrigida com publicação atômica; recortes passaram 26+20 e depois toda a suíte acima passou. Não foi necessário alterar firewall ou encerrar processos alheios. - -O pacote Release final passou em manifesto, licença MIT/terceiros, guias bilíngues, extração ZIP e abertura/saída normal com runtime .NET/WPF 10.0.14 incluído. Símbolos de debug foram excluídos e a varredura não encontrou caminhos locais de build ou arquivos de estado do usuário no pacote. +Comportamento do aplicativo: a fonte M1008 já passou na regressão completa PostgreSQL 17.11 (**2.115 integração + 3.072 WPF = 5.187 checks**) em cluster isolado em loopback, conforme registrado nas notas da v0.1.0-alpha.1 e em [validação](validation.md). Essa suíte não foi repetida para esta release porque a fonte do aplicativo não mudou; ela não roda no CI. -O instalador fixado passou em **12 checks**, incluindo recusa de hash alterado, proteção de destino não gerenciado, recusa de duplicação, atualização/rollback/reativação instalados e remoção completa. Quatro aberturas instaladas usaram runtime próprio e saíram 0; dados sintéticos externos foram preservados. Os testes ocorreram no host de desenvolvimento, com estado isolado, sem nova certificação em VM Windows limpa. +Pipeline de release: o workflow valida que a tag corresponde a `installer/release.json`, `Directory.Build.props` e `BuildInfo.cs`; publica com `Publish.ps1 -SelfContained` (SDK escolhido por `global.json`, .NET/WPF 10.0.14 incluído, ReadyToRun); roda `Verify-Package.ps1`, `Test-Package.ps1` e `Test-PackageGuides.ps1`; cria o ZIP com `New-PackageArchive.ps1`; instala o Inno Setup 7.1.1 fixado e conferido por hash e compila o instalador; executa um smoke informacional de abertura no runner; atesta o ZIP e o instalador; e abre uma pré-release em rascunho que o mantenedor revisa antes de publicar. Um ensaio do mesmo workflow no commit anterior (tag de teste `v0.1.0-alpha.1+ci.1`, depois apagada) concluiu, e seus assets passaram na comparação de checksums, `gh attestation verify`, `Verify-Package.ps1`, `Test-PackageArchive.ps1`, `Test-PackageGuides.ps1`, `Test-PackageLaunch.ps1` e nos 17 checks por usuário do `Test-GraphicalInstaller.ps1` na máquina do mantenedor. A mesma verificação local é repetida nos assets do rascunho desta release antes da publicação e relatada no pull request da release. -Revise a [fonte do instalador](../../scripts/Install-PgmsRelease.ps1) antes de executar. +Instalação para todos os usuários (elevada), instalação em VM Windows limpa e observações físicas de DPI/teclado/leitor de tela não recebem nova certificação nesta release. ## Limites conhecidos -Somente Windows x64. Executável/scripts sem assinatura; SmartScreen não testado. Sem MSI, atualização automática ou garantia de suporte em produção. Não se declara paridade integral SSMS. Resultados/recuperação têm limites; linhas SQL grandes podem pausar renderização. Cancelar não comprova rollback. SQL de restore exige confiança e pode controlar transações, reconectar ou executar comandos locais psql. Estado DPAPI depende do usuário Windows. Observações físicas/Windows limpo históricas mantêm seu escopo; não se certifica nova instalação desta release em VM Windows limpa. Veja [validação](validation.md) e [segurança](../../SECURITY.pt-BR.md). +Somente Windows x64. Executável e instalador sem assinatura; o SmartScreen avisa. Sem MSI, atualização automática ou garantia de suporte em produção. Não se declara paridade integral SSMS. Resultados/recuperação têm limites; linhas SQL grandes podem pausar renderização. Cancelar não comprova rollback. SQL de restore exige confiança e pode controlar transações, reconectar ou executar comandos locais psql. Estado DPAPI depende do usuário Windows. O hash de manifesto congelado em `installer/release.json` descreve um payload compilado localmente, não o do CI; o build no CI compara marco e versão do produto. Veja [validação](validation.md) e [segurança](../../SECURITY.pt-BR.md). + +## Release anterior + +A v0.1.0-alpha.1 (31/10/2026) continua disponível com seus assets e notas originais; foi compilada na máquina do mantenedor e tem checksums, mas não atestado. diff --git a/docs/pt-BR/validation.md b/docs/pt-BR/validation.md index 7fd2dd5..e3cf25b 100644 --- a/docs/pt-BR/validation.md +++ b/docs/pt-BR/validation.md @@ -2,7 +2,7 @@ [English](../en/validation.md) | Português (Brasil) -Pré-release atual: v0.1.0-alpha.1, rótulo M1008. Marcos são identificadores internos, não garantia de identidade binária de uma recompilação local. A importação pública inicial usou M1002. Histórico operacional e provas brutas privados não são incluídos intencionalmente. +Pré-release atual: v0.1.0-alpha.2, rótulo M1008 (mesma fonte do aplicativo da v0.1.0-alpha.1, recompilada pelo workflow de release no GitHub Actions com atestado de proveniência de build). Marcos são identificadores internos, não garantia de identidade binária de uma recompilação local. A importação pública inicial usou M1002. Histórico operacional e provas brutas privados não são incluídos intencionalmente. A implementação importada passou anteriormente em 5.187 checks automatizados (2.115 integração PostgreSQL e 3.072 WPF), além de abertura de pacote, preservação de perfil instalado e recuperação de três rascunhos entre rollback/reinício. São observações históricas, não testes novos a cada revisão. Reproduza o comportamento atual pelos scripts públicos e informe ambiente/resultados reais. As verificações da revisão pública inicial são registradas abaixo após execução. diff --git a/installer/release.json b/installer/release.json index e46c404..7d8d372 100644 --- a/installer/release.json +++ b/installer/release.json @@ -1,6 +1,6 @@ { - "Version": "0.1.0-alpha.1", - "NumericVersion": "0.1.0.1", + "Version": "0.1.0-alpha.2", + "NumericVersion": "0.1.0.2", "Milestone": "M1008", "ManifestSha256": "0280EC5BE8EBB4ABC432E891DA05716C6ADC2DFF4D1652819F4689DAB68A30B6" }