Skip to content

fix(webapp): webhooks dashboard UI pass - #4490

Merged
samejr merged 5 commits into
feat/hosted-webhook-ingressfrom
feat/webhooks-ui
Aug 3, 2026
Merged

fix(webapp): webhooks dashboard UI pass#4490
samejr merged 5 commits into
feat/hosted-webhook-ingressfrom
feat/webhooks-ui

Conversation

@samejr

@samejr samejr commented Aug 3, 2026

Copy link
Copy Markdown
Member

A UI pass over the webhooks dashboard, on top of #4344. No behaviour changes beyond the fixes below.

Deliveries list

  • Whole row is clickable. The external delivery ID, created, processed and error cells had no link, and the target cell only linked when the delivery had a run or session, so most of each row was dead.
  • Dimmed "None" and "Unknown" cells now brighten with the row on hover.
  • The new-deliveries button sits inline, left of the pager, instead of on its own row beneath it.
  • The table scrolls. It was passing stickyHeader, which switches the table container to overflow-visible and stops it being the scroll container; every other list in the app leaves it off. The header stays sticky either way.
  • 60 deliveries per page, up from 25. Test tag uses the shared Badge, the webhook icon matches the Tasks page, and the Status and More filters menus drop their redundant search fields.

Delivery detail

  • Dropped the duplicate status badge from the title bar; the sidebar already has a Status row.
  • The "nothing was captured" tab messages are centred and a size larger.
  • Copyable sidebar values ellipsise instead of overflowing their column, so an unbreakable hash or opaque id no longer runs past the edge. CopyableText gains an opt-in truncate prop that reserves a gutter for the copy button.
  • The delivery timeline's thick bar is rounded at the top. The run timeline gets that corner from the start-cap-thick event above its thick line, but a delivery only has two timestamps, so the line itself starts the bar and had a square top on every succeeded and failed delivery. RunTimelineLine gains an opt-in roundedTop, so other callers are unaffected.

Navigation

Webhooks was a section containing a single item. It now sits as a top-level item below Sessions, and the page is titled "Webhook deliveries". Registering the page in the favourites registry also fixes its favourite name, which was saving as "Page: Deliveries".

Also

One fix outside the UI: the delivery seed script minted id and friendlyId as two independent ids, but the detail lookup derives the row id from the friendlyId, so every seeded delivery's page reported that it could not be found.

samejr added 5 commits July 28, 2026 19:18
Webhooks was a section holding a single "Deliveries" item. It now sits as a
top-level item below Sessions, and the page is titled "Webhook deliveries".

Registering the page in the favorites registry also fixes its favorite name:
favoriting it added "Page: Deliveries" to the side menu, and now adds
"Webhook deliveries".
Make the whole delivery row clickable. The external delivery ID, created,
processed and error cells carried no link, and the target cell only linked
when the delivery had a run or session, so most of each row was dead. Dimmed
"None" and "Unknown" cells now brighten with the rest of the row on hover.

Move the new-deliveries button inline, to the left of the pager, rather than
on its own row beneath it. Brighten the Test filter icon, drop the redundant
search field from the Status and More filters menus, use the shared Badge for
the "Test" tag, size the webhook icon to match the Tasks page, and show 60
deliveries per page instead of 25.
Drop the duplicate status badge from the title bar (the sidebar already has a
Status row), centre the "nothing was captured" tab messages and set them a size
larger, and ellipsise the copyable sidebar values so an unbreakable hash or
opaque id no longer overflows its column. Those values move up to text-sm.

Round the top of the delivery timeline's thick bar. The run timeline gets that
corner from the start-cap-thick event above its thick line, but a delivery has
only two timestamps, so the line itself starts the bar and had a square top on
every succeeded and failed delivery. CopyableText gains an opt-in truncate prop
and RunTimelineLine an opt-in roundedTop, so other callers are untouched.
The delivery seed script minted `id` and `friendlyId` as two independent ids,
but the detail lookup derives the row id from the friendlyId, so every seeded
delivery's page reported that the delivery could not be found.
The deliveries list passed stickyHeader, which switches the table container to
overflow-visible and so stops it being the scroll container. Every other list in
the app (runs, sessions, batches) leaves it off and renders the table directly in
the layout's content row. The header stays sticky regardless, because TableHeader
always sets sticky top-0.
@changeset-bot

changeset-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: dc97f47

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: aceeab1b-0f37-48c6-bcbb-2398d405b175

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 1 potential issue.

Open in Devin Review

@samejr
samejr merged commit a0dcd78 into feat/hosted-webhook-ingress Aug 3, 2026
31 checks passed
@samejr
samejr deleted the feat/webhooks-ui branch August 3, 2026 14:40
ericallam pushed a commit that referenced this pull request Aug 3, 2026
A UI pass over the webhooks dashboard, on top of #4344. No behaviour
changes beyond the fixes below.

## Deliveries list

- Whole row is clickable. The external delivery ID, created, processed
and error cells had no link, and the target cell only linked when the
delivery had a run or session, so most of each row was dead.
- Dimmed "None" and "Unknown" cells now brighten with the row on hover.
- The new-deliveries button sits inline, left of the pager, instead of
on its own row beneath it.
- The table scrolls. It was passing `stickyHeader`, which switches the
table container to `overflow-visible` and stops it being the scroll
container; every other list in the app leaves it off. The header stays
sticky either way.
- 60 deliveries per page, up from 25. Test tag uses the shared `Badge`,
the webhook icon matches the Tasks page, and the Status and More filters
menus drop their redundant search fields.

## Delivery detail

- Dropped the duplicate status badge from the title bar; the sidebar
already has a Status row.
- The "nothing was captured" tab messages are centred and a size larger.
- Copyable sidebar values ellipsise instead of overflowing their column,
so an unbreakable hash or opaque id no longer runs past the edge.
`CopyableText` gains an opt-in `truncate` prop that reserves a gutter
for the copy button.
- The delivery timeline's thick bar is rounded at the top. The run
timeline gets that corner from the `start-cap-thick` event above its
thick line, but a delivery only has two timestamps, so the line itself
starts the bar and had a square top on every succeeded and failed
delivery. `RunTimelineLine` gains an opt-in `roundedTop`, so other
callers are unaffected.

## Navigation

Webhooks was a section containing a single item. It now sits as a
top-level item below Sessions, and the page is titled "Webhook
deliveries". Registering the page in the favourites registry also fixes
its favourite name, which was saving as "Page: Deliveries".

## Also

One fix outside the UI: the delivery seed script minted `id` and
`friendlyId` as two independent ids, but the detail lookup derives the
row id from the friendlyId, so every seeded delivery's page reported
that it could not be found.
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