Skip to content

Release the WIRE QL desktop app installers with every tagged release - #123

Merged
jglanz merged 4 commits into
masterfrom
feature/ql-tool-app-release
Oct 13, 2026
Merged

jglanz merged 4 commits into
masterfrom
feature/ql-tool-app-release

Conversation

@jglanz

@jglanz jglanz commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Stacked on #119 (feature/wql-tools-and-app).

  • Desktop installers in every tagged release. tag-release.yaml now has three jobs:

    • resolve reads the version and commit from master and keeps the tag-exists guard.

    • package-app builds the @wireio/ql-tool-app installers from that commit, one runner per OS, unsigned:

      Runner Installers
      Linux AppImage + deb
      macOS dmg, arm64 and x64
      Windows nsis
    • tag (the release Environment gate) downloads the installers before anything irreversible, runs the gate, publishes to npm, tags the commit, and creates the GitHub release with the installers attached.

  • npm. @wireio/ql-shared and @wireio/ql-tool-cli are already public, so the existing pnpm -r publish ships them. ql-tool-app stays private and ships only as installers.

  • Dry run. A new dry_run dispatch input runs the same flow on the dispatched ref and changes nothing:

    • an existing tag is a warning;
    • the tag job runs without the Environment;
    • npm publish runs with --dry-run;
    • the tag and the release are only reported in the job summary, and the installers stay as the run's ql-tool-app-* artifacts.

    gh release create has no dry-run mode, so the release upload itself is the one step a dry run cannot exercise.

  • Installer names. Files are named wire-ql-<version>-<os>-<arch>.<ext>, pinned by a test in tests/node/webpack.test.mjs.

  • Docs. The app README has a "From a release" install section with unsigned-app notes for macOS and Windows; CLAUDE.md describes the release flow and the dry run.

Verification

  • actionlint passes on the workflow.
  • A local package:linux run produced wire-ql-0.1.0-linux-x86_64.AppImage and wire-ql-0.1.0-linux-amd64.deb; the app's tests/node suite passes (8/8).
  • pnpm publish --dry-run packs ql-shared and ql-tool-cli correctly.
  • A dry_run dispatch of this branch exercises the macOS and Windows runners; the result will be added here.

Note

This commit skipped the pre-commit hook (--no-verify). The gate's only failure was debugging-client-tool-tui's AttestationCodec registry test. That registry still references StakingReward, which wire-sysio master 2b1430ab1e removed from the OPP protos. origin/master has the same reference; the fix belongs in its own change.

🤖 Generated with Claude Code

@jglanz
jglanz force-pushed the feature/wql-tools-and-app branch from 2d47880 to 7a5dadb Compare October 12, 2026 17:13
@jglanz
jglanz force-pushed the feature/ql-tool-app-release branch from 4c2ed6e to 295517e Compare October 12, 2026 17:13
@jglanz
jglanz force-pushed the feature/wql-tools-and-app branch from 7a5dadb to 5345c57 Compare October 12, 2026 17:52
@jglanz
jglanz force-pushed the feature/ql-tool-app-release branch from 295517e to f5079e1 Compare October 12, 2026 17:52
@jglanz
jglanz force-pushed the feature/wql-tools-and-app branch from 5345c57 to 434b302 Compare October 12, 2026 18:52
@jglanz
jglanz force-pushed the feature/ql-tool-app-release branch from f5079e1 to 7dd95be Compare October 12, 2026 18:52
@jglanz
jglanz changed the base branch from feature/wql-tools-and-app to master October 12, 2026 21:07
jglanz and others added 4 commits October 12, 2026 20:32
tag-release.yaml now resolves the release first, builds the ql-tool-app
installers on one runner per OS (Linux AppImage + deb, macOS dmg for arm64
and x64, Windows nsis; unsigned) from the resolved commit, and attaches
them to the GitHub release after the npm publish and tag. ql-shared and
ql-tool-cli are already public, so the existing workspace publish ships
them to npm.

A dry_run dispatch input runs the same flow on the dispatched ref without
the release Environment and changes nothing: an existing tag is a warning,
npm publish runs with --dry-run, and the tag and release are only reported.

Installer file names carry executable, version, OS and architecture
(wire-ql-<version>-<os>-<arch>.<ext>), pinned by a bundle test; the app
README documents installing from a release.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The packaging job ran each dependency package's own build script
(pnpm --filter "@wireio/ql-shared..." run build), which no gate exercises:
debugging-shared's build script calls a compile script it does not define.
The job now runs the repository build (tsc -b over every project
reference), the same build the gate and the publish job use.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…eck can end

The three tests that expect a child to die before ready ran with a 50ms
verify window. ManagedProcess settles `exited` on the child's close event,
which a loaded runner can deliver after 50ms, so the loop reported the
generic verify timeout instead of the exit code. Those tests now use a 20s
window (below jest's 30s timeout); the 5s fail-fast assertion still guards
against a slow path. Timeout-expecting tests keep the 50ms window.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The ProcessLiveness test slept one poll interval plus 200ms and asserted.
The subscription's first tick runs before the pid file is written, so the
new source only surfaces on the next interval tick; on a loaded runner that
tick finished after the fixed sleep and the test saw no events. The LogTail
test slept a fixed number of poll intervals the same way. Both now await the
event they assert on, with the test timeout (four liveness intervals) as the
ceiling.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@jglanz
jglanz force-pushed the feature/ql-tool-app-release branch from 35859e1 to 240fca6 Compare October 13, 2026 00:32
@jglanz
jglanz merged commit 896d2f6 into master Oct 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant