Skip to content

chore: release v2.6.1#139

Merged
cmeans-claude-dev[bot] merged 1 commit into
mainfrom
release/v2.6.1
May 8, 2026
Merged

chore: release v2.6.1#139
cmeans-claude-dev[bot] merged 1 commit into
mainfrom
release/v2.6.1

Conversation

@cmeans-claude-dev
Copy link
Copy Markdown
Contributor

@cmeans-claude-dev cmeans-claude-dev Bot commented May 8, 2026

Patch release. Single `### Fixed` entry under Unreleased: the SVG clipboard round-trip on Windows + macOS that landed in #138 (closes #136).

What's in this release

Area Change
_windows_read (clipboard.py) New image/svg+xml branch via Clipboard::GetData('image/svg+xml') with [Console]::OutputEncoding = UTF8
_macos_read (clipboard.py) New image/svg+xml branch reading public.svg-image UTI as UTF-8 NSData; _UTI_TO_MIME learns public.svg-image -> image/svg+xml
clipboard_paste auto-dispatch (server.py) Image formats split into raster_formats (returns Image) and svg_formats (returns text in a ```svg fence); raster wins when both are present
Tests 8 new under # SVG round-trip read paths (#136); total 618

Per semver §6, this is a patch bump (Fixed-only). Project precedent: v2.5.1 was also Fixed-only and shipped as patch.

Diff summary

CHANGELOG.md   | 2 ++
pyproject.toml | 2 +-
server.json    | 4 ++--

The standard release-PR triad. Heading rename ## [Unreleased] -> ## [2.6.1] - 2026-05-07 plus a fresh empty ## [Unreleased] section above it.

Test plan

  • CI passes (lint, typecheck, test ×3, integration-x11, codecov, version-sync, validate-server-json).
  • git tag v2.6.1 && git push origin v2.6.1 after merge fires publish.yml.
  • publish-pypi ships mcp-clipboard==2.6.1 to PyPI.
  • publish-registry updates io.github.cmeans/mcp-clipboard to 2.6.1 with isLatest=true (steady-state since v2.5.1 first registered).
  • github-release job (steady-state since v2.6.0 first firing) auto-creates the v2.6.1 GitHub Release page.
  • Spot-check: pip index versions mcp-clipboard ⇒ 2.6.1; gh release view v2.6.1; curl 'https://registry.modelcontextprotocol.io/v0/servers?search=mcp-clipboard' returns 2.6.1.

Local verification on this commit

  • uv run python scripts/sync-server-json.py --check: in sync at 2.6.1.
  • uv run pytest -q: 618 passed, 19 deselected, 5 xfailed.
  • uv run ruff check src tests scripts: clean.
  • uv run ruff format --check src tests scripts: clean.
  • uv run mypy src: clean.
  • uv build --wheel: produces mcp_clipboard-2.6.1-py3-none-any.whl.

Patch release. Single ### Fixed entry from #138: SVG clipboard
round-trip on Windows and macOS (closes #136).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented May 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@cmeans cmeans added the QA Active QA is actively reviewing; Dev should not push changes label May 8, 2026
Copy link
Copy Markdown
Owner

@cmeans cmeans left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QA review — release PR #139 (round 1)

Verdict: Zero findings. Recommending Ready for QA Signoff.

Bump correctness

The Unreleased CHANGELOG content being stamped under this release is a single ### Fixed entry — the SVG clipboard round-trip fix from #138 (closes #136). Per semver §6, "PATCH version when you make backwards-compatible bug fixes". Fixed-only ⇒ patch bump (2.6.0 → 2.6.1) is exactly right.

Project precedent confirms:

Release Bump What landed Convention
v2.5.0 (2026-05-05) minor Added + Changed + Fixed bundle (PRs #120/#121/#122) minor when any Added
v2.5.1 (2026-05-05) patch Fixed-only (registry README token) patch when Fixed-only
v2.6.0 (2026-05-07) minor Added (CLI flags, github-release job) + Changed (README) + Fixed (Windows UTF-8) minor when any Added (after R1 correction in #135)
v2.6.1 (this PR) patch Fixed-only (#138 SVG round-trip) patch when Fixed-only — matches v2.5.1 precedent

Diff scope check

Standard release-PR triad, exactly 5/3 across the three expected files:

File Change
pyproject.toml:7 version = "2.6.0""2.6.1"
server.json:6 (top-level) "version": "2.6.0""2.6.1"
server.json:15 (packages[0].version) "version": "2.6.0""2.6.1"
CHANGELOG.md Inserts ## [2.6.1] - 2026-05-07 heading below empty ## [Unreleased] shell

uv.lock correctly absent from diff (gitignored on this repo per .gitignore:17). No drift outside the release-bump triad.

CHANGELOG content

The ## [2.6.1] section is the SVG-fix Unreleased entry verbatim from #138. Reads end-to-end (root cause → three layered gaps → backend symmetry note for Linux). Critically, the entry does not mention CRLF — which is correct because #138's R4 CRLF cleanup was reverted in R6 (live regression on CD Windows). The release content matches what actually merged.

Verification on 8b804dc

Check Result
pyproject.toml version 2.6.1
server.json top-level + packages[0] both 2.6.1
CHANGELOG.md heading position ## [Unreleased] shell preserved at line 5; ## [2.6.1] - 2026-05-07 at line 7 (Keep a Changelog convention) ✓
uv run pytest -q 618 passed, 19 deselected, 5 xfailed (matches body's claim and unchanged from post-#138 main)
uv run ruff check src tests scripts All checks passed
uv run ruff format --check src tests scripts 11 files already formatted
uv run mypy src clean (4 source files)
uv run python scripts/sync-server-json.py --check in sync at 2.6.1
uv build --wheel dist/mcp_clipboard-2.6.1-py3-none-any.whl builds cleanly
Em-dash sweep on the new ## [2.6.1] section clean (git diff v2.6.0..HEAD -- CHANGELOG.md | grep '^+' | grep '—' returns no matches in the new section)
American-English spelling on the new section clean
CI on 8b804dc 11 actual checks all green (codecov/patch, integration-x11, lint, on-push, qa-approved, test ×3, typecheck, validate-server-json, version-sync); 3 conditional jobs skipping (changelog, on-label, on-unlabel) — normal

Test-plan checkboxes

  • CI passes on this PR — green on 8b804dc. Ticked.
  • git tag v2.6.1 && git push origin v2.6.1 after merge — Dev's job post-merge.
  • publish-pypi ships mcp-clipboard==2.6.1 — gated on tag push. Leaving unticked.
  • publish-registry updates io.github.cmeans/mcp-clipboard to 2.6.1 — gated on tag push. Steady-state since v2.5.1; should be uneventful.
  • github-release auto-creates v2.6.1 GitHub Release — gated on tag push. Steady-state since v2.6.0's first firing.
  • Spot-check via pip index versions, gh release view, registry curl — post-tag-push verification.

Round 1 verdict

Clean release-bump shape. Bump level matches content (Fixed-only → patch). All three release files in lockstep at 2.6.1. CHANGELOG content accurately reflects what actually merged from #138 (the SVG fix only, no CRLF since reverted in R6). CI green, all linters/typechecker green, sync gates green, wheel builds.

This is the simplest release PR in recent history — a single-PR aggregation with a clean revert-aware CHANGELOG. No findings.

Applying Ready for QA Signoff.

@cmeans cmeans added the Ready for QA Signoff QA passed — ready for maintainer final review and merge label May 8, 2026
Copy link
Copy Markdown
Owner

@cmeans cmeans left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@cmeans cmeans added QA Approved Manual QA testing completed and passed and removed Ready for QA Signoff QA passed — ready for maintainer final review and merge labels May 8, 2026
@cmeans-claude-dev cmeans-claude-dev Bot merged commit 1764536 into main May 8, 2026
30 checks passed
@cmeans-claude-dev cmeans-claude-dev Bot deleted the release/v2.6.1 branch May 8, 2026 01:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

QA Approved Manual QA testing completed and passed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SVG clipboard round-trip fails on Windows: clipboard_paste returns 'Clipboard is empty' after clipboard_copy(mime_type=image/svg+xml)

1 participant