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>
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>
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>
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>
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>