Merge upstream quattro (Elsewhen default plugin, leftover PHP/omarchy up) - #37
Merged
Merged
Conversation
omarchy-hook and omarchy-state set join a name straight into a path. A name with a slash, or a bare . or .., points outside the hooks or state directory. Every caller in the repo passes a fixed label, so this is a footgun guard for future callers, not a fix for anything that ships today. Names with dots in the middle (a..b) stay allowed. omarchy-state clear is untouched: find -name matches basenames only. (cherry picked from commit 0a65b45) (cherry picked from commit e18b5aa)
userdel rewrites /etc/subuid and /etc/subgid, and like every shadow-utils database write it leaves the previous contents behind in a dash-suffixed backup. The scrub removed four of the six backups those tools produce, so the retained @factory baseline still named the previous owner in /etc/subuid- and /etc/subgid- along with their subordinate ID range. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit a00be8f) (cherry picked from commit a6f02d1)
Offline installs unpack the bundled tarball and pin Node to its exact version, since latest can't be resolved without network. But nothing ever loosened that pin, so Node stayed frozen at the ISO's version and mup skipped it forever, while online installs tracked latest. Rewrite the pin to latest right after registering the bundled version: mise resolves latest to the installed version while offline (verified with no network and an empty cache), and the first mise up with network picks up new releases just like an online install. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017LseZ1jcLaFBnndRnW4yb5 (cherry picked from commit 5db4a40) (cherry picked from commit a4ec934)
Elsewhen (omacom.elsewhen) arrives as the elsewhen package under /usr/share/omarchy/plugins, the packaged root the shell scans between its bundled plugins and the user's. It opens the right section of the default bar, just before the tray, and a migration installs the package, writes the widget into a customized shell.json in the same spot, and retires a pristine pre-package clone of the upstream repo that the package now shadows. (cherry picked from commit 531c3e8)
(cherry picked from commit 49286d0)
Retire only checkouts whose refs and reflogs are reachable from recorded origin history, and preserve ignored files. Leave configs without an explicit supported bar layout untouched so migration does not replace the shell fallback with an almost empty bar. Co-Authored-By: Codex XHigh <noreply@openai.com> (cherry picked from commit e8a8236)
Link the package into the existing plugin directory and let bar put handle enablement, clock-relative placement, and the missing-clock fallback. Preserve user checkouts and existing placements, and seed the same link for new users. This removes the Atreyu packaged-discovery prerequisite and the checkout cleanup and JSON rewrite machinery. (cherry picked from commit 9e3ff71)
Restarting immediately after the plugin rescan races Quickshell IPC handler creation and can crash the exiting shell. The normal update flow already restarts after migrations. Let this migration finish through live enablement and placement without adding timing workarounds. (cherry picked from commit 16cc7d7)
(cherry picked from commit e38c1d1)
… up) Brings mark-groves/omarchy quattro to omacom/omarchy quattro e38c1d1. Co-authored-by: Mark Groves <mark-groves@users.noreply.github.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 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. Comment |
This was referenced Sep 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merges omacom/omarchy
quattrothroughe38c1d12into this fork’s currentquattro(2b723bd8, face #34/#35).This is the same leftover-plus-Elsewhen package as PR #33, remade on today’s quattro tip. A raw
git mergeof upstreamquattrois not a fast-forward (69 first-parent commits already landed via earlier cherry-pick syncs) and conflicts in 17 fork-only files (face/lock, Cursor agents). Those leftover-only nits are left alone.PR #33, PR #32, and PR #25 stay open and are superseded by this branch.
Fork-only Cursor work is untouched: official-tarball installer, no mise wrapper, usage collector, Cursor/Grok update steps, the theme-set fix from #22, face scan #29–#35, and the fork
polkit-chromedocs note.Elsewhen ships as a default world-clock plugin (upstream omacom#12157)
elsewhenpackage is inomarchy-base.packages; the packaged plugin lives at/usr/share/omarchy/plugins/omacom.elsewhen~/.config/omarchy/plugins/omacom.elsewhenshell.jsonplacesomacom.elsewhenimmediately before the center clock1789581661installs the package, creates the symlink only when nothing is already there, rescans plugins, thenomarchy bar put omacom.elsewhen --before omarchy.clockomarchy updatealready restarts after migrationsIgnore
.claude/.gitignorenow excludes.claude/(upstreame38c1d12)Leftover from unmerged sync PRs #25 / #32 / #33
PHP and Laravel now install through mise (upstream omacom#12141)
pacmanpackage. Install usesmise tool-alias set php github:nunomaduro/static-php-buildsandmise use --global php@latest$HOME/.local/bin; Laravel installer runs asmise x php -- composer global require laravel/installer~/.local/bin/laraveland the old Composer laravel pathomarchy upis an alias foromarchy update# omarchy:alias=omarchy uponomarchy-update1Password survives closing the installer terminal (upstream omacom#12402)
omarchy-install-service-1passwordnow launches withsetsid uwsm-app -- 1passwordOffline Node pin no longer freezes
mise up(upstream omacom#11656)mise config set tools.node latestso the first networkedmise uptracks new releasesFactory reset now actually erases old hashes (upstream omacom#10379)
scrub_factory_accountsruns on both the staged reset root and the retained@factorybaselineHook and state names cannot be paths (upstream omacom#8170)
omarchy-hook,omarchy-hook-install, andomarchy-state setrefuse an empty name, a name with/, or a name that is exactly.or..(exit 2)Tests
Passed locally on this branch:
./test/cli(includesomarchy upalias in metadata/routes)test/shell.d/hook-state-name-guard-test.sh(19 cases)test/shell.d/factory-reset-accounts-test.sh(both roots, repeat reset, six injected cleanup failures; ran via user namespace)test/shell.d/elsewhen-default-migration-test.shtest/shell.d/config-test.sh(Elsewhen immediately before the clock)test/shell.d/menu-test.shtest/shell.d/menu-guards-test.shtest/shell.d/launch-1password-test.shomarchy up --helproutes toomarchy-updateand lists the aliasmise-work-path-test.shwas not run: this environment has nomisebinary. The leftover Node-pin change is the samemise config set tools.node latestrewrite already reviewed on #32.