Commit Graph
100 Commits
Author SHA1 Message Date
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
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
David Heinemeier HanssonandGitHub a70e95993c Merge pull request #128 from tobi/add-omasnap
Add omasnap screenshot editor
2026-08-10 23:18:44 +02: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
David Heinemeier HanssonandClaude Fable 5 32cf2939a7 ttfx: point at renamed repo, bump to v0.1.1
The repo is now omacom-io/ttfx, matching the binary and package name, so
the source URL and archive checksum change with it (the tarball's
top-level directory is the repo name). v0.1.1 adds NOTICE and a
standard-form MIT LICENSE, both now installed.

Rebuilt and verified with makepkg on x86_64.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 16:12:17 -07:00
David Heinemeier HanssonandClaude Fable 5 23d7d6c4e8 Add ttfx: terminal text effects as a single static binary
Rust port of terminaltexteffects that renders byte-identical frames to
the Python original, as one dependency-free binary.

- ~1 ms startup vs ~107 ms for the Python import alone
- median 9.6x faster rendering; heavy effects hold 120fps fullscreen
  where Python drops to ~71fps
- CLI-compatible with tte: same option names, defaults, and exit codes

Built and verified locally with makepkg (x86_64): cargo test passes in
check(), package installs the binary plus shell completions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 16:03:57 -07:00
David Heinemeier Hansson 0dad802300 Update herdr to 0.8.0.r5 with review fixes and CJK-safe tab centering 2026-08-09 18:12:13 +02:00
David Heinemeier HanssonandClaude Fable 5 89a5159396 Add omatrack 0.9.0, cross-format motorsport telemetry workstation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Bo6BfZfvZFT5YPEXdv6BZ
2026-08-09 17:37:49 +02:00
David Heinemeier Hansson 54b38216f0 Update herdr to 0.8.0.r4 with centered tab labels 2026-08-09 14:51:50 +02:00
David Heinemeier Hansson 497c710ad4 Update herdr to 0.8.0.r3 with tab moves, zoom flag, and hostname display 2026-08-09 14:25:28 +02:00
David Heinemeier Hansson 2f50a31814 Rename omarchy-herdr to herdr, keeping our patched fork build 2026-08-09 13:52:59 +02:00
David Heinemeier Hansson 017a89f481 Point omarchy-herdr at the omacom-io/herdr fork 2026-08-09 13:29:41 +02:00
David Heinemeier Hansson b59069a3dc Update omarchy-herdr to 0.8.0.r2 with native pane resize keybindings 2026-08-09 13:25:47 +02:00
David Heinemeier Hansson 0c71613226 Maintain a herdr fork until we can get upstream feature changes 2026-08-08 12:56:51 +02:00
David Heinemeier Hansson 90c6092308 Update omawrite to v0.5.0 2026-08-07 04:29:12 -07:00
David Heinemeier Hansson 01d3e5fab9 Update omacut to v0.4.0 2026-08-07 03:03:18 -07:00
David Heinemeier Hansson 98edfcdd3d Update omacut to v0.3.0 2026-08-06 10:15:42 -07:00
David Heinemeier HanssonandClaude Fable 5 515434db6a Add nordvpn-bin v5.2.0 from AUR
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ls3ump7hcv46oNnjWW5AXmn
2026-08-05 22:54:04 +02:00
David Heinemeier HanssonandClaude Fable 5 98628968a3 Fix unbound variable expansion in add-package jq filters
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ls3ump7hcv4oNnjWW5AXmn
2026-08-05 22:54:04 +02:00
David Heinemeier HanssonandClaude Fable 5 b73a15f4ec Update omacalc to v0.2.2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 10:42:32 -07:00
David Heinemeier HanssonandClaude Fable 5 a1937d66e1 Update omacalc to v0.2.1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 10:31:53 -07:00
David Heinemeier HanssonandClaude Fable 5 5603b273a9 Update omacalc to v0.2.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 10:15:27 -07:00
David Heinemeier Hansson b1ed1b72b0 Update omawrite to v0.4.1 2026-08-04 07:57:32 -07:00
David Heinemeier HanssonandClaude Fable 5 7a5f347a8b Update omacalc to v0.1.1
The desktop file and icon now ship as local sources, since the upstream
repo dropped its in-tree pkgbuild directory in favor of this one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 20:26:13 -07:00
David Heinemeier HanssonandClaude Fable 5 14f3544a8b Add omacalc v0.1.0
Includes the .omarchy/package.json metadata the release pipeline
requires to enumerate a package -- without it, bin/repo release
silently skips the directory.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 20:07:41 -07:00
David Heinemeier HanssonandClaude Fable 5 45ca871e78 Slim omarchy-nvim by shallowing plugin repos and dropping test suites
Half the package was git history: lazy.nvim clones with
--filter=blob:none, which marks packs as promisor packs that gc refuses
to touch, so every plugin shipped its full commit graph. Cut each repo
to its checked-out tips (drop remote/tag refs, mark the tips as shallow
boundaries, strip the promisor markers, gc for real) and exclude
test/tests/spec via sparse-checkout so the restore pass in package()
does not resurrect them.

