Skip to content

feat: pinning in TaxonomicFilter#53340

Merged
pauldambra merged 9 commits intomasterfrom
posthog-code/generic-taxonomic-filter-pinning
Apr 4, 2026
Merged

feat: pinning in TaxonomicFilter#53340
pauldambra merged 9 commits intomasterfrom
posthog-code/generic-taxonomic-filter-pinning

Conversation

@pauldambra
Copy link
Copy Markdown
Member

@pauldambra pauldambra commented Apr 3, 2026

Problem

The TaxonomicFilter's property pinning is replay-specific — users can only pin person properties, and only from the Replay tab. This limits discoverability and reuse across the product.

Changes

CleanShot 2026-04-03 at 22 58 32

Generalizes property pinning into the TaxonomicFilter itself:

  • New taxonomicFilterPinnedPropertiesLogic — kea logic with team-scoped localStorage persistence, togglePin action, isPinned selector
  • Pin button in DefinitionPopover header — appears on the left (secondary style) when hovering any property; View/Edit links stay on the right
  • New PinnedFilters group type — auto-injected after Suggested → Recents → Pinned in the tab order; searchable like Recents but not promoted in Suggested
  • Migration — copies existing quickFilterProperties from replay's playerSettingsLogic on first use, then cleans up
  • Removes replay-specific pinning UI — the "Pinned person properties" section and its TaxonomicFilter popover are gone from ReplayTaxonomicFilters
  • Cleans up playerSettingsLogic — removes quickFilterProperties, setQuickFilterProperties, unused connect to teamLogic

The sidebar overview grid (sessionRecordingPinnedPropertiesLogic) is untouched — that's a separate concern.

How did you test this code?

  • Kea logic tests (taxonomicFilterPinnedPropertiesLogic.test.ts) — 27 tests covering toggle on/off, excluded groups, null values, isPinned/pinnedFilterItems selectors, migration (4 scenarios), and hasPinnedContext/stripPinnedContext utilities. All pass.
  • RTL component tests (TaxonomicFilterPinning.test.tsx) — 4 tests covering pin tab visibility, pinned item rendering, pin button in definition popover. These follow the exact patterns from TaxonomicFilter.test.tsx but cannot run in the worktree due to a pre-existing @posthog/hogvm module resolution issue (same issue affects all existing RTL tests in this area).
  • Existing testsrecentTaxonomicFiltersLogic.test.ts (22 tests) and dataWarehouseItemUtils.test.ts continue to pass.
  • made sure it works locally-

🤖 LLM context

Agent-authored PR. The @posthog/hogvm native dependency is missing in the git worktree, preventing RTL component tests from running locally — this is a pre-existing environment issue affecting all TaxonomicFilter RTL tests, not specific to these changes.


Created with PostHog Code

Copilot AI review requested due to automatic review settings April 3, 2026 18:40
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 3, 2026

Prompt To Fix All With AI
This is a comment left during a code review.
Path: frontend/src/lib/components/TaxonomicFilter/taxonomicFilterPinnedPropertiesLogic.ts
Line: 41

Comment:
**Wrong localStorage key — migration silently no-ops for all existing users**

The old `playerSettingsLogic` declares `path(['scenes', 'session-recordings', 'player', 'playerSettingsLogic'])`. Kea's `persist: true` builds the storage key from the full path, so the key actually written by the old code is:

`kea.scenes.session-recordings.player.playerSettingsLogic.quickFilterProperties`

The constant here is missing the `player` segment:

`kea.scenes.session-recordings.playerSettingsLogic.quickFilterProperties`

Because `localStorage.getItem(OLD_PERSIST_KEY)` will always return `null`, no existing user's pinned person properties will be migrated — they are silently dropped on first load. The migration flag is still written, so the window to fix this closes on the very first app load after deployment.

The `player` segment needs to be added to `OLD_PERSIST_KEY`.

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: frontend/src/lib/components/DefinitionPopover/DefinitionPopover.tsx
Line: 78

Comment:
**Machine-readable enum value stored as human-readable `groupName`**

`type` here is a `TaxonomicFilterGroupType` enum value (e.g. `'event_properties'`, `'person_properties'`). It is being passed as the second argument to `togglePin`, whose signature is:

