Skip to content

trunk-merge/pr-110212/b89936c3-1338-4f07-b9ed-11af55c3b79b - #110278

Closed
trunk-io[bot] wants to merge 83 commits into
masterfrom
trunk-merge/pr-110212/b89936c3-1338-4f07-b9ed-11af55c3b79b
Closed

trunk-io[bot] wants to merge 83 commits into
masterfrom
trunk-merge/pr-110212/b89936c3-1338-4f07-b9ed-11af55c3b79b

Conversation

@trunk-io

@trunk-io trunk-io Bot commented Oct 1, 2026

Copy link
Copy Markdown
Trunk Merge Pull Request Banner

This pull request was created and is being managed by Trunk Merge.

This pull request is based on the master branch at SHA 3d99563a1be0535d4c0244363d3c8e3fa5aabf79.

See more details about each PR in the batch here:

When CI completes, this pull request will be closed automatically.

Pull Requests Being Tested

This pull request is testing a batch with the changes from pull requests 110212, 108441, and 109589 - batching documentation.

Dependencies

This pull request depends on the changes from pull requests 110129 and 108396.

ReeceJones and others added 30 commits September 29, 2026 11:05
Experiments waited on HogQL reading $feature/<key> from the $feature_flags
map, which #91506 shipped. Cohort calculation reads event properties and
was never listed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds a grid/list toggle to the What to watch tab, like the Search tab. The grid shows thumbnail cards that end with a "Why this recording" section. The list stays the default, and the choice persists in the browser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 1884afc9-c4a5-4b60-8411-d6ec035987f8
…cking

The visual snapshot build uses production React, which has no act(), so the testing-library click in the play function failed the story. The story now sets the saved view in localStorage before render and removes it afterwards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 1884afc9-c4a5-4b60-8411-d6ec035987f8
On a narrow watch feed card, the badge, question, and result were separate flex items, so a long question dropped to its own line and the result to the next. The badge and question now share one text flow, so the question starts beside the badge and wraps under it. The result moves to the next line only when it does not fit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 1884afc9-c4a5-4b60-8411-d6ec035987f8
5 updated
Run: c3a64f9e-09d2-4011-913d-c2e036f448c8

Co-authored-by: ksvat <147102038+ksvat@users.noreply.github.com>
Every account needs its external ID, so the account page now shows it under the account name with a copy button, like the Accounts list. This replaces the external ID pin, so the account_field pin kind and its API, type, and sidebar changes are removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 9fe396d4-bc8d-4626-a0fd-d4c49bc0512d
Behind today-rail-nav: a Views rail pane that lists canvases, notebooks and dashboards with a type picker for new views, and a canvas scene that creates, generates and renders canvases (built artifacts and drafts) with the host data bridge. The draft sandbox document is served from the canvas artifact origin with its own CSP.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 641fa581-0388-4023-a4e3-e55300c4105e
The Views sidebar shows one recency list of all view types. New canvas opens a start page that creates the canvas only on the first prompt, instead of a modal. The Views scene, empty canvas page and canvas header now use the same page header and quill patterns as the rest of the today-rail-nav UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 641fa581-0388-4023-a4e3-e55300c4105e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 641fa581-0388-4023-a4e3-e55300c4105e
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: 8cf34c3e-4153-49f1-9b48-ff2a0ad2cfab
Generated-By: PostHog Desktop
Task-Id: d763e987-bb6f-40a9-a87d-8b9ba3add7cb
The New button in the Views pane is now a full-width quill primary button, like New chat in the Spaces pane. Its retry buttons and spinner also move from LemonUI to quill, so the pane uses one component library.

Generated-By: PostHog Desktop
Task-Id: 701cfd10-04c2-4c1e-89b2-409834a0732e
Canvas create, rename, delete and generation toasts move from lemonToast to the quill toast that the Today shell mounts. Each failure shows a short title with the reason as its description. The delete toast keeps its Undo action.

Generated-By: PostHog Desktop
Task-Id: 701cfd10-04c2-4c1e-89b2-409834a0732e
k11kirky and others added 25 commits October 1, 2026 18:24
Generated-By: PostHog Desktop
Task-Id: 76efa755-694d-4332-84c4-7880baad68e5
…ws-2

Generated-By: PostHog Desktop
Task-Id: 76efa755-694d-4332-84c4-7880baad68e5
…ws-3

Generated-By: PostHog Desktop
Task-Id: 76efa755-694d-4332-84c4-7880baad68e5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated-By: PostHog Desktop
Task-Id: 76efa755-694d-4332-84c4-7880baad68e5
…ws-2

Generated-By: PostHog Desktop
Task-Id: 76efa755-694d-4332-84c4-7880baad68e5
…ws-3