:Lazy update keeps working -- fetch into a shallow repo stays shallow
and re-fetches tags. 116 -> 52.5 MiB installed, 67 -> 32 MB download.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 19:59:44 -07:00
David Heinemeier Hansson 897256ca01 Add omacalc 2026-08-01 19:25:25 -07:00
David Heinemeier HanssonandClaude Fable 5 f95d544fdb Retry AUR clones and report the real error on failure
A transient network failure cloning retroarch-joypad-autoconfig-git took
the whole sync workflow red. Clones now retry up to 3 times, and the
failure message includes git's actual error instead of guessing "may not
exist in AUR" — which was never the cause anyway: AUR serves an empty
repo for unknown package names, so that case is now detected explicitly
by the missing PKGBUILD.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 22:04:01 -05:00
David Heinemeier HanssonandClaude Fable 5 eb0cce3d5c Ship systemd-oomd app.slice policy in omarchy-settings-dev
Installs the upstream app.slice oomd drop-in so memory pressure kills an
app scope instead of the compositor session, and protects user edits to
etc/systemd/oomd.conf.d/10-omarchy.conf on upgrade.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 22:03:55 -05:00
David Heinemeier HanssonandClaude Opus 5 0a80091fe6 Promote packages already in production idempotently
The dev packages are versioned off the quattro tip, so rebuilding the
same upstream commit yields the same filename. Promotion treated any
pre-existing filename as fatal, which wedged the release loop whenever a
run promoted but died before update-repo rebuilt the database: the stale
database kept advertising the older hash, so every later run rebuilt the
identical package and failed here again, retaining the state file each
time.

Compare the bytes instead. Identical packages are skipped and the run
continues, so the following update-repo step fixes the database and the
loop unsticks itself. Differing content under a published filename still
aborts. Signatures are judged by the package they sign, since gpg stamps
a timestamp into every signature and a re-signed package never matches.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 16:37:01 -07:00
David Heinemeier HanssonandClaude Opus 5 655b78764d Ship the omarchy-nvim plugin cache once
package() staged the LazyVim data tree twice: once at
/usr/share/omarchy-nvim/data and again at /etc/skel/.local/share/nvim. Only
the /etc/skel copy is ever read — new users are seeded from it, and
omarchy-nvim-setup prefers it — so the /usr/share copy was dead weight worth
close to half the package, which today is 243 MB installed and 178 MB read off
the ISO on every install. That made omarchy-nvim the largest package in an
Omarchy install after noto-fonts-cjk.

Drop it once /etc/skel has its copy, after the chmod and worktree restore that
copy inherits. config/ stays: both the Omarchy 4 remote-clipboard migration and
the 3.x disable-news-alert migration read it from there.

