fabro/apps/fabro-web/app/components
André Mazoni c5dd5772d0
Keep run graph zoom/pan when switching tabs (#561)
Switching from a run's Overview tab to another tab and back reset the
graph zoom and position to the default. Now it holds.

## Why

The viewport (pan and zoom) lived in `RunOverview` component state.
Overview and Stages are sibling routes under `runs/:id`, so switching
tabs unmounts Overview and drops that state.

## Fix

`apps/fabro-web/app/routes/run-overview.tsx`: cache the viewport per run
outside the component so it survives the remount, and reset it when the
run id changes, since the route instance is reused when only the id
changes.

Added two tests: viewport restores on remount for the same run, and does
not carry across runs.

Does not persist across a full page reload (in-memory only).

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Bryan Helmkamp <bryan@brynary.com>
2026-07-08 10:50:02 -04:00
..
chats Introduce approved effect hooks and migrate direct useEffect calls (#425) 2026-05-27 10:37:29 -04:00
playground feat: chat-driven workflow builder at /playground (#450) 2026-06-09 11:24:56 -04:00
runs-list feat(web): add server-managed Environments CRUD settings UI (#462) 2026-06-13 08:44:38 -04:00
stage-renderers refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
auth-layout.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
automation-form.tsx Fix workflow slug field to use kebab-case instead of snake_case (#556) 2026-07-07 14:08:32 -04:00
collapsible-file.tsx refactor(web): drop light mode, go dark-only 2026-04-20 09:27:08 -04:00
editable-run-title.test.tsx feat(web): inline-edit run titles in the run header 2026-05-09 11:54:41 -04:00
editable-run-title.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
environment-form.test.ts feat(web): add server-managed Environments CRUD settings UI (#462) 2026-06-13 08:44:38 -04:00
environment-form.tsx feat: add MCP servers settings UI at /settings/mcps (#540) 2026-07-01 10:32:37 -04:00
event-debug-helpers.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
event-debug.tsx Introduce approved effect hooks and migrate direct useEffect calls (#425) 2026-05-27 10:37:29 -04:00
floating-tooltip.tsx Introduce approved effect hooks and migrate direct useEffect calls (#425) 2026-05-27 10:37:29 -04:00
graph-toolbar.tsx Keep run graph zoom/pan when switching tabs (#561) 2026-07-08 10:50:02 -04:00
icons.tsx feat(runs): link stored pull requests 2026-05-08 13:17:08 -07:00
inline-markdown.test.tsx feat(web): render inline Markdown in run titles 2026-05-08 18:30:51 -07:00
inline-markdown.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
interview-dock.test.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
interview-dock.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
interview-label.ts refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
key-value-editor.test.tsx feat: add MCP servers settings UI at /settings/mcps (#540) 2026-07-01 10:32:37 -04:00
key-value-editor.tsx feat: add MCP servers settings UI at /settings/mcps (#540) 2026-07-01 10:32:37 -04:00
mcp-server-form.test.tsx feat: add MCP servers settings UI at /settings/mcps (#540) 2026-07-01 10:32:37 -04:00
mcp-server-form.tsx feat: add MCP servers settings UI at /settings/mcps (#540) 2026-07-01 10:32:37 -04:00
pull-request-chip.test.tsx feat(pr): support GitHub pull request associations (#270) 2026-05-16 12:47:27 -04:00
pull-request-chip.tsx feat(pr): support GitHub pull request associations (#270) 2026-05-16 12:47:27 -04:00
run-summary-panel.test.tsx feat(web): add server-managed Environments CRUD settings UI (#462) 2026-06-13 08:44:38 -04:00
run-summary-panel.tsx feat(web): add server-managed Environments CRUD settings UI (#462) 2026-06-13 08:44:38 -04:00
run-waterfall.tsx Introduce approved effect hooks and migrate direct useEffect calls (#425) 2026-05-27 10:37:29 -04:00
settings-panel.tsx feat: add MCP servers settings UI at /settings/mcps (#540) 2026-07-01 10:32:37 -04:00
size-chip.tsx feat(web): add sortable Size column to runs list 2026-05-25 14:07:17 -04:00
stage-context.tsx feat(web): add Context tab to the stage detail view (#340) 2026-05-21 20:19:55 -04:00
stage-insights-sidebar.test.tsx refactor: rationalize server secret scopes (vault-only for optional int… (#401) 2026-05-25 17:26:01 -04:00
stage-insights-sidebar.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
stage-popover-summary.ts refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
stage-popover.test.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
stage-popover.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
stage-sidebar.test.tsx Surface reasoning_effort + speed in stage badge end-to-end (#363) 2026-05-23 13:14:55 -04:00
stage-sidebar.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
state.tsx feat(web): add "Test models" sweep button on settings/models (#410) 2026-05-25 22:42:16 -04:00
steer-bar.tsx refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
terminal-view-helpers.ts Model run sandbox lifecycle explicitly (#431) 2026-05-27 12:48:56 -04:00
terminal-view.test.ts Model run sandbox lifecycle explicitly (#431) 2026-05-27 12:48:56 -04:00
terminal-view.tsx Model run sandbox lifecycle explicitly (#431) 2026-05-27 12:48:56 -04:00
toast.test.tsx Introduce approved effect hooks and migrate direct useEffect calls (#425) 2026-05-27 10:37:29 -04:00
toast.tsx feat(web): theme toasts to match the app 2026-05-29 08:44:48 -04:00
ui.tsx Replace DIY overlay primitives with Radix UI + Sonner (#424) 2026-05-26 23:03:06 -04:00