# Changelog

## [Unreleased]

### Added
- Curated `github`, `notion`, and `linear` services — official OAuth-remote (streamable HTTP) MCP servers that install out of the box.
- New `mcp-wire doctor` command that prints read-only diagnostics: detected targets and their config paths, feature flag state, mcp-wire config/credentials/services/registry-cache paths, and hints for missing targets or disabled features.
- New `mcp-wire metadata` command that prints a stable, machine-readable JSON document for automation and AI agents: supported transports and scopes, every target (install status, config path, supported scopes, OAuth support), every service (transport, auth requirement, environment variables), and feature-flag state. Defaults to curated services; use `--source registry` or `--source all` to include registry services.

### Changed
- TUI service list now shows a metadata line under each service — source, transport, install method, and auth requirement (e.g. `curated · http · remote · OAuth`) — so curated and registry services are easier to compare while browsing.
- Contributor workflow: PRs that change user-visible code (`internal/`, `cmd/`, `services/`, or `README.md`) must add an entry under `## [Unreleased]` in `CHANGELOG.md`. A new CI check enforces this; opt out with the `skip-changelog` label or `[no-changelog]` in the PR title for genuinely non-user-visible changes.

### Removed
- Gemini CLI is no longer a supported target. The `gemini` target slug, its config writer for `~/.gemini/settings.json`, and all related CLI/TUI references have been removed. Existing Gemini configs on disk are left untouched; uninstall or remove entries manually if needed.

### Security
- Credentials directory (`~/.config/mcp-wire/`) is now re-tightened to mode `0700` on every credential store, not only when it is first created, so pre-existing directories with broader permissions are corrected automatically.
- Documented credential storage expectations in `README.md`: where credentials live, the file/directory permissions used, the resolution order, and that values are stored in plaintext.

## v0.2.2 - 2026-03-06

### Changed
- Redesigned uninstall flow: users now pick the target first, then choose from only the services installed there, instead of browsing the full catalog.
- Review screen now shows an explicit "Action" line and uses "Install"/"Uninstall" button labels instead of the generic "Apply".
- Plain-text (non-TUI) uninstall wizard also follows the new target-first flow.

## v0.2.1 - 2026-02-18

### Added
- Gemini CLI target: install MCP services into `~/.gemini/settings.json` with support for stdio, SSE, and streamable HTTP transports.

## v0.2.0 - 2026-02-18

### Added
- Full-screen Bubble Tea TUI replacing the survey-based interactive UI. Screens: main menu, source selection, live-filtered service selection with async catalog loading and registry sync status polling, registry trust warning with metadata display and explicit confirmation, target multi-select with scope selection, review summary with equivalent command and Apply/Cancel confirmation, credential prompting with apply progress, and post-uninstall credential removal prompt.
- TUI credential screen prompts for unresolved env vars sequentially with masked input, setup URL/hint display, Ctrl+O to open URLs, and optional save-to-credential-store prompt.
- TUI apply screen shows per-target install/uninstall progress with status indicators (pending/running/done/failed), equivalent command output, OAuth manual auth hints, and post-completion navigation (Install another / Back to menu / Exit).
- Registry cache now syncs in the background on CLI startup (when the registry feature is enabled), so registry flows can start from cached results and refresh incrementally without blocking command execution.
- Added `mcp-wire cache clear` to remove the local registry cache file and recover quickly from stale/corrupt cache state.
- Registry entries with package-based install methods (`npm`, `pypi`, `docker`/`oci`, `nuget`, `mcpb`) can now be installed end-to-end as stdio services, mapping registry package metadata into command + args configs.
- Selecting a registry entry now fetches the latest version details from the `versions/latest` API endpoint, ensuring installs always use the most recent package version and metadata.
- Explicit install path (`mcp-wire install <name>`) now falls back to the registry catalog when no curated service matches, enabling direct reinstall of registry entries from guided-mode equivalent commands.
- Package runtime arguments with input-style variables (named args without literal values) now create env var placeholders that are prompted and substituted at install time.
- Registry entries with `streamable-http` or `sse` remotes can now be installed end-to-end: URL/header variable prompting, placeholder substitution, and per-target config generation.
- `Service` model now carries explicit `Headers` (for registry remote header templates) and `EnvVar.Default` (for variable defaults from the registry schema).
- Claude Code target emits a `headers` map in server config when explicit headers are defined.
- OpenCode target uses explicit `svc.Headers` for registry remotes instead of deriving headers from resolved env vars.
- `--no-prompt` mode now silently applies default values for required and optional env vars, enabling non-interactive installs of registry services with defaulted variables.

