Commit Graph
952 Commits
Author SHA1 Message Date
David Heinemeier HanssonandClaude Opus 5 dbe1db4b03 Read the remote database without depending on bsdtar
The partial-tree guard parsed omarchy.db with bsdtar, which is not installed on
the repository host. Every sync there aborted with "the remote database exists
but could not be read" -- a guard meant to catch a partial tree instead blocked
a complete one, stopping a publish after sign, promote and update had already
succeeded.

GNU tar reads the database fine when it is a seekable file; the pipe was what
defeated it originally, and that is already downloaded to a temp file. tar now
leads, with bsdtar as a fallback for a tar too old to detect zstd.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 04:59:22 -07:00
David Heinemeier HanssonandClaude Opus 5 ca90a19d73 Push every output of a selected pkgbase
--package meant a pkgbase to bin/build and a literal package name to
bin/push-build, so deploy --package nvidia-580xx-utils built three packages and
published one, leaving nvidia-580xx-dkms and opencl-nvidia-580xx behind with no
indication anything was missing. Hit while deploying exactly that package.

Selection now matches on the pkgbase recorded in .PKGINFO as well as on the
package name, so a pkgbase ships all of its outputs and an individual name
still selects just that one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 04:24:38 -07:00
David Heinemeier HanssonandGitHub 9cf3794713 Merge pull request #133 from omacom-io/repo-deploy-command
Build heavy packages locally, publish them from the repo host
2026-08-12 13:10:47 +02:00
David Heinemeier HanssonandClaude Opus 5 51004999e7 Stop an unscoped deploy from rebuilding the whole repository
bin/build asks the local repository database which packages are already built.
A build machine has no such database, so every package looks out of date: an
unscoped 'bin/repo deploy' on this laptop would have built all 108 packages and
published them. Verified with a dry run.

deploy now refuses to run unscoped when that database is absent, and push
refuses the same combination under --yes, where nobody would see the list it
prints before publishing. Both are allowed on the repository host, which has
the database that makes the comparison meaningful.

Also states the split in the README: build, push and deploy are the three
commands that may run off the repository host; everything else works on the
published tree directly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 04:03:31 -07:00
David Heinemeier HanssonandClaude Opus 5 736579a6eb Drop the stale note about arming the build trigger
The warning dated from when .build-host was the release trigger's own setting
and push was a second consumer of it. One setting now names one machine for all
three commands, so there is nothing to keep separate -- and the advice was
wrong regardless: OMARCHY_REPO_HOST is read by the same resolver, so it arms
the trigger exactly as the file does. Only --host is per-invocation.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 03:58:57 -07:00
David Heinemeier HanssonandClaude Opus 5 c2305c52d1 Drop the legacy build-host names
OMARCHY_BUILD_HOST and .build-host were carried as fallbacks through the
rename. Nothing in this checkout ever set either one, so they were a second
name for a setting that has only one real name.

Resolution is now --host, OMARCHY_REPO_HOST, .repo-host.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 03:49:55 -07:00
David Heinemeier HanssonandClaude Opus 5 34326295e9 Name the server OMARCHY_REPO_HOST, not OMARCHY_BUILD_HOST
Builds now happen wherever the operator likes, so naming the destination after
building described the old arrangement rather than the current one. What the
push and deploy commands reach is the machine that serves pkgs.omarchy.org and
holds the signing key: the repository host. It also runs the scheduled builds,
which is why the trigger in omarchy-pkgs release points at the same place.

Resolution moves into helpers/host-helpers.sh, which all three commands now
share instead of repeating: --host, then OMARCHY_REPO_HOST, then .repo-host.
OMARCHY_BUILD_HOST and .build-host keep working as fallbacks, so existing
environments and checkouts are unaffected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 03:46:58 -07:00
David Heinemeier HanssonandClaude Opus 5 fd9c078bf2 Fix nine defects in the push/sync path found in review
The worst was fatal: push passed --skip-prod-check to upload-prebuilt, which
forwards every argument to sign, promote and update as well, and sign rejects
unknown options. Every non-dry-run push and deploy would have uploaded and
verified its artifacts and then failed before signing. upload-prebuilt now
routes publishing flags to sync alone.

