Skip to content

feat(plugin): make the self-hosted server requirement explicit - #199

Merged
dvcdsys merged 3 commits into
developfrom
feat/plugin-server-requirement
Jul 26, 2026
Merged

feat(plugin): make the self-hosted server requirement explicit#199
dvcdsys merged 3 commits into
developfrom
feat/plugin-server-requirement

Conversation

@dvcdsys

@dvcdsys dvcdsys commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Why

The cix plugin is a client: without a deployed self-hosted cix server it has nothing to talk to. Neither the plugin description, the marketplace entry, the README, nor the first-run experience said so — a guaranteed stream of confused installs once the plugin lands in public catalogs (claude-plugins-community submission is queued next).

What

  1. plugin.json — description now leads with "Requires a self-hosted cix (CodeIndeX) server…"; self-hosted keyword; version 0.3.0 → 0.3.1.
  2. marketplace.json — same requirement sentence in both cix and cix-cowork entries; self-hosted keyword/tag.
  3. plugin README — new "Requires a self-hosted cix server" section directly under the title, with the installer one-liner and connect-to-existing-server instructions.
  4. SessionStart hook — when no cix server is configured on the machine (no CIX_API_URL, no url: in ~/.cix/config.yaml), the hook now emits a one-line setup hint via additionalContext. A configured-but-unreachable server or a merely-unindexed project stays silent exactly as before (cix_server_configured heuristic errs toward silence). Shared JSON-emit helper extracted; indexed-path message unchanged.
  5. sitePLUGIN_VERSION 0.3.1 (goes live with the develop→main promotion, same moment the new plugin manifest reaches main).

Testing

  • bash -n + shellcheck (info-level only, matching pre-existing style) on both scripts
  • Hook matrix exercised manually:
    • no CLI + no config → setup-hint JSON emitted
    • no CLI + config with url: → silent, cache marker written
    • indexed project (real server) → standard 💡 reminder unchanged
  • claude plugin validate ✔; both JSON manifests parse

🤖 Generated with Claude Code

dvcdsys and others added 3 commits July 25, 2026 09:29
- plugin.json / marketplace.json: descriptions now lead with the
  self-hosted server requirement; add self-hosted keyword/tag; bump
  plugin to 0.3.1
- plugin README: "Requires a self-hosted cix server" section up top
  with the installer one-liner and connect-to-existing instructions
- SessionStart hook: when NO cix server is configured on the machine
  (no CIX_API_URL, no url in ~/.cix/config.yaml), emit a one-line
  setup hint via additionalContext; configured-but-unindexed projects
  stay silent as before. Shared emit helper extracted.
- site: PLUGIN_VERSION 0.3.1

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
run_hook now points HOME at a per-test scratch dir so hook behavior
never depends on the developer's real ~/.cix/config.yaml (the previous
suite passed locally but failed in CI's clean HOME). make_server_config
opts a test into the "server configured" state. Split the two silent
tests into configured/unconfigured variants and assert the new setup
hint fires only when no server is configured anywhere.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…l surfaces

Review follow-ups on the server-requirement change:

- Setup hint is now genuinely rate-limited: cix-setup-hint marker in
  $CACHE_DIR, at most once per 7 days per machine; marker prefix added
  to the 30-day GC find so it cannot accumulate.
- cix_emit_context(event, msg) moved into lib-cix-probe.sh and used by
  all three emitters (session-start, grep-nudge, post-compact); the
  jq/sed pair now exists once. post-compact.sh did not source the lib
  before — source added.
- cix_server_configured: CIX_API_KEY alone now counts as configured
  (key + implicit localhost default is a working setup).
- cix-cowork: requirement sentence + self-hosted keyword in its own
  plugin.json (0.1.0 → 0.1.1), README states the server dependency up
  top, not only in Requirements.
- Site: the plugin card (landing) and the docs plugin section now state
  the client/server split with a link to Quick start / Install.
- Onboarding texts teach the modern config form (server.main.url/key —
  first server added becomes the default, cli config.go migrateToServers)
  instead of the legacy api.* aliases.
- semver: new user-visible hook behavior ships as 0.4.0, not a patch.
- Tests: rate-limit second-run silence, config.yaml-without-url fires
  the hint, CIX_API_KEY suppression, indexed-never-hints assertion,
  GC reaps an old cix-setup-hint marker.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dvcdsys
dvcdsys merged commit 7bec545 into develop Jul 26, 2026
3 checks passed
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