### Removed
- Removed `status`, `list services`, and `list targets` CLI commands and their TUI menu entries. The guided menu now shows only Install, Uninstall, and Exit.
- Removed `AlecAivazis/survey/v2` dependency and all survey-based UI code, completing the transition to the Bubble Tea TUI.

### Changed
- Registry service picker UX reworked for discoverability: clearer filter prompt, predictable list focus, and cleaner empty-filter handling.
- Registry rejection message for entries with no supported install method now reads "no supported install method" instead of the package-specific message.
- Duplicate env vars from URL and header variables are now merged with OR on `Required`.
- `applyRegistrySubstitutions` now substitutes `{varName}` placeholders in service args (for package-based installs) in addition to URL and headers.

## v0.1.3 - 2026-02-14

### Changed
- Install, uninstall, and status flows are now scope-aware for Claude Code, with explicit `--scope` support (`effective`, `user`, `project`) and guided prompts where applicable.
- Renamed the Claude Code target slug from `claudecode` to `claude` to align with the official CLI naming.
- OAuth UX now provides clearer follow-up guidance, including a Claude-specific `/mcp` next-step hint when automatic CLI auth is unavailable.
- Post-install output now highlights next steps and equivalent commands more clearly in guided flows.
- Added first-class `http` transport support across service validation and target config generation (alongside `sse` and `stdio`).
- Bundled OAuth services (`jira`, `sentry`, `context7`) now use `transport: http`, and contributor docs were updated with clearer transport guidance and examples.

## v0.1.2 - 2026-02-13

### Added
- Bundled service YAML files are now embedded into the binary, so `mcp-wire` can always list and install built-in services even when no external `services/` directory is present.
- Install flows now automatically trigger OAuth authentication for OAuth-marked services on targets that support it (currently Codex and OpenCode) when running interactively.
- Added a bundled `playwright` service definition using the official stdio setup (`npx @playwright/mcp@latest`) compatible with Claude Code, Codex, and OpenCode.

### Changed
- Service definitions now support an optional `auth` field (for example `auth: oauth`) to drive post-install authentication behavior.
- Guided target selection now starts with no preselected targets, so users explicitly choose where to install.
- Survey target picker now documents quick controls (`Right` to select all, `Left` to clear all), while plain prompts require explicit target numbers (or `all`).
- Guided Survey wizards now support `Esc` back navigation (review -> targets, targets -> service, service -> cancel wizard).
- Pressing `Esc` in the guided main menu now keeps the user in the menu instead of failing the prompt.

## v0.1.1 - 2026-02-13

### Added
- Guided interactive UX with Survey for TTY sessions, including a main menu and step-by-step install/uninstall wizards.
- Service and target selection now support filtering, multi-select, review, and equivalent command output.
- Expanded CLI test coverage for guided flows, interactive selection paths, and install output behavior.
- README now includes an interactive terminal walkthrough at the top.

### Changed
- Bundled `jira`, `sentry`, and `context7` services now use OAuth-first remote endpoints, removing install-time env credential requirements.
- Hidden credential input UX now keeps cursor visibility and prints explicit guidance before masked entry (`Input hidden. Paste and press Enter.`).
- Install output no longer prints target-native OAuth commands; guided output focuses on `mcp-wire` workflow and equivalent command hints.
- Disabled `setup-go` cache in CI and release workflows for more deterministic pipeline behavior.

## v0.1.0 - 2026-02-13

### Added
- Core CLI commands for MCP management: `list`, `install`, `uninstall`, and `status`.
- Service definition system with YAML loading, validation, and layered resolution from bundled plus user-local directories.
- Target support for Claude Code, Codex, and OpenCode with safe config updates that preserve unknown keys.
- Credential resolution chain with environment and file store support, plus interactive prompting for required values.
- Initial bundled service definitions: `context7`, `jira`, and `sentry`.
- Integration test harness (`make test-integration`) and expanded unit test coverage across services, targets, credentials, and CLI flows.
- Release automation with GoReleaser, GitHub release workflow, and Homebrew tap publication.

### Changed
- Claude Code config handling now supports both `~/.claude.json` and `~/.claude/settings.json`, and status discovery includes project-scoped MCP entries.
- OpenCode config parsing now accepts JSONC-style syntax in both `.json` and `.jsonc` configuration files.
- README and contributor guidance were expanded with current implementation status, installation instructions, and release workflow details.
