Commit Graph
1026 Commits
Author SHA1 Message Date
Tobi Lutke e60a5e68fb omasnap: update to 1.19.0 2026-08-23 14:57:53 -04:00
Tobias Lütke a4913226a5 omasnap: drop unused grim dep; declare OFL-1.1 for Neucha
1.17.1 captures in-process via ext-image-copy-capture, so grim is unused.
Neucha is bundled (same MIT + OFL-1.1 pattern as omacalc/omawrite).
2026-08-23 13:13:04 +00:00
Tobi Lutke 9bdc7217df omasnap: update to 1.17.1 2026-08-22 17:14:06 -04:00
Tobi Lutke e5da646242 omasnap: update to 1.16.0 2026-08-21 20:12:20 -04:00
David Heinemeier HanssonandGitHub 811c1e2cb6 Merge pull request #181 from omacom-io/quickshell-qt-abi-rebuild
Rebuild quickshell-git against Qt 6.11.2, and notice next time
2026-08-20 13:53:58 +02:00
OmabotandCodex XHigh bed7636394 Read pkgver through one parser in sync-aur
apply_pkgrel_override compares the checked-in pkgver against the incoming one to decide whether Omarchy's pkgrel metadata has gone stale, but read the two sides differently: previous_pkgver came from get_pkgbuild_field, which strips quotes, while current_pkgver was parsed again in place and kept them. A PKGBUILD writing pkgver='1.0' therefore compared unequal to itself, and the pkgrel metadata of an unchanged package was deleted on every sync.

spotify, rustdesk and limine-mkinitcpio-hook all quote pkgver. None carries pkgrel metadata today, so nothing has been losing a suffix, but rebuild_on writes exactly that metadata and would have had it thrown away on the next sync.

Reading through the same accessor rather than parsing a second time removes the divergence instead of correcting one side of it.

🤖 Generated by Opus 5 in Claude Code. Reviewed by Codex XHigh.

Co-Authored-By: Codex XHigh <codex@openai.com>
2026-08-20 04:28:15 -07:00
OmabotandCodex XHigh 1b14682aca Bump unless every trigger is recorded and matches
A review at xhigh found several ways this command could report success while delivering nothing, which is the exact failure it exists to prevent.

A trigger named in rebuild_on but missing from rebuilt_against was never examined, because the comparison walked the record rather than the declared list. Adding a dependency to a package already opted in left that dependency untracked forever. The comparison now walks the declared triggers, so a name the record does not carry reads as changed.

That also retires the separate baseline path. Recording a package's triggers without bumping pkgrel certified a build nobody had checked: a package already broken by a release that moved before it opted in would be recorded as current and never rebuilt. Opting in now costs one rebuild, which is much the cheaper mistake.

A bumped version was only checked against the checked-in one. The floor is what users already have, so a checkout that had fallen behind the repository could be bumped to a version pacman orders below the package it means to replace, with the record advancing regardless. The published database is now the floor, and an unreadable one warns rather than blocks.

Metadata that did not parse dropped its package out of an unscoped run without a word, an unreadable rebuild_on being indistinguishable from an absent one. It is now reported and fails the run.

The workflow reads versions from mirror.omarchy.org, the mirror the x86_64 builder itself uses, rather than whichever mirror the container defaulted to. A mirror running ahead of the builder would record a version the build never linked against, and nothing re-fires once the record matches.

aarch64 stays uncovered and is documented as such: those builds resolve from Arch Linux ARM, one record cannot describe two architectures, and only x86_64 is published today.

bin/sync-rebuilds --self-test covers each of these against a throwaway repository root with pacman and curl stubbed.

🤖 Generated by Opus 5 in Claude Code. Reviewed by Codex XHigh.

