Skip to content

th api dashboard layout get/add/remove (SMOODEV-2753)#269

Closed
brentrager wants to merge 2 commits into
mainfrom
SMOODEV-2753-th-dashboard
Closed

th api dashboard layout get/add/remove (SMOODEV-2753)#269
brentrager wants to merge 2 commits into
mainfrom
SMOODEV-2753-th-dashboard

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Problem

The main-dashboard widget layout (per user + org, GET/PUT /organizations/{org}/dashboard/layout on api-prime) had no CLI surface — adding a widget meant the web picker or hand-rolled curl with a user JWT.

Solution

th api dashboard layout get|add|remove:

  • get — prints the saved (or org-default) layout as JSON (--type, defaults main).
  • add <widget_id> — read-modify-write: appends below the current grid with the web's size→span mapping (small 3 / medium 6 / large 9 / full 12); the server validates the widget id against its registry so typos fail loudly. Duplicate adds rejected client-side.
  • remove <widget_id> — the inverse.

Rides the user JWT (UserClient) because layout rows are keyed by user id — M2M can't own a layout. Unit tests cover the size mapping and layout-shape tolerance.

Verification

  • cargo fmt clean, cargo clippy 0 warnings, cargo test dashboard 2/2.
  • Dogfood (after SmooAI/smooai#3476 deploys): th api dashboard layout add aws_cost_forecast --org 8be5f5fd-… --size medium on the Smoo AI org.

Pearl th-c7f72b · SMOODEV-2753 (smooai side: SmooAI/smooai#3476)

🤖 Generated with Claude Code

https://claude.ai/code/session_01PFBBaG8GMKhVKntX36dkys

The main-dashboard widget layout (per user + org, served by api-prime's
GET/PUT /organizations/{org}/dashboard/layout) had no CLI surface — adding
a widget meant clicking the web picker or hand-rolling curl with a user
JWT. Add 'th api dashboard layout get|add|remove': add is a
read-modify-write that appends below the current grid using the web's
size→span mapping and lets the server's registry validation reject unknown
ids loudly; remove is the inverse; get prints the saved-or-default layout.
Rides the user session (layout rows are keyed by user id, so M2M cannot
own one). First consumer: adding the new aws_cost_forecast widget to the
Smoo AI org dashboard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PFBBaG8GMKhVKntX36dkys
@brentrager
brentrager enabled auto-merge (squash) July 25, 2026 20:46
@changeset-bot

changeset-bot Bot commented Jul 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 55dfec5

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@smooai/smooth Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@brentrager brentrager closed this Jul 26, 2026
auto-merge was automatically disabled July 26, 2026 05:04

Pull request was closed

@brentrager brentrager reopened this Jul 26, 2026
@brentrager

Copy link
Copy Markdown
Contributor Author

Superseded by the th-c7f72b-dashboard-layout branch — Actions never created check suites for this branch (no pull_request events processed despite pushes + reopen); recreating with a fresh event chain.

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