Releases: gladimdim/omarchy-config-sync-plugin
Release list
v1.4.1
Omarchy Config Sync v1.4.0
A clearer first-run experience and safer migration for Git-managed plugins.
- First push is explicit. Connecting an empty repository now opens Overview with a highlighted three-step guide, a single Seed repo (N items) action, clearer confirmation text, and a direct review path.
- Bulk selection is closer to the data. Expanded Incoming and Outgoing groups now provide scoped Select all and Select none controls. Both-sides conflicts remain intentionally manual.
- Large theme media stays local. Video wallpapers plus AVIF and HEIC images are excluded from theme synchronization.
- Plain plugin copies can migrate safely. Plugins listed in
plugins.jsonbut installed as ordinary folders now appear with a Reinstall action. The old copy is backed up, and it is restored automatically if installation is cancelled or fails. Symlinked development plugins remain untouched.
Validation: omarchy plugin validate passed and all 178 Python tests passed.
Omarchy Config Sync v1.3.0
Git-installed plugins sync as a registry, not as copied files.
plugins.jsonreplaces copied plugin code. A plugin folder with a.gitcheckout is never copied in either direction, so Apply cannot downgrade it or leaveomarchy plugin updaterefusing to fast-forward. Publish records id, version, commit, and source URL instead (credentials stripped from the URL) (#18).- Changes tab acts through Omarchy's own installer. Install for a listed plugin that is missing runs
omarchy plugin add <source>in a floating terminal, so you see Omarchy's warning and confirm there. Update runsomarchy plugin update <id>, which pulls the plugin's upstream, not the repo. - Outgoing rows for the registry. This machine being ahead, or a listed plugin you uninstalled, shows as an outgoing row (unticked by default).
- Existing copies stop applying. A repo that already holds files under
plugins/<id>/for a git plugin no longer applies them; publishing that plugin's list entry removes the copy from the repo. Plugins without.git(your own, or a clone of a built-in) keep syncing file by file.
Validation: Python test suite (173 passed) and omarchy plugin validate passed.
Omarchy Config Sync v1.2.24
Shortcuts, helpers, and per-machine overlays.
- Apply no longer hangs when a plugin changed on both machines. Keep local / Take repo on the plugin row unblocks Apply and Publish (#11).
- Shortcut cherry-pick is Hyprland-safe. Bind commands that depend on a
localare inlined when they are just a path, or skipped when they would abortrequire("hypr.bindings"). Poisoned repo lines are not copied on Apply or Resync (#12, #14). - Local helper scripts can be published.
repo/bin/plus~/.local/binfiles named by bindings or hooks appear under Helper scripts. Unrelated shims stay out of the diff (#13, #14). - Per-machine Hyprland overlays are ignored (
input.local.lua,local.conf). Extra paths in.omarchy-config.jsonmachine_localstay opt-in, same ashypr/monitors.lua. Plugin files such asLocal.qmlstill sync. Night-light (hyprsunset.conf) stays portable (#15, based on #10).
Validation: Python test suite (158 passed) and omarchy plugin validate passed.
Omarchy Config Sync v1.2.22
Shortcuts defined with o.rebind(...) now appear in outgoing changes and can be selected for sync. This fixes missing shortcuts such as Super+Down and Super+Up when overriding Omarchy defaults. Publishing preserves the original o.rebind(...) call.
Validation: the Python test suite and Omarchy plugin validation passed.
Omarchy Config Sync v1.2.21
Theme changes now show the current local theme in outgoing changes. Previously, the review row could show the theme still saved in the config repository.
- Show old and new theme names in change descriptions.
- Describe nested shell and widget settings, including AI Limits tracked limits, with their old and new values.
- Match widgets by ID when comparing reordered bar layouts.
- Wrap long change descriptions within review cards and retain line counts.
Validation: 140 tests passed; one optional fixture test skipped. Omarchy plugin manifest validation passed.
v1.2.20 — Connect hang, Overview scroll, git hooks
Connect no longer hangs, the Overview tab fills the panel, and git on this machine can no longer block Publish.
Connect no longer hangs (#1, #2, #8)
Pasting a repo URL and clicking Connect could sit in a busy state forever. The panel wrote the URL to the helper and never closed stdin; the helper waited for EOF.
The helper now reads one line for --stdin, still accepts --url / argv, and the panel always terminates the payload with a newline so a held-open pipe cannot deadlock.
Overview tab fills the panel (#4)
The Overview Flickable used a hardcoded bottom margin, which left an empty gap and cropped content behind a needless scrollbar. It now uses the remaining vertical space.
Host git hooks no longer intercept the plugin (#6)
A machine-wide core.hooksPath (pre-push that rejects unknown remotes, commit-msg linters) could fail clone, fetch, commit, or Publish even when GitHub auth was fine. Plugin git now clears hooksPath for that invocation only. Credential helpers are unchanged.
--dry-run now reports the files it would touch and leaves the machine and the clone alone.
Plugin trees stay as one row
Connect on a machine with many plugins could return a 5 MiB+ snapshot and look like it failed even though the repo was linked. Bundled plugin, hook, and bin files keep one checkbox each; per-file previews are omitted so the panel can open.
Size budgets match GitHub, not an old 512 MiB cap
Clone, apply, and publish allow up to 10 GiB on disk (GitHub's documented repository guideline). Timeouts for clone/fetch/push are longer so a full plugin tree can transfer. A hostile remote still cannot fill the disk without a ceiling.
Also
- Marketplace re-verification after each release is documented in
AGENTS.md. manifest.jsonandPLUGIN_VERSIONstay in lockstep; a test fails if they drift.
Upgrading
If your plugin directory is a clone, pull inside it and restart:
cd ~/.config/omarchy/plugins/gladimdim.config-sync
git pull
omarchy restart shellFrom GitHub:
omarchy plugin update gladimdim.config-sync --yesUse omarchy restart shell, not omarchy refresh shell — the latter resets shell.json to Omarchy defaults.
v1.2.19 — Removals sync as removals
Deleting a plugin or a config file on one machine now syncs as a deletion.
Removals are tracked as removals
A file or plugin you deleted here used to appear in Outgoing as an ordinary local edit — "Plugin updates · will sync" — and pressing Publish selected did nothing, reporting "Nothing to publish", because the publisher went looking for files that were no longer on disk.
A deletion is now carried as one end to end:
- The row reads "Removed here · N files · will delete" instead of claiming it will sync.
- Publishing it deletes it from the repo.
- Applying a repo-side removal uninstalls it on this machine.
Deletions are opt-in
Every removal arrives unticked. default_publish and default_apply are false for removals, so Select all never sweeps one up, and nothing is deleted on another machine unless you tick that row on purpose. Expect Outgoing to show 0 included when the only outstanding changes are deletions — that is the safety default doing its job, not a bug.
Clean divergences merge themselves
When both sides have moved but no single file was edited on both, the panel no longer parks in a diverged state waiting for a Resync — it merges. Overlapping edits still surface as per-file conflicts to pick through, and a clone with a dirty working tree now reports why the merge was skipped instead of quietly doing nothing.
Also
- A row no longer states its status twice. The backend already opens a bundle's summary with its status, so the panel's own prefix produced "Removed here · Removed here · 11 files"; the prefix is now dropped when the summary already leads with it.
- Twelve new tests cover the above, including the guards that stop a removal escaping its root and the prune stopping at it. 124 tests pass.
Upgrading
If your plugin directory is a clone, pull inside it and restart:
cd ~/.config/omarchy/plugins/gladimdim.config-sync
git pull
omarchy restart shellUse omarchy restart shell, not omarchy refresh shell — the latter resets shell.json to Omarchy defaults.
v1.2.18
Semantic change summaries
File rows in the review list now say what actually changed, instead of showing a generic description of the file. Each change appears as a pill under the row, reading old → new in the direction you're about to apply.
Recognized settings
| File | Summarized |
|---|---|
omarchy/shell.json |
Dock bar position, bar transparency, idle lock, screensaver, bar widgets added/removed |
omarchy/shell.toml |
Font base-size |
terminals/* |
Font family and size (ghostty, alacritty, kitty, foot) |
hypr/looknfeel.lua |
Gaps, border size, corner rounding, layout |
hypr/input.lua |
Keyboard layout, tap-to-click, natural scroll, sensitivity |
hypr/hyprsunset.conf |
Night light temperature |
hypr/autostart.lua |
Launch-on-start entries added/removed |
Anything else falls back to +N, -M lines or New file (N lines).
Also in this release
omarchy/shell.tomlis now tracked in the inventory.- All summary reads stay bound to their trees and skip oversized files, keeping the hardening from 1.2.13–1.2.16 intact.
Full test suite: 112 tests, all passing.