Files
alex 6ee667c384 feat: add profile includes management UI
- Add includes section to profile editor with drag-and-drop reordering
- Display included profiles with scope badges (Global, Project, Tool)
- Add 'Add Include' dropdown filtered by compatibility and cycle prevention
- Add remove button per include row
- Save includes together with profile form
- Add include count badges to profile list sidebar
- Add drag icon to Icon component

Implements config-profile-includes-ui tasks 1.1-4.3
2026-05-24 21:02:07 +00:00

1.7 KiB

Why

The config profiles feature supports ordered profile composition via the includes system (A includes B then C, resolution applies B → C → A), but this capability is completely invisible to users. They can create and edit individual profiles, but cannot see, add, remove, or reorder the profiles their configuration depends on. Without a UI for profile composition, users cannot build reusable config layers (e.g., an "Auth" profile + "Database" profile → "Full Stack" profile), which was a core design goal of the config profiles feature.

What Changes

  • Add a drag-and-drop includes management section to the config profile editor
  • Display current includes with scope badges (Global, Project, Tool scoped)
  • Allow adding includes via dropdown filtered by compatibility
  • Allow removing includes
  • Reorder includes via drag-and-drop (order affects resolution priority)
  • Save includes together with the main profile form
  • Add frontend cycle detection to prevent adding profiles that would create an include cycle
  • Update profile list items to show include count badge

Capabilities

New Capabilities

  • config-profile-includes-management: Managing ordered profile includes through the UI, including adding, removing, reordering, and visualizing the composition graph with scope indicators

Modified Capabilities

  • (none — backend APIs already fully support includes)

Impact

  • Frontend: apps/web/src/pages/config-profiles.tsx — add includes management UI section
  • Frontend: apps/web/src/api/config_profiles.ts — already has updateProfileIncludes(), no changes needed
  • Backend: No changes required — PUT /config-profiles/{id}/includes and cycle detection already exist
  • No breaking changes