```ts
togglePin(groupType: TaxonomicFilterGroupType, groupName: string, value: TaxonomicFilterValue, item: any)
```

`groupName` is intended to be the human-readable label (e.g. `'Event properties'`, `'Person properties'`) — that is what the migration code writes (`groupName: 'Person properties'`) and what is stored in `_pinnedContext.sourceGroupName` in persisted localStorage. Passing `type` stores the raw enum string instead, creating permanently incorrect data for every pin action made through the definition popover.

The popover needs access to the group's display name. The `taxonomicFilterLogic`/`TaxonomicFilterGroup.name` is the source of truth; `DefinitionPopover` would need to receive or look up that name. One option is to expose the group name from `definitionPopoverLogic`, or pass it as a prop from the call site where the group is already known.

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "feat: generic property pinning in Taxono..." | Re-trigger Greptile

Comment thread frontend/src/lib/components/DefinitionPopover/DefinitionPopover.tsx Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Generalizes “pinned properties” from replay-only UI into the core TaxonomicFilter, adding a new pinned group/tab, a pin/unpin action in the definition popover, and a migration from the old replay localStorage key.

Changes:

  • Adds taxonomicFilterPinnedPropertiesLogic (persisted, team-scoped pins + migration from replay quick filter properties).
  • Introduces PinnedFilters group type and injects it into TaxonomicFilter tab ordering and top-match redistribution.
  • Removes replay-specific pinned-person-properties UI and the corresponding playerSettingsLogic persistence.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
frontend/src/scenes/session-recordings/player/playerSettingsLogic.ts Removes replay-only quick filter property persistence/actions.
frontend/src/scenes/session-recordings/filters/ReplayTaxonomicFilters.tsx Removes replay-specific “Pinned person properties” section/UI.
frontend/src/lib/components/TaxonomicFilter/types.ts Adds PinnedFilters group type.
frontend/src/lib/components/TaxonomicFilter/taxonomicFilterPinnedPropertiesLogic.ts New kea logic for pins + migration from old replay storage.
frontend/src/lib/components/TaxonomicFilter/taxonomicFilterPinnedPropertiesLogic.test.ts Adds logic-level test coverage for pinning and migration utils.
frontend/src/lib/components/TaxonomicFilter/taxonomicFilterLogic.tsx Injects pinned group/tab and adjusts ordering/top-match behavior.
frontend/src/lib/components/TaxonomicFilter/recentTaxonomicFiltersLogic.ts Excludes pinned group from being tracked as “recent”.
frontend/src/lib/components/TaxonomicFilter/TaxonomicFilterPinning.test.tsx Adds RTL tests for pinned tab rendering and pin button presence.
frontend/src/lib/components/TaxonomicFilter/InfiniteList.tsx Renders pinned-context items and labels them as pinned.
frontend/src/lib/components/DefinitionPopover/DefinitionPopover.tsx Adds pin/unpin button to definition popover header.
frontend/src/lib/components/DefinitionPopover/DefinitionPopover.scss Adds layout styling for the new header actions row.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread frontend/src/lib/components/DefinitionPopover/DefinitionPopover.tsx Outdated
Comment thread frontend/src/lib/components/DefinitionPopover/DefinitionPopover.tsx Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3fd880fa75

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/src/lib/components/TaxonomicFilter/InfiniteList.tsx Outdated
Move property pinning from replay-specific UI into the TaxonomicFilter
itself, allowing users to pin any property from any group via the
definition popover. Pinned items appear in a new searchable "Pinned" tab
(after Suggested and Recents) and persist per-team in localStorage.

- New `taxonomicFilterPinnedPropertiesLogic` (localStorage, team-scoped)
- Pin/unpin button in DefinitionPopover header
- `PinnedFilters` group type auto-injected into TaxonomicFilter
- Migration copies old replay `quickFilterProperties` on first use
- Remove "Pinned person properties" section from ReplayTaxonomicFilters
- Remove `quickFilterProperties` from playerSettingsLogic

Generated-By: PostHog Code
Task-Id: c0655c2e-7595-4994-892b-a1b8d03228cf
- Pass actual group name (from taxonomicGroups) to togglePin instead of
  the type enum value, so cross-group tags read "Person properties - pinned"
  not "person_properties - pinned"
- Fix OLD_PERSIST_KEY to match actual kea-localstorage key format:
  path segments joined with dots, no "kea." prefix, includes ".player."
