Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ 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.1] - 2026-03-06

### Fixed

- Broker daemon now sends `notifications/initialized` to the upstream before the `tools/list` probe, completing the MCP handshake and unblocking all subsequent client requests. Previously the probe stalled indefinitely, causing every connected client to time out with 0 tools.

## [0.4.0] - 2026-03-06

### Added
Expand Down
6 changes: 5 additions & 1 deletion SPECS/ARCHIVE/INDEX.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# mcpbridge-wrapper Tasks Archive

**Last Updated:** 2026-03-06 (BUG-T9 archived)
**Last Updated:** 2026-03-06 (P5-T2 archived)

## Archived Tasks

| Task ID | Folder | Archived | Verdict |
|---------|--------|----------|---------|
| P5-T2 | [P5-T2_Release_0.4.1_to_PyPI_and_MCP_Registry/](P5-T2_Release_0.4.1_to_PyPI_and_MCP_Registry/) | 2026-03-06 | PASS |
| BUG-T9 | [BUG-T9_Fix_broker_daemon_not_sending_notifications_initialized_before_tools_list_probe/](BUG-T9_Fix_broker_daemon_not_sending_notifications_initialized_before_tools_list_probe/) | 2026-03-06 | PASS |
| P5-T1 | [P5-T1_release_0.4.0/](P5-T1_release_0.4.0/) | 2026-03-06 | PASS |
| P1-T11 | [P1-T11_Update_test_coverage_badge_in_README_with_actual_numbers/](P1-T11_Update_test_coverage_badge_in_README_with_actual_numbers/) | 2026-03-06 | PASS |
Expand Down Expand Up @@ -244,6 +245,7 @@
| [FOLLOWUP_FU-P6-T10-1_Install_WebUI_Mismatch.md](FU-P6-T10-1_Align_manual_install_script_with_Web_UI_configuration_expectations/FOLLOWUP_FU-P6-T10-1_Install_WebUI_Mismatch.md) | Follow-up report for FU-P6-T10-1 |
| [REVIEW_FU-P8-T1-1_URL_DocC.md](FU-P8-T1-1_Reconcile_P8-T1_URL_Criteria_with_Current_GitHub_Pages_Path_and_Resolve_DocC_Reference_Warnings/REVIEW_FU-P8-T1-1_URL_DocC.md) | Review report for FU-P8-T1-1 |
| [REVIEW_release-0.3.0.md](P9-T3_Release_version_0.3.0_Web_UI_Feature_Release/REVIEW_release-0.3.0.md) | Review report for P9-T3 |
| [REVIEW_release-0.4.1.md](P5-T2_Release_0.4.1_to_PyPI_and_MCP_Registry/REVIEW_release-0.4.1.md) | Review report for P5-T2 |
| [REVIEW_webui-static-assets.md](FU-REBUILD-P10-T1-7_WebUI_Static_Assets/REVIEW_webui-static-assets.md) | Review report for FU-REBUILD-P10-T1-7 |
| [REVIEW_fu_p9_t2_1_uvx_webui_extras.md](FU-P9-T2-1_Fix_uvx_Web_UI_examples_to_include_webui_extras/REVIEW_fu_p9_t2_1_uvx_webui_extras.md) | Review report for FU-P9-T2-1 |
| [REVIEW_BUG-T0_Uptime_Widget.md](BUG-T0_Uptime_Widget_Fix/REVIEW_BUG-T0_Uptime_Widget.md) | Review report for BUG-T0 |
Expand Down Expand Up @@ -325,6 +327,8 @@

| Date | Task ID | Action |
|------|---------|--------|
| 2026-03-06 | P5-T2 | Archived Release_0.4.1_to_PyPI_and_MCP_Registry (PASS) |
| 2026-03-06 | P5-T2 | Archived REVIEW_release-0.4.1 report |
| 2026-03-06 | P1-T11 | Archived REVIEW_P1-T11_readme_coverage_badge report |
| 2026-03-06 | P1-T11 | Archived Update test coverage badge in README.md with actual numbers (PASS) |
| 2026-03-06 | P1-T10 | Archived REVIEW_P1-T10_xcode_first_approval_docs report |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# PRD: P5-T2 — Release 0.4.1 to PyPI and MCP Registry

**Status:** In Progress
**Priority:** P0
**Phase:** Phase 5: Release
**Date:** 2026-03-06

---

## Background