omarchy-nvim-setup's package-dir fallback narrows to config/ to match. It could
never have fired for data anyway — the setup script and /etc/skel ship in the
same package, so a new script can't pair with an old layout — and the remaining
way to lose the seed, hand-clearing /etc/skel, now says which directory is
missing and that pacman owns it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 15:21:33 -07:00
David Heinemeier HanssonandClaude Opus 5 316f0b3b6c Bump omawrite to v0.4.0
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JdHx785uZWd4vunmT6Gesh
2026-07-27 10:54:35 -07:00
David Heinemeier HanssonandClaude Opus 5 6d4502f3d7 Own the zram-generator config in omarchy-settings
The settings package now ships /etc/systemd/zram-generator.conf, so it needs
a backup entry to protect user edits across upgrades like every other file it
places in /etc, and an optdepends line pointing at the package that reads it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 10:54:35 -07:00
David Heinemeier HanssonandClaude Opus 5 7732831889 Update the build container before installing makedepends
The builder image is layer-cached, so its glibc drifts behind the
mirror while makepkg -s installs makedepends from the freshly synced
database. omarchy-settings-dev died on that partial upgrade: the new
imagemagick needs GLIBC_2.44 and magick refused to run in package().

pacman -Syu runs before the Omarchy repos are appended, so only
core/extra take part -- in-flight build-output packages can't be
pulled into the container.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 10:03:52 -07:00
David Heinemeier HanssonandClaude Opus 5 0fe00d882e Stop AUR sync for v4l2-relayd
The sync regenerated the PKGBUILD from AUR and clobbered the splashsrc
patch (restored in 564d0b4). Pin it so the local changes survive.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 09:54:29 -07:00
David Heinemeier HanssonandClaude Fable 5 0f90fb97aa Give pinned libfprint-git an epoch and stop AUR sync
The pin to d79f157 rebuilt 1.94.10.r12.gd79f157-1.1, but those exact
filenames were already published, so promotion failed. And an untested
1.94.10.r220.g695663f build from master had already been released,
which sorts above the pinned version, so the pin could never reach
users anyway. epoch=1 makes the pinned build win the version
comparison and gives it promotable filenames; once published, the
commit-hash check skips further rebuilds.

Also disable AUR sync: the bot would otherwise regenerate the PKGBUILD
from AUR and wipe out both the pin and the epoch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 09:53:23 -07:00
David Heinemeier HanssonandClaude Fable 5 36c5309d88 Restore the v4l2-relayd splashsrc patch clobbered by AUR sync
Commit 7922065 added 0002-escape-optional-splashsrc-expansion.patch
directly to the package dir, but the AUR sync bot regenerates the dir
from AUR plus .omarchy/patches, so the next sync (f886efe) dropped the
patch and reverted pkgrel to 2.1. That stale pkgrel then made the build
server rebuild 0.2.0-2.1, whose filenames already exist in production,
failing promotion.

Restore the patch and pkgrel=2.2, carry the customization as an
.omarchy/patches sync patch, and bump the metadata pkgrel suffix to 2
so future syncs keep producing 2.2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 09:53:23 -07:00
David Heinemeier HanssonandGitHub 1ac34148f2 Merge pull request #121 from omacom-io/install-fcitx5-unit
Install the fcitx5 input method unit
2026-07-27 09:50:32 -07:00
David Heinemeier HanssonandClaude Opus 5 9921c30b7f Install the fcitx5 input method unit
omarchy moves fcitx5 off Hyprland's fire-and-forget autostart onto a
supervised systemd user service, so ~/.XCompose compose sequences stop
dying silently when it goes away. Ship the unit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 09:49:57 -07:00
David Heinemeier HanssonandClaude Opus 5 95d1f3c251 Install the Taildrop receive unit
omarchy-tailscale-receive.service was in default/systemd/user/ but never
installed, so `systemctl --user enable` found no unit for it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 19:03:23 -07:00
David Heinemeier HanssonandClaude Opus 5 5d92390cd9 Ship the migration notifier as a login-only unit
omarchy renamed omarchy-update-user-notify to omarchy-migrate-notify and
dropped the .path watcher that fired during every package update.

