Skip to content

feat(tui): show tokens per second in the response footer - #46108

Open
iceteaSA wants to merge 1 commit into
anomalyco:devfrom
iceteaSA:tui-tokens-per-second
Open

feat(tui): show tokens per second in the response footer#46108
iceteaSA wants to merge 1 commit into
anomalyco:devfrom
iceteaSA:tui-tokens-per-second

Conversation

@iceteaSA

@iceteaSA iceteaSA commented Aug 29, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #6096

Type of change

  • New feature

Credit

This is @JohnC0de's #12721 rebased onto current dev — same design (TPS calc in core/ so non-TUI consumers can use it, firstToken recorded in processor.ts, sub-250ms/tool/errored turns filtered out), which is itself a clean take on @edlsh's #5497. #12721 only went stale — it's dirty against dev now. If @JohnC0de rebases it, theirs should land and I'll close this. Take anything from here that helps.

What does this PR do?

Adds a tok/s readout to the assistant footer, after the duration: 18.3s · 131 tok/s.

processor.ts stamps time.firstToken on the first streamed token (tool-only turns included). TPS is generatedTokens / ((completed − firstToken) / 1000), output plus reasoning. The calc lives in packages/core/src/session/tokens.ts so the SDK can reuse it; firstToken is optional on the message schema and persisted, so a session-level average can come later without a migration.

How did you verify your code works?

The timestamp guard is compiler-enforced, not test-enforced: delete the narrowing and it's a type error ('completed' is possibly 'undefined'). The zero-token, sub-threshold, and rounding guards each go red when reverted.

  • packages/core TPS tests: 22 pass / 0 fail
  • packages/opencode full suite: 3396 pass / 0 fail
  • bun typecheck clean in opencode, core, tui

Screenshots / recordings

Footer gains a · NN tok/s segment; no new surface.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

Upstream PR anomalyco#12721 by @JohnC0de, reimplemented against the current TUI.
The tokens-per-second formula and its validity guards are theirs; that PR
targeted `packages/opencode/src/cli/cmd/tui/routes/session/`, which no
longer exists, so this reimplements the feature against `packages/tui/`
and adds the `time.firstToken` stamp the calculation needs.

Co-authored-by: João Carlos Magalhães de Castro <88864312+JohnC0de@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

The following comment was made by an LLM, it may be inaccurate:

Related PRs Found

#12721 - feat(tui): add tokens per second to response footer

#42372 - feat(app): show tokens-per-second in context usage indicator

  • This PR adds tokens-per-second display to the app's context usage indicator, which is a related but different feature (app-level vs. TUI response footer).

The PR description explicitly acknowledges these relationships and indicates that #12721 should take precedence if rebased. The current PR (#46108) is a cleaner implementation of the same design on a current branch.

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.

[FEATURE]: Adding Experimental Calculation and Display of Tokens per second

1 participant