`v0.4.0` was tagged and released on 2026-03-06. After the tag, `BUG-T9` was merged into `main`: the broker daemon was not sending `notifications/initialized` before the `tools/list` probe, causing the upstream MCP handshake to stall and all client requests to time out. This critical bugfix must be shipped as `0.4.1`.

## Scope

Publish `mcpbridge-wrapper 0.4.1` as a patch release containing the BUG-T9 fix. This involves:

1. Bumping version to `0.4.1` in `pyproject.toml` and `server.json` via `publish_helper.py`.
2. Adding a `[0.4.1]` entry to `CHANGELOG.md` documenting the BUG-T9 fix.
3. Running all quality gates to confirm the release commit is clean.
4. Committing and pushing changes on the feature branch.
5. Merging to `main` via PR, then pushing `git tag v0.4.1` to trigger CI/CD.

## Deliverables

| File | Change |
|------|--------|
| `pyproject.toml` | `version = "0.4.1"` |
| `server.json` | `"version": "0.4.1"` in top-level and `packages[0].version` |
| `CHANGELOG.md` | `[0.4.1]` entry under `Fixed` |

## Quality Gates

- `pytest` — all tests pass (≥ 785 passing)
- `ruff check src/` — no lint errors
- `mypy src/` — no type errors
- `pytest --cov` — coverage ≥ 90%

## Acceptance Criteria

- [ ] `pyproject.toml` version is `0.4.1`
- [ ] `server.json` top-level and packages version is `0.4.1`
- [ ] `CHANGELOG.md` has `[0.4.1]` entry with date `2026-03-06` and BUG-T9 fix noted
- [ ] All quality gates pass
- [ ] `git tag v0.4.1` pushed to remote (post-merge, human action)
- [ ] PyPI publish succeeds (CI/CD post-tag)
- [ ] MCP Registry updated (CI/CD post-tag)

---
**Archived:** 2026-03-06
**Verdict:** PASS
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Validation Report: P5-T2 — Release 0.4.1 to PyPI and MCP Registry

**Date:** 2026-03-06
**Verdict:** PASS

---

## Changes Made

| File | Change |
|------|--------|
| `pyproject.toml` | `version = "0.4.1"` |
| `server.json` | `"version": "0.4.1"` (top-level and `packages[0].version`) |
| `CHANGELOG.md` | `[0.4.1] - 2026-03-06` entry added under `### Fixed` |

## Quality Gates

| Gate | Result | Detail |
|------|--------|--------|
| `pytest` | ✅ PASS | 785 passed, 5 skipped |
| `ruff check src/` | ✅ PASS | All checks passed |
| `mypy src/` | ✅ PASS | No issues found in 18 source files |
| `pytest --cov` | ✅ PASS | 90.81% coverage (≥ 90% required) |

## Acceptance Criteria

- [x] `pyproject.toml` version is `0.4.1`
- [x] `server.json` top-level and packages version is `0.4.1`
- [x] `CHANGELOG.md` has `[0.4.1]` entry with date `2026-03-06` and BUG-T9 fix noted
- [x] All quality gates pass
- [ ] `git tag v0.4.1` pushed to remote (post-merge, human action)
- [ ] PyPI publish succeeds (CI/CD post-tag)
- [ ] MCP Registry updated (CI/CD post-tag)

## Notes

`0.4.1` is a patch release containing the BUG-T9 fix (commit `b607410` + `26ede0c` on `main`, merged after the `v0.4.0` tag). The fix ensures the broker daemon sends `notifications/initialized` to the upstream before the `tools/list` probe, completing the MCP handshake correctly.

The remaining three acceptance criteria (tag push, PyPI, MCP Registry) are post-merge human actions that trigger CI/CD automatically.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
## REVIEW REPORT — release-0.4.1

**Scope:** `origin/main..HEAD`
**Files:** 8

### Summary Verdict
- [x] Approve
- [ ] Approve with comments
- [ ] Request changes
- [ ] Block

### Critical Issues

- None.

### Secondary Issues

- None.

### Architectural Notes

- Release metadata is internally consistent across `pyproject.toml`, `server.json`, `CHANGELOG.md`, and the FLOW bookkeeping artifacts.
- The task archive entry, workplan completion state, and `next.md` idle state all agree that `P5-T2` is complete and ready for PR.
- Post-merge release actions remain correctly scoped as human-operated steps instead of being treated as completed local validation work.