Co-Authored-By: Codex XHigh <codex@openai.com>
2026-08-20 04:28:15 -07:00
Omabot ced6963010 Rebuild quickshell-git against Qt 6.11.2
Arch shipped qt6-base 6.11.2-2 on 2026-08-20, and the published 0.3.0.r20.g28771c7-1, built against 6.11.1, stopped starting: undefined symbol _ZN23QUntypedPropertyBindingC1EP23QPropertyBindingPrivate, version Qt_6_PRIVATE_API. quickshell-check.hook caught it post-transaction, but detecting is all it does, so pacman logged the failure and omarchy-update-restart went on to restart a shell whose binary could no longer launch.

The git rev has not moved, so the rebuild only reaches anyone through a pkgrel bump. rebuild_on names the three Qt packages quickshell actually links against: qt6-base for Core, Gui, Widgets, Network, DBus and OpenGL, qt6-declarative for Quick and the Qml libraries, qt6-wayland for WaylandClient. rebuilt_against is seeded with the versions this rebuild will link against, so bin/sync-rebuilds starts from a correct baseline and fires on the next Qt release rather than repeating this one.

🤖 Generated by Opus 5 in Claude Code.
2026-08-20 03:44:56 -07:00
Omabot 2fe4803bbe Rebuild packages when what they link against moves
A package that links Qt private API has to be rebuilt whenever qt6-base moves, because Qt_6_PRIVATE_API symbols are not covered by the soname and pacman upgrades Qt out from under the installed binary while the dependency stays unversioned. Nothing here noticed. Both version gates ask whether the package's own source moved, and for a VCS package pinned to a commit that answer stays no through every Qt release.

Unlocking the build gate would not have been enough on its own. A rebuild that reuses the published version string produces a package pacman never offers anyone, so the trigger has to edit git and bump pkgrel, which is why it sits beside sync-aur and sync-upstream rather than inside check-versions or the builder. Once pkgrel moves, both existing gates already do the right thing untouched.

Packages opt in with rebuild_on in .omarchy/package.json. bin/sync-rebuilds records what each was last bumped for in rebuilt_against and compares that to core, extra and multilib, ignoring testing and kde-unstable because those are not what the builder links against. A package with no record yet is only recorded, never bumped: what its published build linked against is not knowable from here, so the first run establishes the baseline. For an AUR-synced package the bump is written as the dotted Omarchy pkgrel suffix in the metadata as well, since the next sync replaces the PKGBUILD wholesale and would otherwise drop it.

🤖 Generated by Opus 5 in Claude Code.
2026-08-20 03:44:56 -07:00
David Heinemeier HanssonandGitHub dd01fcc560 Merge pull request #177 from omacom-io/remove-deadweight-packages
Remove packages Arch has since absorbed
2026-08-20 10:18:19 +02:00
OmabotandClaude Opus 5 0607b4ece4 Remove packages Arch has since absorbed
intel-lpmd, pinta and umu-launcher arrived together in the bulk AUR import of 2026-05-07, and all three have since been deleted from the AUR, which is what happens when Arch moves a package into its own repositories. extra now carries intel-lpmd 0.1.0-4 and pinta 3.1.2-2, and multilib carries umu-launcher 1.4.4-1, against the 0.1.0-2, 3.1.2-1 and 1.1.3-1.1 checked in here.

Nothing noticed because bin/sync-aur treats a missing AUR package as a warning rather than an error, so the sync has completed green every run since May while these three sat frozen.

They were never reachable in any case: pacman stops at the first repository carrying a name, and [omarchy] is ordered below core, extra and multilib, so every machine has been resolving the official builds. That also makes the umu-launcher patch here dead code -- it stripped the build down from the AUR's dependency list, but multilib's package is what actually gets installed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 00:28:37 -07:00
David Heinemeier HanssonandGitHub 7b6e307e53 Merge pull request #169 from omacom-io/t3code-desktop-name
Drop "(Alpha)" from the T3 Code desktop entry
2026-08-19 16:50:45 +02:00
Omabot f6d441c235 Drop "(Alpha)" from the T3 Code desktop entry
The entry comes from upstream's AppImage rather than a hand-written one, because that is what carries the t3code:// scheme handlers, and it arrives named "T3 Code (Alpha)" from electron-builder's productName. That name is stale: the app's own code calls it `legacyUserDataDirName` and has already moved its data to ~/.config/t3code, so the launcher was advertising an identity upstream has moved off.

