Commit Graph
54 Commits
Author SHA1 Message Date
winewill 0f21742b25 fix(macos): apply ZIP compression when skipping notarization 2026-10-22 13:51:49 +08:00
winewill 5110ca9153 perf(desktop): integrate Windows packaging and align compression defaults 2026-10-22 11:21:41 +08:00
winewill a12c0dfe46 revert(windows): drop unproven packaging I/O pool default 2026-10-20 20:33:54 +08:00
winewill d0664c9a7c perf(windows): match runtime I/O pool to bounded readers 2026-10-20 19:58:51 +08:00
winewill 8c56ebbb3b perf(windows): overlap package and runtime preparation 2026-10-20 19:14:15 +08:00
winewill fb20e72e96 perf(windows): isolate package cache measurements and configure compression 2026-10-20 15:01:09 +08:00
winewill df12de44bb perf(desktop): default final macOS ZIP compression to level 3 2026-10-20 13:47:34 +08:00
winewill 147fee4186 Merge pull request #6350 from deepseek-harness/perf/windows-packaging
perf(desktop): batch Windows workspace tarball packing
2026-10-19 11:33:39 +08:00
Tianyi Cui 091d6ed6be feat(desktop): use local branding for unsigned packages 2026-10-18 15:06:16 +08:00
winewill e826d5bf33 perf(desktop): batch Windows workspace tarball packing 2026-10-16 14:08:14 +08:00
winewill fdbe2bce47 feat(desktop): separate update channels and confirm releases before approval 2026-10-13 16:14:41 +08:00
winewill 1379394224 fix: verify and number unnotarized macOS artifacts 2026-10-12 19:11:01 +08:00
winewill a98c6aae78 build: manage macOS runner service and optional notarization 2026-10-12 18:01:44 +08:00
winewill c7921dbf0f fix(windows): address preset preparation and review findings 2026-10-09 18:42:22 +08:00
winewill 8ac0f9b7f5 fix(windows): keep local preset auto versions independent of upload settings 2026-10-09 15:26:28 +08:00
winewill 373aec3d30 build(windows): add machine presets and signed CI packaging 2026-10-09 15:18:56 +08:00
Tianyi Cui 4b3c366501 chore(desktop): print the DMG path after packaging 2026-10-07 08:40:14 +08:00
Tianyi Cui 2604a4b13a feat(desktop): make local macOS packaging configuration-free 2026-10-07 02:42:09 +08:00
Tianyi Cui 0853aeb0ee feat(desktop): support local unsigned macOS DMG packaging 2026-10-07 02:08:30 +08:00
winewill 0181baae5b Merge branch 'master' into build/windows-release-scripts
Adopt the `unsignedArtifacts` build path master introduced, in place of
the directory this branch was joining by hand for automatic numbering.
2026-09-21 16:14:26 +08:00
winewill 1b6451a647 fix(desktop): follow the documented release version rules
Review found that `apps/desktop/README.md#release-versions` and the
2026-09-16 version-derivation note already specify this convention, and
that three of their requirements were reversed without saying so. The
rules themselves are right; what was wrong was leaving them undocumented
and rejecting one of the forms they prescribe.

A stable base takes `-test.YYYYMMDD.index`, which validation refused
because such a version ranks below its base. That ordering is the point:
the form belongs to a test feed that never serves the production
release. Both READMEs, the older note, and a new note now record which
requirements this change reverses and why.

Three defects the review found, each reproducible:

- `afterPack` compared the bundled runtime against the product version,
  which broke installed-update qualification: that flow passes a runtime
  whose version was deliberately rewritten. The expected version is now
  a parameter the preparer supplies, and `verifyDesktopRuntime` says
  "bundled X is not the expected Y" rather than naming Electron.
- Upload could only learn the published version from a shell variable,
  conflicting with "release fields come only from the target file". It
  reads the completion record packaging wrote, and a mismatch now prints
  the version that record holds.
- Automatic numbering read one listing page and one fixed directory. It
  now follows every page, discards a listing it could not finish rather
  than reusing an index that would overwrite a published installer,
  bounds the request through the client's own timeout, and reads the
  directory an unsigned build actually writes.

Also: `npm run` and `yarn run` set `npm_execpath` too, so the pnpm
resolution checks the path names pnpm; the argument separator can arrive
after a run script's preset arguments, not only first; and the toolchain
probe, parser, build commit, and tarball readers now have specs.
2026-09-21 16:04:08 +08:00
winewill 4ab8fbfacc fix(desktop): name the commit a build records instead of its provenance
The concrete-terms gate forbids "provenance": the repository asks for the
exact source, field, or identity a value holds. The module records one
commit and whether its tree was dirty, so it and its callers say that.

The toolchain step also has to stay out of the way of the packaging
entry's error-recording test, which fakes the host platform and would
otherwise report the absent Windows compilers rather than the failure it
exercises. The test mocks the probe, as it already does for the release
environment and the signing keychain, and expects the new stage.
2026-09-21 15:26:29 +08:00
winewill ee0fc82267 fix(desktop): check the bundled runtime against the product version
Injecting a build version renamed the Electron shell but not the dsh
runtime packed into it, and afterPack required the two to be equal, so
every build carrying a build version failed after packaging finished.
The bundled runtime is the dsh package at the product version, which is
what the check now compares against; the app already reports the shell
version and the bundled runtime version separately to the update policy.

