Skip to content

feat(formatters): display span duration in span tree#219

Merged
betegon merged 3 commits intomainfrom
feat/span-tree-duration
Feb 9, 2026
Merged

feat(formatters): display span duration in span tree#219
betegon merged 3 commits intomainfrom
feat/span-tree-duration

Conversation

@betegon
Copy link
Member

@betegon betegon commented Feb 9, 2026

Summary

Adds per-span duration to the span tree output in issue view and event view commands. Durations are computed from the API-provided duration field when available, falling back to timestamp arithmetic.

Changes

  • Add computeSpanDurationMs() to extract duration from span data
  • Add formatSpanDuration() for human-readable duration formatting (245ms, 1.24s, 2m 15s)
  • Update formatSpanSimple() to append duration after description
  • Extend TraceSpan type with end_timestamp and duration fields
  • Update tests to verify duration display

Example output:

─── Span Tree ───

Trace — ed15641a849f486193aa4e2a4bafaca6
└─ cli.command — sentry.issue.list  (408ms)
   ├─ db — SELECT region_url FROM org_regions WHERE org_slug = ?  (0ms)
   └─ db — SELECT * FROM auth WHERE id = 1  (0ms)

Test Plan

  • bun test test/lib/formatters/span-tree.test.ts - all 20 tests pass
  • Manual testing with sentry issue view and sentry event view

Add per-span duration display to the span tree output. Durations are
computed from the API-provided duration field when available, falling
back to timestamp arithmetic (end_timestamp or timestamp minus
start_timestamp).

Format: `op — description  (duration)` where duration is shown as
245ms, 1.24s, or 2m 15s depending on magnitude.

Also extends TraceSpan type with end_timestamp and duration fields.
@github-actions
Copy link
Contributor

github-actions bot commented Feb 9, 2026

Semver Impact of This PR

🟡 Minor (new features)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


New Features ✨

Cli

  • Add setup command for shell integration by BYK in #213
  • Add plural command aliases for list commands by betegon in #209

Other

  • (formatters) Display span duration in span tree by betegon in #219
  • (log) Add view command to display log entry details by betegon in #212
  • (setup) Auto-install Claude Code agent skill during setup by BYK in #216

Bug Fixes 🐛

Upgrade

  • Handle EPERM in isProcessRunning for cross-user locks by BYK in #211
  • Replace curl pipe with direct binary download by BYK in #208

Documentation 📚

  • (log) Add documentation for sentry log view command by betegon in #214
  • Add documentation for log command by betegon in #210

Internal Changes 🔧

  • (ci) Remove merge-artifacts job with Craft 2.21.1 by BYK in #215

🤖 This preview updates automatically when you update the PR.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 9, 2026

Codecov Results 📊

✅ Patch coverage is 100.00%. Project has 3923 uncovered lines.
✅ Project coverage is 67.31%. Comparing base (base) to head (head).

Files with missing lines (63)
File Patch % Lines
human.ts 56.12% ⚠️ 391 Missing
resolve-target.ts 15.28% ⚠️ 366 Missing
list.ts 14.39% ⚠️ 345 Missing
list.ts 23.47% ⚠️ 212 Missing
api-client.ts 69.27% ⚠️ 197 Missing
oauth.ts 25.10% ⚠️ 194 Missing
list.ts 21.96% ⚠️ 167 Missing
view.ts 22.07% ⚠️ 166 Missing
plan.ts 19.37% ⚠️ 154 Missing
upgrade.ts 64.54% ⚠️ 128 Missing
help.ts 19.85% ⚠️ 109 Missing
interactive-login.ts 9.17% ⚠️ 99 Missing
view.ts 25.81% ⚠️ 92 Missing
view.ts 47.70% ⚠️ 91 Missing
clipboard.ts 4.49% ⚠️ 85 Missing
status.ts 24.07% ⚠️ 82 Missing
view.ts 49.07% ⚠️ 82 Missing
migration.ts 47.44% ⚠️ 82 Missing
list.ts 27.18% ⚠️ 75 Missing
browser.ts 4.11% ⚠️ 70 Missing
login.ts 33.33% ⚠️ 64 Missing
span-tree.ts 5.00% ⚠️ 57 Missing
explain.ts 33.33% ⚠️ 56 Missing
telemetry.ts 79.86% ⚠️ 56 Missing
api.ts 89.80% ⚠️ 47 Missing
seer.ts 75.54% ⚠️ 45 Missing
schema.ts 89.56% ⚠️ 40 Missing
refresh.ts 40.63% ⚠️ 38 Missing
seer.ts 79.87% ⚠️ 30 Missing
preload.ts 53.23% ⚠️ 29 Missing
utils.ts 88.94% ⚠️ 25 Missing
view.ts 61.54% ⚠️ 25 Missing
detector.ts 90.10% ⚠️ 20 Missing
app.ts 76.32% ⚠️ 18 Missing
output.ts 15.00% ⚠️ 17 Missing
code-scanner.ts 95.00% ⚠️ 16 Missing
help.ts 57.14% ⚠️ 15 Missing
arg-parsing.ts 90.00% ⚠️ 12 Missing
dsn-cache.ts 94.62% ⚠️ 12 Missing
logout.ts 56.00% ⚠️ 11 Missing
token.ts 52.17% ⚠️ 11 Missing
fix.ts 83.61% ⚠️ 10 Missing
qrcode.ts 33.33% ⚠️ 10 Missing
fs-utils.ts 57.14% ⚠️ 9 Missing
project-root.ts 97.73% ⚠️ 7 Missing
version-check.ts 91.76% ⚠️ 7 Missing
feedback.ts 84.21% ⚠️ 6 Missing
auth.ts 95.52% ⚠️ 6 Missing
shell.ts 96.23% ⚠️ 6 Missing
upgrade.ts 94.74% ⚠️ 5 Missing
resolver.ts 94.57% ⚠️ 5 Missing
setup.ts 97.01% ⚠️ 4 Missing
index.ts 95.96% ⚠️ 4 Missing
project-aliases.ts 97.40% ⚠️ 2 Missing
project-root-cache.ts 96.92% ⚠️ 2 Missing
json.ts 33.33% ⚠️ 2 Missing
alias.ts 99.42% ⚠️ 1 Missing
completions.ts 99.37% ⚠️ 1 Missing
env-file.ts 99.19% ⚠️ 1 Missing
parser.ts 98.63% ⚠️ 1 Missing
colors.ts 97.96% ⚠️ 1 Missing
helpers.ts 94.74% ⚠️ 1 Missing
helpers.ts 94.74% ⚠️ 1 Missing
Coverage diff
@@            Coverage Diff             @@
##          main       #PR       +/-##
==========================================
+ Coverage    67.27%    67.31%    +0.04%
==========================================
  Files           98        98         —
  Lines        11986     12002       +16
  Branches         0         0         —
==========================================
+ Hits          8063      8079       +16
- Misses        3923      3923         —
- Partials         0         0         —

Generated by Codecov Action

@betegon betegon marked this pull request as ready for review February 9, 2026 21:11
When ms % 60000 >= 59500, rounding seconds produced invalid output
like "1m 60s" instead of "2m 0s". Fixed by rounding total seconds
first, then splitting into minutes and seconds.
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Replace hand-rolled formatSpanDuration with battle-tested pretty-ms
library. This handles all edge cases around rounding at tier boundaries
(e.g., 999.5ms -> 1s, 59995ms -> 1m) correctly.
@betegon betegon merged commit 8483ba9 into main Feb 9, 2026
23 checks passed
@betegon betegon deleted the feat/span-tree-duration branch February 9, 2026 21:45
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