文件历史

提交图

23 次代码提交

作者 SHA1 备注 提交日期
github-actions[bot] 0b87e4ad18 build: compile dist/ [auto] 2026-04-20 08:24:03 +00:00
Jarrod Watts 029cca67dd fix: export width override and prefer COLUMNS for HUD layout 2026-04-20 18:23:39 +10:00
墨泪 e74af045ef fix(render): skip width-dependent layout when terminal width is unknown
When running as a CC statusLine subprocess, stdout/stderr are piped and
COLUMNS may not be set. getTerminalWidth() falls back to
UNKNOWN_TERMINAL_WIDTH (40), which is not a real measurement.

Previously, this fallback value was treated as real terminal width in two
places:
- canCombine in renderExpanded(): context + usage lines were always split
  because combined width exceeded 40 columns
- wrapLineToWidth in render(): all output lines were forcefully wrapped
  at 40 characters, breaking the layout

Fix: introduce a widthIsReal guard that checks whether the resolved width
is the UNKNOWN_TERMINAL_WIDTH sentinel. When width is unknown:
- canCombine defaults to true (combine lines optimistically)
- wrapLineToWidth is skipped (wrapWidth=0 → no-op)

The host process (Claude Code) handles final display layout, so wrapping
at an arbitrary fallback value is harmful rather than helpful.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 18:23:39 +10:00
github-actions[bot] 6662b4d686 build: compile dist/ [auto] 2026-04-04 06:26:09 +00:00
github-actions[bot] 5e72fe9ba1 build: compile dist/ [auto] 2026-04-04 03:53:54 +00:00
github-actions[bot] addcb3658c build: compile dist/ [auto] 2026-04-04 03:20:51 +00:00
github-actions[bot] e7d94b4307 build: compile dist/ [auto] 2026-04-04 03:00:35 +00:00
Jarrod Watts fd9a25e35f release v0.0.10: refresh changelog and dist 2026-03-23 13:36:34 +11:00
github-actions[bot] db7ea25186 build: compile dist/ [auto] 2026-03-20 00:42:28 +00:00
Pan Hu e952a399f1 fix: stop terminal scrolling to top on tool execution (#248)
* fix: detect terminal width via stderr when stdout is piped

When Claude Code runs the statusLine as a subprocess, stdout is captured
(piped), so process.stdout.columns is undefined. With no terminal width,
long lines aren't wrapped by the HUD — the terminal wraps them silently
instead. Claude Code counts \n characters to determine how many lines to
erase on the next render, so the physical line count diverges from what
Claude Code expects. Over successive renders the cursor drifts upward into
the scrollback buffer, causing the terminal to jump to the top on every
tool execution (https://github.com/jarrodwatts/claude-hud/issues/209).

Fix: fall back to process.stderr.columns before the COLUMNS env var.
When the statusLine subprocess is spawned, only stdout is redirected;
stderr remains connected to the real TTY and returns the correct width.
With accurate width, lines are properly wrapped in the HUD output and
Claude Code's line count stays consistent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: drop dist artifacts and cover stderr width

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Jarrod Watts <jarrod@cubelabs.xyz>
2026-03-20 11:41:51 +11:00
github-actions[bot] daab333f3e build: compile dist/ [auto] 2026-03-05 23:56:08 +00:00
github-actions[bot] b8d6fd3f70 build: compile dist/ [auto] 2026-03-05 07:36:22 +00:00
github-actions[bot] c1d0583bea build: compile dist/ [auto] 2026-03-03 04:27:11 +00:00
Jarrod Watts ffef15fc33 feat: redesign default layout to clean 2-line display (#112)
New default: model+project on line 1, context+usage bars combined on line 2.
All optional features (tools, agents, todos) hidden by default with
setup onboarding step to enable them.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:17:23 +11:00
Jarrod Watts c4582e9831 fix(render): keep hud to one line (#105) 2026-02-03 12:13:32 +11:00
github-actions[bot] e8e55cd33b build: compile dist/ [auto] 2026-01-19 04:03:29 +00:00
Jarrod Watts 1cffbdd57b feat(layout): add expanded multi-line layout mode (#76)
* feat(layout): add expanded multi-line layout mode

Split the overloaded session line into semantic lines for better readability:

- Identity line: model, plan, context bar, duration
- Project line: path, git status
- Environment line: config counts (CLAUDE.md, rules, MCPs, hooks)
- Usage line: rate limits with reset times

New config options:
- `lineLayout`: 'compact' | 'expanded' (default: expanded for new users)
- `showSeparators`: boolean (orthogonal to layout)
- `usageThreshold`: show usage line only when >= N%
- `environmentThreshold`: show env line only when counts >= N

Backward compatible: old `layout` config is automatically migrated.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: address code review feedback

- Fix usage threshold to use max(5h, 7d) so high 7d usage isn't hidden
  when 5h is null
- Update stale comment in session-line.ts (now compact layout only)
- Remove non-null assertions in identity.ts by hoisting planName

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: apply thresholds to compact layout for consistency

- Add environmentThreshold gating to config counts in compact mode
- Add usageThreshold with max(5h, 7d) logic to usage in compact mode
- Remove non-null assertion for planName (same fix as identity.ts)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test: update tests for new lineLayout config schema

- Update config.test.js to validate lineLayout instead of layout
- Update render.test.js to use lineLayout and showSeparators
- Update index.test.js mock config with new schema
- Update integration test expected output for expanded default

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:17:36 +11:00
github-actions[bot] e372132a02 build: compile dist/ [auto] 2026-01-07 05:00:50 +00:00
github-actions[bot] 756912c26a build: compile dist/ [auto] 2026-01-05 04:06:24 +00:00
Jarrod Watts db9e275c5d chore: remove dist/ from git tracking
dist/ was already in .gitignore but was still tracked because it was
added before the gitignore entry. This removes it from the index so
.gitignore takes effect.

After this:
- PRs will no longer include dist/ changes
- CI workflow rebuilds dist/ on main after each merge
- Contributors run `npm run build` locally to test

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 14:52:20 +11:00
github-actions[bot] 726f762649 build: compile dist/ [auto] 2026-01-04 12:03:52 +00:00
Jarrod Watts 59f1fb81c1 security: remove dist/ from git tracking (Phase 2) (#13)
* security: remove dist/ from git tracking (Phase 2)

Completes the security hardening started in Phase 1.

Changes:
- Add dist/ to .gitignore
- Remove dist/ from git tracking (48 files)
- Remove husky pre-commit hook (no longer needed)

CI will immediately rebuild and commit dist/ after this merges.
Installation flow remains unbroken.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: clarify dist/ gitignore comment

* chore: bump version to 0.0.2 and update docs

- Update version to 0.0.2 in package.json, plugin.json, marketplace.json
- Update CHANGELOG.md with all changes since 0.0.1
- Document release process and plugin update mechanism in CONTRIBUTING.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 23:03:39 +11:00
Jarrod Watts 7ce11b1ea9 fix: add marketplace.json and correct plugin installation flow
The previous installation command didn't work because Claude Code
plugins require a marketplace manifest. This adds the marketplace.json
and updates install instructions to the correct two-step flow:

1. /plugin marketplace add jarrodwatts/claude-hud
2. /plugin install claude-hud@claude-hud

Also commits dist/ for plugin distribution since users can't run
npm build when installing via marketplace.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 21:51:51 +11:00