Skip to content

Add list details page for managing include/exclude list values - #3264

Open
zackcl wants to merge 36 commits into
devfrom
feature/3255-list-details-page
Open

Add list details page for managing include/exclude list values#3264
zackcl wants to merge 36 commits into
devfrom
feature/3255-list-details-page

Conversation

@zackcl

@zackcl zackcl commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Resolves #3255

Summary

  • Adds dedicated List Details pages for lists owned by experiments, feature flags, and segments
  • Makes list names link to their details pages and navigates newly created lists directly to the corresponding page
  • Separates list metadata management from value management while keeping the existing list type fixed during editing
  • Supports searching, adding, editing, and deleting individual values, with duplicate values skipped and reported
  • Supports drag-and-drop CSV import with append and replace options, as well as full-list CSV export
  • Supports simple one-column CSV import and export, trims surrounding whitespace on import, and rejects multi-column rows or tab-containing values
  • Uses existing details-page cards, menus, tables, empty states, dialogs, permissions, and read-only patterns
  • Validates list ownership and filter mode before loading the List Details page

Screenshot

Screenshot 2026-08-04 at 12 13 49 PM

Screen recording

list.details.page.mov

@zackcl
zackcl requested review from bcb37 and danoswaltCL August 4, 2026 16:15
@zackcl zackcl self-assigned this Aug 4, 2026
@danoswaltCL

Copy link
Copy Markdown
Collaborator

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.

@zackcl zackcl changed the title [WIP] Add list details page for managing include/exclude list values Add list details page for managing include/exclude list values Aug 21, 2026
@zackcl
zackcl requested a balanced review from Copilot August 21, 2026 12:19

Copilot AI 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.

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.

Copilot AI 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.

Pull request overview

Copilot reviewed 60 out of 60 changed files in this pull request and generated 3 comments.

Comment thread packages/frontend/projects/upgrade/src/app/core/segments/list-values.utils.ts Outdated
Comment thread packages/frontend/projects/upgrade/src/app/core/segments/list-values.utils.ts Outdated

Copilot AI 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.

Pull request overview

Copilot reviewed 60 out of 60 changed files in this pull request and generated 2 comments.

Copilot AI 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.

Pull request overview

Copilot reviewed 39 out of 39 changed files in this pull request and generated 1 comment.

Copilot AI 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.

Pull request overview

Copilot reviewed 39 out of 39 changed files in this pull request and generated 1 comment.

Copilot AI 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.

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/importing school\tA reports success but stores schoolA, 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]+/;

Copilot AI 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.

Pull request overview

Copilot reviewed 39 out of 39 changed files in this pull request and generated 2 comments.

Copilot AI 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.

Pull request overview

Copilot reviewed 39 out of 39 changed files in this pull request and generated no new comments.

Copilot AI 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.

Pull request overview

Copilot reviewed 39 out of 39 changed files in this pull request and generated no new comments.

Copilot AI 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.

Pull request overview

Copilot reviewed 39 out of 39 changed files in this pull request and generated no new comments.

@zackcl
zackcl requested review from bcb37 and danoswaltCL August 25, 2026 17:45
@zackcl
zackcl marked this pull request as ready for review August 25, 2026 19:33
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.

Add a List Details page for viewing and managing include/exclude list values

3 participants