Files
Devin FoleyandPaperclip 794b09f834 fix(ui): alphabetize experimental settings and hide empty groups (#13905)
## Thinking Path

Paperclip operators use Experimental settings to find and manage
optional controls. New cards have accumulated outside alphabetical
order, and operator-hidden cards leave empty developer and legacy
sections. Sort the displayed controls within their existing groups and
remove groups with no visible controls.

## Related Issues

**What existing behavior does this improve?**

The Instance Settings → Experimental page.

**Current behavior**

Agent Chat follows Cases, MCP aggregators precedes External Objects, and
hidden developer/legacy controls leave empty headings. The worktree
execution card also ignores its operator visibility key.

**Proposed behavior**

Cards appear alphabetically by their displayed title within each
section. Empty developer and legacy sections disappear. The worktree
execution card follows the same operator visibility policy as other
experimental controls.

**Reason and benefit**

Operators can scan the list predictably. Hosted installations show only
the controls their operator permits, without empty sections or a
worktree-only exception.

No matching sorting PR was found in the duplicate search. This is a
small improvement to an existing settings page and does not add a
roadmap feature.

## What Changed

- Reorder existing cards without changing their values or mutation
handlers.
- Hide empty developer/legacy sections and respect the hidden
worktree-execution key.
- Cover alphabetical ordering, conditional isolated-workspace controls,
a restricted three-control policy, and partly visible sections.
- Document sorting and operator visibility.

## Verification

- `pnpm --dir ui exec vitest run
src/pages/InstanceExperimentalSettings.test.tsx`: 45 tests passed.
- `pnpm check:token-gates`: passed.
- `pnpm -r typecheck`: passed.
- `pnpm build`: passed.
- `pnpm --filter @paperclipai/ui typecheck`: passed.
- All PR CI checks passed on `88011049be`, including the chat
integration shards, full typecheck, build, browser tests, and policy
checks. Greptile is 5/5 with no review threads.
- Local `pnpm test:run` reported eight failures in unchanged chat,
company-skills, email-channel, and workspace exposure suites. Stopped
the remaining local run after CI completed successfully. Isolated chat
rechecks were skipped by the host database support gate and do not count
as passes. All matching CI shards passed; the full local suite is not
claimed as green.
- Frozen installation is blocked on the base branch by existing
overrides/patch configuration drift from the lockfile. Local validation
uses `pnpm@9.15.4 install --no-frozen-lockfile`; the original lockfile
and manifests are unchanged in this PR.
- Diff reviewed for secrets, private references, and run artifacts.

## Risks

Settings only change position or visibility. Existing values, managed
locks, API contracts, and feature dependencies are unchanged. Each
section keeps its own alphabetical list. Reverting this change restores
the previous presentation.

## Model Used

OpenAI GPT-6 (Codex), with reasoning, repository tools, and test
execution.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have described the issue in-PR following the enhancement
template
- [x] I have not referenced internal/instance-local Paperclip issues or
links
- [x] My branch name describes the change and contains no internal
ticket id
- [x] I have run the relevant tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-23 16:35:59 -07:00
..