feat(core)!: adopt Core v4.0.0 (numbered-fragment loader)#61
Merged
Conversation
eeaec50 Merge pull request #261 from dotgibson/release/v4.0.0 e80dd9f release v4.0.0 6eda1f7 Merge pull request #260 from dotgibson/claude/dotfiles-core-v4-breaking-kc9b6y 37640a8 docs(proposal): record profile-aware discovery surface as a deliberate follow-up b8f4ad5 docs(ci): correct bootstrap-test caller example to @V3 (the @vn policy), not @main f0d67e3 fix(core): address v4 review round 7 — parity marker + proposal flat-dir consistency 8a3e240 fix(zsh): make `core update` availability-aware under reduced CORE_PROFILE dffe02c fix(core): address v4 review round 5 — migrate plugins dir, correct docs/assertions d5289cb fix(core): address v4 review round 4 — lexical sort, loader-driven bench, doc drift, conflict-safety 47276bf fix(core): address v4 review round 3 — profile resolution, strict glob, accurate docs, tests 92d3d7e fix(core): address v4 review — band-gating contract, maint/freshness pin paths, doc sweep, migration test 118104c fix(bench): create sandbox ZDOTDIR explicitly after the v4 plugin-path move 835d75d feat(core)!: v4 loader & layout overhaul — numbered fragments, XDG split, CORE_PROFILE fc63e09 Merge pull request #259 from dotgibson/nvim-cheatsheet-and-dead-config 44feda2 fix(nvim): drop duplicated <C-s> cheatsheet row; correct the width = {} note 6413c86 chore(nvim): close cheatsheet gaps, name which-key prefixes, drop dead config 3d9eea2 Merge pull request #258 from dotgibson/claude/dotfiles-core-v4-breaking-kc9b6y 6c503aa Merge pull request #257 from dotgibson/nvim-statusline-gitsigns-provider-fixes 86da65c fix(nvim): disable the python3 provider too; correct the vimade rationale cd16ed1 docs(release): fix v4 proposal — MD060 table, band + profile semantics, rollback 1e1d137 Merge pull request #255 from dotgibson/automation/freshness-nvim-plugins 40d1865 Merge pull request #254 from dotgibson/automation/freshness-zsh-plugins 9e45535 docs(release): draft v4 loader & layout overhaul proposal b74c38c fix(nvim): statusline blanking, visual git staging, node provider, gsn f162bd6 chore(deps): refresh nvim plugin lock (freshness bot) 045ced1 chore(deps): roll zsh plugin pins forward (freshness bot) 0d8d414 Merge pull request #253 from dotgibson/nvim-lsp-settings-and-lazy-fixes 94899fd fix(nvim): honour project-local LSP binaries; replace grx before deleting it 845ad92 fix(nvim): restore SchemaStore delivery, gr* cleanup, and treesitter laziness d1a8d51 Merge pull request #252 from dotgibson/nvim-statusline-venv 576047c Merge pull request #251 from dotgibson/nvim-python-dap f7f756d Merge pull request #250 from dotgibson/nvim-lsp-registry 424cd68 feat(nvim): statusline venv block; read statusline's own window 677b508 feat(nvim): Python debugging via nvim-dap, lazy on debug keymaps 54322b9 Merge pull request #249 from dotgibson/nvim-lazy-schemastore 3634265 Merge pull request #248 from dotgibson/nvim-runtime-plugins bf40b8d refactor(nvim): server modules become plain tables; one server list 0b39f4f perf(nvim): defer SchemaStore to client start; cache TS parser set c3fe6b3 docs(nvim): correct lazy-default and matchparen claims from review 9135ea4 perf(nvim): stop sourcing matchparen/rplugin/spellfile; drop showmatch ac82cda Merge pull request #247 from dotgibson/nvim-filepost 0891871 fix(nvim): address review — UIEnter gating, FilePost contract test, stale docs 269df54 perf(nvim): defer file-plugins past startup via User FilePost git-subtree-dir: core git-subtree-split: eeaec5045505b16e666bb18c844183504272b04b
Adopt dotfiles-core v4.0.0: vendor the v4 Core subtree (numbered-fragment loader — `NN-name.zsh` Core modules, `80-os.zsh` overlay, `99-local.zsh` host-local, globbed/sorted by the vendored `core/zsh/loader.zsh`), merged from the bot's `sync/core-v4.0.0` branch (fast-forward). Realign the reusable-workflow callers from @V3 to @v4 (lint, notify-web, auto-tag, bootstrap-test, claude-routines, core-freshness, core-integrity) plus the "Pinned @v4." comment — the v3/v4 call interfaces are byte-identical, so this is a safe major-tag realignment. The Arch host layer is fully blib-delegated: `bootstrap.sh` calls `blib_link_core` / `blib_link_os_layer` / `blib_write_zshrc_loader`, all of which v4's vendored `core/lib/bootstrap-lib.sh` already implements for the numbered layout. No hand-rolled loader or bootstrap edits are needed. BREAKING CHANGE: re-run `./bootstrap.sh` after updating to relink the numbered fragments — the bootstrap-lib migration relocates shell history and drops the stale named-module symlinks from the v3 loader. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XgSG8AousYiEznFzv2mEBp
There was a problem hiding this comment.
Pull request overview
This PR updates the Arch OS-native repo to dotfiles-core v4.0.0, which switches Core’s zsh runtime from a named-module loader to a numbered-fragment loader (NN-*.zsh) and realigns CI reusable-workflow callers from @v3 to @v4.
Changes:
- Vendor Core v4.0.0, including the new
core/zsh/loader.zshfragment glob/sort/profile gating and the new numbered zsh module set. - Move more runtime state to XDG locations (history/state, compdump/cache, plugins/data) and update maintenance/update tooling to match.
- Update repo GitHub Actions workflows to call dotfiles-core reusables at
@v4.
Reviewed changes
Copilot reviewed 96 out of 106 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| core/zsh/loader.zsh | Switch to numbered-fragment glob/sort loader with CORE_PROFILE gating and per-fragment zcompile. |
| core/zsh/55-maint.zsh | Add maintenance scheduler control surface (install/run/log/status/uninstall). |
| core/zsh/50-op.zsh | Add 1Password CLI helper functions (opsecret/openv/optoken/opssh). |
| core/zsh/45-plugins.zsh | Move plugin clone location to XDG data dir; update pinned zsh-vi-mode rev. |
| core/zsh/40-bindings.zsh | Add vi-mode bindings via zvm_after_init hook; bind fzf/atuin/sessionizer widgets. |
| core/zsh/35-fzf.zsh | Add fzf defaults, previews, and zle widgets (Ctrl-T/Ctrl-R/Alt-Z/Ctrl-G) plus utilities. |
| core/zsh/30-functions.zsh | Make core update dispatch availability-aware under CORE_PROFILE. |
| core/zsh/25-git.zsh | Introduce curated git alias/function set plus fuzzy helpers. |
| core/zsh/20-aliases.zsh | Introduce guarded modern CLI aliases and caching probe for diff --color. |
| core/zsh/15-history.zsh | Relocate HISTFILE to XDG state. |
| core/zsh/10-options.zsh | Relocate compdump to XDG cache and ensure parent dir exists. |
| core/zsh/00-tools.zsh | Add tool detection, HAVE_* flags, and cached init-script sourcing. |
| core/SECURITY.md | Update local override filename reference for v4 layout. |
| core/scripts/update-plugins.sh | Update plugin-pin source path to zsh/45-plugins.zsh. |
| core/scripts/setup.sh | Update reference to renamed ui module path. |
| core/scripts/parity-check.sh | Update parity checks to numbered zsh module filenames. |
| core/scripts/parity-aliases.txt | Update documentation reference to zsh/20-aliases.zsh. |
| core/scripts/new-os-repo.sh | Update scaffolding to v4 loader + 80-os/99-local fragment layout. |
| core/scripts/lib/common.sh | Update reference to renamed ui module path. |
| core/scripts/freshness-dashboard.sh | Update plugin-pin path reference. |
| core/scripts/bench-core.sh | Update bench harness for v4 loader + XDG data/cache/state layout. |
| core/scripts/audit-core.sh | Update audit references/allowlists for v4 filenames and new doc file. |
| core/PORTING-MATRIX.md | Update references to numbered zsh module filenames. |
| core/PARITY.md | Update references to numbered zsh module filenames. |
| core/nvim/lua/gerrrt/utils/ui-highlights.lua | Add dap sign highlight groups. |
| core/nvim/lua/gerrrt/utils/lsp.lua | Remove with_snippets helper; adjust default map deletion and add CodeLens map. |
| core/nvim/lua/gerrrt/servers/yamlls.lua | Convert server module to return config table; defer schemastore injection. |
| core/nvim/lua/gerrrt/servers/vue_ls.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/ty.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/ts_ls.lua | Convert server module to return config table; keep Vue hybrid plugin wiring. |
| core/nvim/lua/gerrrt/servers/taplo.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/tailwindcss.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/svelte.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/solidity_ls_nomicfoundation.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/ruff.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/marksman.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/lua_ls.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/jsonls.lua | Convert server module to return config table; defer schemastore catalog build. |
| core/nvim/lua/gerrrt/servers/init.lua | Centralize capabilities on *, dedupe server list, harden enable-guard for function-cmd servers. |
| core/nvim/lua/gerrrt/servers/html.lua | Convert to return table; set snippetSupport leaf capability only. |
| core/nvim/lua/gerrrt/servers/gopls.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/emmet_ls.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/dockerls.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/cssls.lua | Convert to return table; set snippetSupport leaf capability only. |
| core/nvim/lua/gerrrt/servers/clangd.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/servers/bashls.lua | Convert server module to return config table. |
| core/nvim/lua/gerrrt/plugins/which-key.lua | Add which-key groups for dap/rename/organize/path prefixes. |
| core/nvim/lua/gerrrt/plugins/treesitter-context.lua | Remove no-op separator = nil setting and document behavior. |
| core/nvim/lua/gerrrt/plugins/todo-comments.lua | Move lazy trigger to User FilePost. |
| core/nvim/lua/gerrrt/plugins/rustaceanvim.lua | Prevent dap autoload on rust-analyzer attach; add explicit Rust debug entry mapping. |
| core/nvim/lua/gerrrt/plugins/nvim-treesitter.lua | Cache installed parsers as a set and invalidate on TSUpdate. |
| core/nvim/lua/gerrrt/plugins/nvim-tree.lua | Update legacy adaptive_size to view.width = {} with rationale. |
| core/nvim/lua/gerrrt/plugins/nvim-lspconfig.lua | Move load trigger to User FilePost; declare blink.cmp dependency explicitly. |
| core/nvim/lua/gerrrt/plugins/nvim-lint.lua | Move lazy trigger to User FilePost. |
| core/nvim/lua/gerrrt/plugins/nvim-dap.lua | Add lazy-loaded nvim-dap (+ python) configuration and keymaps. |
| core/nvim/lua/gerrrt/plugins/mini-nvim.lua | Remove dependency-induced eager treesitter load; fix mini.surround update_n_lines mapping. |
| core/nvim/lua/gerrrt/plugins/mason-tool-installer.lua | Clarify startup timing with FilePost; document why debugpy isn’t ensured. |
| core/nvim/lua/gerrrt/plugins/lualine-nvim.lua | Fix LSP clients lookup for globalstatus; add Python venv indicator. |
| core/nvim/lua/gerrrt/plugins/harpoon.lua | Guard adding unnamed buffers to Harpoon list. |
| core/nvim/lua/gerrrt/plugins/gitsigns-nvim.lua | Move lazy trigger to User FilePost; fix visual-mode stage/reset to pass range. |
| core/nvim/lua/gerrrt/plugins/fidget-nvim.lua | Correct winblend setting/comment; keep default 100. |
| core/nvim/lua/gerrrt/plugins/conform.lua | Remove redundant config function; rely on lazy default opts behavior. |
| core/nvim/lua/gerrrt/plugins/bufferline-nvim.lua | Remove unreachable hover reveal close-icon option when close icons are disabled. |
| core/nvim/lua/gerrrt/plugins/blink-cmp.lua | Correct snippet engine note for luasnip preset. |
| core/nvim/lua/gerrrt/config/providers.lua | Disable node + python providers with rationale (remove checkhealth warnings). |
| core/nvim/lua/gerrrt/config/options.lua | Remove showmatch; simplify undodir setup; move mouse maps to keymaps.lua. |
| core/nvim/lua/gerrrt/config/lazy.lua | Set defaults.lazy=true; expand disabled runtime plugins list with rationale. |
| core/nvim/lua/gerrrt/config/keymaps.lua | Use mappings; add mouse drag-select disable; improve copy-path UX. |
| core/nvim/lua/gerrrt/config/autocmds.lua | Introduce User FilePost; version-gate yank highlight helper API. |
| core/nvim/lua/gerrrt/cheatsheet.lua | Expand cheatsheet coverage and update descriptions for new/changed bindings. |
| core/nvim/lazy-lock.json | Update lockfile commits; add nvim-dap + nvim-dap-python. |
| core/mise/config.toml | Update local override filename reference for v4 layout. |
| core/Makefile | Update update-plugins target description for new plugins file path. |
| core/maint/dotfiles-maint.sh | Update plugin/config paths for v4 XDG layout; adjust zsh compile targets. |
| core/lib/ux.sh | Update references to renamed ui module path. |
| core/lib/bootstrap-lib.sh | Add v4 migration + link logic (80-os, 99-local) and v4 .zshrc writer. |
| core/lazygit/config.yml | Update references to renamed zsh module filenames. |
| core/jujutsu/config.toml | Update alias-source reference to renamed zsh module filename. |
| core/core.version | Bump Core version to 4.0.0. |
| core/core.manifest | Update manifest to numbered zsh fragments and new load-order contract. |
| core/ARCHITECTURE.md | Document new numbered-fragment load order and banding contract. |
| core/aliases.md | Update documentation references to renamed zsh module filenames. |
| core/.pre-commit-config.yaml | Update references to renamed op module filename. |
| core/.gitignore | Update local override ignore filename for v4 layout. |
| core/.github/workflows/freshness.yml | Update zsh plugin pin path references and git add path. |
| core/.github/workflows/bootstrap-test.yml | Update assertions for v4 loader + 80-os + v4 .zshrc expectations. |
| core/.github/ISSUE_TEMPLATE/bug_report.md | Update example zsh path to 00-tools.zsh. |
| core/.claude/commands/tool-scout.md | Update references to renamed zsh module filenames. |
| core/.claude/commands/freshness-triage.md | Update references to renamed plugins path. |
| core/.claude/commands/doc-audit.md | Update references to renamed zsh module filenames. |
| core/.claude/agents/tool-scout.md | Update references to renamed zsh module filenames. |
| core/.claude/agents/doc-consistency.md | Update references to renamed zsh module filenames. |
| core/.bin/sync-upstream.sh | Update reference to renamed zsh alias source file. |
| core.lock | Pin Core version/SHA/tag to v4.0.0. |
| .github/workflows/notify-web.yml | Update reusable workflow reference to @v4. |
| .github/workflows/lint.yml | Update reusable workflow reference to @v4. |
| .github/workflows/freshness.yml | Update reusable workflow reference to @v4. |
| .github/workflows/core-integrity.yml | Update reusable workflow reference to @v4. |
| .github/workflows/claude-routines.yml | Update reusable workflow reference to @v4. |
| .github/workflows/bootstrap.yml | Update reusable workflow reference to @v4. |
| .github/workflows/auto-tag.yml | Update reusable workflow reference to @v4 (and pinned comment). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
What
Adopt dotfiles-core v4.0.0 (
eeaec5045505) in the Arch OS-native layer.Core vendor (v4.0.0)
Merged the bot's
sync/core-v4.0.0branch (fast-forward) which vendors the released Core subtree intocore/. v4 replaces the v3 named-module loader with numbered fragments: Core modules becomeNN-name.zsh(00-tools…60-update), the OS overlay is80-os.zsh, and host-local is99-local.zsh. The vendoredcore/zsh/loader.zshglobs[0-9][0-9]-*.zshin$ZSH_CFG, sorts byNN, and sources them (it ignores any legacy_CORE_MODULESarray).core.lockcore_version=4.0.0andcore/core.versionboth confirm 4.0.0.core/is vendored read-only here — it is agit subtreecopy of dotfiles-core and is overwritten on the next sync. No hand-edits were made to it.Reusable-workflow caller realignment (@V3 → @v4)
Bumped all 7 caller workflows plus the
Pinned @v4.comment:lint,notify-web,auto-tag,bootstrap-test,claude-routines,core-freshness,core-integrity. The v3/v4 call interfaces are byte-identical, so this is a safe major-tag realignment. No@v3references remain outsidecore/.Host layer: no edits needed
The Arch host layer is fully blib-delegated —
bootstrap.shcallsblib_link_core/blib_link_os_layer/blib_write_zshrc_loader, all of which v4's vendoredcore/lib/bootstrap-lib.shalready implements for the numbered layout. There is no hand-rolledzsh/zshrcand notest/test-repo.sh. Defensive scan for_CORE_MODULES/ hardcodedos.zshuninstall dests in the host layer found nothing.Local gates
bash -n bootstrap.sh/test/check-core-freshness.sh— cleanshellcheck -S erroron host scripts — cleantest/check-core-freshness.sh—ok vendored core/ is current with dotfiles-core@main (eeaec5045505)actionlint+ YAML parse on all bumped workflows — cleanMakefilein this repo; the full lint/bootstrap/integrity/freshness gates run in CI via the reusable-workflow callers.)Breaking change
Re-run
./bootstrap.shafter updating to relink the numbered fragments — the bootstrap-lib migration relocates shell history and drops the stale named-module symlinks from the v3 loader.Closes #60 (superseded by this branch).
Generated by Claude Code