- Add data-attr="definition-popover-pin" to the pin button for analytics

Generated-By: PostHog Code
Task-Id: c0655c2e-7595-4994-892b-a1b8d03228cf
- Extract META_GROUP_TYPES shared constant to types.ts, replacing
  identical EXCLUDED_GROUP_TYPES sets in both recents and pinned logics
- Add isMetaGroup flag to TaxonomicFilterGroup interface and set it on
  Suggested, Recent, and Pinned group definitions
- Add metaGroupTypes selector derived from taxonomicGroups, replacing
  8 scattered type !== SuggestedFilters && type !== RecentFilters &&
  type !== PinnedFilters checks with !metaGroupTypes.has(type)
- Store only { name } in pinned items instead of the full definition
  object — leaner localStorage, no stale data over time

Generated-By: PostHog Code
Task-Id: c0655c2e-7595-4994-892b-a1b8d03228cf
- Guard window access with typeof check for SSR/test safety
- Make MIGRATION_KEY team-scoped so multi-team users get migration
  per team, not just the first one
- Hide pin button when definition name is null (reducer ignores
  null values anyway, so the button was a no-op)

Generated-By: PostHog Code
Task-Id: c0655c2e-7595-4994-892b-a1b8d03228cf
@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch from 299633a to f025e23 Compare April 3, 2026 21:03
Copy link
Copy Markdown
Member Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 3, 2026

Size Change: +10.8 kB (+0.01%)

Total Size: 127 MB

