Commit Graph
19 Commits
Author SHA1 Message Date
David Heinemeier Hansson c4274df99e Simplify omarchy-bar into a bar-settings and bar-plugin split
The omarchy-bar command had grown three overlapping ways to inspect the
bar (show/layout/list/options, plus selected/active/available/widgets
aliases) and mixed layout mutation in with bar-level settings. Untangle
it into two focused commands:

- omarchy-bar keeps only the bar-level settings that write shell.json:
  use, reset, position, transparent, and settings. reset now delegates
  to `use omarchy.bar` rather than duplicating the del(.bar.id) write.
- omarchy-bar-plugin owns all layout mutation: add, move, remove, set,
  and replace, with the placement flags and jq resolve/anchor helpers.
  `omarchy bar plugin ...` routes here via the dispatcher.

Drop the inspection commands entirely: the layout is visible on the bar,
the config is shell.json, and widget/option ids come from
`omarchy plugin list`. Nothing consumed the show output programmatically
except tests. This also removes omarchy-bar-position, whose jq write was
a duplicate of `omarchy bar position`.

Strip environment-invariant guards (require_command, require_omarchy_path)
that defended against jq or OMARCHY_PATH being absent — neither happens on
a real system. Keep the user-input validation (--section/--index) and the
atomic shell.json write.

Update callers (service install/remove, refresh-shell, plugin-clone,
plugin enable), keybindings, the menu, tests, and docs to the new split.
2026-07-17 16:28:17 -07:00
David Heinemeier Hansson d2c4c1c4bb Standardize bar icon geometry 2026-07-17 15:20:55 -07:00
David Heinemeier Hansson e6c0c0ce6f Repair Tailscale authorization flow 2026-07-17 10:20:08 -07:00
Kevin McConnell 47c5f12fb9 Fix panel array guards
The `Bar` uses a `Repeater` when building out the models. This has the
effect of marshalling the configuration, and causing JSON arrays to
become sequence wrappers.

A couple of the plugins had been checking for the existence of array
values with `Array.isArray`, which fails for the sequence wrappers,
causing the values to be ignored. This breaks associated functionality
(the "hide" and "pin" actions in the systray had stopped working, as had
exit node selection in Tailscale).

Switching the guards to use `instanceof Array` works correctly for
sequence values (as well as arrays).
2026-07-14 15:36:43 +01:00
David Heinemeier Hansson cc0a91553d 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 51075ce0f8 Make sure we never get in-panel scrolling when we shouldn' 2026-06-20 22:19:53 +02:00
Ryan Hughes 4123e73a96 Enable plugin hot reloading for add / remove 2026-06-06 13:25:54 -04:00
David Heinemeier Hansson 2dd03f9b3b Polish bar icon spacing 2026-06-06 16:43:00 +02:00
David Heinemeier Hansson e4500b96ac Improve Tailscale panel controls 2026-06-06 15:48:56 +02:00
Ryan Hughes c0e4c80f55 Bring on gradient borders 2026-06-02 11:17:13 -04:00
David Heinemeier Hansson 490e80717e Refine Mullvad exit node picker 2026-05-28 21:21:33 +02:00
David Heinemeier Hansson c583da16c9 Group Mullvad exit nodes by country 2026-05-28 21:21:33 +02:00
David Heinemeier Hansson 2faa453f22 Replace bar settings with inline config panel 2026-05-27 15:11:36 +02:00
David Heinemeier Hansson efc1007d08 Separate transparent bar foreground from panel text 2026-05-27 14:23:13 +02:00
David Heinemeier Hansson e3939e6b76 Use Tab to switch bar panels 2026-05-27 10:40:32 +02:00
David Heinemeier Hansson 1ff1d081a2 Massage it 2026-05-27 10:29:01 +02:00
David Heinemeier Hansson c7c14207f7 Fix icon placement 2026-05-27 08:56:29 +02:00
David Heinemeier Hansson 4dca35f615 Add exit nodes to the panel 2026-05-27 08:44:32 +02:00
David Heinemeier Hansson f2d3456979 Add Tailscale panel connection controls 2026-05-26 22:07:20 +02:00