Commit Graph
1085 Commits
Author SHA1 Message Date
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
Ryan HughesandGitHub 14b71bde37 Merge pull request #113 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-07-26 19:40:02 -04: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
ryanrhughesandgithub-actions[bot] f886efebe5 chore: sync AUR packages 2026-07-26 19:16:43 +00: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
a023cacf67 Add omarchy-emacs (#118)
* Add omarchy-emacs

Emacs integration for Omarchy with automatic theme and font syncing,
synced from the AUR (source: aur). Requested by @dhh in
basecamp/omarchy#6329 so it can be installed from the Omarchy repo via
the regular installer rather than relying on the AUR at install time.

- AUR: https://aur.archlinux.org/packages/omarchy-emacs
- Source: https://github.com/scottjones/omarchy-emacs

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Drop install scriptlet from omarchy-emacs (sync 1.8.9)

Per review: user-side setup is invoked by the Omarchy installer, so the
pacman post_install/post_upgrade scriptlet is redundant. Re-synced from
AUR at 1.8.9, which removes it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 09:10:32 -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
Ryan Hughes 515b566cb9 Add skip_build 2026-07-13 19:55:23 -04:00