Rewrite Name= alongside the Exec= rewrite already there. The scheme handlers, the MimeType line and the rest of upstream's entry are untouched.

pkgrel goes to 2 because 0.0.33-1 is already published, and a packaging-only change reaches an installed machine only through a new release.

🤖 Generated by Opus 5 in Claude Code.
2026-08-19 07:39:16 -07:00
David Heinemeier HanssonandGitHub fb0ffaadc9 Merge pull request #168 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-08-19 15:03:00 +02:00
ryanrhughesandgithub-actions[bot] 97fe236208 chore: sync AUR packages 2026-08-19 12:52:51 +00:00
OmarchybotandGitHub 454462ec75 Merge pull request #157 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-08-19 12:15:29 +02:00
David Heinemeier HanssonandGitHub 1e7031933d Merge pull request #167 from omacom-io/t3code-bin
Add t3code-bin, the T3 Code desktop app
2026-08-19 05:04:17 -05:00
OmabotandCodex XHigh 7ee0003106 Keep the sandbox up on hardened kernels, and stop deleting what we have not read
Three fixes from a review of the previous commit.

Chromium's sandbox helper ships setuid, the way Arch's own electron and chromium packages ship theirs. Dropping --no-sandbox was right, but it left the app relying on unprivileged user namespaces alone: on linux-hardened, or anywhere else they are denied, Electron falls back to the helper and aborts because it is not root-owned 4755.

The AppImage's usr/ tree is now read before it is removed. Deleting it wholesale is correct for what upstream ships today, and the version bumps arrive unattended, so a release that starts putting something needed in there would have had it dropped on the way past without anyone seeing it. Anything that is not a known icon or a known compatibility library stops the build instead.

The upstream hook checks that the feed still names the asset the PKGBUILD builds. It hashes whatever the feed points at, so a rename — or an arm64 build reaching the Linux feed first — would have pinned that file's checksum to a URL nobody fetches, and the failure would have surfaced a build later as a checksum mismatch.

🤖 Generated by Opus 5 in Claude Code. Reviewed by Codex XHigh.

Co-Authored-By: Codex XHigh <codex@openai.com>
2026-08-19 02:56:22 -07:00
David Heinemeier HanssonandGitHub a9ceb83b17 Merge pull request #151 from tobi/update/omatrack-1.2.0
Update omatrack to 1.2.0
2026-08-19 04:52:19 -05:00
Omabot 17b06216fb Own the T3 Code PKGBUILD instead of syncing the AUR's
The AUR package installs the AppImage payload as it comes out of the image: AppRun, .DirIcon, the app's own desktop file and six compatibility libraries — libgconf, libappindicator, libindicator, libXss, libXtst, libnotify — bundled for distributions that do not ship them. Arch does, and nothing in the tree links the bundled copies anyway, so they were only along for the ride. The launcher's APPDIR, PATH, XDG_DATA_DIRS and GSETTINGS_SCHEMA_DIR exports existed to serve that layout, and CODEX_CLI_PATH is not a variable the app reads at all.

So the tree now goes to /usr/lib/t3code as a plain Electron install, next to how openai-codex-desktop ships. Cleaning that up meant rewriting most of package(), which is more than a patch should carry over an upstream we do not control, hence a local PKGBUILD and an .omarchy/upstream.sh that follows the electron-builder feed the app updates itself from.

Three things the AUR package lost that this keeps: the AppImage's own 16px-512px icons, rather than a separately downloaded 1024px PNG; upstream's desktop entry, which carries the t3code:// scheme handlers a hand-written one drops; and libnotify in depends, which Electron dlopens for notifications.