Generated-By: PostHog Desktop
Task-Id: 76efa755-694d-4332-84c4-7880baad68e5
A run started through MultiTurnSession with an output_schema was completed by set_output after its first turn, so every follow-up went to a closed workflow. The caller now marks such runs as its own to end, and set_output stores the output without signalling completion for them.
The Claude adapter answers a schema run through a StructuredOutput tool call and writes no agent message, so a MultiTurnSession with an output_schema saw an empty turn. The log parser now takes that tool call's input as the turn's message.
Arrow keys, Home and End move the selection in the artifacts file list with a roving tabindex. Full page always shows its exit action, so stepping onto an object without an embed no longer hides it.

Generated-By: PostHog Desktop
Task-Id: e2367959-ab88-40ff-8761-5632645167aa
4 updated
Run: 1d504fa9-7d10-47cc-a8a2-a44de1321ce7

Co-authored-by: ceyniustranberg <119332946+ceyniustranberg@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

🧰 Additional context used
📚 Code guidelines (15)
.cursor/rules/react-typescript.mdc — auto-discovered
.agents/skills/using-kea-disposables/SKILL.md — configured
.agents/skills/writing-ui-components/SKILL.md — configured
.agents/security.md — configured
.agents/skills/sending-notifications/SKILL.md — configured
docs/published/handbook/engineering/type-system.md — configured
.agents/skills/writing-tests/SKILL.md — configured
docs/internal/person-data-access.md — configured
.agents/skills/adopting-generated-api-types/SKILL.md — configured
.agents/skills/placing-product-frontend-code/SKILL.md — configured
.agents/skills/writing-kea-logics/SKILL.md — configured
.agents/skills/writing-user-facing-copy/SKILL.md — configured
.agents/skills/setting-feature-flags-in-storybook/SKILL.md — configured
.claude/commands/conventions.md — configured
.agents/skills/writing-code-comments/SKILL.md — configured
📝 Walkthrough

Walkthrough

The pull request changes Replay navigation and removes its comments tab and implementation. It adds grid and list views to the Replay Vision watch feed, displays copyable external IDs on customer analytics account pages, moves organization role route registration, and passes run identity to an AI Gateway rollout check.

Priority: ➖ Normal

Merge Risk: 🔵 Low · up to ae095

The changes are mergeable with a bounded component-organization follow-up. Move the grid card into its own file to satisfy repository conventions; no user-facing failure is established.

Security Architecture Review

Security architecture risk: 🔵 Low · up to ae095

The role APIs retain explicit authorization and organization scoping, while gateway rollout selection now uses the run's user identity. No introduced security failure was established, but incomplete historical and runtime verification prevents a minimal-risk assessment.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The inspected privileged outcomes are organization role/membership mutations and minting a sandbox gateway credential for a selected product and team. Role mutations require organization-admin authority; the mint request specifies the team, product, spend cap, lifetime, acting identity when supplied, and applicable model pin. Enforcement beyond the mint-request boundary was not fully inspected.

Trust Boundaries and Controls

  • observed — Client-supplied nested IDs and user_uuid encounter shared authentication, API-scope, organization-membership, and parent-query filtering controls. Membership creation independently verifies the role's organization and resolves an active user membership within that organization before storing the identity links.
  • observed — The gateway environment path obtains team and distinct identity from the run context. Before minting, it checks configured routing, mintable product selection, rollout eligibility, model restrictions, and credit availability. The worker's mint credential authorizes the request; run identity is passed as an attribution and rollout input rather than as that credential.

Resilience and Maintainability Implications

  • observed — The run environment path removes token-related values when the gateway-product pin cannot be recorded and clears the environment on routing exceptions. Mint requests use bounded retries and return no token after failure. These inspected transitions constrain credential injection; cleanup of credentials minted before interruption and downstream fallback guarantees remain unverified.
🚥 Pre-merge checks | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description only documents Trunk Merge batching, base commits, dependencies, and automatic closure. It does not explain the user-facing problem or changes, testing and test rationale, release stat… Replace the batch metadata with a standalone description using the repository template. Add the Problem, Changes, and How did you test this code? sections, including test rationale and evidence or explicit limitations. Select exactly one Re…
Full details: Description check

Explanation

The description only documents Trunk Merge batching, base commits, dependencies, and automatic closure. It does not explain the user-facing problem or changes, testing and test rationale, release status, notifications, docs impact, or required agent context.

Resolution

Replace the batch metadata with a standalone description using the repository template. Add the Problem, Changes, and How did you test this code? sections, including test rationale and evidence or explicit limitations. Select exactly one Release status option. Complete Automatic notifications and Docs update. Add Agent context when applicable, including autonomy, agent/model, duplicate search, coverage, schema, public-artifact, skills, and review details. Include screenshots for the frontend changes.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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

@coderabbitai coderabbitai 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.

🧹 Nitpick comments (1)
products/replay_vision/frontend/replay_scanners/components/WatchFeedCard.tsx (1)

449-449: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Move WatchFeedGridCard to its own file.

This file now exports two card components. Move WatchFeedGridCard to WatchFeedGridCard.tsx and update its consumer. Put shared card helpers in sibling modules so neither layout imports through the other.

As per coding guidelines: “One component per file” and “The moment it's exported, it moves to its own file.”

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: PostHog/posthog/.coderabbit.yaml

Review profile: QUIET

Plan: Enterprise

Run ID: 8ba31dc3-cca0-4cfc-9a18-9b7c0a6ab032

📥 Commits

Reviewing files that changed from the base of the PR and between 3d99563 and ae09541.

📒 Files selected for processing (35)
  • docs/internal/customer-analytics/account-sidebar.md
  • ee/urls.py
  • frontend/snapshots.yml
  • frontend/src/initKea.ts
  • frontend/src/lib/constants.tsx
  • frontend/src/scenes/scenes.ts
  • frontend/src/scenes/session-recordings/SessionRecordings.tsx
  • frontend/src/scenes/session-recordings/filters/RecordingsUniversalFiltersEmbed.stories.tsx
  • frontend/src/scenes/session-recordings/filters/RecordingsUniversalFiltersEmbed.tsx
  • frontend/src/scenes/session-recordings/playlist/playlistFiltersLogic.ts
  • frontend/src/scenes/session-recordings/sessionReplaySceneLogic.ts
  • frontend/src/scenes/session-recordings/templates/SessionRecordingTemplates.tsx
  • frontend/src/scenes/session-recordings/templates/sessionRecordingTemplatesLogic.tsx
  • frontend/src/types.ts
  • products/access_control/backend/presentation/role.py
  • products/access_control/backend/routes.py
  • products/access_control/backend/tests/test_role.py
  • products/access_control/backend/tests/test_role_membership.py
  • products/customer_analytics/frontend/scenes/CustomerAnalyticsAccountScene/AccountExternalId.tsx
  • products/customer_analytics/frontend/scenes/CustomerAnalyticsAccountScene/CustomerAnalyticsAccountScene.stories.tsx
  • products/customer_analytics/frontend/scenes/CustomerAnalyticsAccountScene/CustomerAnalyticsAccountScene.tsx
  • products/replay/frontend/comments/ReplayComments.stories.tsx
  • products/replay/frontend/comments/ReplayComments.tsx
  • products/replay/frontend/comments/replayCommentsLogic.test.ts
  • products/replay/frontend/comments/replayCommentsLogic.ts
  • products/replay_vision/frontend/replay_scanners/ReplayScannersScene.stories.tsx
  • products/replay_vision/frontend/replay_scanners/components/WatchFeedCard.tsx
  • products/replay_vision/frontend/replay_scanners/components/WatchFeedTab.tsx
  • products/replay_vision/frontend/replay_scanners/watchFeedLogic.test.ts
  • products/replay_vision/frontend/replay_scanners/watchFeedLogic.ts
  • products/ruff.toml
  • products/tasks/backend/temporal/process_task/ai_gateway_token.py
  • products/tasks/backend/temporal/process_task/tests/test_ai_gateway_token.py
  • products/tasks/backend/temporal/process_task/utils.py
  • pyproject.toml
💤 Files with no reviewable changes (10)
  • frontend/src/initKea.ts
  • frontend/src/lib/constants.tsx
  • products/replay/frontend/comments/ReplayComments.stories.tsx
  • products/replay/frontend/comments/replayCommentsLogic.test.ts
  • products/replay/frontend/comments/ReplayComments.tsx
  • frontend/src/scenes/session-recordings/filters/RecordingsUniversalFiltersEmbed.stories.tsx
  • frontend/src/types.ts
  • products/replay/frontend/comments/replayCommentsLogic.ts
  • ee/urls.py
  • frontend/src/scenes/session-recordings/templates/SessionRecordingTemplates.tsx

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 3 remain after this review.

@trunk-io trunk-io Bot closed this Oct 1, 2026
@trunk-io
trunk-io Bot deleted the trunk-merge/pr-110212/b89936c3-1338-4f07-b9ed-11af55c3b79b branch October 1, 2026 19:11
@trunk-io

trunk-io Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Author

Static Badge   Static Badge   Static Badge

Failed Test Failure Summary Logs
Scenes/Code review Default play-test A logic access error occurred because 'actions' on 'scenes.userLogic' was not mounted, likely due to missing logic connection or incorrect componen... Logs ↗︎

View Full Report ↗︎ ⋅ Docs

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.

9 participants