feat: status line — current epic & story in the HUD (composes, doesn't overwrite) + bump to 0.10.0#4
Merged
Merged
Conversation
- New scripts/statusline.mjs: composes ABOVE an existing status line (e.g. oh-my-claudecode) by re-running the base statusLine command and adding a "📚 epic › story (status)" line derived from session activity - New /projectstore:statusline on|off|status command wires it into the project's .claude/settings.local.json (local scope, guarded, absolute path) - Standalone base line (model · dir · branch · 📚) when no base HUD exists - README: Status line section with screenshot + does-not-overwrite note + oh-my-claudecode link; inventory (14 commands) + roadmap row - Bump plugin + marketplace to 0.10.0 Maintainer: ekonev@smartandpoint.com
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
Adds an opt-in Claude Code status line that shows the epic & story the agent is working on this session — composed above an existing status line (e.g. oh-my-claudecode), not replacing it.
Why compose instead of overwrite
statusLineis a single slot and not plugin-declarable, so a naive approach would clobber whatever HUD the user already runs. Insteadscripts/statusline.mjsre-runs the basestatusLinecommand from~/.claude/settings.json(or the project's.claude/settings.json), prints it verbatim, and adds the📚 <epic> › <story> (<status>)line above it. With no base command it renders a standalone line (<model> · <dir> · ⎇ <branch> · 📚 …).Changes
scripts/statusline.mjs(new) — reads hook-style stdin, feedsCLAUDE_PROJECT_DIRfromworkspace.project_dirbeforereadConfig(), derives the current epic/story from the sessionrecent_activitylog, composes over the base HUD. Silent no-op +exit 0on every failure path; git branch read from.git/HEAD(no process spawn); recursion-guarded base re-run viaspawnSync(timeout + maxBuffer); EPIPE-guarded stdout.commands/statusline.md(new) —/projectstore:statusline on|off|statuswires it into the project's.claude/settings.local.json(local scope, guarded merge, baked absolute path since${CLAUDE_PLUGIN_ROOT}isn't expanded instatusLine.command).README.md— Status line section (with screenshot + "does not overwrite" note + oh-my-claudecode link), inventory (14 commands), roadmap row.docs/images/statusline-hud.png— screenshot.plugin.json/marketplace.json— version0.9.0→0.10.0.Review
Passed an independent
projectstore:code-reviewerpass (verdict commit). Two 🟡 findings fixed: async EPIPE stdout guard, and quoted command path (spaces-in-path). Smoke-tested against the real oh-my-claudecode HUD (compose + standalone + not-bound + malformed stdin + git-branch + EPIPE), allexit 0.Maintainer: ekonev@smartandpoint.com