Filename Size Change
frontend/dist/exporter 20.7 MB +2.71 kB (+0.01%)
frontend/dist/exporter.js 20.7 MB +2.71 kB (+0.01%)
frontend/dist/render-query.js 20.4 MB +2.71 kB (+0.01%)
frontend/dist/toolbar.js 10.1 MB +2.69 kB (+0.03%)
ℹ️ View Unchanged
Filename Size
frontend/dist/368Hedgehogs 5.26 kB
frontend/dist/abap 14.2 kB
frontend/dist/Action 23.8 kB
frontend/dist/Actions 1.02 kB
frontend/dist/AdvancedActivityLogsScene 33.9 kB
frontend/dist/AgenticAuthorize 5.25 kB
frontend/dist/apex 3.95 kB
frontend/dist/ApprovalDetail 16.2 kB
frontend/dist/array.full.es5.js 326 kB
frontend/dist/array.full.js 421 kB
frontend/dist/array.js 177 kB
frontend/dist/AsyncMigrations 13.1 kB
frontend/dist/AuthorizationStatus 716 B
frontend/dist/azcli 846 B
frontend/dist/bat 1.84 kB
frontend/dist/BatchExportScene 60.3 kB
frontend/dist/bicep 2.55 kB
frontend/dist/Billing 493 B
frontend/dist/BillingSection 20.8 kB
frontend/dist/BoxPlot 4.99 kB
frontend/dist/browserAll-0QZMN1W2 37.4 kB
frontend/dist/ButtonPrimitives 562 B
frontend/dist/CalendarHeatMap 4.79 kB
frontend/dist/cameligo 2.18 kB
frontend/dist/changeRequestsLogic 544 B
frontend/dist/CLIAuthorize 11.3 kB
frontend/dist/CLILive 3.97 kB
frontend/dist/clojure 9.64 kB
frontend/dist/coffee 3.59 kB
frontend/dist/Cohort 23.2 kB
frontend/dist/CohortCalculationHistory 6.22 kB
frontend/dist/Cohorts 9.39 kB
frontend/dist/ConfirmOrganization 4.48 kB
frontend/dist/conversations.js 63.9 kB
frontend/dist/Coupons 720 B
frontend/dist/cpp 5.3 kB
frontend/dist/Create 829 B
frontend/dist/crisp-chat-integration.js 1.88 kB
frontend/dist/csharp 4.52 kB
frontend/dist/csp 1.42 kB
frontend/dist/css 4.51 kB
frontend/dist/cssMode 4.15 kB
frontend/dist/CustomCssScene 3.55 kB
frontend/dist/CustomerAnalyticsConfigurationScene 1.99 kB
frontend/dist/CustomerAnalyticsScene 26.1 kB
frontend/dist/CustomerJourneyBuilderScene 1.6 kB
frontend/dist/CustomerJourneyTemplatesScene 7.39 kB
frontend/dist/customizations.full.js 17.9 kB
frontend/dist/CyclotronJobInputAssignee 1.32 kB
frontend/dist/CyclotronJobInputTicketTags 711 B
frontend/dist/cypher 3.38 kB
frontend/dist/dart 4.25 kB
frontend/dist/Dashboard 1.04 kB
frontend/dist/Dashboards 20 kB
frontend/dist/DataManagementScene 646 B
frontend/dist/DataPipelinesNewScene 2.28 kB
frontend/dist/DataWarehouseScene 1.19 kB
frontend/dist/DataWarehouseSourceScene 634 B
frontend/dist/Deactivated 1.13 kB
frontend/dist/dead-clicks-autocapture.js 13.1 kB
frontend/dist/DeadLetterQueue 5.38 kB
frontend/dist/DebugScene 20 kB
frontend/dist/decompressionWorker 2.85 kB
frontend/dist/decompressionWorker.js 2.85 kB
frontend/dist/DefinitionEdit 7.11 kB
frontend/dist/DefinitionView 22.7 kB
frontend/dist/DestinationsScene 2.67 kB
frontend/dist/dist 575 B
frontend/dist/dockerfile 1.87 kB
frontend/dist/EarlyAccessFeature 719 B
frontend/dist/EarlyAccessFeatures 2.84 kB
frontend/dist/ecl 5.33 kB
frontend/dist/EditorScene 862 B
frontend/dist/elixir 10.3 kB
frontend/dist/elk.bundled 1.44 MB
frontend/dist/EmailMFAVerify 2.98 kB
frontend/dist/EndpointScene 37.5 kB
frontend/dist/EndpointsScene 22 kB
frontend/dist/ErrorTrackingConfigurationScene 2.2 kB
frontend/dist/ErrorTrackingIssueFingerprintsScene 6.98 kB
frontend/dist/ErrorTrackingIssueScene 81.9 kB
frontend/dist/ErrorTrackingScene 13.2 kB
frontend/dist/EvaluationTemplates 575 B
frontend/dist/EventsScene 2.71 kB
frontend/dist/exception-autocapture.js 11.8 kB
frontend/dist/Experiment 246 kB
frontend/dist/Experiments 17.1 kB
frontend/dist/ExportsScene 3.86 kB
frontend/dist/FeatureFlag 127 kB
frontend/dist/FeatureFlags 572 B
frontend/dist/FeatureFlagTemplatesScene 7.03 kB
frontend/dist/FlappyHog 5.78 kB
frontend/dist/flow9 1.8 kB
frontend/dist/freemarker2 16.7 kB
frontend/dist/fsharp 2.98 kB
frontend/dist/go 2.65 kB
frontend/dist/graphql 2.26 kB
frontend/dist/Group 14.3 kB
frontend/dist/Groups 3.93 kB
frontend/dist/GroupsNew 7.34 kB
frontend/dist/handlebars 7.34 kB
frontend/dist/hcl 3.59 kB
frontend/dist/HealthCategoryDetailScene 7.23 kB
frontend/dist/HealthScene 10.3 kB
frontend/dist/HeatmapNewScene 4.16 kB
frontend/dist/HeatmapRecordingScene 3.92 kB
frontend/dist/HeatmapScene 6.04 kB
frontend/dist/HeatmapsScene 3.88 kB
frontend/dist/hls 394 kB
frontend/dist/HogFunctionScene 58.8 kB
frontend/dist/HogRepl 7.37 kB
frontend/dist/html 5.58 kB
frontend/dist/htmlMode 4.62 kB
frontend/dist/image-blob-reduce.esm 49.4 kB
frontend/dist/InboxScene 59.1 kB
frontend/dist/index 306 kB
frontend/dist/index.js 306 kB
frontend/dist/ini 1.1 kB
frontend/dist/InsightOptions 5.41 kB
frontend/dist/InsightScene 28.8 kB
frontend/dist/IntegrationsRedirect 733 B
frontend/dist/intercom-integration.js 1.93 kB
frontend/dist/InviteSignup 14.4 kB
frontend/dist/java 3.22 kB
frontend/dist/javascript 985 B
frontend/dist/jsonMode 13.9 kB
frontend/dist/julia 7.22 kB
frontend/dist/kotlin 3.4 kB
frontend/dist/lazy 150 kB
frontend/dist/LegacyPluginScene 26.6 kB
frontend/dist/LemonTextAreaMarkdown 502 B
frontend/dist/less 3.9 kB
frontend/dist/lexon 2.44 kB
frontend/dist/lib 2.22 kB
frontend/dist/Link 468 B
frontend/dist/LinkScene 24.8 kB
frontend/dist/LinksScene 4.19 kB
frontend/dist/liquid 4.53 kB
frontend/dist/LiveDebugger 19.1 kB
frontend/dist/LiveEventsTable 2.98 kB
frontend/dist/LLMAnalyticsClusterScene 15.7 kB
frontend/dist/LLMAnalyticsClustersScene 43 kB
frontend/dist/LLMAnalyticsDatasetScene 19.7 kB
frontend/dist/LLMAnalyticsDatasetsScene 3.28 kB
frontend/dist/LLMAnalyticsEvaluation 40.7 kB
frontend/dist/LLMAnalyticsEvaluationsScene 29.5 kB
frontend/dist/LLMAnalyticsPlaygroundScene 36.3 kB
frontend/dist/LLMAnalyticsScene 116 kB
frontend/dist/LLMAnalyticsSessionScene 13.4 kB
frontend/dist/LLMAnalyticsTraceScene 127 kB
frontend/dist/LLMAnalyticsUsers 526 B
frontend/dist/LLMASessionFeedbackDisplay 4.83 kB
frontend/dist/LLMPromptScene 20.6 kB
frontend/dist/LLMPromptsScene 4.21 kB
frontend/dist/Login 8.57 kB
frontend/dist/Login2FA 4.2 kB
frontend/dist/logs.js 38.5 kB
frontend/dist/LogsScene 8.07 kB
frontend/dist/lua 2.11 kB
frontend/dist/m3 2.81 kB
frontend/dist/main 819 kB
frontend/dist/ManagedMigration 14 kB
frontend/dist/markdown 3.79 kB
frontend/dist/MarketingAnalyticsScene 24.7 kB
frontend/dist/MaterializedColumns 10.2 kB
frontend/dist/Max 835 B
frontend/dist/mdx 5.39 kB
frontend/dist/MessageTemplate 16.3 kB
frontend/dist/MetricsScene 828 B
frontend/dist/mips 2.58 kB
frontend/dist/ModelsScene 13.6 kB
frontend/dist/MonacoDiffEditor 403 B
frontend/dist/monacoEditorWorker 288 kB
frontend/dist/monacoEditorWorker.js 288 kB
frontend/dist/monacoJsonWorker 419 kB
frontend/dist/monacoJsonWorker.js 419 kB
frontend/dist/monacoTsWorker 7.02 MB
frontend/dist/monacoTsWorker.js 7.02 MB
frontend/dist/MoveToPostHogCloud 4.46 kB
frontend/dist/msdax 4.91 kB
frontend/dist/mysql 11.3 kB
frontend/dist/NavTabChat 4.68 kB
frontend/dist/NewSourceWizard 724 B
frontend/dist/NewTabScene 681 B
frontend/dist/NodeDetailScene 16.3 kB
frontend/dist/NotebookCanvasScene 3.06 kB
frontend/dist/NotebookPanel 5.08 kB
frontend/dist/NotebookScene 8.07 kB
frontend/dist/NotebooksScene 7.58 kB
frontend/dist/OAuthAuthorize 573 B
frontend/dist/objective-c 2.41 kB
frontend/dist/Onboarding 683 kB
frontend/dist/OnboardingCouponRedemption 1.2 kB
frontend/dist/pascal 2.99 kB
frontend/dist/pascaligo 2 kB
frontend/dist/passkeyLogic 484 B
frontend/dist/PasswordReset 4.32 kB
frontend/dist/PasswordResetComplete 2.94 kB
frontend/dist/perl 8.25 kB
frontend/dist/PersonScene 16 kB
frontend/dist/PersonsScene 4.73 kB
frontend/dist/pgsql 13.5 kB
frontend/dist/php 8.02 kB
frontend/dist/PipelineStatusScene 6.22 kB
frontend/dist/pla 1.67 kB
frontend/dist/posthog 250 kB
frontend/dist/postiats 7.86 kB
frontend/dist/powerquery 16.9 kB
frontend/dist/powershell 3.27 kB
frontend/dist/PreflightCheck 5.53 kB
frontend/dist/product-tours.js 115 kB
frontend/dist/ProductTour 274 kB
frontend/dist/ProductTours 4.7 kB
frontend/dist/ProjectHomepage 24.9 kB
frontend/dist/protobuf 9.05 kB
frontend/dist/pug 4.82 kB
frontend/dist/python 4.76 kB
frontend/dist/qsharp 3.19 kB
frontend/dist/r 3.12 kB
frontend/dist/razor 9.35 kB
frontend/dist/recorder-v2.js 111 kB
frontend/dist/recorder.js 111 kB
frontend/dist/redis 3.55 kB
frontend/dist/redshift 11.8 kB
frontend/dist/RegionMap 29.4 kB
frontend/dist/render-query 20.4 MB
frontend/dist/ResourceTransfer 9.17 kB
frontend/dist/restructuredtext 3.9 kB
frontend/dist/RevenueAnalyticsScene 25.6 kB
frontend/dist/ruby 8.5 kB
frontend/dist/rust 4.16 kB
frontend/dist/SavedInsights 664 B
frontend/dist/sb 1.82 kB
frontend/dist/scala 7.32 kB
frontend/dist/scheme 1.76 kB
frontend/dist/scss 6.41 kB
frontend/dist/SdkDoctorScene 9.42 kB
frontend/dist/SessionAttributionExplorerScene 6.6 kB
frontend/dist/SessionGroupSummariesTable 4.62 kB
frontend/dist/SessionGroupSummaryScene 17 kB
frontend/dist/SessionProfileScene 15.8 kB
frontend/dist/SessionRecordingDetail 1.73 kB
frontend/dist/SessionRecordingFilePlaybackScene 4.46 kB
frontend/dist/SessionRecordings 742 B
frontend/dist/SessionRecordingsKiosk 8.84 kB
frontend/dist/SessionRecordingsPlaylistScene 4.14 kB
frontend/dist/SessionRecordingsSettingsScene 1.9 kB
frontend/dist/SessionsScene 3.86 kB
frontend/dist/SettingsScene 2.98 kB
frontend/dist/SharedMetric 15.7 kB
frontend/dist/SharedMetrics 549 B
frontend/dist/shell 3.07 kB
frontend/dist/SignupContainer 24.5 kB
frontend/dist/Site 1.18 kB
frontend/dist/solidity 18.6 kB
frontend/dist/sophia 2.76 kB
frontend/dist/SourcesScene 5.96 kB
frontend/dist/sourceWizardLogic 662 B
frontend/dist/sparql 2.55 kB
frontend/dist/sql 10.3 kB
frontend/dist/SqlVariableEditScene 7.24 kB
frontend/dist/st 7.4 kB
frontend/dist/StartupProgram 21.2 kB
frontend/dist/SupportSettingsScene 40.7 kB
frontend/dist/SupportTicketScene 23 kB
frontend/dist/SupportTicketsScene 733 B
frontend/dist/Survey 746 B
frontend/dist/SurveyFormBuilder 1.54 kB
frontend/dist/Surveys 18.2 kB
frontend/dist/surveys.js 89.8 kB
frontend/dist/SurveyWizard 57.6 kB
frontend/dist/swift 5.26 kB
frontend/dist/SystemStatus 16.8 kB
frontend/dist/systemverilog 7.61 kB
frontend/dist/TaskDetailScene 20.1 kB
frontend/dist/TaskTracker 13.1 kB
frontend/dist/tcl 3.57 kB
frontend/dist/TextCardMarkdownEditor 11 kB
frontend/dist/toolbar 10.1 MB
frontend/dist/ToolbarLaunch 2.52 kB
frontend/dist/tracing-headers.js 1.74 kB
frontend/dist/TracingScene 29.3 kB
frontend/dist/TransformationsScene 1.91 kB
frontend/dist/tsMode 24 kB
frontend/dist/twig 5.97 kB
frontend/dist/TwoFactorReset 3.98 kB
frontend/dist/typescript 240 B
frontend/dist/typespec 2.82 kB
frontend/dist/Unsubscribe 1.62 kB
frontend/dist/UserInterview 4.53 kB
frontend/dist/UserInterviews 2.01 kB
frontend/dist/vb 5.79 kB
frontend/dist/VercelConnect 4.95 kB
frontend/dist/VercelLinkError 1.91 kB
frontend/dist/VerifyEmail 4.48 kB
frontend/dist/vimMode 211 kB
frontend/dist/VisualReviewRunScene 18.6 kB
frontend/dist/VisualReviewRunsScene 6.16 kB
frontend/dist/VisualReviewSettingsScene 10.6 kB
frontend/dist/web-vitals.js 6.39 kB
frontend/dist/WebAnalyticsScene 5.77 kB
frontend/dist/WebGLRenderer-DYjOwNoG 60.3 kB
frontend/dist/WebGPURenderer-B_wkl_Ja 36.3 kB
frontend/dist/WebScriptsScene 2.54 kB
frontend/dist/webworkerAll-puPV1rBA 324 B
frontend/dist/wgsl 7.34 kB
frontend/dist/Wizard 4.45 kB
frontend/dist/WorkflowScene 101 kB
frontend/dist/WorkflowsScene 46.9 kB
frontend/dist/WorldMap 4.73 kB
frontend/dist/xml 2.98 kB
frontend/dist/yaml 4.6 kB

