refactor: group managed configuration under config - #176
Merged
Conversation
There was a problem hiding this comment.
🔵 Needs a closer look
config/shared/zsh/update-notice.zsh contains a logic bug where _selfishell_version_is_valid can incorrectly return non-zero for valid prerelease versions due to a missing final return 0.
Pull request overview
This PR refactors Selfishell’s managed configuration layout by consolidating platform and shared payloads under config/ (config/shared, config/macos, config/ubuntu), and updates the installer, tooling, CI, documentation, and tests to reference the new source paths while keeping installed home-directory paths and CLI behavior stable.
Changes:
- Moved managed configuration payloads into
config/shared,config/macos, andconfig/ubuntuand updated release packaging to ship the new layout. - Updated installer/resource declarations plus dependency automation and CI change classification to use the new config roots.
- Updated tests and docs to reflect new configuration source paths and added release-archive assertions.
File summaries
| File | Description |
|---|---|
tests/tool_status_test.bash |
Updates mise config-path fixtures and expectations to config/shared/mise.toml. |
tests/release_bootstrap_test.bash |
Adds archive content assertions for the new config/ payload root. |
tests/profiles_test.bash |
Updates mise pin source path to config/shared/mise.toml. |
tests/neovim_config_test.bash |
Updates Neovim config discovery paths to config/shared/nvim/.... |
tests/managed_install_test.bash |
Updates managed-resource installation assertions for new config/ source paths. |
tests/installers_test.bash |
Updates mise config path expectations to config/shared/mise.toml. |
tests/history_test.bash |
Updates history module source path to config/shared/zsh/history.zsh. |
tests/dependency_updates_test.bash |
Updates dependency-updater fixtures and assertions for new config locations. |
tests/common_zsh_test.bash |
Updates test harness paths/vars to source shared Zsh modules under config/shared/zsh. |
tests/ci_change_classification_test.bash |
Updates classification repo fixtures to treat config/shared/nvim as runtime-affecting. |
tests/benchmark_test.bash |
Updates benchmark fixture mutation path for aliases.zsh under config/shared/zsh. |
scripts/update-dependencies.sh |
Retargets updater staging to config/shared/{mise.toml,zsh/*.zsh}. |
scripts/classify-ci-changes.sh |
Updates runtime-change detection to config/shared/nvim/*. |
scripts/check.sh |
Updates lint/syntax file discovery to include config/**.zsh and platform zshrc files. |
scripts/build-release.sh |
Packages config/ (instead of legacy roots) into release payloads. |
scripts/benchmark.sh |
Updates benchmark wiring to use config/shared/zsh/* and new platform zshrc paths. |
lib/tool_status.sh |
Reads approved mise versions from config/shared/mise.toml. |
lib/resources.sh |
Updates managed resource source paths to the new config/ tree. |
lib/installers.sh |
Updates mise invocation to use config/shared/mise.toml for installs/exec/which. |
lib/commands/install.sh |
Updates platform zshrc sources to config/{macos,ubuntu}/zshrc. |
docs/UPDATES.md |
Updates mise pin source-of-truth reference to config/shared/mise.toml. |
docs/SECURITY.md |
Updates mise selector review location to config/shared/mise.toml. |
docs/PROFILES.md |
Updates docs to reference config/shared/mise.toml for default tool versions. |
config/ubuntu/zshrc |
Introduces Ubuntu/WSL managed zshrc sourcing shared common.zsh. |
config/shared/zsh/update-notice.zsh |
Adds update notice + version comparison + locking implementation under shared config. |
config/shared/zsh/runtime.zsh |
Adds shared runtime module enabling mise activation. |
config/shared/zsh/interactive.zsh |
Adds shared interactive module (aliases, caches, plugins, prompt init). |
config/shared/zsh/history.zsh |
Adds shared history defaults module. |
config/shared/zsh/completion.zsh |
Adds shared completion module (compinit strategy, kubectl/aws completion, zinit integration). |
config/shared/zsh/common.zsh |
Adds shared entrypoint wiring module ordering and shared helpers. |
config/shared/zsh/aliases.zsh |
Adds shared alias definitions with presence checks. |
config/shared/vimrc |
Adds managed Vim defaults under shared config. |
config/shared/starship.toml |
Adds managed Starship configuration under shared config. |
config/shared/nvim/lua/plugins/ui.lua |
Adds Neovim UI plugin specs under new managed config root. |
config/shared/nvim/lua/plugins/lsp.lua |
Adds Neovim LSP/Mason plugin specs under new managed config root. |
config/shared/nvim/lua/plugins/editor.lua |
Adds Neovim editor/plugin specs under new managed config root. |
config/shared/nvim/lua/plugins/completion.lua |
Adds Neovim completion/cmp specs under new managed config root. |
config/shared/nvim/lua/config/plugin_versions.lua |
Adds manifest-based plugin pin enforcement helper. |
config/shared/nvim/lua/config/options.lua |
Adds Neovim options defaults under new managed config root. |
config/shared/nvim/lua/config/lazy.lua |
Adds lazy.nvim bootstrap + revision enforcement under managed config. |
config/shared/nvim/lua/config/languages.lua |
Adds default LSP server list for Mason setup. |
config/shared/nvim/lua/config/keymaps.lua |
Adds Neovim keymaps module under managed config. |
config/shared/nvim/lua/config/autocmds.lua |
Adds Neovim autocmds (treesitter parser install, resize, cursor restore). |
config/shared/nvim/init.lua |
Adds managed Neovim init.lua entrypoint. |
config/shared/nvim/after/lsp/lua_ls.lua |
Adds lua_ls LSP settings. |
config/shared/mise.toml |
Adds shared mise tool version pins under new config root. |
config/macos/zshrc |
Introduces macOS managed zshrc sourcing shared common.zsh + Homebrew PATH setup. |
config/macos/ghostty/config.ghostty |
Moves Ghostty managed config under config/macos/ghostty/. |
AGENTS.md |
Updates repository map and mise pin source-of-truth path references. |
.github/workflows/dependency-updates.yml |
Updates tracked files list/exclusions for dependency automation to new config paths. |
.github/workflows/ci.yml |
Updates CI’s mise version read to config/shared/mise.toml. |
Review details
- Files reviewed: 26/51 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
Summary
config/shared,config/macos, andconfig/ubuntuValidation
GitHub Actions CI: