From 53e1b1ba4c7f355d633793ffb0f77072de4b05e4 Mon Sep 17 00:00:00 2001 From: eggfriedrice Date: Mon, 16 Mar 2026 23:02:00 +0000 Subject: [PATCH 1/3] feat(aur): add PKGBUILD template and launcher script for t3code-bin --- aur/PKGBUILD.template | 80 +++++++++++++++++++++++++++++++++++++++++++ aur/t3code-bin.sh | 13 +++++++ 2 files changed, 93 insertions(+) create mode 100644 aur/PKGBUILD.template create mode 100644 aur/t3code-bin.sh diff --git a/aur/PKGBUILD.template b/aur/PKGBUILD.template new file mode 100644 index 000000000..1417c7a23 --- /dev/null +++ b/aur/PKGBUILD.template @@ -0,0 +1,80 @@ +# Maintainer: T3 Tools + +pkgname=t3code-bin +pkgver=__PKGVER__ +pkgrel=1 +pkgdesc='A minimal web GUI for coding agents' +arch=('x86_64') +url='https://github.com/pingdotgg/t3code' +license=('MIT') +depends=( + 'alsa-lib' + 'gtk3' + 'hicolor-icon-theme' + 'libnotify' + 'libsecret' + 'libxss' + 'libxtst' + 'nss' + 'xdg-utils' +) +optdepends=( + 'libappindicator-gtk3: systray indicator support' +) +provides=('t3code') +conflicts=('t3code') +options=('!strip' '!debug') +source=( + "${pkgname}-${pkgver}.AppImage::https://github.com/pingdotgg/t3code/releases/download/v${pkgver}/T3-Code-${pkgver}-x86_64.AppImage" + 't3code-bin.sh' + 't3code-bin.desktop' +) +sha256sums=( + '__SHA256SUM__' + 'SKIP' + 'SKIP' +) +noextract=("${pkgname}-${pkgver}.AppImage") + +prepare() { + chmod +x "${srcdir}/${pkgname}-${pkgver}.AppImage" + "${srcdir}/${pkgname}-${pkgver}.AppImage" --appimage-extract +} + +package() { + install -d "${pkgdir}/opt/${pkgname}" + cp -r "${srcdir}/squashfs-root/"* "${pkgdir}/opt/${pkgname}/" + + # Remove AppImage-specific files + rm -f "${pkgdir}/opt/${pkgname}/AppRun" + rm -f "${pkgdir}/opt/${pkgname}/"*.desktop + rm -f "${pkgdir}/opt/${pkgname}/.DirIcon" + + # Fix permissions + find "${pkgdir}/opt/${pkgname}" -type d -exec chmod 755 {} + + find "${pkgdir}/opt/${pkgname}" -type f -exec chmod 644 {} + + chmod 755 "${pkgdir}/opt/${pkgname}/t3-code-desktop" + chmod 755 "${pkgdir}/opt/${pkgname}/chrome_crashpad_handler" + chmod 4755 "${pkgdir}/opt/${pkgname}/chrome-sandbox" + + # Make shared libraries executable + find "${pkgdir}/opt/${pkgname}" -name '*.so' -exec chmod 755 {} + + find "${pkgdir}/opt/${pkgname}" -name '*.so.*' -exec chmod 755 {} + + + # Launcher script + install -Dm755 "${srcdir}/t3code-bin.sh" "${pkgdir}/usr/bin/t3code" + + # Desktop entry + install -Dm644 "${srcdir}/t3code-bin.desktop" \ + "${pkgdir}/usr/share/applications/t3code.desktop" + + # Icon + install -Dm644 "${pkgdir}/opt/${pkgname}/usr/share/icons/hicolor/1024x1024/apps/t3-code-desktop.png" \ + "${pkgdir}/usr/share/icons/hicolor/1024x1024/apps/t3code.png" + + # Licenses + install -Dm644 "${pkgdir}/opt/${pkgname}/LICENSE.electron.txt" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.electron.txt" + install -Dm644 "${pkgdir}/opt/${pkgname}/LICENSES.chromium.html" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSES.chromium.html" +} diff --git a/aur/t3code-bin.sh b/aur/t3code-bin.sh new file mode 100644 index 000000000..1d5a709b6 --- /dev/null +++ b/aur/t3code-bin.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Launcher for T3 Code (official binary) +# User flags: ~/.config/t3code-flags.conf (one flag per line, # for comments) + +XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" + +T3CODE_USER_FLAGS="" +if [[ -f "${XDG_CONFIG_HOME}/t3code-flags.conf" ]]; then + T3CODE_USER_FLAGS="$(sed 's/#.*//' "${XDG_CONFIG_HOME}/t3code-flags.conf" | tr '\n' ' ')" +fi + +exec /opt/t3code-bin/t3-code-desktop "$@" ${T3CODE_USER_FLAGS} From 28f9290f958140e66e4683b88baae952d13c8574 Mon Sep 17 00:00:00 2001 From: eggfriedrice Date: Mon, 16 Mar 2026 23:02:06 +0000 Subject: [PATCH 2/3] feat(aur): add freedesktop .desktop entry for t3code --- aur/t3code-bin.desktop | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 aur/t3code-bin.desktop diff --git a/aur/t3code-bin.desktop b/aur/t3code-bin.desktop new file mode 100644 index 000000000..404cdc88e --- /dev/null +++ b/aur/t3code-bin.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=T3 Code +Comment=A minimal web GUI for coding agents +Exec=t3code %U +Icon=t3code +Type=Application +Terminal=false +Categories=Development;IDE; +StartupWMClass=T3 Code (Alpha) +Keywords=code;coding;agent;ai;development; From 9133f1430e18875e72fe7b403c679671b3cd24ce Mon Sep 17 00:00:00 2001 From: eggfriedrice Date: Mon, 16 Mar 2026 23:02:11 +0000 Subject: [PATCH 3/3] ci(release): add publish_aur job to auto-update AUR on stable releases --- .github/workflows/release.yml | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8331ba508..38547d5ef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -303,6 +303,53 @@ jobs: release-assets/latest*.yml fail_on_unmatched_files: true + publish_aur: + name: Publish AUR package + needs: [preflight, release] + if: needs.preflight.outputs.is_prerelease == 'false' + runs-on: ubuntu-24.04 + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + ref: ${{ needs.preflight.outputs.ref }} + + - name: Download Linux AppImage artifact + uses: actions/download-artifact@v8 + with: + name: desktop-linux-x64 + path: release-assets + + - name: Compute AppImage SHA256 + id: checksum + run: | + appimage_file=$(ls release-assets/*.AppImage) + sha256=$(sha256sum "$appimage_file" | awk '{print $1}') + echo "sha256=$sha256" >> "$GITHUB_OUTPUT" + echo "AppImage SHA256: $sha256" + + - name: Generate PKGBUILD + env: + PKGVER: ${{ needs.preflight.outputs.version }} + SHA256: ${{ steps.checksum.outputs.sha256 }} + run: | + sed -e "s/__PKGVER__/${PKGVER}/g" \ + -e "s/__SHA256SUM__/${SHA256}/g" \ + aur/PKGBUILD.template > aur/PKGBUILD + + - name: Publish to AUR + uses: KSXGitHub/github-actions-deploy-aur@v4 + with: + pkgname: t3code-bin + pkgbuild: aur/PKGBUILD + assets: | + aur/t3code-bin.sh + aur/t3code-bin.desktop + commit_username: github-actions[bot] + commit_email: 41898282+github-actions[bot]@users.noreply.github.com + ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} + commit_message: "Update to ${{ needs.preflight.outputs.version }}" + finalize: name: Finalize release needs: [preflight, release]