Keep the old service name as a symlink onto the new unit. Existing users hold
an absolute graphical-session.target.wants symlink to the old path, and the
migration that repoints it only runs for users who run an update, which is the
opposite of who the notifier is for. Without the alias their symlink dangles
and they are never told about pending migrations.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 14:50:15 -07:00
David Heinemeier HanssonandClaude Fable 5 7fb4dd4746 Pin libfprint-git to last known good commit
libfprint 1.94.100 ships the focaltech_moc driver and the FocalTech
FT9349 (2808:a97a) ID, so Omarchy is back on stock libfprint. Keep
this package as an escape hatch, pinned to the commit behind the
currently published build so it can't drift onto untested master.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6ADCjSXt3kd9XGCAJKJkT
2026-07-26 12:30:04 -07:00
David Heinemeier HanssonandClaude Opus 5 82c90022b7 Install zram tuning as a vendor drop-in
/etc/systemd/zram-generator.conf collided with the copy archinstall writes on
every ISO install. zram-generator.conf(5) reserves /etc for the local admin and
has vendors ship snippets under /usr/lib/systemd/zram-generator.conf.d/, where
drop-ins outrank the main config file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LjeyQZsNBxqyYy9z8KaKm7
2026-07-25 14:00:43 -07:00
David Heinemeier HanssonandClaude Opus 5 ebe4f9a71f Seed Tensaku's annotation size state for new users
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 08:44:21 -07:00
David Heinemeier HanssonandClaude Opus 5 6a463b71a6 Back up the logind inhibit-delay drop-in
omarchy ships etc/systemd/logind.conf.d/20-inhibit-delay.conf, which raises
InhibitDelayMaxSec so the pre-suspend lock can finish securing the session
before logind stops honouring its inhibitor and suspends anyway.

package() already installs it along with the rest of the etc tree, so this
changes nothing about whether the file lands. Listing it here is what keeps
pacman from clobbering a user's edit to it on upgrade, matching every other
/etc path this package owns.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 07:12:41 -07:00
David Heinemeier HanssonandClaude Opus 5 bc5cbff246 Add omarchy-audio-tuner
Tools for authoring the per-model speaker tunings Omarchy ships. Split out of the
Omarchy tree because measuring a laptop and fitting a filter-chain is contributor
work almost nobody does, and it needs python, ffmpeg and mpv, none of which
Omarchy installs.

Depends on lsp-plugins-lv2 as well, since that supplies the lookahead limiter a
generated chain ends in and is needed to audition the result, not only author it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-24 17:41:15 -07:00
David Heinemeier HanssonandClaude Opus 5 8f78e1cc09 quickshell-git: patch dangling IPC handler registrations
An IpcHandler deregisters itself from its destructor, but re-resolved its
registry by walking to its engine generation first — a walk that needs a
QML context that is already gone when the handler is destroyed along with
a reloading bar, a swapped plugin, or the shell root. The deregistration
was skipped and the registry kept a pointer to freed memory, so the next
`qs ipc call` into that target segfaulted the shell. Omarchy hits this
through omarchy.indicators refresh, which fires on every reminder, tmux
alert, and silencing toggle.

Carried on the fix-ipc-handler-lifetime branch of
https://github.com/omacom-io/quickshell

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-24 14:25:58 -07:00
David Heinemeier HanssonandClaude Opus 5 cac346011f Bump omacut to v0.2.0
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019KDVCPd8gpDmzyrcwtehSC
2026-07-24 14:18:54 -07:00
David Heinemeier Hansson 5020f77ce9 Bump omawrite to v0.3.0 2026-07-24 09:11:51 -07:00
David Heinemeier Hansson a3fcc5dfdc Pin libretro packages to successful builds 2026-07-24 08:19:11 -07:00
David Heinemeier HanssonandClaude Fable 5 a91be13069 quickshell-git: bump to 0.3.0.r18.g10b439f
Latest upstream master; the crash-relaunch env leak patch still applies.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 08:01:16 -07:00
David Heinemeier HanssonandClaude Fable 5 8f6be53910 quickshell-git: patch crash-relaunch env leak
After a crash relaunch, quickshell kept __QUICKSHELL_CRASH_* and the
instance-info fd in its environment, so every child it spawned inherited
them and any `qs` invocation from those children booted a duplicate
shell instead of running its command (phantom instances on every
menu-launched picker after a crash).

