Release v1.23.0 — Shell Switch (zsh + Starship) #45

Closed
Gravity Bot wants to merge 0 commits from release/1.23.0 into master
Collaborator

Summary

Shell modernization release: migrate from Bash to Zsh with Starship cross-shell prompt.

Features

  • Starship prompt with Catppuccin Macchiato powerline theme (OP#1901, OP#1902)
    • Two-line prompt with OS, directory, git, language versions
    • Right-side: package version, docker context, sudo, cmd duration, hostname, time
    • All language modules enabled (Go, Node, Rust, Python, C, PHP, Java, Kotlin, Haskell)
    • Git metrics (+added/-deleted) in prompt bar
  • Zsh as default shell with full .bashrc port (OP#1903, OP#1906)
  • Zsh aliases ported from bash_aliases with cross-reference headers (OP#1904)
  • Zinit plugin manager with autosuggestions, syntax-highlighting, completions (OP#1905)
  • Community tweaks: command_timeout 1000ms, continuation prompt, window title (OP#1902)

Config Management

  • Cross-reference headers on all bash/zsh config files
  • Both bash and zsh configs maintained for compatibility
  • Manifest tracks: .bashrc, .bash_aliases, .zshrc, .zsh_aliases, starship.toml

Work Packages

  • OP#1898: Initialize version branch
  • OP#1901: Install Starship binary
  • OP#1902: Create Starship configuration
  • OP#1903: Install Zsh and create .zshrc
  • OP#1904: Port bash_aliases to zsh_aliases
  • OP#1905: Install zinit and core plugins
  • OP#1906: Set Zsh as default shell
  • OP#1907: End-to-end verification (20/20 checks pass)

Test plan

  • All aliases load in zsh (editor, eza, git, docker, claude, disk, navigation)
  • NVM, Go, zoxide, Starship all functional
  • Zinit plugins load (autosuggestions, syntax-highlighting, completions)
  • Starship renders git branch, language versions, no empty segments
  • Bash configs still work independently

🤖 Generated with Claude Code

## Summary Shell modernization release: migrate from Bash to Zsh with Starship cross-shell prompt. ### Features - **Starship prompt** with Catppuccin Macchiato powerline theme (OP#1901, OP#1902) - Two-line prompt with OS, directory, git, language versions - Right-side: package version, docker context, sudo, cmd duration, hostname, time - All language modules enabled (Go, Node, Rust, Python, C, PHP, Java, Kotlin, Haskell) - Git metrics (+added/-deleted) in prompt bar - **Zsh as default shell** with full .bashrc port (OP#1903, OP#1906) - **Zsh aliases** ported from bash_aliases with cross-reference headers (OP#1904) - **Zinit plugin manager** with autosuggestions, syntax-highlighting, completions (OP#1905) - **Community tweaks**: command_timeout 1000ms, continuation prompt, window title (OP#1902) ### Config Management - Cross-reference headers on all bash/zsh config files - Both bash and zsh configs maintained for compatibility - Manifest tracks: .bashrc, .bash_aliases, .zshrc, .zsh_aliases, starship.toml ### Work Packages - OP#1898: Initialize version branch - OP#1901: Install Starship binary - OP#1902: Create Starship configuration - OP#1903: Install Zsh and create .zshrc - OP#1904: Port bash_aliases to zsh_aliases - OP#1905: Install zinit and core plugins - OP#1906: Set Zsh as default shell - OP#1907: End-to-end verification (20/20 checks pass) ## Test plan - [x] All aliases load in zsh (editor, eza, git, docker, claude, disk, navigation) - [x] NVM, Go, zoxide, Starship all functional - [x] Zinit plugins load (autosuggestions, syntax-highlighting, completions) - [x] Starship renders git branch, language versions, no empty segments - [x] Bash configs still work independently 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Install Starship cross-shell prompt and create configuration based on
the catppuccin-powerline preset, customized for the Gravity dev stack
(Go, Node, Python, Docker). Shows git branch/status, language versions,
command duration, and time in powerline segments.

Closes OP#1902
Refs OP#1901

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back C, Rust, PHP, Java, Kotlin, and Haskell modules so the prompt
automatically detects any language without needing reconfiguration.

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previous config had empty symbol fields because nerd font glyphs were
lost during manual file write. Regenerated directly from
`starship preset catppuccin-powerline` to preserve all glyph bytes,
then applied customizations (docker_context, cmd_duration threshold).

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Match the WezTerm terminal color scheme (Catppuccin Macchiato) so
prompt segment colors are consistent with the terminal background.

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reorganize Starship layout for power users:
- Two-line prompt (status bar + cursor on separate lines)
- Right-aligned format with sudo indicator, cmd duration, hostname, time
- Git metrics (+added/-deleted) in the git segment
- Package version module (from package.json/go.mod/manifest)
- Hostname shown (useful across multiple VMs)
- Username hidden unless root or SSH session
- Package segment uses teal, bridging green (languages) to sapphire (docker)

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previous manual edits corrupted nerd font bytes in the config.
Regenerated from `starship preset catppuccin-powerline` and applied
all customizations programmatically to preserve glyph integrity:

- Two-line prompt with right_format (sudo, duration, hostname, time)
- Git metrics, package version, hostname modules added
- Username hidden unless root/SSH
- Catppuccin Macchiato palette
- cmd_duration threshold at 2s

Note: right_format only renders in zsh/fish (not bash). Will activate
after zsh migration.

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Port all .bashrc functionality to .zshrc with zsh equivalents:
- History: HIST_IGNORE_DUPS, SHARE_HISTORY, 10k entries
- Completion: autoload compinit
- PATH, NVM, zoxide, Starship all configured for zsh
- Cross-reference headers added to both .bashrc and .zshrc
- Manifest updated with .zshrc config entry

Closes OP#1903

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy all aliases to .zsh_aliases with zsh-specific adjustments:
- sbash alias reloads .zshrc/.zsh_aliases in zsh version
- aliases() function reads from .zsh_aliases in zsh version
- Cross-reference headers added to both alias files
- All aliases verified working in both shells
- Manifest updated with .zsh_aliases config entry

Closes OP#1904

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add zinit plugin manager with three essential plugins:
- zsh-autosuggestions: ghost text completions from history
- zsh-syntax-highlighting: live command validation coloring
- zsh-completions: extended completion definitions

Closes OP#1905

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move package and docker_context modules from the left powerline bar
to right_format. This eliminates empty colored segments when those
modules have nothing to display. End the left bar cleanly after the
language modules section.

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Community-recommended Starship and zsh tweaks:
- command_timeout: 1000ms (prevents git timeout warnings on large repos)
- continuation_prompt: yellow ▶▶ for multi-line commands
- Transient prompt: collapses previous prompts to just ❯ character
- Window title: shows current directory in terminal tab

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
enable_transience is Fish-only. Replace with zle-line-init hook that
properly collapses previous prompts to just the character module in zsh.

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Keep the other three community tweaks (command_timeout, continuation
prompt, window title) which don't sacrifice usability.

Refs OP#1902

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
chore(release): bump version to 1.23.0
Some checks failed
PR Validation / validate-branch (pull_request) Successful in 2s
CI / json-check (pull_request) Successful in 6s
CI / manifest (pull_request) Successful in 5s
CI / security (pull_request) Successful in 9s
CI / lua-check (pull_request) Successful in 10s
PR Validation / validate-release-pr (pull_request) Failing after 5s
CI / sast (pull_request) Successful in 1m16s
068a112c05
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(release): use prefix match for PR title, enforce draft release
Some checks failed
PR Validation / validate-branch (pull_request) Successful in 1s
CI / security (pull_request) Successful in 4s
CI / json-check (pull_request) Successful in 4s
CI / manifest (pull_request) Successful in 4s
CI / lua-check (pull_request) Successful in 8s
PR Validation / validate-release-pr (pull_request) Failing after 4s
CI / sast (pull_request) Successful in 50s
6585890b36
PR title validation now accepts both bare "Release v{version}" and
titled "Release v{version} — {title}" formats. Draft release creation
is marked mandatory in the skill — removes conflicting "optional"
language that could cause agents to skip the CI-required draft.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(release): simplify draft release step — drop tag_name, clarify sequence
All checks were successful
PR Validation / validate-branch (pull_request) Successful in 1s
CI / manifest (pull_request) Successful in 3s
CI / json-check (pull_request) Successful in 6s
CI / security (pull_request) Successful in 7s
CI / lua-check (pull_request) Successful in 17s
CI / sast (pull_request) Successful in 35s
PR Validation / validate-release-pr (pull_request) Successful in 30s
54aae5cc69
The draft release is created before the PR (Step 7 → Step 8), so the
tag doesn't exist yet. Removed tag_name from the API call entirely —
CI creates the tag post-merge. Replaced platform-specific tag warning
with a generic note about auto-creation behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mike Bros closed this pull request 2026-03-03 19:26:06 +00:00
All checks were successful
PR Validation / validate-branch (pull_request) Successful in 1s
Required
Details
CI / manifest (pull_request) Successful in 3s
CI / json-check (pull_request) Successful in 6s
CI / security (pull_request) Successful in 7s
CI / lua-check (pull_request) Successful in 17s
Required
Details
CI / sast (pull_request) Successful in 35s
PR Validation / validate-release-pr (pull_request) Successful in 30s
Required
Details

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
mike/kickstart.nvim!45
No description provided.