compressed-size-action

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 3, 2026

🎭 Playwright report · View test results →

⚠️ 1 flaky test:

  • Materialize view pane (chromium)

These issues are not necessarily caused by your changes.
Annoyed by this comment? Help fix flakies and failures and it'll disappear!

@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch 10 times, most recently from 71049ed to 13b740b Compare April 3, 2026 21:57
@pauldambra pauldambra added the update-snapshots Enable auto commit snapshots for Storybook and Playwright label Apr 3, 2026
@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch 3 times, most recently from 4f7aa9a to dda9f5e Compare April 3, 2026 22:14
@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to dda9f5e while workflow was testing fa67267.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch from dda9f5e to 538f62f Compare April 3, 2026 22:21
@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch 2 times, most recently from 8fb6c69 to 61e5923 Compare April 3, 2026 22:30
@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to 61e5923 while workflow was testing 538f62f.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@pauldambra pauldambra changed the title feat: generic property pinning in TaxonomicFilter feat: pinning in TaxonomicFilter Apr 3, 2026
@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch 2 times, most recently from 1fd82a1 to 764c71e Compare April 3, 2026 22:36
@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to 764c71e while workflow was testing 61e5923.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch from 764c71e to 59c6818 Compare April 3, 2026 22:48
@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to 59c6818 while workflow was testing 764c71e.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch from 59c6818 to bfaec75 Compare April 3, 2026 23:04
@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to bfaec75 while workflow was testing 59c6818.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch from bfaec75 to 11962a7 Compare April 3, 2026 23:20
@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to 11962a7 while workflow was testing bfaec75.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