🤖 Generated by Opus 5 in Claude Code.
2026-08-19 02:41:15 -07:00
David Heinemeier HanssonandGitHub 12b322dd5c Merge pull request #164 from omacom-io/auto/sync-upstream
chore: sync upstream releases
2026-08-19 04:34:56 -05:00
David Heinemeier HanssonandGitHub 42bfdff000 Merge pull request #165 from tobi/update-omasnap-1.15.0
omasnap: update to 1.15.0
2026-08-19 04:34:30 -05:00
Omabot ab154a00dd feat(t3code-bin): add T3 Code desktop from the AUR
T3 Code is an open-source control plane for coding agents — Claude Code, Codex, OpenCode, Cursor and Grok driven from one desktop app, on the user's own subscriptions. Upstream ships a Linux x86_64 AppImage only, and the AUR's t3code-bin already tracks it, so this syncs from there in the fast ring.

One Omarchy patch: the AUR launcher runs Electron with --no-sandbox. Chromium falls back to a user-namespace sandbox when it finds no setuid helper, which is what happens on Arch, so the flag only turns the sandbox off. Verified both ways against the built package — sandboxed it reaches display setup, and only with namespaces restricted does it abort on the setuid helper.

🤖 Generated by Opus 5 in Claude Code.
2026-08-19 02:28:30 -07:00
ryanrhughesandgithub-actions[bot] 4d0ef37f05 chore: sync AUR packages 2026-08-19 06:48:27 +00:00
dhhandgithub-actions[bot] 2df2f8ccbc chore: sync upstream releases 2026-08-18 19:03:10 +00:00
Tobi Lutke 687fbf9e3d omasnap: update to 1.15.0 2026-08-18 13:13:47 -04:00
David Heinemeier HanssonandGitHub c2b3796ad9 Merge pull request #162 from omacom-io/auto/sync-upstream
chore: sync upstream releases
2026-08-17 15:44:28 -05:00
dhhandgithub-actions[bot] 7629aaa583 chore: sync upstream releases 2026-08-17 19:03:59 +00:00
David Heinemeier HanssonandGitHub 045740e78f Merge pull request #156 from jdx/codex/mise-bin
feat(mise-bin): add optimized mise binaries
2026-08-17 03:06:46 -05:00
OmarchybotandGitHub 977803a2ea Merge pull request #160 from omacom-io/ttfx-0.3.2
Update ttfx to v0.3.2
2026-08-17 09:22:05 +02:00
Omabot 6284fcf437 Update ttfx to v0.3.2 2026-08-17 00:20:45 -07:00
default 68460950b4 feat(mise-bin): add optimized mise binaries 2026-08-16 18:32:07 +00:00
Ryan HughesandGitHub c409cb6d6a Merge pull request #120 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-08-16 10:49:44 -04:00
Tobi Lutke f02cc65ba6 Update omatrack to 1.2.0
Pin the local PKGBUILD to the signed v1.2.0 release commit.
2026-08-15 18:06:52 -04:00
ryanrhughesandgithub-actions[bot] 51cc23684d chore: sync AUR packages 2026-08-15 18:34:51 +00:00
David Heinemeier HanssonandGitHub 7e448b9031 Merge pull request #149 from omacom-io/codex-desktop-upstream-feed
Track ChatGPT desktop from OpenAI's feed instead of the AUR
2026-08-15 18:32:13 +02:00
David Heinemeier HanssonandClaude Opus 5 f92de9c440 Make the upstream rewrite verify its own result
A second review pass found the PKGBUILD rewriting could still go wrong in ways
the pattern matching did not anticipate: an array element carrying a ")" in a
comment left the tail of the old array behind, and jq's "$" also matches before
a trailing newline, so a pkgver of "1.0\n" passed validation and then broke sed
after the checksum arrays had already been written.

Rather than chase each shape, prove the result. Every edit now lands on a
scratch copy that is parsed with bash -n and read back to confirm it holds the
version and checksums we meant to write, and only then replaces the PKGBUILD in
a single rename. Corruption that slips past the matching fails loudly with the
original untouched instead of landing in a pull request.

The validation anchors are \A and \z accordingly, empty checksum lists are
rejected rather than written as '', and the hook picks the newest stanza with
vercmp so it agrees with the comparator the updater uses.