The partial-tree guard was weaker than it looked:

  - it counted archive files locally against package names in the remote
    database, and this tree keeps two versions per package, so a checkout with
    a spare version of half the repository could pass while still hiding
    hundreds of packages. It now compares package-name sets and lists what
    would be hidden.
  - it treated any unreadable remote as an empty one, so an auth failure or a
    corrupt database disabled it. Only rclone's "directory not found" now
    counts as a fresh mirror; every other failure aborts.

Also:

  - sync had no set -e, so a failed package upload fell through to publishing
    the database, advertising packages that were never uploaded. Each transfer
    is now checked before the next step.
  - --package with no names silently meant "every package", which under --yes
    could publish everything from one unset variable in a script.
  - push now refuses to run when the host has packages staged from an earlier
    failure, since publishing would sign and promote those too.
  - epoch versions contain a colon, which rsync reads as host:path, so no
    package with an epoch could be transferred. Sources are ./-prefixed.
  - remote paths are quoted for the remote shell.
  - sync spun forever on a missing option value.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 03:39:55 -07:00
David Heinemeier HanssonandClaude Opus 5 c5f5f1c12c Add bin/repo deploy and --host on every server-facing command
deploy runs build then push, which is the whole workflow on a local build
machine. It resolves the build host before building so a missing --host fails
in a second rather than after a long compile.

--host now overrides $OMARCHY_BUILD_HOST and .build-host on deploy, push, and
the build trigger in omarchy-pkgs release, so a server can be named per
invocation without arming the release auto-trigger.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 03:23:30 -07:00
David Heinemeier HanssonandClaude Opus 5 bf53101bbf Add bin/repo push and stop sync from deleting production
Heavy packages build faster on a local machine, but there was no way to get
the artifacts to the server: bin/upload-prebuilt publishes to the rclone
remote from whatever tree it runs in, so the local -> host hop was manual.

bin/repo push rsyncs build-output artifacts to the host, verifies checksums,
and runs upload-prebuilt over ssh. Signing stays on the host, which is the
only machine with the key and the only one holding a complete repository.

Publishing from a local checkout was worse than merely unsupported. sync ran
rclone sync --delete-after against a tree that pkgs.omarchy.org/ gitignores,
so on any machine that had not run a full release it would have deleted the
production repository -- guarded only by a y/N prompt that --skip-prod-check
turns off. Package uploads are now additive, deletion moves behind --prune,
and sync refuses to publish a database built from a tree holding fewer
packages than the remote already lists.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 03:13:06 -07:00
David Heinemeier HanssonandClaude Opus 5 799a98a456 Compress the nvidia 580xx packages with maximum zstd
The build image compresses at zstd's default level, which leaves these
unstripped driver blobs 22% larger than they need to be. Measured against the
packages on the quattro-beta3 ISO:

  nvidia-580xx-utils        359.4 -> 276.2 MiB
  lib32-nvidia-580xx-utils   74.2 ->  48.8 MiB
  nvidia-580xx-dkms          85.5 ->  79.8 MiB

That is 114 MiB off the ISO's offline mirror, which stores packages
essentially uncompressed inside squashfs, so it comes straight off the image.
The dkms package rides along on its pkgbase.

Carried as .omarchy patches so they survive AUR syncs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 00:55:43 -07:00
David Heinemeier HanssonandClaude Opus 5 bdbf7182c0 Compress openai-codex-desktop with maximum zstd
The build image sets COMPRESSZST to zstd's default level, which leaves this
1.3 GB Electron tree at 448 MB -- larger than the 334 MB deb it repackages.
Maximum zstd brings it to 323 MB, beating xz on both size and decompression
speed, for ~4 extra minutes of build time.

