diff --git a/CHANGELOG.md b/CHANGELOG.md index e60bf9ea..c928eb65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,25 @@ All notable changes to the mcpbridge-wrapper project will be documented in this The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.0] - 2026-02-20 + +### Added + +- Persistent broker mode architecture with daemonized upstream session management, multi-client JSON-RPC multiplexing, and stdio proxy support. +- Expanded Web UI observability with tool call detail inspection, session timeline, keyboard shortcuts/command palette, and richer multi-client analytics. + +### Changed + +- Release metadata aligned for the `0.4.0` publication across package and MCP registry manifests. +- Packaging compatibility declarations aligned to tested Python versions (`3.9`-`3.12`) and modern SPDX license metadata fields. +- Broker startup and transport reliability hardened with transactional startup/rollback behavior and bounded in-memory tracking maps. + +### Fixed + +- MCP `structuredContent` compliance for empty-content tool results. +- Web UI port collision behavior and stale process cleanup guidance for broker-backed sessions. +- Broker transport handling for numeric JSON-RPC IDs and same-UID client acceptance fallback when peer credential APIs are unavailable. + ## [0.3.2] - 2026-02-13 ### Fixed @@ -64,6 +83,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - ✅ Support for all 20 Xcode MCP tools - ✅ Configuration examples for Cursor, Claude Code, and Codex CLI +[0.4.0]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.0 [0.3.2]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.3.2 [0.3.1]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.3.1 [0.3.0]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.3.0 diff --git a/SPECS/ARCHIVE/INDEX.md b/SPECS/ARCHIVE/INDEX.md index 677dde96..221934f1 100644 --- a/SPECS/ARCHIVE/INDEX.md +++ b/SPECS/ARCHIVE/INDEX.md @@ -1,6 +1,6 @@ # mcpbridge-wrapper Tasks Archive -**Last Updated:** 2026-02-20 (P14-T4_Replace_deprecated_setuptools_license_metadata_with_SPDX_format) +**Last Updated:** 2026-02-20 (P14-T2_Align_release_metadata_and_changelog_for_0.4.0) ## Archived Tasks @@ -133,6 +133,7 @@ | P14-T1 | [P14-T1_Bound_per_session_ID_restore_maps_in_broker_transport/](P14-T1_Bound_per_session_ID_restore_maps_in_broker_transport/) | 2026-02-20 | PASS | | P14-T3 | [P14-T3_Reconcile_declared_Python_support_with_tested_matrix/](P14-T3_Reconcile_declared_Python_support_with_tested_matrix/) | 2026-02-20 | PASS | | P14-T4 | [P14-T4_Replace_deprecated_setuptools_license_metadata_with_SPDX_format/](P14-T4_Replace_deprecated_setuptools_license_metadata_with_SPDX_format/) | 2026-02-20 | PASS | +| P14-T2 | [P14-T2_Align_release_metadata_and_changelog_for_0.4.0/](P14-T2_Align_release_metadata_and_changelog_for_0.4.0/) | 2026-02-20 | PASS | ## Historical Artifacts @@ -231,6 +232,7 @@ | [REVIEW_P14-T1_broker_alias_map_bounds.md](_Historical/REVIEW_P14-T1_broker_alias_map_bounds.md) | Review report for P14-T1 | | [REVIEW_P14-T3_python_support_matrix.md](_Historical/REVIEW_P14-T3_python_support_matrix.md) | Review report for P14-T3 | | [REVIEW_P14-T4_spdx_license_metadata.md](_Historical/REVIEW_P14-T4_spdx_license_metadata.md) | Review report for P14-T4 | +| [REVIEW_P14-T2_release_metadata_changelog.md](_Historical/REVIEW_P14-T2_release_metadata_changelog.md) | Review report for P14-T2 | ## Archive Log @@ -417,3 +419,5 @@ | 2026-02-20 | P14-T3 | Archived REVIEW_P14-T3_python_support_matrix report | | 2026-02-20 | P14-T4 | Archived Replace_deprecated_setuptools_license_metadata_with_SPDX_format (PASS) | | 2026-02-20 | P14-T4 | Archived REVIEW_P14-T4_spdx_license_metadata report | +| 2026-02-20 | P14-T2 | Archived Align_release_metadata_and_changelog_for_0.4.0 (PASS) | +| 2026-02-20 | P14-T2 | Archived REVIEW_P14-T2_release_metadata_changelog report | diff --git a/SPECS/ARCHIVE/P14-T2_Align_release_metadata_and_changelog_for_0.4.0/P14-T2_Align_release_metadata_and_changelog_for_0.4.0.md b/SPECS/ARCHIVE/P14-T2_Align_release_metadata_and_changelog_for_0.4.0/P14-T2_Align_release_metadata_and_changelog_for_0.4.0.md new file mode 100644 index 00000000..4a11de7f --- /dev/null +++ b/SPECS/ARCHIVE/P14-T2_Align_release_metadata_and_changelog_for_0.4.0/P14-T2_Align_release_metadata_and_changelog_for_0.4.0.md @@ -0,0 +1,79 @@ +# PRD: P14-T2 — Align release metadata and changelog for 0.4.0 + +**Status:** INPROGRESS +**Priority:** P1 +**Phase:** Phase 14 — Release 0.4.0 Readiness +**Dependencies:** P14-T1, P14-T3, P14-T4 + +--- + +## 1. Objective + +Prepare a publishable `0.4.0` release by making package/registry version fields +consistent and documenting delivered functionality since `0.3.2` in +`CHANGELOG.md`. + +--- + +## 2. Problem Summary + +Release metadata is currently out of date: +- `pyproject.toml` still declares `0.3.3` +- `server.json` still declares `0.3.3` (top-level and package entry) +- `CHANGELOG.md` has no `0.4.0` entry summarizing broker and Web UI work + +This blocks clear, auditable release preparation. + +--- + +## 3. Design + +### 3.1 Version metadata alignment + +Update version values to `0.4.0` in: +- `pyproject.toml` (`project.version`) +- `server.json` (`version` and `packages[0].version`) + +### 3.2 Changelog entry for 0.4.0 + +Add a new `0.4.0` section at the top of `CHANGELOG.md` that includes: +- release date +- key broker architecture and reliability changes +- key Web UI/observability improvements +- fixes and compatibility improvements delivered after `0.3.2` +- release link reference for `[0.4.0]` + +### 3.3 Validation + +Run standard quality gates and build validations: +- `ruff check src/` +- `mypy src/` +- `pytest` +- `pytest --cov` (coverage >= 90%) +- `python -m build` + +Record results in `SPECS/INPROGRESS/P14-T2_Validation_Report.md`. + +--- + +## 4. Files To Change + +| File | Change | +|------|--------| +| `pyproject.toml` | Update package version to `0.4.0` | +| `server.json` | Update top-level and package version fields to `0.4.0` | +| `CHANGELOG.md` | Add `0.4.0` release entry and reference link | +| `SPECS/INPROGRESS/P14-T2_Validation_Report.md` | Capture execution evidence and gate outcomes | + +--- + +## 5. Acceptance Criteria + +- [ ] `pyproject.toml`, `server.json`, and `CHANGELOG.md` all reference `0.4.0` consistently. +- [ ] Changelog includes accurate notes for broker and Web UI work shipped since `0.3.2`. +- [ ] Release metadata passes existing build/publish validation checks. +- [ ] Quality gates are executed and documented. + +--- +**Archived:** 2026-02-20 +**Verdict:** PASS diff --git a/SPECS/ARCHIVE/P14-T2_Align_release_metadata_and_changelog_for_0.4.0/P14-T2_Validation_Report.md b/SPECS/ARCHIVE/P14-T2_Align_release_metadata_and_changelog_for_0.4.0/P14-T2_Validation_Report.md new file mode 100644 index 00000000..67ea4294 --- /dev/null +++ b/SPECS/ARCHIVE/P14-T2_Align_release_metadata_and_changelog_for_0.4.0/P14-T2_Validation_Report.md @@ -0,0 +1,60 @@ +# Validation Report: P14-T2 — Align release metadata and changelog for 0.4.0 + +**Date:** 2026-02-20 +**Verdict:** PASS + +--- + +## Acceptance Criteria + +| # | Criterion | Status | +|---|-----------|--------| +| 1 | `pyproject.toml`, `server.json`, and `CHANGELOG.md` all reference `0.4.0` consistently | ✅ PASS | +| 2 | Changelog includes accurate notes for broker and Web UI work shipped since `0.3.2` | ✅ PASS | +| 3 | Release metadata passes existing build/publish validation checks | ✅ PASS | +| 4 | Quality gates are executed and documented | ✅ PASS | + +--- + +## Evidence + +### Version alignment + +`0.4.0` is now present in all release metadata targets: +- `pyproject.toml` → `version = "0.4.0"` +- `server.json` → top-level `version` and `packages[0].version` are `"0.4.0"` +- `CHANGELOG.md` → new `## [0.4.0] - 2026-02-20` section and release reference link + +### Changelog coverage + +The new `0.4.0` entry includes: +- broker architecture and transport reliability highlights +- Web UI observability and analytics enhancements +- key compatibility and correctness fixes delivered after `0.3.2` + +### Build and publish validation + +- `python -m build` → **PASS** (exit 0) +- `pytest tests/unit/test_publish_helper.py` → **PASS** (`17 passed`) + +### Quality gates + +- `ruff check src/` → **PASS** (exit 0) +- `mypy src/` → **PASS** (exit 0) +- `pytest` → **1 failed, 625 passed, 5 skipped** +- `pytest --cov` → **1 failed, 625 passed, 5 skipped; coverage 91.33% (>=90%)** + +Known pre-existing local failure: +- `tests/unit/test_broker_transport.py::TestSocketPermissions::test_socket_created_with_0600_permissions` +- Error: `OSError: AF_UNIX path too long` + +This failure is environment-specific and unrelated to release metadata/changelog changes. + +--- + +## Changed Files + +- `pyproject.toml` +- `server.json` +- `CHANGELOG.md` +- `SPECS/INPROGRESS/P14-T2_Validation_Report.md` diff --git a/SPECS/ARCHIVE/_Historical/REVIEW_P14-T2_release_metadata_changelog.md b/SPECS/ARCHIVE/_Historical/REVIEW_P14-T2_release_metadata_changelog.md new file mode 100644 index 00000000..1f252bf6 --- /dev/null +++ b/SPECS/ARCHIVE/_Historical/REVIEW_P14-T2_release_metadata_changelog.md @@ -0,0 +1,34 @@ +## REVIEW REPORT — P14-T2 Release Metadata and Changelog + +**Scope:** origin/main..HEAD +**Files:** 8 + +### Summary Verdict +- [x] Approve +- [ ] Approve with comments +- [ ] Request changes +- [ ] Block + +### Critical Issues +- None. + +### Secondary Issues +- None. + +### Architectural Notes +- The release metadata update is consistent across package and registry manifests. +- The `0.4.0` changelog section captures the major broker and Web UI workstreams + delivered after `0.3.2` without changing runtime behavior. + +### Tests +- `ruff check src/` passed. +- `mypy src/` passed. +- `python -m build` passed. +- `pytest tests/unit/test_publish_helper.py` passed. +- Full-suite `pytest` and `pytest --cov` show one pre-existing local + environment-specific failure (`AF_UNIX path too long`) unrelated to this task. +- Coverage remains 91.33% (>=90%). + +### Next Steps +- No follow-up tasks required. +- FOLLOW-UP step is skipped because no actionable findings were identified. diff --git a/SPECS/INPROGRESS/next.md b/SPECS/INPROGRESS/next.md index 4223e0be..b64dcbf2 100644 --- a/SPECS/INPROGRESS/next.md +++ b/SPECS/INPROGRESS/next.md @@ -2,9 +2,9 @@ ## Recently Archived +- **P14-T2** — Align release metadata and changelog for 0.4.0 (2026-02-20, PASS) - **P14-T4** — Replace deprecated setuptools license metadata with SPDX format (2026-02-20, PASS) -- **P14-T3** — Reconcile declared Python support with tested matrix (2026-02-20, PASS) ## Suggested Next Tasks -- **P14-T2** — Align release metadata and changelog for 0.4.0 (P1, now unblocked) +- None currently ready. diff --git a/SPECS/Workplan.md b/SPECS/Workplan.md index 243e6ed0..fd2c0938 100644 --- a/SPECS/Workplan.md +++ b/SPECS/Workplan.md @@ -2356,7 +2356,7 @@ Phase 9 Follow-up Backlog --- -#### ⬜️ P14-T2: Align release metadata and changelog for 0.4.0 +#### ✅ P14-T2: Align release metadata and changelog for 0.4.0 — Completed (2026-02-20, PASS) - **Description:** Prepare publishable 0.4.0 release metadata by updating package/registry versions and adding a complete changelog entry matching delivered functionality. - **Priority:** P1 - **Dependencies:** P14-T1, P14-T3, P14-T4 @@ -2365,9 +2365,9 @@ Phase 9 Follow-up Backlog - Updated version fields in `pyproject.toml` and `server.json` - New `0.4.0` entry in `CHANGELOG.md` with release date, key changes, and release link - **Acceptance Criteria:** - - [ ] `pyproject.toml`, `server.json`, and `CHANGELOG.md` all reference `0.4.0` consistently - - [ ] Changelog includes accurate notes for broker and Web UI work shipped since `0.3.2` - - [ ] Release metadata passes existing build/publish validation checks + - [x] `pyproject.toml`, `server.json`, and `CHANGELOG.md` all reference `0.4.0` consistently + - [x] Changelog includes accurate notes for broker and Web UI work shipped since `0.3.2` + - [x] Release metadata passes existing build/publish validation checks --- diff --git a/pyproject.toml b/pyproject.toml index f785271f..ffc3c7da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "mcpbridge-wrapper" -version = "0.3.3" +version = "0.4.0" description = "Python wrapper for xcrun mcpbridge that adds structuredContent to MCP responses" readme = "README.md" requires-python = ">=3.9" diff --git a/server.json b/server.json index 38b208bb..aa6cc7c0 100644 --- a/server.json +++ b/server.json @@ -3,7 +3,7 @@ "name": "io.github.SoundBlaster/xcode-mcpbridge-wrapper", "title": "Xcode: MCP Bridge Wrapper for Cursor", "description": "Python wrapper that makes Xcode's MCP bridge compatible with strict MCP clients like Cursor", - "version": "0.3.3", + "version": "0.4.0", "repository": { "url": "https://github.com/SoundBlaster/XcodeMCPWrapper", "source": "github" @@ -13,7 +13,7 @@ { "registryType": "pypi", "identifier": "mcpbridge-wrapper", - "version": "0.3.3", + "version": "0.4.0", "transport": { "type": "stdio" },