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

Merged
Mike Bros merged 19 commits from release/1.23.0 into master 2026-03-03 20:19:08 +00:00
Collaborator

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

Changes

Shell — Starship Prompt

  • OP#1899: Install and configure Starship prompt
  • OP#1901: Install Starship binary
  • OP#1902: Create Starship configuration — Catppuccin Macchiato powerline theme

Shell — Zsh Migration

  • OP#1900: Migrate from Bash to Zsh
  • OP#1903: Install Zsh and create .zshrc from .bashrc
  • OP#1904: Port bash_aliases to zsh_aliases with cross-reference headers
  • OP#1905: Install Zinit plugin manager and core plugins
  • OP#1906: Set Zsh as default shell and update Gravity manifest
  • OP#1907: End-to-end verification (20/20 checks passing)

Release Skill

  • feat(release): add refresh mode for in-progress releases
  • feat(release): add multiple entry points for refresh mode
  • fix(release): use prefix match for PR title, enforce draft release
  • fix(release): simplify draft release step — drop tag_name, clarify sequence
  • fix(release): update release task template — add invocation instruction, sync with skill

Checklist

  • All version tasks closed in Gravity PM
  • Version file matches Gravity PM version (manifest.json: 1.23.0)
  • Draft Forgejo release created (ID: 100)

References

Version: 1.23.0 (Gravity PM)

## Release v1.23.0 — Shell Switch (zsh + Starship) ### Changes #### Shell — Starship Prompt - OP#1899: Install and configure Starship prompt - OP#1901: Install Starship binary - OP#1902: Create Starship configuration — Catppuccin Macchiato powerline theme #### Shell — Zsh Migration - OP#1900: Migrate from Bash to Zsh - OP#1903: Install Zsh and create .zshrc from .bashrc - OP#1904: Port bash_aliases to zsh_aliases with cross-reference headers - OP#1905: Install Zinit plugin manager and core plugins - OP#1906: Set Zsh as default shell and update Gravity manifest - OP#1907: End-to-end verification (20/20 checks passing) #### Release Skill - feat(release): add refresh mode for in-progress releases - feat(release): add multiple entry points for refresh mode - fix(release): use prefix match for PR title, enforce draft release - fix(release): simplify draft release step — drop tag_name, clarify sequence - fix(release): update release task template — add invocation instruction, sync with skill ### Checklist - [x] All version tasks closed in Gravity PM - [x] Version file matches Gravity PM version (manifest.json: 1.23.0) - [x] Draft Forgejo release created (ID: 100) ### References Version: 1.23.0 (Gravity PM)
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>
fix(release): update release task template — add invocation instruction, sync with skill
All checks were successful
CI / json-check (pull_request) Successful in 3s
PR Validation / validate-branch (pull_request) Successful in 0s
CI / manifest (pull_request) Successful in 3s
CI / security (pull_request) Successful in 5s
CI / lua-check (pull_request) Successful in 9s
PR Validation / validate-release-pr (pull_request) Successful in 2s
CI / sast (pull_request) Successful in 13s
0e816f93f1
The release task WP description was stale vs the actual skill steps.
Added "run `release {version}`" instruction so agents invoke the skill
instead of following the summary bullets manually. Updated Phase 1
summary to match current step order: commit+push, draft release before
PR, titled PR format. Aligned Common Mistake #17 with the new tag_name
guidance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(release): add refresh mode for in-progress releases
All checks were successful
PR Validation / validate-branch (pull_request) Successful in 1s
CI / json-check (pull_request) Successful in 4s
CI / lua-check (pull_request) Successful in 12s
CI / sast (pull_request) Successful in 13s
CI / manifest (pull_request) Successful in 1m42s
PR Validation / validate-release-pr (pull_request) Successful in 1m38s
CI / security (pull_request) Successful in 1m44s
9b77eadecd
When `release <version>` is invoked and all three artifacts exist (open
PR, draft release, release branch), the skill now enters Refresh Mode
instead of blocking. Refresh Mode regenerates release notes, recreates
the draft release, and updates the PR body — enabling iterative updates
during PR review cycles without restarting the full workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(release): add multiple entry points for refresh mode
All checks were successful
CI / manifest (pull_request) Successful in 4s
CI / security (pull_request) Successful in 9s
CI / sast (pull_request) Successful in 12s
PR Validation / validate-branch (pull_request) Successful in 21s
CI / json-check (pull_request) Successful in 58s
PR Validation / validate-release-pr (pull_request) Successful in 54s
CI / lua-check (pull_request) Successful in 1m18s
8fab65de10
- `/release-refresh` as a standalone skill command
- `/release refresh` recognized as a direct signal
- Interactive choice menu when `/release` is invoked with an in-progress
  release detected (refresh, finish, or start new)
- Thin `release-refresh` skill delegates to release skill's refresh mode

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mike Bros approved these changes 2026-03-03 20:19:01 +00:00
Mike Bros merged commit a4ce2f92e4 into master 2026-03-03 20:19:08 +00:00
Mike Bros deleted branch release/1.23.0 2026-03-03 20:19:08 +00:00
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!46
No description provided.