Files
PerishFireandGitHub 6efac8887e Improve Windows beta packaging and installer flow (#768)
* Optimize Windows packaged web output

* Fix packaged contracts runtime build

* Optimize Windows packaged size pruning

* Prune Windows root Next payload

* Remove Windows bundled Node runtime

* Prune Windows standalone duplicate Next

* Add tools-pack cache foundation

* Cache Windows packaged build layers

* Cache Windows workspace builds

* Cache Electron-ready Windows app

* Split Windows tools-pack module

* Cache Windows dir build outputs

* Split Windows pack build modules

* Document Windows NSIS smoke namespace limits

* Move Windows NSIS smoke note to agents guide

* Optimize Windows beta packaging

* Bump packaged beta base version

* Improve Windows installer namespace UX

* Improve Windows tools-pack cache keys

* Stabilize Windows beta cache version keys

* Cache Windows workspace build outputs

* Optimize windows release beta cache layers

* Cache windows release dependencies

* Trim windows release cache before save

* Refresh windows tools-pack cache key

* Improve windows installer preflight prompts

* Fallback NSIS installer strings to English

* Fix Windows installer cleanup and preflight

* Improve Windows NSIS state logging

* Fix system NSIS Persian language alias

* Use long-path removal for Windows uninstall

* Fix mac tools-pack tests on Windows

* Address Windows packaging review feedback

* Fix Windows installer cache namespace isolation

* Include web output mode in Windows tarball cache key

* Use unique Windows release cache save keys
2026-05-07 16:44:15 +08:00

2.8 KiB

tools/pack

Follow the root AGENTS.md and tools/AGENTS.md first. This tool owns the repo-external packaged build/start/stop/logs command surface.

Owns

  • Local packaging orchestration for packaged Open Design artifacts.
  • mac build/install/start/stop/logs/uninstall/cleanup smoke commands.
  • Windows NSIS build/install/start/stop/logs/uninstall/cleanup/list/reset smoke commands.
  • Windows registry observation/cleanup must go through reg.exe and stay scoped to entries matching the namespace install/uninstaller paths.
  • Windows lifecycle logs must expose NSIS automation logs/markers/timings in addition to app runtime logs.
  • Linux AppImage build/install/start/stop/logs/uninstall/cleanup smoke commands.
  • Linux headless (no-Electron) install/start/stop via --headless flag on install, start, and stop.
  • Linux containerized builds via electronuserland/builder Docker image for distro-agnostic glibc compat.
  • Consuming sidecar/process/path primitives from @open-design/sidecar-proto, @open-design/sidecar, and @open-design/platform.

Does not own

  • Product business logic.
  • Sidecar protocol definitions.
  • A second process identity model.
  • Product/business update runtime integration.

Rules

  • Do not hand-build --od-stamp-* args; use createProcessStampArgs with OPEN_DESIGN_SIDECAR_CONTRACT.
  • Do not use port numbers in data/log/runtime/cache path decisions. Namespace decides paths; ports are only transient transports.
  • Release artifacts keep canonical app identity (Open Design.app on mac, Open Design.exe inside the Windows installer); local tools-pack installs may use namespace-scoped install paths only as a developer multi-instance validation convention.
  • Do not let namespace-named .app installs change data/log/runtime/cache path conventions.
  • Use --portable for public/release artifacts so packaged config does not bake local tools-pack runtime roots from the build machine.
  • Pack resource files used by electron-builder belong under tools/pack/resources/; do not point pack logic at Downloads, web public assets, docs assets, or other app-owned resource paths.
  • For ordinary Windows NSIS smoke tests, use short namespaces such as rg, smoke, or nsis-a. NSIS extracts deeply nested Next.js standalone files under the namespace-scoped install directory; long namespaces can push installed paths past the traditional Windows 260-character limit even when builder win-unpacked output is correct. During merge regression, namespace regression-merge-nsis produced an installed path length of 264 characters and missed next/dist/server/route-matcher-providers/helpers/cached-route-matcher-provider.js in the installed directory, while the same NSIS smoke passed with namespace rg. Use long namespaces only when intentionally testing installer path-length behavior.