Commit Graph
2143 Commits
Author SHA1 Message Date
David Heinemeier HanssonandClaude Fable 5 798d6af8b0 Replace the plugin package manager with plain git
A plugin is now just a git repo cloned into ~/.config/omarchy/plugins/<id>/.
That one idea replaces the entire homegrown package-manager half of the
plugin suite: trusted-source registry, clone cache, catalog scanning,
semver comparison, staging dirs, and timestamped backups — 1,025 lines
across five binaries whose jobs git already does.

Gone:

- omarchy-plugin-source: the trusted-repo registry (sources.json) and its
  clone cache under ~/.cache/omarchy/plugin-sources/. The trust decision
  now happens once, at add time, with the same unsandboxed-code warning.
- omarchy-plugin-scan + omarchy-plugin-available: the catalog machinery
  over cached clones. Discovery belongs on a web page, not in the CLI.
- omarchy-plugin-add: copying folders out of cached source clones with
  hand-rolled staging and .bak backups. Replaced by a git clone.
- omarchy-plugin-update: manifest version comparison via sort -V and
  re-installs. Replaced by fetch + diff + fast-forward; git is the version
  and git is the backup.
- omarchy-plugin-remove and omarchy-plugin-edit as separate binaries:
  folded into omarchy-plugin, much slimmer.

The consolidated omarchy-plugin now handles the full lifecycle:

- add <git-url>: warn, clone into a dot-prefixed staging dir (invisible
  to the plugin scanner), validate, then move into place named by the
  manifest id. Plugins land disabled — enabling is the single consent
  moment, replacing the old review-before-copy flow.
- update [id | --all]: fetch origin HEAD, show the diff (delta when
  available), confirm, fast-forward. Updates are code the shell will run,
  so the result is re-validated and rolled back to ORIG_HEAD if upstream
  turned invalid (e.g. smuggled a symlink).
- remove [id]: git checkouts are deleted outright since upstream keeps
  the history; hand-made plugin folders still get a backup, and dev
  symlinks are just unlinked.
- edit [id]: opens the user plugin directory in a shell.

All commands keep the interactive/unattended split: gum prompts in a
terminal, hard refusal without --yes otherwise, so scripts and agents
never hang on a hidden prompt.

Kept as siblings: omarchy-plugin-catalog (omarchy-bar reads it),
omarchy-plugin-validate (the security boundary, now pruning .git from its
symlink scan since installs are git checkouts), and omarchy-plugin-clone
(local development of built-in widgets, a separate concern).

Trade-offs accepted: one repo = one plugin (no more multi-plugin source
repos), and ref pinning or branch switching is no longer a CLI feature —
an installed plugin is a plain checkout, so that is ordinary git in the
plugin directory.

None of the removed machinery ever shipped: it existed only on this
branch, so there is no migration. The net effect is 11 scripts / 2,040
lines down to 4 scripts / 1,080 lines, and one less concept for users to
learn — everyone already knows what a git repo is.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 21:47:33 -07:00
David Heinemeier Hansson 055ffaccd4 Split omarchy-plugin into siblings and consolidate bar config into omarchy-bar
omarchy-plugin mixed plugin lifecycle, clone/edit, and bar-layout mutation.
The bar layout was mutated by two separate engines (an embedded Python
mutate_bar here and jq in omarchy-config-shell-bar), each with its own
manifest walker.

- omarchy-plugin is now a ~220-line router; clone and edit move to
  omarchy-plugin-clone and omarchy-plugin-edit, matching the existing
  plugin-{source,add,update,remove,available,validate,scan} sibling pattern
- omarchy-config-shell-bar is replaced by omarchy-bar, the single bar engine
  (show/layout/list/options/use/reset/add/move/remove/set/replace/position/
  transparent/settings) with one jq pipeline; the Python mutate_bar and its
  python3 dependency are gone
- omarchy-plugin-catalog is the shared manifest scanner used by omarchy-bar
  (widget/option enumeration, add validation) and omarchy-plugin-clone
  (source enumeration), replacing three find|jq re-implementations
- service install/remove and refresh-shell call omarchy-bar; docs and tests
  updated to the new command surface
