mirror of
https://github.com/nexu-io/open-design.git
synced 2026-09-20 06:15:06 +08:00
main
20 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
34ac405bfe |
fix(release): gate the Thursday patch cut on the previous patch, not the minor base (#7977)
* refactor(release): extract the patch-cut pre-flight out of inline shell Faithful port, no behavior change: resolve-patch-cut.ts computes the same version and the same X.Y.0 gate target the shell did, and runs the same gh release lookup. Moving it out of YAML is what makes the gate decision testable. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * test(release): pin the patch cut on the previous patch, not the minor base Red against the current guard: with release/v0.22.2 cut and unshipped, the pre-flight gates open-design-v0.22.0, finds it published, and cuts v0.22.3. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(release): gate the Thursday patch cut on the previous patch The guard checked the minor base X.Y.0, so it only ever guarded a line's first patch. Once X.Y.0 shipped, X.Y.2, X.Y.3, ... all passed no matter how many unshipped releases had stacked up beneath them. Gate on the release the cut actually stacks on — the highest release/vX.Y.Z below it — which is the same target cut-release.yml uses for the Tuesday minor, and still gives the answer the old minor-base comment wanted (cutting 0.15.1 checks open-design-v0.15.0, not the older 0.14.0). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(release): surface patch gate lookup failures --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
a07dc736fd |
perf(ci): take prerelease validation off the release pipeline, and report it on one live card (#7842)
* perf(ci): make prerelease mac Intel opt-in build_mac_intel is the prerelease critical path: ~33 min on the macos-15-intel fleet against ~21 min for mac arm64 and Windows, which stretches every release-branch push to ~56 min end to end. Gate it behind a new `enable_mac_x64` input that defaults to false, the same shape build_linux already uses, and let publish tolerate a skipped Intel job. Push-triggered prereleases now finish in ~21 min; a manual dispatch can still turn Intel back on. The stable promotion gate is unchanged and still hard-requires platforms.macIntel in the promoted prerelease metadata, so an Intel-less prerelease fails promotion loudly rather than shipping unvalidated. * perf(ci): stop the prerelease pipeline waiting on work it does not need Run 34102146769 took 56m, 42m of which survived turning macOS Intel off. Four things in that 42m were wall clock nobody was buying anything with. Tests no longer sit in front of packaging. functional_e2e, e2e_vitest, daemon_unit_tests and verify take ~11 min; packaging takes ~21 min, and the build jobs needed all four before they could start. They now need only metadata and run alongside the tests. Nothing about the safety of a release changes: `publish` is what writes metadata.json, and it already required all four gates to be `success` — a red suite still cannot ship. What it costs is CI minutes, since a failing gate now stops builds that have already run. The Feishu card stops cloning the repository to read one `git log`. That checkout was `fetch-depth: 0` against a 2.2 GiB pack and took 4m09s to produce a `PREV..CUR` commit list. The list now comes from the compare API, reproducing `git log --no-merges --pretty=format:'%s (%h)'` line for line — verified against 35 commits of real history, where the only difference was a leading space that feishu.ts trims anyway. Every fallback the old script had (no baseline, unreachable commit) still produces an empty changelog rather than a failed notification. Packaged smoke and Apple notarization become opt-in, like Intel already is. Smoke is advisory — `continue-on-error`, so it has never blocked publication — and costs ~2.5 min on the Windows critical path. Notarization is a round-trip to Apple that no prerelease consumer needs. Signing is NOT optional and stays on: prepare-stable.ts requires platforms.mac.signed == true, so an unsigned prerelease could never be promoted. `mac_sign_mode: no` is offered for parity with beta and now correctly reports signed=false rather than lying in the metadata. Windows drops setup-node's pnpm store cache and every job checks out shallow. Measured across four prerelease runs the store cache missed 3 times out of 4, costing 100s/66s/43s to save with no install speedup, and on its one hit traded a 32s restore for a 36s faster install — while competing for the 10 GB cache budget against tools-pack caches worth ~11 min each. Nothing in this workflow reads git history. * perf(ci): let a prerelease ship on the build's schedule, not the tests' prerelease is the internal channel. Its job is to put a package in a colleague's hands so a human can test it; automated CI is a second, parallel opinion about the same commit. Wiring the two in series meant a single flaky suite cost the team a whole day's package — the expensive failure, and the one this pipeline kept producing. The four test jobs (functional_e2e, e2e_vitest, daemon_unit_tests, verify) now gate nothing. They are absent from `build_*` and from `publish`. They still run on every prerelease and their results leave the workflow as outputs — functional_e2e_result and friends, plus a tests_all_green / failed_test_jobs rollup — so the notification layer can raise the alarm without holding the package hostage. Stable is untouched: its promotion gate reads the prerelease metadata and runs its own checks. The packaged smoke suites move for the same reason. They were already `continue-on-error`, so a smoke failure never failed the job — but they sat between the build and the R2 upload, which meant the package waited on them and a hung smoke could still eat the job. Every smoke now runs AFTER "Publish <platform> platform" and "Upload <platform> publish manifest", and every step after that manifest upload is continue-on-error, so nothing post-delivery can fail a build job and retroactively block publish. The results travel through a `test_signals` job rather than the `jobs.<job_id>.result` expression GitHub documents for workflow_call outputs, because actionlint has rejected that property since 2023 (rhysd/actionlint#343) and ci.yml runs actionlint at a pinned version. One consequence to hand to the notification work: a failed advisory job now makes the overall workflow conclusion red even though the package shipped, so `needs.build.result` is no longer the right thing to colour a card by. `version_metadata_url` is the authoritative "did a package ship?" signal and is documented as such. * perf(ci): move prerelease validation out of the pipeline it validates release-prerelease.yml holds one repository-wide concurrency group with cancel-in-progress: false, so any job that outlives `publish` keeps that group held and stops the NEXT prerelease from starting. Making the test jobs advisory did not fix that: they still held the group for 45 minutes after the package had shipped. The pipeline is now metadata -> build_* -> publish plus two dispatcher jobs that nothing depends on. The four code suites, the packaged mac/Windows smoke, and the release card each run in a workflow of their own, keyed on the origin run. The packaged smoke no longer installs electron-builder's output directory on the machine that produced it. It reads the published version metadata, downloads the DMG / setup.exe out of R2, verifies its sha256 sidecar, and writes it to the single path `tools-pack <platform> install` reads - which is why the specs need no changes. That is both a better test and what lets the smoke live on a different runner at all. The release card becomes progressive. A Feishu application bot can PATCH a message it sent, so one card is created when the first platform lands in R2 and edited in place as the rest of the platforms, the code tests, and the smoke report in. A PATCH replaces the whole card, so exactly one job may write it: the watcher owns the message and polls the three runs. The card is withheld until a package exists, because a "building..." card posted at dispatch time becomes a permanent lie when a build dies - with total build failure as the one exception, where silence would hide an incident. macOS Intel goes back to on-by-default: stable ships Intel and stable's gate is a validated prerelease artifact, so an Intel-less prerelease cannot be promoted at all. The switch stays, forwarded as `github.event_name != 'workflow_dispatch' || inputs.enable_mac_x64` - `inputs.enable_mac_x64 || true` would be unturnoffable, because a dispatch with the box unchecked also yields true. Also fixes the signal batch 2 left wrong: a reusable workflow reports failure if any job inside it failed, including work that runs after publication, so `needs.build.result` painted the download card red while its own buttons worked. `version_metadata_url` is non-empty only when publish wrote metadata, and now drives both the header colour and the smoke annotations. Two topology tests were already red on this branch - batch 2 changed the workflow without updating them. Both now assert the new invariant. The existing webhook card stays until the new one has carried a couple of real releases; a gap in release notification is worse than a duplicate. |
||
|
|
8ab7c3d5f1 |
feat(standalone): establish the exact lifecycle and Terminal carrier (#7716)
* feat(standalone): add shell-neutral exact lifecycle * feat(terminal): add native exact cold-start carrier * test(terminal): exercise mutable exact channel heads * feat(standalone): model synced blobs and Shell updates * feat(terminal): exercise the complete Shell lifecycle * feat(release): add the independent exact Terminal line * test(exact): run the full local Terminal release line * feat(terminal): harden exact Sidecar lifecycle * feat(standalone): prove exact update transactions * refactor(standalone): separate shell lifecycle dimensions * refactor(e2e): decouple terminal exact drivers * refactor(terminal): isolate exact sidecar fixture host * feat(terminal): gate handoff on physical retirement * refactor(release): gate exact activation on public acceptance * test(terminal): formalize guarded lifecycle algebra * fix(terminal): guard shell installer handoff * feat(terminal): add exact bootloader handoff * feat(terminal): integrate exact sidecar lifecycle * refactor(exact): rename validation channels * test(terminal): harden exact release acceptance * fix(postinstall): build standalone dependencies first Generated-By: looper 0.11.2 (runner=fixer, agent=codex) * fix(ci): build the native Terminal scene Generated-By: looper 0.11.2 (runner=fixer, agent=codex) * test(ci): cover exact convergence handoff routing Generated-By: looper 0.11.2 (runner=fixer, agent=codex) * fix(exact): isolate terminal validation from main CI * fix(terminal): complete shell update confirmation Generated-By: looper 0.11.2 (runner=fixer, agent=codex) * fix(exact): bind acceptance to installed manifest Generated-By: looper 0.11.2 (runner=fixer, agent=codex) * fix(standalone): block occupied shell installs Generated-By: looper 0.11.2 (runner=fixer, agent=codex) --------- Co-authored-by: Looper <looper@noreply.github.com> |
||
|
|
ab77eafeb1 |
refactor(release): retire dedicated betas and preview lanes (#7058)
* refactor(release): retire dedicated betas and preview lanes * fix(updater): consume dynamic release channels * fix(e2e): narrow counted release versions structurally |
||
|
|
f1a0b60c6c |
chore: unify product name display to OpenDesign repo-wide (#6998)
* chore: unify product name display to OpenDesign repo-wide Rename the user-facing product name from "Open Design" to "OpenDesign" across documentation, web/desktop UI strings, i18n locales, prompts, plugin/skill/design-system content, changelogs, and specs, matching the landing-page rename already in flight. Deliberately excluded so installed-app identity stays untouched: - packages/release PRODUCT_NAME and everything derived from it (app bundle names, installer/registry identity, updater feeds) - tools/pack, tools/release, apps/packaged, landing page (PR #6983) - mocks/ recorded traces and LICENSE - test fixtures and comments that encode real on-disk install paths (Open Design.app, Program Files\Open Design, AppData paths) Validated with pnpm guard, pnpm typecheck, and targeted web/desktop/host test runs over the renamed strings. * fix(web): keep two-letter author monogram for CamelCase brand names authorInitials split words on whitespace only, so the renamed single-token author name "OpenDesign" produced a one-letter monogram. Treat lower-to-upper CamelCase boundaries as word breaks so the avatar fallback stays "OD". * fix(release): restore spaced Windows source artifact names in win.ps1 tools/pack still derives builder outputs from the unchanged PRODUCT_NAME ("Open Design"), so the asset script must look for the spaced filenames. Matches the mac/mac-intel/linux asset scripts, which were already kept on the original names. --------- Co-authored-by: Joey <236967869+joeylee12629-star@users.noreply.github.com> |
||
|
|
7ecd35a746 |
fix(release): guard automated release trains (#6729)
* fix(release): guard automated release trains * fix(release): resolve beta recovery before checkout * style(release): group workflow outputs * fix(release): publish daily beta snapshots without promotion |
||
|
|
e0d7a77230 |
fix(release): align stable notes public origin (#5037)
Co-authored-by: Siri-Ray <2667192167@qq.com> |
||
|
|
0bf1b6d6b8 |
[codex] converge release workflows and stable dry-runs (#4390)
* fix(tools-pack): use junctions for Windows standalone peer deps * fix(desktop): expose IPC during startup * fix(tools-pack): preserve Windows inspect diagnostics * fix(tools-pack): report Windows inspect status errors * fix(packaged): use Electron net fetch for app protocol * fix(packaged): load Windows renderer from web sidecar * fix(desktop): show Windows packaged window during startup * fix(packaged): disable Windows GPU startup * fix(tools-pack): keep Windows core smoke observable * fix(packaged): remove Windows startup probes * fix(tools-pack): trace Windows desktop IPC status * fix(tools-pack): add Windows IPC diagnose loop * fix(release): default beta-s Windows updater feed * chore: clean merged test eof * refactor(release): unify prerelease channel model * chore(release): close prerelease doc escape hatches * refactor(release): converge release channel workflows * fix(release): install toolchain in metadata jobs * fix(release): build release package before contracts * chore(release): bump development version to 0.10.1 * fix(e2e): seed windows packaged smoke runtime config * fix(release): install toolchain for metadata publish * fix(release): materialize betas metadata checkout * chore(release): bump development version to 0.10.2 * fix(release): allow betas metadata cold start from s3 * fix(e2e): support betas packaged update scenarios * fix(release): pass betas channel into packaged smoke * fix(release): set betas channel during self-hosted builds * fix(release): verify counted channel reservations * fix(release): use pnpm cmd for betas windows publish * fix(release): add betas manifest artifact fallback * fix(release): skip beta-s public metadata fetch * fix(release): read beta-s manifests from storage * fix(release): cache beta windows tools-pack builds * fix(release): inline beta mac tools-pack builds * fix(pack): deep sign unsigned mac bundles * docs(pack): document payload-first beta updater validation * fix(release): align preview tools-pack cache flow * fix(release): align prerelease tools-pack cache flow * fix(release): pass github token to prerelease metadata * fix(release): setup pnpm before feishu notify * fix(release): add stable dry-run prepublish flow * fix(release): accept completed prerelease metadata gate * fix(release): require stable release branches * fix(release): converge r2 access checks * fix(updater): use release channel parser for defaults * fix(updater): harden windows payload relaunch * fix(release): converge updater smoke fixture contract * test(e2e): require silent updater fixture output * fix(release): align stable windows smoke build path * fix(ci): include release workspace in validation * fix(ci): repair release validation lanes Generated-By: looper 0.9.10+codex.autoclean (runner=fixer, agent=codex) * fix(ci): restore zero-install Feishu notification Generated-By: looper 0.9.10+codex.autoclean (runner=fixer, agent=codex) --------- Co-authored-by: Looper <looper@noreply.github.com> |
||
|
|
7a1ad1a438 |
feat(packaged): add launcher payload updates (#3812)
* feat(packaged): add launcher payload runtime * ci: focus launcher payload windows smoke * ci: publish beta mac x64 launcher payload * test(e2e): harden payload updater smoke * fix(pack): inject launch config for installed windows smoke * fix(daemon): allow packaged payload resource roots * fix(updater): relaunch after payload update * test(e2e): refresh windows updater UI status * test(e2e): ensure windows smoke reaches main shell * test(e2e): skip onboarding before windows updater smoke * fix(updater): detach windows payload relaunch helper * test(e2e): run payload smoke without updater dry run * fix(desktop): relaunch windows payload updates on quit * fix(updater): preserve installed payload relaunch target * fix(updater): require launcher target for payload updates Generated-By: looper 0.9.5 (runner=fixer, agent=codex) * test(e2e): align mac x64 artifact mode assertion * test(e2e): canonicalize launcher relaunch root * fix(updater): validate launcher payload config before activation Generated-By: looper 0.9.5 (runner=fixer, agent=codex) * fix(updater): require live launcher target for payload updates Generated-By: looper 0.9.5 (runner=fixer, agent=codex) --------- Co-authored-by: Looper <looper@noreply.github.com> |
||
|
|
8f6cdaaba1 |
Harden release-beta-s self-hosted beta lane (#3641)
* Fix Windows smoke launcher payload layout
* Harden release-beta-s runner probe
* Use cmd shell for release-beta-s probe
* Add win beta build script for self-hosted lane
* Keep release-beta-s checkout lightweight
* Use explicit local beta version for release-beta-s
* Install dependencies in beta build script
* Repair Electron dist before Windows beta build
* Add release-beta-s timings and diagnostics
* Polish release-beta-s observability guardrails
* Trace tools-pack cache materialization
* Reuse materialized workspace build cache
* Trace Windows packaging segments
* Trace Windows archive process details
* Reuse installer unpacked materialization
* Preserve reusable Windows unpacked projection
* Add fast smoke telemetry for self-hosted beta
* Cache Windows archive outputs for beta lane
* Tighten fast Windows smoke lane
* Scope Windows beta artifact reporting by target
* Clean stale Windows target artifacts
* Wire Windows Authenticode signing
* Expose self-hosted beta validation modes
* Add core Windows smoke profile
* Decouple core smoke from updater fixture version
* Trace Windows smoke lifecycle steps
* Skip unpacked materialization on NSIS cache hit
* Add Nexu S3 beta publisher
* Harden self-hosted Windows beta lane
* Use Windows PowerShell for publish probe
* Run publish probe via repo script
* Require explicit self-hosted S3 public origin
* Run real installer acceptance for external feeds
* Skip ready-prompt checks for external feeds
* Relax optional self-hosted update inputs
* Tolerate BOM in self-hosted publish probe
* Converge self-hosted beta metadata and signing flow
* Run self-hosted beta metadata prep on the runner lane
* Use Windows PowerShell for self-hosted beta metadata checks
* Bypass execution policy in self-hosted beta metadata checks
* Split self-hosted beta metadata publish
* Suppress mc output in beta publish helpers
* Split Windows NSIS payload cache layers
* Require fresh tool dist metadata
* Preserve Windows overlay payload paths
* Default beta-s gate to core
* Optimize win beta packaging reuse
* simplify windows full smoke lifecycle
* preserve onboarding state after windows upgrade smoke
* fix windows tools-pack test portability
* recover stale tools-pack locks
* Allow auto signing fallback for beta builds
* Add self-hosted beta mac arm64 lane
* Quote self-hosted signing choices
* Run self-hosted beta metadata on mac lane
* Use shallow metadata checkout on self-hosted beta
* Use sparse beta metadata checkout
* Make mac release profile bash-compatible
* Allow file sparse metadata checkout
* Isolate self-hosted metadata checkout
* Clear sparse skip-worktree before mac build
* Isolate self-hosted mac build checkout
* Run self-hosted beta publish without aws cli
* Use unsigned beta prefix for mixed platform publish
* Sparse checkout self-hosted beta publish
* Publish mac beta platform before metadata
* Pass mac publish release profile
* Probe mac signing keychain import
* Expand mac signing preflight variants
* Use sudo keychain helper for self-hosted mac signing
* Route self-hosted mac codesign through sudo wrapper
* Normalize mac signing identity name
* Harden self-hosted mac notarization
* Optimize self-hosted mac release cache
* Fix mac signing helper cleanup
* Retry transient mac notarization uploads
* Keep mac notarization fail-fast
* Reduce mac symlink diagnostics noise
* Normalize self-hosted beta platform inputs
* chore: bump beta base version to 0.9.1
* chore: tune release tools-pack cache retention
* test: add temporary cache validation marker
* chore: key windows nsis base payload by content
* Revert "test: add temporary cache validation marker"
This reverts commit
|
||
|
|
2305a35768 |
ci(release): split Feishu streams — daily=beta, release-push=nightly (#3474)
Follow-up to #3462. Two corrections: - The per-push release/** stream must build the nightly channel (release-stable), not beta. The daily 09:00 stream stays on the lighter beta channel. - The nightly card was missing the macOS Intel download button; release-stable builds mac arm64 + mac Intel (signed) + win unconditionally, so switching that stream to it adds the Intel button for free. Changes: - release-stable.yml: add workflow_call (channel/nightly_version/ref inputs + outputs incl. per-platform download URLs and previous_commit); add ref to every checkout; pin GITHUB_SHA to the resolved build HEAD in metadata/publish; capture the previous nightly commit before publish for the changelog baseline. - release-beta.yml: expose mac_arm64_url + win_url as workflow_call outputs (the rest of its workflow_call interface from #3462 is unchanged; daily still uses it). - notify-release-feishu.yml: call release-stable channel=nightly; CHANNEL_LABEL=Nightly. - notify-daily-feishu.yml: keep calling release-beta; CHANNEL_LABEL=Beta. - notify.ts: channel-agnostic title/changelog via CHANNEL_LABEL; download buttons from explicit per-platform URL outputs (mac_arm64/mac_intel/win/linux) instead of re-fetching metadata.json — guarantees the Intel button on nightly. Ref plumbing mirrors release-beta: scheduled callers run on main but build a release branch, so checkouts take inputs.ref and metadata/publish pin GITHUB_SHA so metadata.json (and the next run's changelog baseline) records the real commit. |
||
|
|
6ffa75aa5b |
ci(release): build beta + notify Feishu on release push and daily (#3462)
Reuse the release-beta pipeline as a workflow_call and add two thin caller
workflows that build a full beta ("nightly") package and post a Feishu card
with download links and the changelog since the previous beta:
- notify-release-feishu: triggers on every push to release/**, debounced
(concurrency cancel-in-progress), notifies FEISHU_RELEASE_WEBHOOK.
- notify-daily-feishu: cron 01:00 UTC (09:00 Asia/Shanghai) + manual; resolves
the active release branch (highest-semver release/vX.Y.Z) and builds it via
the new ref input, notifies FEISHU_DAILY_WEBHOOK.
release-beta gains a workflow_call entry (enable_* booleans + optional ref +
outputs) so callers reuse one build source. Because scheduled callers run on
main but must build a release branch, every checkout takes inputs.ref and the
metadata/publish jobs pin GITHUB_SHA to the resolved build HEAD so the published
metadata.json records the real built commit (and the next run's changelog
baseline stays correct).
The changelog needs zero extra state: the baseline is the previous beta's commit
read from beta/latest/metadata.json before this run overwrites it; download links
come from this build's version metadata.json. notify.ts renders a Feishu
interactive card and supports optional signed bots (FEISHU_*_SIGN_SECRET).
|
||
|
|
bfcafc81fd |
feat(pack): add Windows portable zip target alongside NSIS installer (#2937)
Adds a new `--to zip` (and `--to all`) tools-pack Windows build target that produces a portable `.zip` from the cached `win-unpacked` tree using the bundled 7z. The zip lays files at the archive root so users can extract it anywhere and launch `Open Design.exe` without going through the NSIS installer, addressing the no-install download request. Release plumbing is updated to publish the portable zip and its sha256 beside the existing installer on R2 for beta, preview, and stable channels (default on, gated by `WINDOWS_INCLUDE_ZIP`/`WIN_INCLUDE_ZIP`). The electron-updater `latest.yml` feed continues to point only at the installer; the zip is a manual-download convenience and is intentionally excluded from the in-app updater. Closes #1121 Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code) Co-authored-by: libertecode <libertecode@proton.me> |
||
|
|
526c7f7c26 |
Fix packaged auto-update release validation (#2565)
* fix: tighten packaged updater flow * test: prune noisy extended ui coverage * fix: hide unpublished release artifacts * test: validate release updater channels * fix: align prerelease release namespaces |
||
|
|
bb13eee765 |
chore: optimize CI and beta release runtime (#2231)
* chore(ci): add runtime trace summaries * chore(ci): tighten measured workspace steps * chore(release): tighten beta setup steps * chore(release): slim beta windows smoke * chore(ci): shard daemon tests * chore(ci): harden runtime trace lookup * chore(release): avoid mac pnpm cache in beta * chore(ci): split critical playwright checks * chore(release): publish beta platforms from builders * test(e2e): update beta release workflow expectation * chore(ci): stop gating PRs on nix check * fix(release): keep beta latest complete |
||
|
|
43b1b94c8e | Add preview release channel | ||
|
|
976edaf38e |
test: harden e2e smoke and release reports (#1140)
* test: harden e2e inspect specs * test: wire e2e release reports * chore: bump packaged beta base to 0.6.1 * test: run release smoke vitest directly * test: add suite-owned tools-dev lifecycle * ci: harden stable release packaging * fix(release,e2e): gate stable signing on verify and harden suite cleanup - restore `needs: [metadata, verify]` on the stable release `build_mac`, `build_mac_intel`, `build_win`, and `build_linux` jobs so Apple signing/notarization and Windows release builds cannot run before pnpm guard, typecheck, and layout checks complete on the metadata commit. - in `runToolsDevSuite`, drop the `started` flag and always attempt `stopToolsDevWeb` in `finally`; record stop errors in diagnostics, and when the test body succeeded, escalate the stop failure to the suite result and rethrow — so orphan daemon/web processes from an interrupted `startToolsDevWeb` or a broken shutdown can no longer pass silently. Addresses PR #1140 review feedback from lefarcen and mrcfps. |
||
|
|
cc343f8828 |
ci: optimize beta release packaging cache (#1095)
* ci: optimize beta release packaging cache * fix: version windows builder cache * fix: forward linux app version in container |
||
|
|
7518cfc107 |
feat: add macOS Intel (x64) build support to release workflows (#759)
* feat: add macOS Intel (x64) build support to release workflows
Add build_mac_intel job to both release-beta.yml and release-stable.yml
using macos-13 runners (last Intel-based GitHub Actions runner).
Key changes:
- release-beta.yml: add enable_mac_intel input (default false), build
job, and wire into publish/verify/summary
- release-stable.yml: add always-on build_mac_intel job, wire into
publish (downloads + copies to GitHub Release), verify, and summary
- publish.sh: add ENABLE_MAC_INTEL uploads, outputs, and metadata entry
- verify.sh: add mac-intel URL verification when enabled
- summary.sh: add macOS x64 (Intel) row to platform/report tables
- mac-intel.sh: new asset script for unsigned DMG+ZIP production
Intel builds are unsigned (like Windows). No auto-update feed.
Artifact naming: open-design-<ver>.unsigned-mac-x64.{dmg,zip}
Closes #746
* fix: resolve beta macIntel asset name mismatch (P1)
Add MAC_INTEL_ASSET_SUFFIX to publish.sh (mirroring existing
WIN_ASSET_SUFFIX / LINUX_ASSET_SUFFIX pattern) so that the beta
publish job can correctly locate unsigned Intel artifacts.
- publish.sh: add mac_intel_asset_suffix variable with fallback
- release-beta.yml: pass MAC_INTEL_ASSET_SUFFIX: .unsigned to publish
---------
Co-authored-by: ZengGanghui <zghui0@gmail.com>
|
||
|
|
dcfab797c2 |
[codex] Add stable nightly promotion gate (#962)
* Upload beta e2e spec reports to R2 * Expose beta report URLs in summary * Complete Indonesian deploy locale keys * chore: factor release workflow scripts * chore: bump packaged beta base version * test: wait for mac packaged runtime health * fix: capture mac packaged startup logs * chore: improve mac release build observability * fix: ad-hoc sign unsigned mac builds * chore: diagnose mac packaged startup * fix: relax unsigned mac launch signing * chore: improve mac launch diagnostics * chore: simplify beta mac release artifacts * fix: align packaged mac smoke launch config * fix: externalize mac daemon wasm dependency * chore: require signed stable mac releases * fix: use stable app version for nightly package builds * chore: clean release artifacts after publish * chore: publish beta reports as zip * ci: disable beta mac tools-pack cache * fix: skip mac framework binary symlinks when signing * fix: sign mac framework version bundles * ci: disable beta mac pnpm cache * chore: align stable release reports * ci: require matching nightly before stable release * ci: avoid mac pnpm cache for packaged smoke |