Include matching pinned items in Suggested tab search results using
group-aware search — resolves each pinned item's source group and
searches across both the raw name and the core filter label.

Pin button now shows "Pin"/"Unpin" label text alongside the icon.
Tooltip explains the purpose: "Pinned items appear in the Pinned tab
for quick access".

Pinned items are NOT promoted in the empty/no-search state.
Skip stale/unused indicators for pinned items.
Search-aware empty state for pinned group.
Tailwind for popover action buttons.

Generated-By: PostHog Code
Task-Id: c0655c2e-7595-4994-892b-a1b8d03228cf
@pauldambra pauldambra force-pushed the posthog-code/generic-taxonomic-filter-pinning branch from 11962a7 to 6768bb7 Compare April 3, 2026 23:27
@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to 6768bb7 while workflow was testing 11962a7.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to ba0ba1e while workflow was testing 6768bb7.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 3, 2026

⏭️ Skipped snapshot commit because branch advanced to a3dad53 while workflow was testing ba0ba1e.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 4, 2026

Visual regression: Storybook UI snapshots updated

Changes: 28 snapshots (28 modified, 0 added, 0 deleted)

What this means:

  • Snapshots have been automatically updated to match current rendering
  • Next CI run will switch to CHECK mode to verify stability
  • If snapshots change again, CHECK mode will fail (indicates flapping)