Rename the flag to --build-version. The repository already has
DOWNLOAD_TEST_RELEASE_ID for the opaque test feed directory, so calling
a version a release id invited a reader to confuse the two. Accept a
forwarded `--` as well, because `pnpm run <script> -- --build-version x`
passes the separator through as an argument and every following option
would otherwise parse as a second target.
2026-09-21 14:45:35 +08:00
winewill 950ed3f6df feat(desktop): publish a build version without rewriting the manifests
Packaging a build for a test feed or a colleague required bumping the
version in 295 manifests plus the lockfile first, because the version a
build publishes was only ever read from the checkout. Those edits cannot
be committed, so every such build left the working tree dirty, and the
`<version>.<date>.<sequence>` convention behind them lived only in the
operator's memory.

The version a build publishes is now an input. `--release-id` names it,
`--release-id auto` numbers it after the builds already published to the
destination bucket (falling back to local artifacts, since a fresh CI
checkout has none), and it reaches electron-builder through
extraMetadata, the update feed, and the upload validation as one value.
The manifests keep the product version, aligned with the dsh npm
package, and a release still publishes exactly that.

Validation goes through `semver` itself, because `electron-updater`
compares feed versions with `semver.gt` against the installed
`app.getVersion()`: a build version must outrank the product version it
extends, which holds for `0.1.6-alpha.2.20260921.1` over
`0.1.6-alpha.2` and cannot hold on a stable version, where a fourth
release number is not a version at all.

Two things a build could not previously answer for itself:

- Artifacts now carry the commit they were packaged from and whether
  that checkout was dirty, so a build handed to a colleague is traceable
  without a tag.
- A production upload tags that commit as `desktop-v<version>` once the
  artifacts are public, and reports what to run by hand rather than
  failing an upload that already completed. Test and local builds are
  deliberately left untagged.

A toolchain step now probes tar and the Windows installer compiler
before the first build step, so a host that cannot finish the sequence
says so in seconds rather than minutes.
2026-09-21 14:23:48 +08:00
07akioni 76427b4c5f Merge remote-tracking branch 'origin/master' into codex/pr-4553 2026-09-20 16:30:59 +08:00
winewill db7ee5f487 build(desktop): parallelize Windows signature cache hits 2026-09-20 15:32:37 +08:00
07akioni 552bf8a869 Merge master into desktop Office ASAR fix 2026-09-20 14:00:04 +08:00
07akioni 6d7a5f9cc3 fix(desktop): verify archived descriptors and harden Office resolution 2026-09-18 17:01:17 +08:00
winewill 870b0099c6 fix(desktop): retain packaging errors and restore unconfigured proxies 2026-09-18 16:36:33 +08:00
07akioni 54d46ad4d4 fix(desktop): unpack and verify native Office conversion 2026-09-18 16:25:29 +08:00
winewill fa6941971a Merge origin/master into perf/macos-packaging 2026-09-18 15:58:57 +08:00
winewill 750bf4988e fix(desktop): initialize Windows cache under stage ownership 2026-09-18 15:37:05 +08:00
winewill d4ed1d93d8 feat(desktop): share Windows runtime signature cache across worktrees 2026-09-18 15:37:05 +08:00
winewill e0264148b0 perf(desktop): configure macOS packaging concurrency and retain phase logs 2026-09-18 11:54:54 +08:00
winewill 5a409fc771 fix(desktop): sign all Windows native dependencies before packaging 2026-09-17 21:31:31 +08:00
winewill bfe6beb517 fix(desktop): preflight Windows signing before builds 2026-09-16 12:32:11 +08:00
winewill 9fefcd7c06 fix(desktop): prepare unattended macOS signing from required p12 2026-09-16 11:46:48 +08:00
winewill b37687c141 fix(desktop): sign bundled Windows runtime before validation 2026-09-16 11:31:41 +08:00
winewill 63dd8fb80d feat(desktop): add ordinary and mandatory update flows 2026-09-16 10:48:23 +08:00
winewill c47a2c16b4 feat(desktop): load platform packaging settings from local dotenv files
Load target-owned Windows and macOS release settings, validate them before
preparation, and provide a configuration-only check command. Share the local
settings with upload, installer tests, and manual macOS signature checks.

Exercise English and Chinese installer fixtures using visible UI labels and
cover registered installation paths with trailing separators.
2026-09-14 12:47:08 +08:00
07akioni bebf88de4f Use Electron Node runtime and replace Windows installations by directory 2026-09-11 15:52:05 +08:00
07akioni 42123ef019 fix(desktop): tighten parallel notarization checks 2026-09-10 17:12:45 +08:00
07akioni 710d7b5c33 Merge latest fix/bundle-speed and resolve desktop documentation conflicts 2026-09-10 11:37:57 +08:00
07akioni 8ce9b21ea9 Merge master into fix/bundle-speed and preserve desktop runtime changes 2026-09-10 11:25:04 +08:00
07akioni 7814ccdfd9 Merge fix/bundle-speed into fix/parallel-macos-notarization 2026-09-10 11:02:53 +08:00
07akioni fc7abdcfb5 feat: 优化 windows 安装包打包 2026-09-09 19:18:34 +08:00
winewill 9c14f2785f perf(desktop): parallelize macOS notarization 2026-09-09 15:52:46 +08:00
imccyu 7264906f99 refactor(native): rename package family to node-addon-system 2026-09-08 20:49:10 +08:00
07akioni 8e4d3bab9f feat: 优化打包方式、启动速度 2026-09-08 16:39:17 +08:00
07akioni fe0b7f2814 fix(desktop): move host out of CLI package 2026-09-04 16:21:45 +08:00