Carried as an .omarchy patch so it survives AUR syncs. pkgrel picks up the
Omarchy suffix accordingly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 00:18:27 -07:00
David Heinemeier HanssonandClaude Opus 5 653b8c36c3 Add openai-codex-desktop
Official ChatGPT/Codex desktop app, now shipping native Linux debs from
OpenAI. Fast ring, so it lands in stable alongside edge.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 00:18:27 -07:00
David Heinemeier HanssonandGitHub ae31e81113 Merge pull request #131 from spencerbull/update-linux-ptl-7.1.8
Update linux-ptl to 7.1.8
2026-08-12 08:47:41 +02:00
David Heinemeier HanssonandGitHub 0fa718b900 Merge pull request #132 from tobi/update-omasnap-1.10.0
Update omasnap to 1.10.0
2026-08-12 08:47:13 +02:00
Ryan Hughes 2d8f35f43f Update 2026-08-12 00:14:02 -04:00
Ryan Hughes f8d8671514 Release omarchy 4.0.0beta3 2026-08-12 00:13:36 -04:00
Ryan Hughes 155ff25666 Add a rebuild option 2026-08-11 23:58:45 -04:00
Spencer Bull 08f84ccc43 Update linux-ptl to 7.1.8 2026-08-11 22:45:17 -05:00
Ryan Hughes f6c8d3d33b Handle prerelease 2026-08-11 23:42:39 -04:00
Ryan Hughes f609e6a31e Add omarchy-pkgs 2026-08-11 23:36:37 -04:00
Ryan Hughes 9323f13db1 Release omarchy 4.0.0rc1 2026-08-11 23:36:37 -04:00
Ryan Hughes abec5dd439 Add bin/omarchy-pkgs release command
One-command releases for the omarchy + omarchy-settings pair:
  bin/omarchy-pkgs release v4.0.0 | latest | rc [--commit sha] [--base X.Y.Z]

Rewrites both PKGBUILDs in lockstep (same _tag/_commit/pkgver/sha256sums,
pkgrel reset to 1), normalizes upstream tag forms to the vercmp-safe
attached rcN convention, refuses downgrades against the published edge DB,
regenerates and verifies checksums from a cached mirror clone, commits and
pushes to master, and triggers the build host when OMARCHY_BUILD_HOST is
configured. RCs stay on edge; finals are promoted with bin/repo migrate.
Includes a self-test covering tag normalization and pacman ordering, and a
README runbook.
2026-08-11 22:21:23 -04:00
Ryan Hughes 855942303f Pin omarchy-settings dependency to exact pkgver
omarchy-settings-dev provides omarchy-settings (unversioned), so an
unversioned dependency let the dev package satisfy stable omarchy's
settings requirement, allowing a mixed dev/stable install. A versioned
dependency (omarchy-settings=${pkgver}) can only be satisfied by the
real settings package from the same pinned commit and forces the pair
to upgrade together. Verified: requesting only omarchy on a system with
the -dev pair installed replaces both with the stable pair.
2026-08-11 22:19:58 -04:00
Ryan Hughes 0daad9992a Add commit-pinned release packages omarchy and omarchy-settings
Stable-track counterparts of the -dev packages. Source is pinned to a
single shared upstream commit with a real sha256 (pacman 7 validates
checksums on commit-pinned git sources), versioned per the attached-rcN
convention so vercmp orders rc1 < rc2 < final. Seeded at 4.0.0rc1 from
the quattro tip because no upstream 4.x tag exists yet and the packaging
requires the quattro tree (v3.8.x has no shell/ or etc/).