Also stop the launcher probing /.config when HOME and XDG_CONFIG_HOME are both
unset, and require a regular file, so a directory at that path is skipped
instead of crashing the app on startup.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 08:34:42 -07:00
David Heinemeier HanssonandClaude Opus 5 1a61278911 Take over openai-codex-desktop from the AUR
OpenAI ships the ChatGPT desktop app several times a week and the AUR
packaging trails it -- as of this commit by a full version, 26.803.81509
against 26.810.52044. Every sync we took from there was a sync we could have
taken from OpenAI directly.

So track OpenAI's own Debian repository instead. Its per-architecture package
index carries the version and SHA256 of every deb, which makes an update two
small HTTP requests rather than a 750 MB download, and the pool keeps old
versions, so the URLs pinned here stay resolvable after the next release.

Omarchy now maintains the package outright: the max-zstd patch is simply part
of the PKGBUILD, chatgpt-launcher.sh is ours, and the Arch REUSE files are
gone -- they annotated packaging paths (.SRCINFO, keys/**, .nvchecker.toml)
that do not exist here. The app's own license still ships; package() installs
upstream's copyright file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 08:18:54 -07:00
David Heinemeier HanssonandClaude Opus 5 01a566f01a Add bin/sync-upstream for packages that track a vendor release feed
Some vendors publish a release feed of their own that is faster and more
precise than anyone's packaging of it. A package opts in with an
.omarchy/upstream.sh hook that reports the newest release as JSON, and the
driver rewrites pkgver, the checksum arrays the hook names, and pkgrel.

Writes are guarded on both ends: every assignment the update will touch is
verified to exist before anything is written, so a hook naming an array the
PKGBUILD lacks fails with the file untouched rather than half rewritten; and
pkgver is held to pacman's character set, because it lands in a file makepkg
sources as shell.

Ordering is vercmp's, not sort -V's -- they disagree about whether 1.0a
precedes 1.0, and pacman is what decides if a published package is an upgrade.
That is also why the workflow runs in an Arch container rather than straight on
the runner.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 08:18:54 -07:00
David Heinemeier HanssonandClaude Opus 5 5575275941 Update aether to v4.28.9
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 11:37:10 -07:00
David Heinemeier Hansson bb66b9dafc Release omarchy 4.0.0 2026-08-14 08:23:21 -07:00
David Heinemeier Hansson 85551de4f0 Release omarchy 4.0.0rc6 2026-08-14 08:13:27 -07:00
Ryan Hughes d3298050bb Remove tag requirement 2026-08-14 11:08:39 -04:00
David Heinemeier Hansson c24302e65e Release omarchy 4.0.0rc5 2026-08-14 00:31:33 -07:00
David Heinemeier Hansson e4e7b9abf9 Release omarchy 4.0.0rc4 2026-08-13 13:53:24 -07:00
David Heinemeier Hansson b252a1cfb3 Latest from AUR 2026-08-13 11:58:32 -07:00
David Heinemeier HanssonandGitHub c9cdd594de Merge pull request #145 from tobi/add-grok-bot
Add grok-bot 0.18.0
2026-08-13 17:17:43 +02:00
Tobi Lutke dbee603e5b Add grok-bot 0.18.0
Package the official Grok Bot Linux .deb (internal name: sand) for Arch.
Wraps /opt/Grok Bot/sand with a Wayland launcher and grok-bot desktop entry.

Linux has no latest feed; update-pkgver.sh resolves version+commit from the
darwin-arm64 sand feed and HEAD-checks the Linux deb before pinning.
2026-08-13 10:17:24 -04:00
David Heinemeier Hansson 84b86195cd Release omarchy 4.0.0rc3 2026-08-13 06:54:43 -07:00
David Heinemeier HanssonandGitHub 143a1697b0 Merge pull request #142 from axelfontaine/dbxcli-bin
Add dbxcli-bin from AUR
2026-08-13 14:52:56 +02:00