2026-07-02 11:10:24 -07:00
David Heinemeier Hansson 9dcb7c78dd Audit monitor scaling changes 2026-06-29 15:43:11 -05:00
David Heinemeier Hansson e88174fd4b Make clamshell scale recovery idempotent 2026-06-29 15:28:16 -05:00
David Heinemeier Hansson d4731eca25 Assume gum is always available and drop fallbacks 2026-06-29 14:49:39 -05:00
David Heinemeier Hansson 38553effa3 Save the default ai harness setup until we have a better use case 2026-06-29 14:42:16 -05:00
David Heinemeier Hansson 7c6189c3d3 Hide clipboard open/paste commands from default listings 2026-06-29 13:45:11 -05:00
David Heinemeier Hansson f58f1e8dd4 Preserve internal scale during monitor recovery 2026-06-29 13:36:31 -05:00
David Heinemeier Hansson dafc400891 Move monitor scaling off Super slash 2026-06-29 13:24:56 -05:00
David Heinemeier Hansson fed2fd8e3d Fix notification expire timeout being treated as seconds instead of milliseconds 2026-06-29 13:24:04 -05:00
David Heinemeier Hansson 1220a031b3 Limit monitor scale stepping to normal range 2026-06-29 13:19:14 -05:00
David Heinemeier Hansson e49c74eee8 Keep rc on its own mirror but use the edge package repo 2026-06-29 11:28:32 -05:00
David Heinemeier Hansson 987588f512 Launch shell commands on active workspace 2026-06-29 11:26:23 -05:00
David Heinemeier Hansson 4ab3377950 Drop OMARCHY_PATH fallback and conf reading in channel detection 2026-06-29 11:18:33 -05:00
David Heinemeier Hansson 987addd7da Launch presentation terminals on active workspace 2026-06-29 11:14:07 -05:00
David Heinemeier Hansson b034fc1905 Rework Omarchy channel detection: dev is a linked checkout, edge is the dev package channel 2026-06-29 11:12:35 -05:00
David Heinemeier Hansson d824c1bd33 Remove Figma as a default install 2026-06-29 11:04:51 -05:00
David Heinemeier Hansson 924254ed11 Update battery icon promptly on power changes 2026-06-29 10:49:43 -05:00
David Heinemeier Hansson f67ed326df Let's save this for a direct install 2026-06-29 10:19:28 -05:00
David Heinemeier Hansson 98c7f5b28c Add network ping and speed test sections 2026-06-29 09:44:29 -05:00
David Heinemeier Hansson 29b87ca03e Cache keybindings menu records 2026-06-29 09:02:04 -05:00
David Heinemeier Hansson 6454e7ac8a Fix phantom display scaling by reading configured scale in clamshell 2026-06-29 08:54:10 -05:00
David Heinemeier Hansson 86e5581496 Refresh clock after timezone change 2026-06-29 08:51:15 -05:00
David Heinemeier Hansson ba0d2a764f Fix launcher entry removal 2026-06-28 20:46:23 -04:00
David Heinemeier Hansson 2f4fc48791 Add ping to network panel 2026-06-28 20:11:21 -04:00
David Heinemeier Hansson b7f3be6293 We can always depend on gum 2026-06-24 13:59:38 +02:00
David Heinemeier Hansson 1d364fc988 Simplify brightness no-osd parsing 2026-06-24 13:52:37 +02:00
David Heinemeier Hansson 0bf29e2f4a Cleaner flow: Either Apple controls or normal 2026-06-24 13:49:50 +02:00
David Heinemeier Hansson 89abbddc77 Fix image selector IPC reloads 2026-06-24 13:49:22 +02:00
David Heinemeier Hansson c43afa52ac Simpler 2026-06-24 13:48:41 +02:00
David Heinemeier Hansson 1320628829 Fold battery helpers into status command 2026-06-24 13:45:36 +02:00
David Heinemeier Hansson d136585ef4 Rename AC power helper 2026-06-24 13:38:09 +02:00
David Heinemeier Hansson 267af23efc Make Battle.net launcher installer-only 2026-06-24 13:31:17 +02:00
David Heinemeier Hansson b30758dd2d Add optional service widgets on shell refresh 2026-06-23 16:22:27 +02:00
David Heinemeier Hansson 3fd36802ac Simplify the system-update check
No need for a panel, just focus on the main omarchy package
2026-06-23 15:59:27 +02:00
David Heinemeier Hansson aa7350ab60 Fix clamshell display recovery 2026-06-23 09:23:29 +02:00
David Heinemeier Hansson ee65304b92 Handle clamshell monitor hotplug 2026-06-22 21:48:35 +02:00
David Heinemeier Hansson 8f5336e0d5 Protect against hyprlock crash when there are no screens at all 2026-06-22 19:28:43 +02:00
David Heinemeier Hansson 62ada9e9ec Need to copy configs from $OMARCHY_PATH so it'll work with the dev link 2026-06-22 18:30:16 +02:00
David Heinemeier Hansson 95888e69ff Replace Typora with Omawrite 2026-06-22 17:38:50 +02:00
David Heinemeier Hansson 8f6e815c78 Recover internal monitor before sleep
Run internal monitor toggle recovery before the sleep lock path and retry recovery after Hyprland monitor removal events. This gives dock/lid-close races time to settle before suspend or external-display reconnects leave the session without a safe internal display fallback.
2026-06-21 15:42:24 +02:00
David Heinemeier Hansson 36c1bc7dc5 Refer to Quattro 2026-06-21 14:59:18 +02:00
David Heinemeier Hansson 428b9c7b29 Use omarchy-upgrade-to-quattro 2026-06-21 12:31:06 +02:00
David Heinemeier Hansson c2e5614b65 Add missing overwrites 2026-06-21 12:25:45 +02:00
Ryan Hughes c048b2c745 Normalize Snapper snapshot setup 2026-06-21 02:25:42 -04:00
Ryan Hughes 34ddf5d54e Fix NetworkManager transition during upgrade 2026-06-21 02:25:42 -04:00
Ryan Hughes 2fdc6f0573 Move stock Hyprland bindings into defaults 2026-06-16 01:25:04 -04:00
Ryan Hughes 2a7602a084 Complete upgrade-to-4 update flow 2026-06-15 11:27:54 -04:00
Ryan Hughes 4bfa5a6949 Switch default editor to tensaku so we can move things 2026-06-12 22:27:20 -04:00
Ryan Hughes c582e7133a Unify Omarchy migrations 2026-06-12 13:49:46 -04:00