Patch carried on the fix-crash-env-leak branch of
https://github.com/omacom-io/quickshell

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 07:45:29 -07:00
David Heinemeier Hansson 37234ee538 Bump omawrite to v0.2.3 2026-07-23 20:42:41 -07:00
David Heinemeier Hansson d69da9ea22 Disable Neovim autoformat 2026-07-23 16:45:10 -07:00
David Heinemeier Hansson fad2bca7cf Bump omawrite to v0.2.2 2026-07-21 15:29:45 -07:00
David Heinemeier HanssonandClaude Fable 5 dd1274a744 Add quickshell-git pinned to master e649d24
Quickshell 0.3.0's qs kill returns before the instance exits, which is
what forces omarchy-restart-shell to track pids and wait for death
itself. Master fixed kill to block until the instance is gone (025c709),
so ship our own build pinned at e649d24 until a release catches up.

The #commit= pin plus sync:false keeps upgrades entirely manual: nothing
rebuilds or resyncs until the sha is bumped by hand. Note quickshell
links Qt private APIs, so every Arch qt6 bump needs a pkgrel bump and
rebuild here (the packaged quickshell-check hook warns users if we lag).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 14:41:18 -07:00
David Heinemeier Hansson daa57e47c0 Bump omawrite to v0.2.1 2026-07-21 11:22:05 -07:00
David Heinemeier Hansson 57e8d5320b Pin libretro-fbneo to latest revision 2026-07-20 17:41:35 -07:00
David Heinemeier HanssonandClaude Fable 5 d6b146bdc9 Add --package filter to repo migrate for single-package stable promotion
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:53:25 -07:00
David Heinemeier HanssonandClaude Fable 5 2eb15bc726 Pick the Neovim theme symlink target based on the installed Omarchy version
omarchy-nvim-setup hardcoded theme.lua to the Omarchy 4 theme location
(~/.local/state/omarchy/current), which doesn't exist on Omarchy 3.x, so
fresh 3.8.3 installs errored on nvim startup with "Failed to load
plugins.theme" (basecamp/omarchy#6309). Detect the right location at
runtime: prefer whichever current-theme directory exists, and fall back
to the installed Omarchy version for fresh 3.x installs where setup runs
before the first theme is set.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:52:38 -07:00
David Heinemeier HanssonandClaude Fable 5 94ee311b25 Fix theme hot-reload when old and new theme share the same colorscheme plugin
lazy.nvim caches a plugin's resolved opts in plugin._.cache and carries
that state over on a spec reload, and Loader.colorscheme() no-ops for
already-loaded plugins. So switching between two themes driven by the
same colorscheme plugin (e.g. generic themes on aether.nvim) never
pushed the new palette into setup(), leaving stale colors until nvim
was restarted. Fully reload the theme plugin instead, which clears the
cached opts and reruns config with the new theme's colors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:34:27 -07:00
David Heinemeier Hansson 2f0a498b43 Bump omawrite to v0.2.0 2026-07-17 19:29:55 -07:00
David Heinemeier Hansson 5f4a8442dc Latest omawrite 2026-07-17 15:46:34 -07:00
David Heinemeier Hansson 9687043be9 Add missing dependency 2026-07-16 12:46:48 -07:00
David Heinemeier Hansson d46becf3fd Bump omawrite to v0.1.2 2026-07-15 17:51:32 -07:00
David Heinemeier HanssonandClaude Fable 5 b4e9935951 Simplify remote clipboard and share Neovim yanks over OSC 52 inside tmux
Sessions inside tmux used to skip the clipboard provider entirely, so
yanks only reached the machine's own Wayland clipboard and never
traveled over OSC 52 to clients attached via SSH. Now every copy also
emits OSC 52, which tmux turns into a buffer and rebroadcasts to all
attached clients. Paste prefers wl-paste when a display is available.

This also drops the private-file fallback clipboard and its regtype
sidecar: Neovim's built-in clipboard layer already restores the register
type when pasted content matches its cache, and OSC 52 queries answered
by tmux cover the display-less paste case.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 10:39:30 -07:00
David Heinemeier Hansson af1f1dff80 Bump shas too 2026-07-03 10:45:25 -07:00
David Heinemeier Hansson ef5dd1f58b Bump omawrite 2026-07-03 10:09:42 -07:00
David Heinemeier Hansson a12fcf868d Add omawrite 2026-06-22 17:40:07 +02:00
David Heinemeier Hansson c4b5737087 omacut 0.1.1 2026-06-22 17:21:29 +02:00