close
Skip to content

fix(tabs): restore the resource header's spacing and clear the scroll fades - #6967

Merged
waleedlatif1 merged 1 commit into
stagingfrom
tabs-header-fix
Aug 22, 2026
Merged

fix(tabs): restore the resource header's spacing and clear the scroll fades#6967
waleedlatif1 merged 1 commit into
stagingfrom
tabs-header-fix

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

  • Restore the resource header's corner spacing. Porting the tabs onto the shared strip took the header from 43px to 34px, which moved the overlaid collapse toggle from 6.5px below the panel's top edge to 2px while its right inset stayed at 16px, so the corner read lopsided. The header goes to 40px — still shorter than before the port, with the toggle back to 5px
  • Give the collapse toggle its 8px radius back. That port dropped it, which was an unrequested change
  • Fix reveal-on-select: scrolling a partly-hidden tab into view parked it flush with the container edge, which is exactly where the scroll fade sits, so the tab you just clicked arrived half-faded and still looked cut off. Reveal now insets by the fade width and clamps at the scroll extremes, where no fade is drawn, so the first and last tabs still sit flush
  • Cap floating tabs at 160px so no single tab dominates the row
  • The reveal fix is in the shared TabStrip, so the browser and terminal strips get it too

Type of Change

  • Bug fix

Testing

Tested manually

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
Image docs Ready Ready Preview Aug 22, 2026 2:56am

Request Review

@cursor

cursor Bot commented Aug 22, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Mostly layout/scroll behavior in the tab strip. Medium because it also removes Trigger.dev OOM retry/machine escalation on the table-run dispatcher, which can leave long-running dispatches unretried on memory kills.

Overview
Restores resource-header geometry after the shared tab-strip port: the control band is 40px (strip height includes the 1px bottom border so tabs and the overlaid collapse toggle share a centerline), the toggle gets its 8px radius back, and floating tabs in this header cap at 160px.

TabStrip no longer parks a newly selected tab flush under the edge fade. Reveal-on-select insets by the 16px gradient and clamps at scroll extremes so first/last tabs still sit flush. Browser and terminal strips pick this up automatically.

Also drops retry.outOfMemory / maxAttempts from table-run-dispatcher (still on small-2x).

Reviewed by Cursor Bugbot for commit 821aa0c. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

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 using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 821aa0c. Configure here.

* `attempt_count = 1` — no retry happened, and the dispatch row was left
* `dispatching` forever. The escalating preset is what makes the documented
* resume actually reachable; the cleanup sweep is the backstop for a dispatch
* whose holder dies without one.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Dispatcher OOM retry removed

High Severity

This tabs-only PR drops retry.outOfMemory from tableRunDispatcherTask and deletes the test that pinned it. Trigger.dev does not OOM-retry unless that preset is set, so a TASK_PROCESS_OOM_KILLED run stays dispatching until the ~95-minute stale sweep — the same failure mode the removed comments documented in production.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 821aa0c. Configure here.

@greptile-apps

greptile-apps Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adjusts resource-header and shared tab-strip geometry, including fade-aware active-tab revealing and a configurable floating-tab width. It also removes the table dispatcher’s OOM retry escalation and its regression test.

  • Raises the resource header control band, restores the collapse-toggle radius, and caps resource tabs at 160px.
  • Insets active-tab reveal positions by the 16px scroll fades and clamps them at scroll extremes.
  • Removes the table-run dispatcher’s retry and larger-machine OOM fallback.

Confidence Score: 4/5

The table dispatcher’s OOM retry regression should be fixed before merging because memory-terminated table runs will be cancelled without completing.

Removing the larger-machine OOM fallback eliminates the path that resumed an interrupted dispatcher from its persisted cursor; stale cleanup only cancels the abandoned run.

Files Needing Attention: apps/sim/background/table-run-dispatcher.ts, apps/sim/background/table-run-dispatcher.test.ts

Important Files Changed

Filename Overview
apps/sim/background/table-run-dispatcher.ts Removes the OOM retry and machine-escalation policy, causing memory-terminated table runs to be abandoned and later cancelled instead of resumed.
apps/sim/background/table-run-dispatcher.test.ts Removes the regression assertions that required OOM escalation and three retry attempts.
packages/emcn/src/components/tab-strip/tab-strip.tsx Adds fade-aware reveal targets, scroll-extreme clamping, and a configurable maximum width for floating tabs; no concrete changed-code defect was established.
packages/emcn/src/components/tab-strip/tab-strip.dom.test.tsx Updates active-tab reveal expectations and adds coverage for clamping the last tab at the maximum scroll position.
apps/sim/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-tabs/resource-tab-controls.ts Increases resource-header height, accounts for the strip border, and configures a 160px floating-tab cap.
apps/sim/app/workspace/[workspaceId]/home/home.tsx Restores the collapse toggle’s 8px corner radius.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Table workflow run] --> B[Trigger table-run-dispatcher]
  B --> C[Run dispatcher windows on small-2x]
  C -->|Success| D[Complete dispatch]
  C -->|OOM termination| E[No OOM retry or escalation]
  E --> F[Dispatch remains active with stale heartbeat]
  F --> G[Stale cleanup cancels dispatch]
  G --> H[User work remains incomplete]
Loading

Reviews (1): Last reviewed commit: "fix(tabs): restore the resource header's..." | Re-trigger Greptile

* run length (10x the duration moves it ~4 MB), and it has crept ~2% per
* release for a month — 446 MB in late July to 545 MB, past the 512 MiB
* `small-1x` ceiling. Meanwhile CPU utilization peaks at 0.19 and sits at
* 0.03 for p90, so the larger preset is bought for its RAM.

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.

P1 OOM recovery path removed

When a table dispatcher exceeds the small-2x memory limit, removing the OOM retry escalation prevents Trigger.dev from resuming it from its persisted cursor. The dispatch remains active until stale cleanup cancels it, leaving the table run incomplete and requiring the user to rerun it.

… fades

Porting the tabs onto the shared strip had taken the header from 43px to 34px,
which moved the overlaid collapse toggle from 6.5px below the panel's top edge
to 2px while its right inset stayed at 16px — the corner read lopsided. The
header goes to 40px: still shorter than it was, with the toggle back to 5px.
The toggle also gets its 8px radius back, dropped in that port for no reason
anyone asked for.

Selecting a partly-hidden tab scrolled it flush against the container edge,
which is exactly where the fade gradient sits, so it arrived half-faded and
still looked cut off. Reveal now insets by the fade width and clamps at the
scroll extremes, where no gradient is drawn.

Floating tabs cap at 160px so no single tab dominates the row.
@waleedlatif1
waleedlatif1 merged commit 8177f9a into staging Aug 22, 2026
28 checks passed
@waleedlatif1
waleedlatif1 deleted the tabs-header-fix branch August 22, 2026 02:58
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