Skip to content

feat(packaging): add deb and rpm desktop targets - #5139

Open
bigpod98 wants to merge 15 commits into
pingdotgg:mainfrom
bigpod98:main
Open

feat(packaging): add deb and rpm desktop targets#5139
bigpod98 wants to merge 15 commits into
pingdotgg:mainfrom
bigpod98:main

Conversation

@bigpod98

@bigpod98 bigpod98 commented Jul 31, 2026

Copy link
Copy Markdown

What Changed
Added additional outputs to packaging script.

Why
Allows output of 2 linux packaging systems Deb and RPM
issue #4030

Checklist
This PR is small and focused
I explained what changed and why
I included before/after screenshots for any UI changes
I included a video for animation/interaction changes


Open in Devin Review

Note

Low Risk
Changes are confined to the desktop artifact build script, tests, and npm/gitignore entries; no production app runtime or auth logic is modified.

Overview
Adds DEB and RPM Linux desktop packaging alongside the existing AppImage flow, with npm scripts dist:desktop:deb and dist:desktop:rpm writing artifacts to packaging-output/ (also gitignored).

For deb and rpm targets, the build stages a POSIX shell launcher installed as /usr/bin/t3. It sets ELECTRON_RUN_AS_NODE=1 and execs the packaged t3code binary against the unpacked server entry apps/server/dist/bin.mjs, with install paths derived from the product name (Alpha vs Nightly).

Linux package metadata is expanded: maintainer, vendor, synopsis, syncDesktopName, plus staged package fields (homepage, license, desktopName). deb and rpm each get explicit runtime depends lists and fpm mappings for the launcher.

Reviewed by Cursor Bugbot for commit 1b6acb1. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add DEB and RPM desktop build targets with a /usr/bin/t3 headless launcher

  • Adds dist:desktop:deb and dist:desktop:rpm npm scripts in package.json that invoke scripts/build-desktop-artifact.ts for Linux x64 builds, outputting to packaging-output/.
  • For DEB and RPM targets, the build now stages an executable POSIX shell script at t3 (mapped to /usr/bin/t3) that runs the server in headless mode via the packaged Electron binary with ELECTRON_RUN_AS_NODE=1.
  • Linux package metadata is enriched with maintainer, vendor, synopsis, homepage, license, and desktop name fields, plus explicit dependency lists for each package format.
  • packaging-output/ is added to .gitignore.

Macroscope summarized 1b6acb1.

bigpod98 and others added 14 commits July 16, 2026 21:12
Install a t3 launcher in DEB and RPM artifacts that runs the bundled server through Electron's Node mode, while preserving t3code as the desktop command. Cover both package mappings and production/nightly install paths with tests.
Pin electron-builder's standard RPM requirements and add alsa-lib, libsecret, and mesa-libgbm so desktop and headless commands work on minimal installations without relying on weak dependencies.
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ba1370db-a36c-4ae6-9ffc-fc01f53e6bed

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 31, 2026
# Conflicts:
#	scripts/build-desktop-artifact.test.ts
#	scripts/build-desktop-artifact.ts

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1b6acb1. Configure here.

`exec ${quotePosixShellArgument(desktopExecutable)} ${quotePosixShellArgument(serverEntry)} "$@"`,
"",
].join("\n");
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Wrong headless launcher entry path

High Severity

The renderLinuxHeadlessLauncher function generates a path for the server entry (resources/app.asar.unpacked/...) that incorrectly assumes the server bundle is unpacked. Linux builds (deb/rpm) do not unpack this bundle, causing the /usr/bin/t3 CLI launcher to fail with an ENOENT error.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1b6acb1. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants