Skip to content

feat(dashboard): add widget add, edit, and delete commands#407

Draft
betegon wants to merge 7 commits intomainfrom
feat/dashboard-widget-commands
Draft

feat(dashboard): add widget add, edit, and delete commands#407
betegon wants to merge 7 commits intomainfrom
feat/dashboard-widget-commands

Conversation

@betegon
Copy link
Member

@betegon betegon commented Mar 12, 2026

Summary

  • Add sentry dashboard widget add — add a widget with inline --display/--query/--where/--group-by/--sort/--limit flags
  • Add sentry dashboard widget edit — edit an existing widget by --index or --title, merging only changed fields
  • Add sentry dashboard widget delete — remove a widget by --index or --title
  • Add widget formatters (formatWidgetAdded, formatWidgetDeleted, formatWidgetEdited)

All widget commands use the GET-modify-PUT pattern with server field stripping and auto-layout for new widgets.

Stacked on #406.

Test plan

  • bun run typecheck — no new type errors
  • bun run lint — passes
  • bun test test/types/dashboard.test.ts — 53 tests pass

🤖 Generated with Claude Code

@github-actions
Copy link
Contributor

github-actions bot commented Mar 12, 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 ✨

Dashboard

  • Add widget add, edit, and delete commands by betegon in #407
  • Add dashboard list, view, and create commands by betegon in #406

Init

  • Support org/project positional to pin org and project name by MathurAditya724 in #428
  • Show feedback hint after successful setup by betegon in #430
  • Add --team flag to relay team selection to project creation by MathurAditya724 in #403
  • Enforce canonical feature display order by betegon in #388
  • Accept multiple delimiter formats for --features flag by betegon in #386
  • Add git safety checks before wizard modifies files by betegon in #379
  • Add experimental warning before wizard runs by betegon in #378
  • Add init command for guided Sentry project setup by betegon in #283

Issue List

  • Auto-compact when table exceeds terminal height by BYK in #395
  • Redesign table to match Sentry web UI by BYK in #372

Other

  • (auth) Allow re-authentication without manual logout by BYK in #417
  • (trial) Auto-prompt for Seer trial + sentry trial list/start commands by BYK in #399
  • Add sentry schema command for API introspection by BYK in #437
  • Add --json flag to help command for agent introspection by BYK in #432
  • Add sentry span list and sentry span view commands by betegon in #393
  • Support SENTRY_HOST as alias for SENTRY_URL by betegon in #409
  • Add --dry-run flag to mutating commands by BYK in #387
  • Return-based output with OutputConfig on buildCommand by BYK in #380
  • Add --fields flag for context-window-friendly JSON output by BYK in #373
  • Magic @ selectors (@latest, @most_frequent) for issue commands by BYK in #371
  • Input hardening against agent hallucinations by BYK in #370
  • Add response caching for read-only API calls by BYK in #330

Bug Fixes 🐛

Dsn

Init

  • Align multiselect hint lines with clack's visual frame by MathurAditya724 in #435
  • Make URLs clickable with OSC 8 terminal hyperlinks by MathurAditya724 in #423
  • Remove implementation detail from help text by betegon in #385
  • Truncate uncommitted file list to first 5 entries by MathurAditya724 in #381

Other

  • (api) Convert --data to query params for GET requests by BYK in #383
  • (docs) Remove double borders and fix column alignment on landing page tables by betegon in #369
  • (help) Hide plural aliases from help output by betegon in #441
  • (trace) Show span IDs in trace view and fix event_id mapping by betegon in #400
  • (upgrade) Remove hard chain depth cap for nightly delta upgrades by BYK in #444
  • Show human-friendly names in trial list and surface plan trials by BYK in #412
  • Add trace ID validation to trace view + UUID dash-stripping by BYK in #375

Documentation 📚

  • (commands) Add alias info to subcommand help output by betegon in #442
  • Update AGENTS.md with patterns from span commands work by BYK in #433
  • Update credential storage docs and remove stale config.json references by betegon in #408

Internal Changes 🔧

Init

  • Remove --force flag by betegon in #377
  • Remove dead determine-pm step label by betegon in #374

Tests

  • Consolidate unit tests subsumed by property tests by BYK in #422
  • Remove redundant and low-value tests by BYK in #418

Other

  • (lint) Enforce command output conventions via Biome plugins by BYK in #439
  • (log/list) Convert non-follow paths to return CommandOutput by BYK in #410
  • Unified trace-target parsing and resolution by BYK in #438
  • Centralize slug normalization warning in parseOrgProjectArg by BYK in #436
  • Unify commands as generators with HumanRenderer factory, remove stdout plumbing by BYK in #416
  • Convert list command handlers to return data instead of writing stdout by BYK in #404
  • Split api-client.ts into focused domain modules by BYK in #405
  • Migrate non-streaming commands to CommandOutput with markdown rendering by BYK in #398
  • Convert Tier 2-3 commands to return-based output and consola by BYK in #394
  • Convert remaining Tier 1 commands to return-based output by BYK in #382
  • Converge Tier 1 commands to writeOutput helper by BYK in #376

Other

  • release: 0.16.0 by betegon in 90f84632
  • Minify JSON on read and pretty-print on write in init local ops by MathurAditya724 in #396

🤖 This preview updates automatically when you update the PR.

Dashboard API functions now live in src/lib/api/dashboards.ts following
the domain module pattern from #405.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@betegon betegon force-pushed the feat/dashboard-commands-core branch from 02c23d0 to f05f91a Compare March 13, 2026 09:39
@betegon betegon force-pushed the feat/dashboard-widget-commands branch from 17da821 to 64ddb86 Compare March 13, 2026 09:40
@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

Codecov Results 📊

104 passed | Total: 104 | Pass Rate: 100% | Execution Time: 0ms

📊 Comparison with Base Branch

Metric Change
Total Tests
Passed Tests
Failed Tests
Skipped Tests

✨ No test changes detected

All tests are passing successfully.

✅ Patch coverage is 89.00%. Project has 781 uncovered lines.
❌ Project coverage is 96.44%. Comparing base (base) to head (head).

Files with missing lines (1)
File Patch % Lines
human.ts 94.07% ⚠️ 77 Missing
Coverage diff
@@            Coverage Diff             @@
##          main       #PR       +/-##
==========================================
- Coverage    96.68%    96.44%    -0.24%
==========================================
  Files          159       170       +11
  Lines        21011     21924      +913
  Branches         0         0         —
==========================================
+ Hits         20314     21143      +829
- Misses         697       781       +84
- Partials         0         0         —

Generated by Codecov Action

betegon and others added 3 commits March 13, 2026 12:08
…end existing test suites

Add ~46 new tests covering dashboard commands (list, create, resolve),
URL builders (property-based), human formatters, and type utilities
(assignDefaultLayout, stripWidgetServerFields).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Convert list from buildListCommand to buildCommand with return-based output
- Extract formatDashboardListHuman for human-readable table rendering
- Add --fresh flag to both list and view commands
- Update list tests to include fresh flag

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@betegon betegon force-pushed the feat/dashboard-widget-commands branch from 2a0361d to 38e3eda Compare March 13, 2026 11:14
betegon and others added 3 commits March 13, 2026 12:22
…olve.ts

Align parseDashboardPositionalArgs with the established codebase pattern
used in event/view, trace/view, trace/logs, and dashboard/create.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add three widget management subcommands under `sentry dashboard widget`:
- `widget add` — add a widget with inline --display/--query/--where/--group-by flags
- `widget edit` — edit an existing widget by --index or --title, merging only changed fields
- `widget delete` — remove a widget by --index or --title

All widget commands use GET-modify-PUT pattern with server field stripping
and auto-layout for new widgets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…o shared module

- Move resolveWidgetIndex from edit.ts to resolve.ts (shared by edit + delete)
- Extract validateWidgetEnums to resolve.ts (shared by add + edit)
- Remove inline enum validation from add.ts and edit.ts
- Remove inline widget-index logic from delete.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@betegon betegon force-pushed the feat/dashboard-widget-commands branch from 1f3a700 to 0d179ef Compare March 13, 2026 11:22
@BYK BYK force-pushed the feat/dashboard-commands-core branch from f13bbd3 to 67b80d5 Compare March 17, 2026 12:21
Base automatically changed from feat/dashboard-commands-core to main March 17, 2026 14:41
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