Next steps:

  • Review the changes to ensure they're intentional
  • Approve if changes match your expectations
  • If unexpected, investigate component rendering

Review snapshot changes →

@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 4, 2026

Visual regression: Storybook UI snapshots updated

Changes: 12 snapshots (12 modified, 0 added, 0 deleted)

What this means:

  • Snapshots have been automatically updated to match current rendering
  • Next CI run will switch to CHECK mode to verify stability
  • If snapshots change again, CHECK mode will fail (indicates flapping)

Next steps:

  • Review the changes to ensure they're intentional
  • Approve if changes match your expectations
  • If unexpected, investigate component rendering

Review snapshot changes →

@pauldambra pauldambra requested a review from adamleithp April 4, 2026 09:31
Copy link
Copy Markdown
Contributor

@sampennington sampennington left a comment

Choose a reason for hiding this comment

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

Nice, I am wondering if it would be a bit nicer with the pin in the top right, next to the Edit/View. Then the heading is still in the top left. But not a big deal 😄

Copy link
Copy Markdown
Member Author

Nice, I am wondering if it would be a bit nicer with the pin in the top right, next to the Edit/View. Then the heading is still in the top left. But not a big deal 😄

​Oh, i started there but it was all really tight so i split it down

@pauldambra pauldambra merged commit 63ca192 into master Apr 4, 2026
228 checks passed
@pauldambra pauldambra deleted the posthog-code/generic-taxonomic-filter-pinning branch April 4, 2026 10:38
MattBro pushed a commit that referenced this pull request Apr 7, 2026
## Problem

