Skip to content

feat: status line — current epic & story in the HUD (composes, doesn't overwrite) + bump to 0.10.0#4

Merged
Evgenii-Konev merged 1 commit into
mainfrom
feat/statusline-hud
Jul 1, 2026
Merged

feat: status line — current epic & story in the HUD (composes, doesn't overwrite) + bump to 0.10.0#4
Evgenii-Konev merged 1 commit into
mainfrom
feat/statusline-hud

Conversation

@Evgenii-Konev

Copy link
Copy Markdown
Member

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.

projectstore status line above oh-my-claudecode HUD

Why compose instead of overwrite

statusLine is a single slot and not plugin-declarable, so a naive approach would clobber whatever HUD the user already runs. Instead scripts/statusline.mjs re-runs the base statusLine command 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, feeds CLAUDE_PROJECT_DIR from workspace.project_dir before readConfig(), derives the current epic/story from the session recent_activity log, composes over the base HUD. Silent no-op + exit 0 on every failure path; git branch read from .git/HEAD (no process spawn); recursion-guarded base re-run via spawnSync (timeout + maxBuffer); EPIPE-guarded stdout.
  • commands/statusline.md (new) — /projectstore:statusline on|off|status wires it into the project's .claude/settings.local.json (local scope, guarded merge, baked absolute path since ${CLAUDE_PLUGIN_ROOT} isn't expanded in statusLine.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 — version 0.9.00.10.0.

Review

Passed an independent projectstore:code-reviewer pass (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), all exit 0.

Maintainer: ekonev@smartandpoint.com

- 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
@Evgenii-Konev Evgenii-Konev merged commit c456f7d into main Jul 1, 2026
@Evgenii-Konev Evgenii-Konev deleted the feat/statusline-hud branch July 1, 2026 08:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant