agent-ecosystem/test
Mike d4f518e8c5 refactor(team): viewport contract + observer root for ActivityTimeline
Second step of the virtualization plan. No virtualization yet. This PR
makes IntersectionObserver-based visibility tracking correct inside
scroll containers (sidebar, bottom-sheet), which is a prerequisite for
virtualizing the timeline.

- Introduces `TimelineViewport` — a grouped contract passed as a single
  `viewport` prop on `ActivityTimeline`. Holds `scrollElementRef`,
  `observerRoot`, `scrollMargin`, and `virtualizationEnabled`.
- `MessageRowWithObserver` and `LeadThoughtsGroupRow` now create their
  `IntersectionObserver` with `root = observerRoot?.current ?? null`
  instead of defaulting to the document viewport. Unread marking now
  fires when rows enter their real scroll parent.
- `MessagesPanel` resolves the active scroll owner from `position`
  (inline from parent ref, sidebar from `sidebarScrollRef`, bottom-sheet
  from `bottomSheetScrollRef`) and passes it into ActivityTimeline.
- Tests: stubs `IntersectionObserver` to capture `options.root` and
  asserts null when no viewport is passed, and the provided element when
  `viewport.observerRoot` is set.

`scrollMargin` and `virtualizationEnabled` are included in the contract
but not consumed yet — they land in follow-up PRs (#4/#5).
2026-04-20 00:17:04 +05:00
..
features/recent-projects fix(recent-projects): show active projects during provisioning 2026-04-18 14:11:17 +03:00
fixtures fix(team): restore task log fallback and block launch auto-assignment 2026-04-18 14:13:15 +03:00
main fix(team): harden teammate restart lifecycle 2026-04-19 20:17:41 +03:00
mocks feat(wsl): add support for finding WSL Claude root candidates 2026-02-14 13:53:13 +09:00
renderer refactor(team): viewport contract + observer root for ActivityTimeline 2026-04-20 00:17:04 +05:00
shared chore: checkpoint workspace before relaunch flow 2026-04-19 16:08:38 +03:00
setup.ts feat: add Sentry error tracking and update docs 2026-03-22 17:03:15 +02:00