Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
8 changes: 4 additions & 4 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/app",
"version": "0.2.14",
"version": "2026.4.28",
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
"description": "",
"type": "module",
"exports": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ describe("electron builder app-update config", () => {
const config = createConfig("prod")
expect(config.productName).toBe("PawWork")
expect(config.appId).toBe("ai.pawwork.desktop")
expect(config.artifactName).toBe("pawwork-${os}-${arch}.${ext}")
expect(config.artifactName).toBe("pawwork-${os}-${arch}-${version}.${ext}")
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
expect(config.publish).toMatchObject({ owner: "Astro-Han", repo: "pawwork" })
expect(createConfig("prod").mac?.extendInfo).toMatchObject({
LSHasLocalizedDisplayName: true,
Expand Down
2 changes: 1 addition & 1 deletion packages/desktop-electron/electron-builder.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ async function writeLocalizedMacDisplayName(resourcesDir: string, channel: Chann
}

const getBase = (): Configuration => ({
artifactName: "pawwork-${os}-${arch}.${ext}",
artifactName: "pawwork-${os}-${arch}-${version}.${ext}",
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
directories: {
output: "dist",
buildResources: "resources",
Expand Down
2 changes: 1 addition & 1 deletion packages/desktop-electron/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@opencode-ai/desktop-electron",
"private": true,
"version": "0.2.14",
"version": "2026.4.28",
"type": "module",
"license": "Apache-2.0",
"homepage": "https://pawwork.ai",
Expand Down
182 changes: 92 additions & 90 deletions packages/desktop-electron/scripts/verify-release.test.ts

Large diffs are not rendered by default.

44 changes: 28 additions & 16 deletions packages/desktop-electron/scripts/verify-release.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,28 @@ type VerificationInput = {
const DEFAULT_REPO = "Astro-Han/pawwork"
const FETCH_TIMEOUT_MS = 15_000

const REQUIRED_ASSETS = [
"pawwork-mac-arm64.dmg",
"pawwork-mac-arm64.zip",
"pawwork-mac-arm64.zip.blockmap",
"pawwork-mac-x64.dmg",
"pawwork-mac-x64.zip",
"pawwork-mac-x64.zip.blockmap",
"pawwork-win-x64.exe",
"pawwork-win-x64.exe.blockmap",
"latest.yml",
"latest-mac.yml",
]
export function releaseAssetNames(version: string) {
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
return [
`pawwork-mac-arm64-${version}.dmg`,
`pawwork-mac-arm64-${version}.zip`,
`pawwork-mac-arm64-${version}.zip.blockmap`,
`pawwork-mac-x64-${version}.dmg`,
`pawwork-mac-x64-${version}.zip`,
`pawwork-mac-x64-${version}.zip.blockmap`,
`pawwork-win-x64-${version}.exe`,
`pawwork-win-x64-${version}.exe.blockmap`,
"latest.yml",
"latest-mac.yml",
]
}

function windowsUpdaterAsset(version: string) {
return `pawwork-win-x64-${version}.exe`
}

function macUpdaterAssets(version: string) {
return [`pawwork-mac-arm64-${version}.zip`, `pawwork-mac-x64-${version}.zip`]
}

export function parseUpdaterFileUrls(source: string) {
const urls: string[] = []
Expand Down Expand Up @@ -170,23 +180,25 @@ export function verifyStartupLog(source: string, expectedTag: string) {
export function verifyReleasePayload(input: VerificationInput) {
const failures: string[] = []
const assetNames = new Set(input.release.assets.map((asset) => asset.name))
const version = releaseVersion(input.release.tag_name)
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
Comment thread
Astro-Han marked this conversation as resolved.
Resolved

if (input.release.draft) failures.push(`Release ${input.release.tag_name} is still a draft`)
if (input.release.prerelease) failures.push(`Release ${input.release.tag_name} is marked as a prerelease`)

for (const asset of REQUIRED_ASSETS) {
for (const asset of releaseAssetNames(version)) {
if (!assetNames.has(asset)) failures.push(`Missing release asset: ${asset}`)
}

const latestUrls = input.latestYml === undefined ? [] : parseUpdaterFileUrls(input.latestYml)
verifyReferencedAssets("latest.yml", latestUrls, assetNames, failures)
if (!hasUpdaterEntry(latestUrls, "pawwork-win-x64.exe")) {
failures.push("latest.yml does not include pawwork-win-x64.exe")
const winUpdaterAsset = windowsUpdaterAsset(version)
if (!hasUpdaterEntry(latestUrls, winUpdaterAsset)) {
failures.push(`latest.yml does not include ${winUpdaterAsset}`)
}

const latestMacUrls = input.latestMacYml === undefined ? [] : parseUpdaterFileUrls(input.latestMacYml)
verifyReferencedAssets("latest-mac.yml", latestMacUrls, assetNames, failures)
for (const asset of ["pawwork-mac-arm64.zip", "pawwork-mac-x64.zip"]) {
for (const asset of macUpdaterAssets(version)) {
if (!hasUpdaterEntry(latestMacUrls, asset)) failures.push(`latest-mac.yml does not include ${asset}`)
}

Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "0.2.14",
"version": "2026.4.28",
"name": "opencode",
"type": "module",
"license": "Apache-2.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/util/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/util",
"version": "0.2.14",
"version": "2026.4.28",
"private": true,
"type": "module",
"license": "Apache-2.0",
Expand Down
Loading