Both packages stay off the fast ring: RCs publish to edge only; stable
receives finals via bin/repo migrate.
2026-08-11 21:21:10 -04:00
Tobi Lutke d0858f5df3 Update omasnap to 1.10.0 2026-08-11 20:02:00 -04:00
David Heinemeier Hansson 04e5d2d5db Update ttfx to v0.3.1 2026-08-11 13:56:08 -07:00
David Heinemeier HanssonandGitHub 3c4590ca0b Merge pull request #126 from scottjones/tobi-try-arch-any
Mark tobi-try arch=any
2026-08-11 12:29:50 +02:00
David Heinemeier HanssonandGitHub 4b3856b58b Merge pull request #129 from tobi/add-omasnap
Update omasnap to 1.0.6
2026-08-11 12:29:31 +02:00
David Heinemeier HanssonandGitHub aa36bfac58 Merge pull request #130 from tobi/update-omatrack-0.9.10
Update omatrack to 0.9.10
2026-08-11 12:29:23 +02:00
David Heinemeier Hansson 12d7bce4d7 Update herdr to 0.8.0.r13 with upstream window titles and agent option replay 2026-08-11 09:56:17 +02:00
Tobi Lutke 8ba7f114c6 Update omatrack to 0.9.10 2026-08-10 21:41:49 -04:00
Tobi Lutke 4e3a29d6dc Update omasnap to 1.0.6 2026-08-10 21:38:53 -04:00
Tobi Lutke 9bad7a181b Update omasnap to 1.0.5 2026-08-10 19:15:45 -04:00
David Heinemeier HanssonandGitHub a70e95993c Merge pull request #128 from tobi/add-omasnap
Add omasnap screenshot editor
2026-08-10 23:18:44 +02:00
Tobi Lutke dcce643017 Add omasnap screenshot editor 2026-08-10 17:09:58 -04:00
David Heinemeier HanssonandClaude Opus 5 91169b149b Update ttfx to v0.3.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 14:03:48 -07:00
David Heinemeier Hansson d0dbcd269c Update herdr to 0.8.0.r12 with handoff and agent option fixes 2026-08-10 21:44:53 +02:00
David Heinemeier Hansson 360539db48 Update herdr to 0.8.0.r11 with window title caching fix 2026-08-10 21:28:37 +02:00
David Heinemeier Hansson 906d7dce0d Update herdr to 0.8.0.r10 with window title delivery fixes 2026-08-10 21:21:27 +02:00
David Heinemeier HanssonandClaude Opus 5 0433b2ac30 quickshell-git: drop patches, bump to 0.3.0.r20.g28771c7
Both fixes we carried are upstream now, in the only two commits made
since our pin: 43d4fa9 strips the crash relaunch environment and closes
the info fd, and 28771c7 makes IpcHandler deregister through the
registry it registered with rather than re-resolving its engine
generation.

Upstream reaches the IPC fix differently - IpcHandlerRegistry became a
QObject held in a QPointer, where we kept a raw back-pointer cleared
from ~IpcHandlerRegistry - but it covers the same two cases: a handler
outliving its QML context, and a registry destroyed before its handlers.

Built clean without the patches at 0.3.0.r20.g28771c7-1.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 09:04:40 -07:00
David Heinemeier Hansson ae07234a01 Update herdr to 0.8.0.r9 with outer terminal window titles 2026-08-10 16:46:12 +02:00
David Heinemeier Hansson d3f4a7027e Update herdr to 0.8.0.r8 with simplified agent option replay 2026-08-10 16:46:12 +02:00
David Heinemeier Hansson 0bd0db67ef Update ttfx to v0.2.1 2026-08-10 06:30:21 -07:00
David Heinemeier Hansson 2f5c729894 Update ttfx to v0.2.0 2026-08-10 06:09:52 -07:00
David Heinemeier Hansson 3d083329b6 Update ttfx to v0.1.3 2026-08-10 04:18:52 -07:00
David Heinemeier Hansson cf56a7afa4 Update to latest 2026-08-10 10:52:48 +02:00
David Heinemeier HanssonandGitHub 61bfd13f6f Merge pull request #127 from omacom-io/add-ttfx
Add ttfx — terminal text effects as a single static binary
2026-08-10 10:52:07 +02:00
David Heinemeier Hansson aaa76102b7 Update herdr to 0.8.0.r6 now that all patches are upstream 2026-08-10 10:18:27 +02:00
David Heinemeier HanssonandClaude Fable 5 554a670410 ttfx: bump to v0.1.2
v0.1.1 was withdrawn upstream — it was tagged without the Cargo.toml
bump, so its binary reported 0.1.0. v0.1.2 corrects the version string.

Rebuilt with makepkg on x86_64; packaged binary reports ttfx 0.1.2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 16:15:24 -07:00