Skip to content

feat(cache-timer): add a short time toggle and drop the clock notation - #592

Merged
sirmalloc merged 2 commits into
sirmalloc:mainfrom
ddelange:cache-timer-short-time
Oct 30, 2026
Merged

sirmalloc merged 2 commits into
sirmalloc:mainfrom
ddelange:cache-timer-short-time

Conversation

@ddelange

Copy link
Copy Markdown
Contributor

Problem

Cache Timer is the only timer widget without the shared (s)hort time toggle, and the only one that renders its countdown as clock notation (4:52) instead of labeled units.
Block Timer, Block Reset Timer and Weekly Reset Timer all render 4hr 30m by default and 4h30m with s.

A second gap: a TTL longer than an hour (settable directly in settings.json) rendered as 119:55, which reads as hours to most people.

Change

  • Cache Timer now renders the countdown as 4m 52s, and 4m52s with the new (s)hort time keybind.
    Same key, same toggle-compact action, same compact metadata flag as the reset timers, so the editor annotation reads (compact) there too.
  • Seconds always render, also at 4m 0s, so the widget does not change width every minute.
    This is why the countdown keeps its own formatter instead of calling formatUsageDuration, which drops zero parts.
  • Hour parts appear above an hour remaining: 1hr 59m 55s, or 1h59m55s in short time mode.
  • The clock notation is gone.
    This is the one behavior change for existing users: the default is 2 characters wider, and short time mode is 1 character wider than the old 4:52.
    Happy to keep 4:52 as the default and make s switch to labels instead, if you prefer no default change.

Notes

docs/USAGE.md also now states that Backspace in the glyph editor renders a state without a glyph.
That already worked on Cache Timer, but the docs only mentioned it for the git and jj glyph widgets, so people trying to save width on the bar do not find it.

bun test (2362 pass) and bun run lint are green.

The Cache Timer was the only timer widget without the shared (s) short time
toggle, and the only one rendering its countdown as mm:ss instead of labeled
units. It now renders '4m 52s' by default and '4m52s' in short time mode,
matching Block Timer, Block Reset Timer and Weekly Reset Timer, and it gains
hour parts for TTLs longer than an hour.
@sirmalloc
sirmalloc merged commit 43cdeaf into sirmalloc:main Oct 30, 2026
3 checks passed
pcvelz added a commit to pcvelz/ccstatusline-usage that referenced this pull request Nov 2, 2026
Upstream: weekly limit timers (sirmalloc#768), prompt cache miss widgets (sirmalloc#770), context window size env override (sirmalloc#352, sirmalloc#407), windowed speed fixes (sirmalloc#769, sirmalloc#771), separator/renderer fixes (sirmalloc#773), custom-command styling (sirmalloc#775), clickable cwd links (sirmalloc#744), account email from live credentials (sirmalloc#724), cache timer reported expiry + short toggle (sirmalloc#576, sirmalloc#592), claude-status lock (sirmalloc#635, sirmalloc#772), dedup token metrics (sirmalloc#622, sirmalloc#725, sirmalloc#735).
Not adopted: sirmalloc#765 terminal width from COLUMNS with fixed reserve - the fork keeps flexMode/compactThreshold and tmux pane priority.

Hand edits outside conflicts:
- README.md: kept fork Configure flex separator behavior bullet and older-updates details wrapper; dropped upstream Related Projects additions (claude-eta)
- AGENTS.md: kept fork terminal width wording (sirmalloc#765 not adopted)
- src/types/FlexMode.ts, src/tui/components/TerminalWidthMenu.tsx, src/tui/components/__tests__/TerminalWidthMenu.test.ts, src/tui/components/TerminalOptionsMenu.tsx, src/tui/components/__tests__/TerminalOptionsMenu.test.ts: restored, fork keeps terminal width settings
- src/tui/App.tsx, src/tui/components/index.ts, src/types/index.ts: re-wired terminal width menu and FlexMode export
- src/types/StatusJSON.ts: dropped fork duplicate prompt_cache key, upstream schema is a superset
- src/utils/terminal.ts: COLUMNS source gated on non-tmux so tmux pane width keeps priority
- src/widgets/WeeklyLimitTimer.ts, src/utils/usage-prefetch.ts, src/widgets/__tests__/WeeklyLimitTimer.test.ts: compat fix - fableUsage/fableResetAt -> weeklyFableUsage/weeklyFableResetAt
- src/widgets/ApiUsage.tsx: compat fix - Context Bar honors effective context window (override, clamp, 1.0M format); Weekly renders a valid value despite a session error
- src/widgets/__tests__/ApiUsage.localModelFallback.test.ts: output tokens no longer counted in context (upstream sirmalloc#730)
- src/utils/__tests__/renderer-flex-width.test.ts, src/utils/__tests__/renderer-ansi.test.ts, src/utils/__tests__/gradient.test.ts, src/utils/__tests__/renderer-separator-collapse.test.ts, src/utils/__tests__/config.test.ts, src/tui/__tests__/App.test.ts: fork deviation - fork width model (flexMode, 6-column full reserve, kept settings, Terminal Width menu entry)
- src/utils/__tests__/default-colors.test.ts: fork deviation - accept ansi256:/hex: defaults
- src/utils/__tests__/usage-prefetch.test.ts: fork deviation - weekly usage comes from the API, fork widget imports from ApiUsage
- src/widgets/__tests__/CurrentWorkingDir.test.ts, src/widgets/__tests__/CustomCommand.test.ts: Settings literal gains flexMode/compactThreshold
- src/utils/__tests__/context-window.test.ts, src/utils/__tests__/jsonl-metrics.test.ts: restored fork tests upstream dropped
- docs/test-retirements.md: ledger for the dev-reload snapshot-path and RemoteControlStatus glyph (sirmalloc#605) tests upstream replaced
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.

2 participants