Skip to content

Group switches everywhere, load-more, on-demand re-read; drop CIPP tag scoping - #23

Merged
selic merged 1 commit into
mainfrom
feat/group-tier-switches
Jul 29, 2026
Merged

Group switches everywhere, load-more, on-demand re-read; drop CIPP tag scoping#23
selic merged 1 commit into
mainfrom
feat/group-tier-switches

Conversation

@selic

@selic selic commented Jul 29, 2026

Copy link
Copy Markdown
Member

Feedback on v0.11.0: URL tag scoping is the wrong knob (you must know the vocabulary up front, and the catalog silently hides whatever you didn't name), the 50-row cap forced a filter to see what a server even offers, and userDefault was only reachable from a preset.

What changed

  • All tools load; visibility is what you manage. The CIPP preset no longer appends ?tags=; preflight timeout is 45s so a 231-tool enumeration finishes.
  • Two-level grouping with switches at both levels — server → category, each with a whole-set switch plus read / write / destructive switches and counts, in the admin catalog and on /me. A single unnamed category renders flat (no redundant header).
  • Categories come from the server: _meta.group / _meta.toolset first — the spec-sanctioned way, no description tokens spent — else a bracketed description prefix ([Identity > Administration > Users], CIPP). An explicit group_label still wins. (mcp-connectwise-psa is getting the _meta.group tag in its own release, so its toolsets — tickets/time/companies/configurations/schedule/finance/advanced — become switchable groups.)
  • "show N more of M" pages long lists 25 at a time instead of demanding a filter.
  • POST /api/catalog/refresh re-reads every upstream's tools on demand ("Re-read from servers"). Automatic refresh on tools/list_changed and after reconnects was already there; this covers servers that change surface silently.
  • userDefault is a first-class control: a select in the add-server form and a per-row toggle in the servers table, not just a preset field.

Tests

230 passing (3 new for derivedGroupOf: _meta precedence, description-prefix fallback, nothing-to-derive). Verified live against the real cwpsa upstream: /api/catalog/refresh → 39 tools re-read; group + tier switches act on the right sets; "show 14 more of 14" grows 26→40 rows in admin and 25→39 on /me; the add-form select and the row toggle both round-trip userDefault (opt-in ↔ default on) through a spec upsert that leaves grants and tool settings intact.

Release v0.12.0.

🤖 Generated with Claude Code

Managing 231 CIPP tools by URL tags turned out to be the wrong knob: you have
to know the tag vocabulary up front and the catalog silently hides what you
did not name. So all tools load, and *visibility* is what you manage.

- Admin and /me now nest tools under server -> category, and every level has
  switches for the whole set or just its read / write / destructive tools. A
  single unnamed category stays flat (no redundant header).
- Categories come from the server: _meta.group / _meta.toolset first (the
  MSPStack family tags its toolsets that way — costs no description tokens),
  else a bracketed description prefix like CIPP's "[Identity > ...]". An
  explicit group_label still wins.
- Long lists page in 25 at a time with "show N more of M" instead of forcing a
  filter — you can browse what a server offers without knowing its names.
- POST /api/catalog/refresh re-reads every upstream on demand, surfaced as
  "Re-read from servers"; discovery already re-ran on tools/list_changed and
  after reconnects, but silent surface changes needed a nudge.
- userDefault is now a control when adding a server and a per-row toggle in
  the servers table, not just a preset field.
- The CIPP preset drops its tags param: load everything, switch by category.
  Preflight timeout raised to 45s since 231 tools take a while to enumerate.

Release v0.12.0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@selic
selic merged commit d3484c1 into main Jul 29, 2026
@selic
selic deleted the feat/group-tier-switches branch July 29, 2026 19:28
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.

1 participant