feat: named server sets — save/apply the Active/Disabled split (#52) #56

Merged
the_og merged 1 commits from feat/52-server-sets into main 2026-07-12 14:00:19 -04:00
Owner

Closes #52.

The headline v1.3.0 feature (market-validated: MCP One "clusters", holstein13 "presets", itsocialist "templates"). Save the current Active/Disabled split under a name and switch sets from a dropdown with one click.

  • Sets live in the config file under a new bcc-owned key _bccServerSets (same pattern as _disabledMcpServers; ignored by Claude, travels with the file). apply_servers() untouched — sets ride along in full_config.
  • Core: list_server_sets (fail-soft on malformed entries), save_server_set, delete_server_set (drops the key when the last set goes), apply_server_set → returns vanished member names for a non-fatal status warning.
  • GUI: compact row in the left panel (combo + Apply + Save set… + delete). Apply pushes one undo snapshot and marks dirty; nothing touches disk until Save.
  • 7 new core tests + offscreen GUI round-trip verified (save→flip→apply→undo→save→reload→on-disk key correct).

🤖 Generated with Claude Code

Closes #52. The headline v1.3.0 feature (market-validated: MCP One "clusters", holstein13 "presets", itsocialist "templates"). Save the current Active/Disabled split under a name and switch sets from a dropdown with one click. - Sets live in the config file under a new bcc-owned key `_bccServerSets` (same pattern as `_disabledMcpServers`; ignored by Claude, travels with the file). `apply_servers()` untouched — sets ride along in full_config. - Core: `list_server_sets` (fail-soft on malformed entries), `save_server_set`, `delete_server_set` (drops the key when the last set goes), `apply_server_set` → returns vanished member names for a non-fatal status warning. - GUI: compact row in the left panel (combo + Apply + Save set… + delete). Apply pushes one undo snapshot and marks dirty; nothing touches disk until Save. - 7 new core tests + offscreen GUI round-trip verified (save→flip→apply→undo→save→reload→on-disk key correct). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
the_og added 1 commit 2026-07-12 13:57:25 -04:00
feat: named server sets — save/apply the Active/Disabled split (#52)
CI / Tests (py3.10 / ubuntu-latest) (pull_request) Successful in 8s
CI / Tests (py3.12 / windows-latest) (pull_request) Successful in 21s
CI / Lint (ruff) (pull_request) Successful in 6s
CI / Tests (py3.12 / ubuntu-latest) (pull_request) Successful in 9s
CI / Tests (py3.13 / ubuntu-latest) (pull_request) Successful in 8s
ac2e73e9d7
Sets live in the config under _bccServerSets (bcc-owned, ignored by
Claude, travels with the file). Apply enables exactly the set's members
and parks the rest; vanished members are reported, not fatal. GUI row:
set combo + Apply + Save set… + delete.

Closes #52

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
the_og merged commit 47c95ac006 into main 2026-07-12 14:00:19 -04:00
the_og deleted branch feat/52-server-sets 2026-07-12 14:00:19 -04:00
Sign in to join this conversation.