[codex] Adopt zinit and Oh My Posh shell startup#9
Merged
Conversation
Split the monolithic zshrc into focused zsh/*.zsh modules so shell startup can move from direct Oh My Zsh initialization to zinit-managed snippets and plugins. Keep shared shell exports available from both bash and zsh, restore Oh My Zsh directory traversal aliases through OMZL::directories.zsh, and refresh the repository GIF to match the current install flow. Constraint: Preserve symlink-based installer behavior while changing shell startup structure Rejected: Keep all zsh configuration in zshrc | makes the zinit migration harder to test and maintain Rejected: Commit local .bak migration artifact | ignored backup file is not part of the runtime configuration Confidence: high Scope-risk: moderate Directive: Keep zshrc as a thin module loader; add new shell concerns under zsh/*.zsh and cover them with syntax tests Tested: make check Not-tested: Interactive zinit plugin download in a fresh login shell Co-authored-by: OmX <omx@oh-my-codex.dev>
Powerlevel10k was removed from the zinit bootstrap, so the repo now needs Oh My Posh to be the documented and installed prompt boundary. This keeps the prompt config under ~/.config/ohmyposh through the existing symlink installer, records the Homebrew dependency, and updates tests so future shell changes verify the new prompt wiring. Constraint: Preserve the modular zsh startup and symlink installer behavior already on this branch Rejected: Leave prompt setup unguarded | missing oh-my-posh would print startup errors before Brewfile setup runs Rejected: Keep README Oh My Zsh install instructions | zinit now bootstraps plugin loading directly Confidence: high Scope-risk: narrow Directive: Keep prompt themes in ohmyposh/ and link them via CONFIG_FILES instead of sourcing machine-local paths Tested: make check Not-tested: Visual prompt rendering in an interactive terminal profile Co-authored-by: OmX <omx@oh-my-codex.dev>
The zinit and Oh My Posh migration left a few low-signal seams: generated-looking documentation placeholders, outdated DevOps analysis, legacy vimrc naming in Neovim callbacks, duplicate shell initialization, and unguarded optional shell integrations. This pass removes those stale edges while keeping runtime behavior and install defaults intact.
Constraint: Preserve the existing modular zsh branch and avoid package/plugin pruning without a separate usage audit
Rejected: Add a new project wiki in this pass | improvement planning belongs in the existing docs until wiki ownership is decided
Rejected: Delete broad Brewfile entries opportunistically | package removals need usage evidence
Confidence: high
Scope-risk: moderate
Directive: Keep future cleanup passes test-backed and separate cosmetic doc refreshes from behavior-changing config removals
Tested: make check; oh-my-posh init zsh --config ohmyposh/zen.toml; nvim --headless -u nvim/init.vim '+lua require("config.autocmds"); require("config.personal")' +qa; git diff --check
Not-tested: Interactive Neovim autocommand popup rendering in a GUI terminal
Co-authored-by: OmX <omx@oh-my-codex.dev>
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
zshrcwith a thin loader for focusedzsh/*.zshmodules.OMZL::directories.zshfor...traversal aliases.ohmyposh/linked to~/.config/ohmyposh.dotfiles_s.gifto show the current install flow.fzf,zoxide, Oh My Posh) so fresh installs stay quiet until Brewfile tools are present.Why
The shell configuration has moved from direct Oh My Zsh/Powerlevel10k startup to zinit-managed plugin loading with Oh My Posh as the prompt engine. The repo now documents and tests that current stack while preserving symlink installer behavior. Follow-up cleanup also removed stale documentation claims and reduced first-run shell startup noise.
Validation
make checkoh-my-posh init zsh --config ohmyposh/zen.tomlnvim --headless -u nvim/init.vim '+lua require("config.autocmds"); require("config.personal")' +qagit diff --checkImprovement plan captured
See
DEVOPS_RECOMMENDATIONS.mdfor the current backlog:Notes
zsh/00-oh-my-zsh.zsh.bakwas removed from the working tree and was never committed.