### Tests

- Required gates were already executed and recorded in `SPECS/ARCHIVE/P5-T2_Release_0.4.1_to_PyPI_and_MCP_Registry/P5-T2_Validation_Report.md`.
- Recorded results: `pytest` `785 passed, 5 skipped`, `ruff check src/` clean, `mypy src/` clean, `pytest --cov` `90.81%`.
- Coverage remains above the required `90%` threshold.

### Next Steps

- No actionable issues found.
- FOLLOW-UP step is skipped per FLOW rules.
2 changes: 1 addition & 1 deletion SPECS/INPROGRESS/next.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@

## Recently Archived

- **P5-T2** (2026-03-06): Release 0.4.1 to PyPI and MCP Registry — PASS
- **BUG-T9** (2026-03-06): Fix broker daemon not sending notifications/initialized before tools/list probe — PASS
- **P5-T1** (2026-03-06): Release 0.4.0 to PyPI and MCP Registry — PASS
- **P1-T11** (2026-03-06): Update test coverage badge in README.md with actual numbers — PASS
- **P4-T2** (2026-03-06): Cache tools/list in broker and gate client responses on upstream readiness — PASS

## Description

Expand Down
22 changes: 22 additions & 0 deletions SPECS/Workplan.md
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,28 @@ Add new tasks using the canonical template in [TASK_TEMPLATE.md](TASK_TEMPLATE.m

### Phase 5: Release

#### ✅ P5-T2: Release 0.4.1 to PyPI and MCP Registry
- **Status:** ✅ Completed (2026-03-06)
- **Description:** Prepare patch release `v0.4.1` by bumping package metadata, documenting the BUG-T9 fix in `CHANGELOG.md`, validating all quality gates, and archiving the release task for merge. The tag push and registry publication remain post-merge human actions.
- **Priority:** P0
- **Dependencies:** none
- **Parallelizable:** no
- **Outputs/Artifacts:**
- `pyproject.toml` — version bumped to `0.4.1`
- `server.json` — version bumped to `0.4.1`
- `CHANGELOG.md` — `[0.4.1]` entry added with release date `2026-03-06`
- `SPECS/ARCHIVE/P5-T2_Release_0.4.1_to_PyPI_and_MCP_Registry/` — archived PRD + validation report
- (Post-merge, human action) `git tag v0.4.1` push triggers CI/CD PyPI + MCP Registry publish
- **Acceptance Criteria:**
- [x] `pyproject.toml` and `server.json` version fields are `0.4.1`
- [x] `CHANGELOG.md` has a `[0.4.1]` entry with the correct release date
- [ ] `git tag v0.4.1` exists on `main` and is pushed to remote (requires human action post-merge)
- [ ] `pip install mcpbridge-wrapper==0.4.1` succeeds from PyPI (requires human action post-merge)
- [ ] `uvx mcpbridge-wrapper --version` reports `0.4.1` (requires human action post-merge)
- [ ] MCP Registry entry reflects `0.4.1` (auto-triggered by tag push via CI/CD)
- [ ] README version badge displays `v0.4.1` after PyPI publish propagates (auto after tag push)
- [x] All quality gates pass (`pytest`, `ruff`, `mypy`, coverage >= 90%`)

#### ✅ P5-T1: Release 0.4.0 to PyPI and MCP Registry
- **Status:** ✅ Completed (2026-03-06)
- **Description:** Tag `v0.4.0` in git, publish the package to PyPI, and update the MCP Registry entry so users can install the latest release via `pip`, `uvx`, and the MCP Registry. Update the CHANGELOG release date to match the actual tag date, trigger or verify CI/CD publish workflows, and confirm the published artifacts are correct.
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "mcpbridge-wrapper"
version = "0.4.0"
version = "0.4.1"
description = "Python wrapper for xcrun mcpbridge that adds structuredContent to MCP responses"
readme = "README.md"
requires-python = ">=3.9"
Expand Down
4 changes: 2 additions & 2 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.4.0",
"version": "0.4.1",
"repository": {
"url": "https://github.com/SoundBlaster/XcodeMCPWrapper",
"source": "github"
Expand All @@ -13,7 +13,7 @@
{
"registryType": "pypi",
"identifier": "mcpbridge-wrapper",
"version": "0.4.0",
"version": "0.4.1",
"transport": {
"type": "stdio"
},
Expand Down