Skip to content

Add goreleaser setup for releasing the installer - #419

Merged
zerebos merged 16 commits into
wailsfrom
feat/wails/goreleaser
Jul 17, 2026
Merged

Add goreleaser setup for releasing the installer#419
zerebos merged 16 commits into
wailsfrom
feat/wails/goreleaser

Conversation

@zerebos

@zerebos zerebos commented Jul 16, 2026

Copy link
Copy Markdown
Member

This pull request introduces a comprehensive overhaul of the build and release pipeline for the BetterDiscord Installer. The project now uses GoReleaser for cross-platform packaging and publishing, with all workflows, documentation, and developer tooling updated to match. The frontend and backend build/test processes are unified and streamlined, and new developer conveniences are provided via a Taskfile.yml. Documentation is updated to reflect new platform requirements, installation methods, and build instructions.

Build and Release Pipeline Modernization

  • Introduced a new .goreleaser.yaml for GoReleaser-based cross-platform builds, packaging, and publishing (Linux, macOS, Windows), including Homebrew and winget integration. Builds are simplified, universal macOS binaries are provided, and all artifacts are consistently named.
  • GitHub Actions workflows (ci.yml, release.yml) now use GoReleaser for all release and snapshot builds, replacing manual Wails build steps and custom artifact uploads. CI also now runs frontend tests and validates the GoReleaser config. [1] [2] [3] [4] [5]

Developer Tooling and Automation

  • Added a Taskfile.yml providing common build, test, check, and release tasks for local development, further simplifying cross-platform workflows and onboarding.

Documentation Updates

  • Updated README.md to document new platform requirements, supported platforms, and installation methods (including Homebrew and winget). Build instructions and troubleshooting for unsigned/notarized binaries are clarified. [1] [2] [3] [4] [5]

Platform and Dependency Adjustments

  • Updated Linux dependency instructions and CI to require libgtk-3-dev (not libgtk-3-0), and clarified minimum supported versions for each OS. [1] [2] [3]

Repository Structure and Maintenance

  • Updated documentation to describe new and reorganized source directories, scripts, and configuration files.

These changes modernize and standardize the build and release process, making local development, CI, and end-user installation more robust and maintainable.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds a GoReleaser configuration, a Taskfile for task automation, and several helper scripts to build and package the installer across Windows, macOS, and Linux. Feedback on the changes focuses on improving the robustness of the build scripts, including handling leading 'v' prefixes in version parsing, ensuring atomic downloads of external tools, using safer delimiters in sed commands, and cleaning up generated Windows resource files (*.syso) during clean tasks.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread scripts/winres/main.go
Comment thread scripts/build-appimage.sh
Comment thread scripts/render-plist.sh Outdated
Comment thread Taskfile.yml
@zerebos

zerebos commented Jul 17, 2026

Copy link
Copy Markdown
Member Author

/gemini review latest changes

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a comprehensive release and packaging pipeline using GoReleaser and Taskfile, adding build scripts for Linux (AppImage), Windows (winres), and macOS (.app bundles). It also updates the README, configures platform-specific behaviors (such as GDK_BACKEND on Linux and explicit dialog buttons for macOS), and updates frontend testing and linting configurations. The review feedback highlights three key improvement opportunities: correcting an invalid extends key in the ESLint flat config (v9) which causes a TypeError, explicitly handling the file Close() error in scripts/winres/main.go to prevent silent write failures, and pinning the appimagetool download in scripts/build-appimage.sh to a stable release instead of a continuous one to ensure build reproducibility.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread frontend/eslint.config.js
Comment thread scripts/winres/main.go Outdated
Comment thread scripts/build-appimage.sh Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR modernizes the BetterDiscord Installer’s release process by switching to GoReleaser for cross-platform packaging/publishing, and aligns CI, scripts, and documentation to the new build/release flow.

Changes:

  • Added a GoReleaser-based release configuration and updated GitHub Actions workflows to run release/snapshot builds via GoReleaser.
  • Introduced helper scripts for frontend builds, macOS plist rendering, Windows resource generation, and Linux AppImage packaging.
  • Updated developer tooling (Taskfile) and documentation to reflect new build/release and installation paths.

Reviewed changes

Copilot reviewed 17 out of 19 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
Taskfile.yml Adds developer shortcuts for dev/build/check/snapshot workflows.
scripts/winres/main.go Generates Windows .syso resources for GoReleaser go build releases.
scripts/render-plist.sh Renders macOS Info.plist with the release version for bundling.
scripts/build-frontend.sh Builds the frontend for embedding into the Go binary.
scripts/build-appimage.sh Packages Linux builds into an AppImage and zips it for distribution.
README.md Updates platform support, downloads, package manager install instructions, and build docs.
go.mod Adds dependencies required for Windows resource generation (and related indirect deps).
go.sum Updates module checksums corresponding to new/updated dependencies.
frontend/vite.config.ts Updates Vite/Vitest integration for Svelte testing behavior.
frontend/src/setupTests.ts Switches jest-dom setup to the Vitest-specific entrypoint.
frontend/eslint.config.js Tweaks ESLint flat config to avoid flaky type-aware linting for JS config files.
build/darwin/Info.release.plist Adds a release-friendly Info.plist template for GoReleaser bundling.
backend_linux.go Forces a preferred GTK backend ordering on Linux to avoid double titlebars on KDE Wayland.
app.go Ensures question dialogs have explicit buttons (notably for macOS behavior).
api/controller.go Applies explicit dialog buttons consistently across controller dialogs.
.goreleaser.yaml Introduces GoReleaser config for OS-specific builds, archives, Homebrew cask, and winget.
.gitignore Ignores generated .syso files.
.github/workflows/release.yml Replaces manual per-OS build/upload steps with GoReleaser-based release runs.
.github/workflows/ci.yml Adds frontend tests + GoReleaser config validation and snapshot build coverage in CI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Taskfile.yml Outdated
Comment thread Taskfile.yml
Comment thread Taskfile.yml
Comment thread scripts/build-appimage.sh Outdated
@zerebos
zerebos merged commit 15e0bfc into wails Jul 17, 2026
7 checks 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.

2 participants