Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ jobs:
throw "Could not inspect existing release assets for $tag."
}
}
$assets = @(Get-ChildItem -LiteralPath (Join-Path $PWD 'build\dist') -File | Where-Object { $_.Extension -in @('.zip', '.txt', '.json') })
$assets = @(Get-ChildItem -LiteralPath (Join-Path $PWD 'build\dist') -File | Where-Object { $_.Extension -in @('.exe', '.zip', '.txt', '.json') })
$assetNames = @($assets | ForEach-Object { $_.Name })
$unexpected = @($existingAssets | Where-Object { $assetNames -cnotcontains $_ })
if ($unexpected.Count -ne 0) {
Expand Down Expand Up @@ -199,7 +199,7 @@ jobs:
if ($tag -cnotmatch '^v\d+\.\d+\.\d+$') {
throw "Release tag output is invalid: '$tag'."
}
$assets = @(Get-ChildItem -LiteralPath (Join-Path $PWD 'build\dist') -File | Where-Object { $_.Extension -in @('.zip', '.txt', '.json') })
$assets = @(Get-ChildItem -LiteralPath (Join-Path $PWD 'build\dist') -File | Where-Object { $_.Extension -in @('.exe', '.zip', '.txt', '.json') })
$assetNames = @($assets | ForEach-Object { $_.Name })
$publishedNames = @(& gh release view $tag --repo $env:GITHUB_REPOSITORY --json assets --jq '.assets[].name')
if ($LASTEXITCODE -ne 0 -or ((@($publishedNames | Sort-Object) -join '|') -cne (@($assetNames | Sort-Object) -join '|'))) {
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ This file keeps the release record. GitHub Release bodies are generated from the

No unreleased changes.

## v2.5.9

### English

- Fixed release publication so the Inno Setup installer executable is uploaded alongside the portable ZIP and manifests.

### 简体中文

- 修复发布上传:现在 Inno Setup 安装包可执行文件会与便携 ZIP 和清单一起上传。

## v2.5.8

### English
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ that existing page and leaves the Codex UI, account authorization, and enrollmen
## Quick start


1. Download either `CodexRemote-fix-2.5.8-setup.exe` (recommended installer) or `CodexRemote-fix-2.5.8-windows-x64.zip` from [Releases](https://github.com/naipi11/CodexRemote-fix/releases). Download and verify the matching `.sha256.txt` before continuing.
1. Download either `CodexRemote-fix-2.5.9-setup.exe` (recommended installer) or `CodexRemote-fix-2.5.9-windows-x64.zip` from [Releases](https://github.com/naipi11/CodexRemote-fix/releases). Download and verify the matching `.sha256.txt` before continuing.
2. If you chose the setup installer, run it and follow the wizard. If you chose the portable ZIP, extract it into a new empty folder and double-click `CodexRemote-fix.exe`.

Both paths validate the payload, run a Microsoft Defender custom scan, and preserve the DPAPI device-key store.
Expand Down Expand Up @@ -83,12 +83,12 @@ The tray reports two independent, truthful status lines instead of inferring rea

## Releases

Every tagged release ships a Windows setup installer and a portable ZIP, each with its SHA-256 checksum, release manifest, and the shared payload manifest. The `.github/workflows/release.yml` workflow builds both from the tag automatically, so v2.5.8 includes:
Every tagged release ships a Windows setup installer and a portable ZIP, each with its SHA-256 checksum, release manifest, and the shared payload manifest. The `.github/workflows/release.yml` workflow builds both from the tag automatically, so v2.5.9 includes:

- `CodexRemote-fix-2.5.8-setup.exe` and its checksum
- `CodexRemote-fix-2.5.8-windows-x64.zip` and its checksum
- `CodexRemote-fix-2.5.8-payload-manifest.json`
- `CodexRemote-fix-2.5.8-release-manifest.json` and `CodexRemote-fix-2.5.8-setup-release-manifest.json`
- `CodexRemote-fix-2.5.9-setup.exe` and its checksum
- `CodexRemote-fix-2.5.9-windows-x64.zip` and its checksum
- `CodexRemote-fix-2.5.9-payload-manifest.json`
- `CodexRemote-fix-2.5.9-release-manifest.json` and `CodexRemote-fix-2.5.9-setup-release-manifest.json`

Each release appends a short English change summary to the GitHub release body. The bilingual release history is kept in [CHANGELOG.md](CHANGELOG.md).

Expand Down
12 changes: 6 additions & 6 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ CodexRemote-fix 在 Windows 版 Codex Desktop 中启用随应用一起打包、

## 快速开始

1. 从 [Releases](https://github.com/naipi11/CodexRemote-fix/releases) 下载 `CodexRemote-fix-2.5.8-setup.exe`(推荐安装包)或便携 ZIP `CodexRemote-fix-2.5.8-windows-x64.zip`;下载并核对对应的 `.sha256.txt`。
1. 从 [Releases](https://github.com/naipi11/CodexRemote-fix/releases) 下载 `CodexRemote-fix-2.5.9-setup.exe`(推荐安装包)或便携 ZIP `CodexRemote-fix-2.5.9-windows-x64.zip`;下载并核对对应的 `.sha256.txt`。
2. 选择安装包时直接运行并跟随向导;选择便携 ZIP 时解压到新空目录,然后双击 `CodexRemote-fix.exe`。

两条路径都会校验载荷、执行 Microsoft Defender 自定义扫描,并保留 DPAPI 设备密钥。
Expand Down Expand Up @@ -78,12 +78,12 @@ CodexRemote-fix 在 Windows 版 Codex Desktop 中启用随应用一起打包、

## 发布(Releases)

每个带 tag 的发布都会附带 Windows 安装包和便携 ZIP,各自带 SHA-256 校验文件、release manifest,并共享 payload manifest。`.github/workflows/release.yml` 会在 tag 上自动构建两者,因此 v2.5.8 提供:
每个带 tag 的发布都会附带 Windows 安装包和便携 ZIP,各自带 SHA-256 校验文件、release manifest,并共享 payload manifest。`.github/workflows/release.yml` 会在 tag 上自动构建两者,因此 v2.5.9 提供:

- `CodexRemote-fix-2.5.8-setup.exe` 及其校验文件
- `CodexRemote-fix-2.5.8-windows-x64.zip` 及其校验文件
- `CodexRemote-fix-2.5.8-payload-manifest.json`
- `CodexRemote-fix-2.5.8-release-manifest.json` 和 `CodexRemote-fix-2.5.8-setup-release-manifest.json`
- `CodexRemote-fix-2.5.9-setup.exe` 及其校验文件
- `CodexRemote-fix-2.5.9-windows-x64.zip` 及其校验文件
- `CodexRemote-fix-2.5.9-payload-manifest.json`
- `CodexRemote-fix-2.5.9-release-manifest.json` 和 `CodexRemote-fix-2.5.9-setup-release-manifest.json`

GitHub Release 正文只发布英文更新说明;本 README 继续保留中英文使用说明。
完整历史见 [CHANGELOG.md](CHANGELOG.md)。
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codexremote-fix",
"version": "2.5.8",
"version": "2.5.9",
"private": true,
"description": "CodexRemote-fix persistent current-user tray supervisor for Windows",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion src/portable/CodexRemote.Portable.manifest
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="2.5.8.0" name="CodexRemote.fix.Portable" type="win32" />
<assemblyIdentity version="2.5.9.0" name="CodexRemote.fix.Portable" type="win32" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
Expand Down
4 changes: 2 additions & 2 deletions src/trayhost/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
[assembly: AssemblyDescription("Persistent native tray host for CodexRemote-fix")]
[assembly: AssemblyCompany("CodexRemote-fix contributors")]
[assembly: AssemblyProduct("CodexRemote-fix")]
[assembly: AssemblyVersion("2.5.8.0")]
[assembly: AssemblyFileVersion("2.5.8.0")]
[assembly: AssemblyVersion("2.5.9.0")]
[assembly: AssemblyFileVersion("2.5.9.0")]
[assembly: ComVisible(false)]
2 changes: 1 addition & 1 deletion src/trayhost/CodexRemote.TrayHost.manifest
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="2.5.8.0" name="CodexRemote.fix.TrayHost" type="win32" />
<assemblyIdentity version="2.5.9.0" name="CodexRemote.fix.TrayHost" type="win32" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
Expand Down
12 changes: 6 additions & 6 deletions tests/persistence/InstallLifecycle.SelfTest.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -1979,9 +1979,9 @@ $results += Invoke-CcodTest 'installer exposes CodexRemote-fix as the searchable
Assert-CcodTrue ($buildScript -cmatch '\$bundle\.sha256\.txt') 'build script writes a hash beside the public portable ZIP filename'
}

$results += Invoke-CcodTest 'portable builder publishes the exact CodexRemote-fix 2.5.8 release artifact contract' {
$results += Invoke-CcodTest 'portable builder publishes the exact CodexRemote-fix 2.5.9 release artifact contract' {
$package = Get-Content -LiteralPath (Join-Path $repositoryRoot 'package.json') -Raw | ConvertFrom-Json
Assert-CcodEqual '2.5.8' ([string]$package.version) 'package version is exactly 2.5.8'
Assert-CcodEqual '2.5.9' ([string]$package.version) 'package version is exactly 2.5.9'

$buildScript = Get-Content -LiteralPath (Join-Path $repositoryRoot 'build\build.ps1') -Raw
Assert-CcodTrue ($buildScript -cmatch 'CodexRemote-fix-\$Version-windows-x64\.zip') 'portable build resolves the exact public ZIP filename'
Expand Down Expand Up @@ -2345,16 +2345,16 @@ $results += Invoke-CcodTest 'README and release workflow publish current portabl
Assert-CcodTrue ($readmeChinese -cmatch '\A(?s:<div align="center">.*?<h1>CodexRemote-fix</h1>)') 'Chinese README uses the centered public product heading'

$quickStart = [regex]::Match($readme, '(?ms)^## Quick start[^\r\n]*\r?\n(.*?)(?=^## )').Groups[1].Value
Assert-CcodTrue ($quickStart -cmatch 'CodexRemote-fix-2\.5\.8-setup\.exe') 'English Quick Start names the setup installer'
Assert-CcodTrue ($quickStart -cmatch 'CodexRemote-fix-2\.5\.8-windows-x64\.zip') 'English Quick Start names the exact portable artifact'
Assert-CcodTrue ($quickStart -cmatch 'CodexRemote-fix-2\.5\.9-setup\.exe') 'English Quick Start names the setup installer'
Assert-CcodTrue ($quickStart -cmatch 'CodexRemote-fix-2\.5\.9-windows-x64\.zip') 'English Quick Start names the exact portable artifact'
Assert-CcodTrue ($quickStart -cmatch 'CodexRemote-fix\.exe') 'English Quick Start names the portable double-click entrypoint'
Assert-CcodTrue ($quickStart -cmatch '\.sha256\.txt') 'English Quick Start names the checksum artifact'

$quickStartChineseMatch = [regex]::Match($readmeChinese, '(?ms)^## [^\r\n]+\r?\n(?:\r?\n)?(?=1\.[^\r\n]*\[Releases\])(.*?)(?=^## |\z)')
Assert-CcodTrue $quickStartChineseMatch.Success 'Chinese README exposes a Quick Start section'
$quickStartChinese = $quickStartChineseMatch.Groups[1].Value
Assert-CcodTrue ($quickStartChinese -cmatch 'CodexRemote-fix-2\.5\.8-setup\.exe') 'Chinese Quick Start names the setup installer'
Assert-CcodTrue ($quickStartChinese -cmatch 'CodexRemote-fix-2\.5\.8-windows-x64\.zip') 'Chinese Quick Start names the exact portable artifact'
Assert-CcodTrue ($quickStartChinese -cmatch 'CodexRemote-fix-2\.5\.9-setup\.exe') 'Chinese Quick Start names the setup installer'
Assert-CcodTrue ($quickStartChinese -cmatch 'CodexRemote-fix-2\.5\.9-windows-x64\.zip') 'Chinese Quick Start names the exact portable artifact'
Assert-CcodTrue ($quickStartChinese -cmatch 'CodexRemote-fix\.exe') 'Chinese Quick Start names the portable double-click entrypoint'
Assert-CcodTrue ($quickStartChinese -cmatch '\.sha256\.txt') 'Chinese Quick Start names the checksum artifact'

Expand Down
18 changes: 9 additions & 9 deletions tests/persistence/ReleaseWorkflow.SelfTest.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -229,22 +229,22 @@ Invoke-CcodTest 'package scripts build provenance and workflows retain the relea
Assert-CcodTrue ($release -cmatch '(?ms)^ publish:\r?\n needs: build\r?\n runs-on: windows-latest\r?\n permissions:\r?\n contents: write\s*$') 'only the publish job receives release-write permission'
}

Invoke-CcodTest '2.5.8 documentation matches the portable release, Defender gate, and protected uninstall contract' {
Invoke-CcodTest '2.5.9 documentation matches the portable release, Defender gate, and protected uninstall contract' {
$package = Get-Content -LiteralPath (Join-Path $repositoryRoot 'package.json') -Raw | ConvertFrom-Json
Assert-CcodEqual '2.5.8' ([string]$package.version) 'package metadata is the 2.5.8 release'
Assert-CcodEqual '2.5.9' ([string]$package.version) 'package metadata is the 2.5.9 release'
$changelog = Get-Content -LiteralPath (Join-Path $repositoryRoot 'CHANGELOG.md') -Raw
$releaseSection = [regex]::Match($changelog, '(?ms)^## v2\.5\.8\s*\r?\n(?<body>.*?)(?=^## |\z)')
Assert-CcodTrue $releaseSection.Success 'v2.5.8 release section exists'
Assert-CcodTrue ($releaseSection.Groups['body'].Value.Contains('trusted logon identity adapter')) 'v2.5.8 changelog records the live supervisor startup fix'
$releaseSection = [regex]::Match($changelog, '(?ms)^## v2\.5\.9\s*\r?\n(?<body>.*?)(?=^## |\z)')
Assert-CcodTrue $releaseSection.Success 'v2.5.9 release section exists'
Assert-CcodTrue ($releaseSection.Groups['body'].Value.Contains('Inno Setup installer executable')) 'v2.5.9 changelog records the upload release fix'
$readme = Get-Content -LiteralPath (Join-Path $repositoryRoot 'README.md') -Raw
$quickStart = [regex]::Match($readme, '(?ms)^## Quick start\s*\r?\n(?<body>.*?)(?=^## |\z)').Groups['body'].Value
Assert-CcodTrue ($quickStart.Contains('CodexRemote-fix-2.5.8-setup.exe')) 'English Quick Start names the setup installer'
Assert-CcodTrue ($quickStart.Contains('CodexRemote-fix-2.5.8-windows-x64.zip')) 'English Quick Start names the portable ZIP'
Assert-CcodTrue ($quickStart.Contains('CodexRemote-fix-2.5.9-setup.exe')) 'English Quick Start names the setup installer'
Assert-CcodTrue ($quickStart.Contains('CodexRemote-fix-2.5.9-windows-x64.zip')) 'English Quick Start names the portable ZIP'
Assert-CcodTrue ($quickStart.Contains('CodexRemote-fix.exe')) 'English Quick Start names the portable double-click entrypoint'
Assert-CcodTrue ($quickStart.Contains('Microsoft Defender')) 'English Quick Start documents the local Defender gate'
$readmeZh = Get-Content -LiteralPath (Join-Path $repositoryRoot 'README.zh-CN.md') -Raw -Encoding UTF8
Assert-CcodTrue ($readmeZh.Contains('CodexRemote-fix-2.5.8-setup.exe')) 'Chinese Quick Start names the setup installer'
Assert-CcodTrue ($readmeZh.Contains('CodexRemote-fix-2.5.8-windows-x64.zip')) 'Chinese Quick Start names the portable ZIP'
Assert-CcodTrue ($readmeZh.Contains('CodexRemote-fix-2.5.9-setup.exe')) 'Chinese Quick Start names the setup installer'
Assert-CcodTrue ($readmeZh.Contains('CodexRemote-fix-2.5.9-windows-x64.zip')) 'Chinese Quick Start names the portable ZIP'
Assert-CcodTrue ($readmeZh.Contains('CodexRemote-fix.exe')) 'Chinese Quick Start names the portable double-click entrypoint'
Assert-CcodTrue ($readmeZh.Contains('Microsoft Defender')) 'Chinese Quick Start documents the local Defender gate'
$technical = Get-Content -LiteralPath (Join-Path $repositoryRoot 'docs\TECHNICAL.md') -Raw
Expand Down
Loading
Loading