Add list details page for managing include/exclude list values - #3264
Add list details page for managing include/exclude list values#3264zackcl wants to merge 36 commits into
Conversation
|
this looks great, thanks for the video and all of the detail in the story. my vote goes for this one still, but i'll let others chime in, i've already given my thoughts. |
There was a problem hiding this comment.
Pull request overview
Adds list-details workflows for managing private list values and separates experiment list queries to avoid Cartesian growth.
Changes:
- Adds searchable list-details pages with add, edit, delete, import, and export actions.
- Updates list creation, routing, shared UI components, and tests.
- Loads experiment inclusion and exclusion data separately to reduce memory usage.
Reviewed changes
Copilot reviewed 36 out of 36 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
packages/types/src/Experiment/interfaces.ts |
Adds menu-label case preservation. |
.../common-tabbed-section-card-footer.component.spec.ts |
Tests tab navigation stability. |
.../common-tabbed-section-card-footer.component.html |
Tracks tabs by label. |
.../common-section-card-title-header.component.html |
Refines counts and optional metadata. |
.../common-section-card-search-header.component.ts |
Adds filter visibility and width inputs. |
.../common-section-card-search-header.component.html |
Supports search-only headers. |
.../common-section-card-action-buttons.component.html |
Optionally preserves menu-label casing. |
.../common-import-container.component.ts |
Adds close-button visibility control. |
.../common-import-container.component.html |
Conditionally renders the close button. |
.../common-details-participant-list-table.component.ts |
Adds details-route filter handling. |
.../common-details-participant-list-table.component.html |
Links direct-value lists to details pages. |
.../common-details-page-header.component.ts |
Adds parent breadcrumb inputs. |
.../common-details-page-header.component.html |
Renders nested breadcrumbs. |
.../list-details-page.component.ts |
Implements list-value management logic. |
.../list-details-page.component.scss |
Styles the values table. |
.../list-details-page.component.html |
Builds the list-details interface. |
.../upsert-private-segment-list-modal.component.ts |
Restricts metadata editing and preserves values. |
.../upsert-private-segment-list-modal.component.html |
Removes value chips from metadata forms. |
.../upsert-list-values-modal.component.ts |
Implements value entry and CSV import. |
.../upsert-list-values-modal.component.scss |
Styles value-import controls. |
.../upsert-list-values-modal.component.html |
Defines add/import workflows. |
.../edit-list-value-modal.component.ts |
Adds single-value validation and editing. |
.../edit-list-value-modal.component.html |
Defines the value-edit dialog. |
.../experiment-inclusions-table.component.ts |
Identifies inclusion routes explicitly. |
.../experiment-inclusions-table.component.html |
Passes the inclusion filter mode. |
.../dashboard-routing.module.ts |
Registers list-details routes. |
.../segments.model.ts |
Adds list-owner models. |
.../segments.effects.ts |
Navigates newly created segment lists. |
.../list-values.utils.ts |
Adds parsing, deduplication, and limits. |
.../list-values.utils.spec.ts |
Tests list-value utilities. |
.../list-details.data.service.ts |
Coordinates owner-specific list APIs. |
.../list-details.data.service.spec.ts |
Tests list data operations. |
.../feature-flags.effects.ts |
Navigates newly created flag lists. |
.../experiments.effects.ts |
Navigates newly created experiment lists. |
packages/backend/test/unit/repositories/ExperimentRepository.test.ts |
Tests separately loaded list relations. |
packages/backend/src/api/repositories/ExperimentRepository.ts |
Splits and merges inclusion/exclusion queries. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 39 out of 39 changed files in this pull request and generated no new comments.
Suppressed comments (1)
packages/frontend/projects/upgrade/src/app/core/segments/list-values.utils.ts:7
- Tab characters are not treated as separators here, and the CSV parser likewise accepts them. However, the backend strips every tab before persisting members (
packages/backend/src/api/services/SegmentService.ts:1118-1120), so adding/importingschool\tAreports success but storesschoolA, potentially colliding with a different identifier. This also contradicts the PR's stated rejection of tab-containing values. Validate and reject tabs in add, edit, and CSV import before submitting them.
const VALUE_SEPARATORS = /[,\r\n]+/;
Resolves #3255
Summary
Screenshot
Screen recording
list.details.page.mov