The TaxonomicFilter's property pinning is replay-specific — users can only pin person properties, and only from the Replay tab. This limits discoverability and reuse across the product.

## Changes

![CleanShot 2026-04-03 at 22 58 32](https://github.com/user-attachments/assets/76eb76b9-9c69-4984-bc1e-0baadfde8f07)

Generalizes property pinning into the TaxonomicFilter itself:

- **New `taxonomicFilterPinnedPropertiesLogic`** — kea logic with team-scoped localStorage persistence, `togglePin` action, `isPinned` selector
- **Pin button in DefinitionPopover header** — appears on the left (secondary style) when hovering any property; View/Edit links stay on the right
- **New `PinnedFilters` group type** — auto-injected after Suggested → Recents → Pinned in the tab order; searchable like Recents but not promoted in Suggested
- **Migration** — copies existing `quickFilterProperties` from replay's `playerSettingsLogic` on first use, then cleans up
- **Removes replay-specific pinning UI** — the "Pinned person properties" section and its TaxonomicFilter popover are gone from `ReplayTaxonomicFilters`
- **Cleans up `playerSettingsLogic`** — removes `quickFilterProperties`, `setQuickFilterProperties`, unused `connect` to `teamLogic`

The sidebar overview grid (`sessionRecordingPinnedPropertiesLogic`) is untouched — that's a separate concern.

## How did you test this code?

- **Kea logic tests** (`taxonomicFilterPinnedPropertiesLogic.test.ts`) — 27 tests covering toggle on/off, excluded groups, null values, `isPinned`/`pinnedFilterItems` selectors, migration (4 scenarios), and `hasPinnedContext`/`stripPinnedContext` utilities. All pass.
- **RTL component tests** (`TaxonomicFilterPinning.test.tsx`) — 4 tests covering pin tab visibility, pinned item rendering, pin button in definition popover. These follow the exact patterns from `TaxonomicFilter.test.tsx` but cannot run in the worktree due to a pre-existing `@posthog/hogvm` module resolution issue (same issue affects all existing RTL tests in this area).
- **Existing tests** — `recentTaxonomicFiltersLogic.test.ts` (22 tests) and `dataWarehouseItemUtils.test.ts` continue to pass.
- made sure it works locally- 

## 🤖 LLM context

Agent-authored PR. The `@posthog/hogvm` native dependency is missing in the git worktree, preventing RTL component tests from running locally — this is a pre-existing environment issue affecting all TaxonomicFilter RTL tests, not specific to these changes.

---
*Created with [PostHog Code](https://posthog.com/code?ref=pr)*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

update-snapshots Enable auto commit snapshots for Storybook and Playwright

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants