Skip to content

feat(packaging): maintain the AUR packages (t3code-bin, t3code-nightly-bin) in-repo#4128

Open
maria-rcks wants to merge 14 commits into
pingdotgg:mainfrom
maria-rcks:main
Open

feat(packaging): maintain the AUR packages (t3code-bin, t3code-nightly-bin) in-repo#4128
maria-rcks wants to merge 14 commits into
pingdotgg:mainfrom
maria-rcks:main

Conversation

@maria-rcks

@maria-rcks maria-rcks commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

What Changed

Moves the AUR packaging for t3code-bin and t3code-nightly-bin (currently maintained externally in maria-rcks/t3code-aur) into this repo under packaging/aur:

  • PKGBUILDs for stable (t3code-bin) and nightly (t3code-nightly-bin), which repackage the official Linux x64 AppImage from GitHub Releases.
  • A single packaging/aur/scripts/release.sh that resolves the matching release, patches the PKGBUILD (pkgver/pkgrel/sha256), builds with makepkg, regenerates .SRCINFO, and pushes PKGBUILD/.SRCINFO/LICENSE to the AUR.
  • .github/workflows/publish-aur.yml (blacksmith runner, archlinux container) triggered on release: published, with workflow_dispatch inputs to republish a specific tag or bump pkgrel. Without the AUR_SSH_PRIVATE_KEY secret it builds as a dry run and skips the push.
  • Fixes a reported bug where nightly installs kept a stale logo: icons are now installed from the AppImage payload itself with channel-specific names (t3code / t3code-nightly), instead of a single static PNG shared by both channels.

Repo config needed to actually publish: secret AUR_SSH_PRIVATE_KEY (SSH key authorized on the AUR account owning both packages); optional vars AUR_COMMIT_NAME / AUR_COMMIT_EMAIL. Release lookup uses the built-in GITHUB_TOKEN.

Why

AUR packaging currently lives in a separate personal repo with cron-based polling and bot commits. Maintaining it upstream means Linux packages publish automatically on every release, stay in sync with the release pipeline, and aren't dependent on a single external maintainer. The event-driven workflow removes the polling/state-commit machinery entirely.

Verified: both packages build end-to-end in CI (makepkg in an archlinux container), wrong-channel tags are no-ops, pkgrel override works, and the built nightly package ships the correct nightly icon.

Checklist

  • This PR is small and focused

Note

Low Risk
Mostly packaging/CI and localized chat UI; AUR push depends on a repo secret but does not touch app auth or data paths.

Overview
AUR packaging moves into packaging/aur for stable (t3code-bin) and nightly (t3code-nightly-bin), repackaging GitHub Release AppImages. A release.sh script picks the matching tag, patches PKGBUILD metadata/checksums, runs makepkg, and pushes to the AUR over SSH (dry-run without AUR_SSH_PRIVATE_KEY). publish-aur.yml runs that on release: published or manual dispatch. Icons are taken from each AppImage with channel-specific names to fix stale nightly branding.

Chat attachments: image drag-and-drop moves from the composer to the whole ChatView (overlay + addImages on the composer ref). The composer gains a + button and hidden file input for picking images; composer-local drag handlers and highlight styling are removed.

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

Note

Add in-repo AUR packaging and CI workflow for t3code-bin and t3code-nightly-bin

  • Adds PKGBUILDs for t3code-bin (stable) and t3code-nightly-bin (nightly), repackaging the official AppImage with wrapper script, icons, and desktop entry.
  • Adds release.sh to patch PKGBUILD fields, build locally with makepkg, and push to the AUR when AUR_SSH_PRIVATE_KEY is set; otherwise runs as a dry run.
  • Adds a GitHub Actions workflow that triggers on release publication or manual dispatch, builds both packages in an Arch Linux container, and uploads build artifacts.
  • Also moves image drag-and-drop from ChatComposer to ChatViewContent, adding a drop overlay and an explicit attach-images footer button in the composer.

Macroscope summarized 873dde9.

maria-rcks and others added 8 commits July 17, 2026 21:18
…nightly-bin

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ript

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Jul 18, 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

Run ID: 4e0f7087-980e-47dc-9d4f-91bac5236aa3

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jul 18, 2026
-e "s/^pkgrel=.*/pkgrel=${PKGREL:-1}/" \
-e "s/^_upstream_tag=.*/_upstream_tag='$tag'/" \
-e "s/^_upstream_version=.*/_upstream_version='$version'/" \
-e "0,/^ '[0-9a-f]{64}'$/s// '$sha256'/" \

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.

🟡 Medium scripts/release.sh:78

The script copies LICENSE from the repo into the package directory but never updates the corresponding sha256sums entry in PKGBUILD. The sed command on line 78 only patches the first sha256sums entry (the AppImage checksum), leaving the hard-coded LICENSE checksum stale whenever the repo LICENSE changes. This causes makepkg --printsrcinfo (and the subsequent makepkg -f) to fail integrity validation, blocking every subsequent AUR release until the checksum is manually repaired. Consider also updating the LICENSE checksum in sha256sums, or avoid checksumming a locally-copied source file.

🤖 Copy this AI Prompt to have your agent fix this:
In file @packaging/aur/scripts/release.sh around line 78:

The script copies `LICENSE` from the repo into the package directory but never updates the corresponding `sha256sums` entry in `PKGBUILD`. The `sed` command on line 78 only patches the first `sha256sums` entry (the AppImage checksum), leaving the hard-coded `LICENSE` checksum stale whenever the repo `LICENSE` changes. This causes `makepkg --printsrcinfo` (and the subsequent `makepkg -f`) to fail integrity validation, blocking every subsequent AUR release until the checksum is manually repaired. Consider also updating the `LICENSE` checksum in `sha256sums`, or avoid checksumming a locally-copied source file.

Comment thread packaging/aur/scripts/release.sh
Comment thread packaging/aur/scripts/release.sh
@macroscopeapp

macroscopeapp Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

1 blocking correctness issue found. This PR introduces new AUR packaging infrastructure and expanded image attachment UI - both new capabilities rather than simple fixes. Additionally, there are 3 unresolved review comments identifying substantive bugs: a checksum issue in the release script, drag overlay state persistence, and drag-drop bypassing disabled guards.

You can customize Macroscope's approvability policy. Learn more.

devin-ai-integration Bot and others added 5 commits July 20, 2026 00:44
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@github-actions github-actions Bot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jul 20, 2026

@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 2 potential issues.

Fix All in Cursor

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

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 873dde9. Configure here.

const composerRef = useComposerHandleContext() ?? localComposerRef;
const [showScrollToBottom, setShowScrollToBottom] = useState(false);
const [isDraggingFilesOverView, setIsDraggingFilesOverView] = useState(false);
const viewDragDepthRef = useRef(0);

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.

Drag overlay persists after thread change

Medium Severity

The ChatView's file drag state isn't cleared when navigating between drafts or threads. This can leave the "Drop images to attach" overlay visible, blocking the chat UI.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 873dde9. Configure here.

event.preventDefault();
viewDragDepthRef.current = 0;
setIsDraggingFilesOverView(false);
composerRef.current?.addImages(Array.from(event.dataTransfer.files));

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.

View drop ignores attach disabled guards

Medium Severity

The new attach control is disabled when the environment is unavailable or project selection is required, but view-level onViewDrop still calls addImages with no equivalent checks. Users can attach images via drag-and-drop in states where the attach button is intentionally blocked.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 873dde9. Configure here.

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

Labels

size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant