Skip to content

release: prepare v8.0.1#91

Merged
gaelic-ghost merged 2 commits into
mainfrom
api/hide-request-purpose-schema
May 9, 2026
Merged

release: prepare v8.0.1#91
gaelic-ghost merged 2 commits into
mainfrom
api/hide-request-purpose-schema

Conversation

@gaelic-ghost
Copy link
Copy Markdown
Owner

@gaelic-ghost gaelic-ghost commented May 9, 2026

Release

  • prepares v8.0.1 from branch api/hide-request-purpose-schema
  • keeps protected main updates behind pull request review and CI
  • release tag v8.0.1 will be created after CI and the review-comment gate pass, so failed or still-discussed release candidates do not get tagged

Review Loop

Before merge and tagging, scripts/repo-maintenance/release.sh watches CI and stops on review comments unless the maintainer has already addressed or resolved them and reruns with --review-comments-addressed.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 9, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b200d811-70c0-4835-8f8f-2a4bf37f03b9

📥 Commits

Reviewing files that changed from the base of the PR and between cb7882f and 8924098.

📒 Files selected for processing (16)
  • .codex-plugin/plugin.json
  • API.md
  • Sources/SpeakSwiftlyServer/Host/ServerModels.swift
  • Sources/SpeakSwiftlyServer/MCP/MCPResources.swift
  • Sources/SpeakSwiftlyServer/MCP/MCPToolCatalog.swift
  • Sources/SpeakSwiftlyServer/MCP/MCPToolSupport.swift
  • Tests/SpeakSwiftlyServerLibraryTests/HTTPWorkflowTests.swift
  • Tests/SpeakSwiftlyServerLibraryTests/HostStateTests.swift
  • Tests/SpeakSwiftlyServerLibraryTests/MCPCatalogListingTests.swift
  • Tests/SpeakSwiftlyServerLibraryTests/MCPCatalogRuntimeTests.swift
  • docs/codex-hooks-tts.md
  • docs/maintainers/source-layout.md
  • docs/maintainers/speakswiftly-api-coverage-matrix.md
  • docs/releases/v8.0.0-release-notes.md
  • hooks/hooks.json
  • skills/speak-swiftly-codex-hooks/SKILL.md

📝 Walkthrough

Walkthrough

This PR refactors speech request context handling by introducing SpeechRequestContextPayload as a decodable intermediary, shifting request purpose ownership from clients to the server (derived from HTTP route or MCP tool), adding optional prefacePolicy for preface control, consolidating MCP tool schemas, and updating all dependent code, tests, and documentation accordingly.

Changes

Request Context Refactoring and Request Purpose Ownership

Layer / File(s) Summary
Request Context Payload Type
Sources/SpeakSwiftlyServer/Host/ServerModels.swift
Introduces SpeechRequestContextPayload as a Decodable struct with optional source, topic, cwd, repoRoot, attributes, and prefacePolicy fields; decodes repo_root with fallback to camelCase key.
Request Context Factory and Payload Models
Sources/SpeakSwiftlyServer/Host/ServerModels.swift, Sources/SpeakSwiftlyServer/MCP/MCPToolSupport.swift
Updates makeSpeechRequestContext to accept SpeechRequestContextPayload? instead of SpeakSwiftly.RequestContext?; refactors SpeakRequestPayload and BatchItemRequestPayload to use the new payload type; preserves merging logic with defaults.
MCP Tool Schemas and Catalog
Sources/SpeakSwiftlyServer/MCP/MCPToolCatalog.swift
Refactors generate_speech, generate_audio_file, and generate_batch tool definitions to reference shared requestContextInputSchema and batchItemInputSchema constants; clarifies that prefacePolicy is optional and reqPurpose is not sent by clients.
MCP Resources Documentation
Sources/SpeakSwiftlyServer/MCP/MCPResources.swift
Updates voiceProfilesGuideMarkdown() to document that request purpose and provenance are filled by default, and that request_context may include source, topic, cwd, repo_root, attributes, plus optional prefacePolicy.
HTTP Integration Tests
Tests/SpeakSwiftlyServerLibraryTests/HTTPWorkflowTests.swift
Updates HTTP /speech/live test to send request_context with prefacePolicy: "never" and without reqPurpose; asserts enqueued context includes prefacePolicy: .never.
Unit Tests for Request Context Handling
Tests/SpeakSwiftlyServerLibraryTests/HostStateTests.swift, Tests/SpeakSwiftlyServerLibraryTests/MCPCatalogListingTests.swift, Tests/SpeakSwiftlyServerLibraryTests/MCPCatalogRuntimeTests.swift
Verifies server enforces reqPurpose: .speech while preserving caller-supplied preface policy; asserts absence of reqPurpose in request_context schema and presence of prefacePolicy enum; matches runtime payloads to new structure.
Version and Configuration Updates
.codex-plugin/plugin.json, hooks/hooks.json
Bumps plugin version from 7.0.0 to 8.0.1; updates SpeakSwiftly dependency from 8.0.0 to 9.0.0; updates hook command paths to reference version 8.0.1.
API Reference and Release Documentation
API.md, docs/releases/v8.0.0-release-notes.md, docs/codex-hooks-tts.md, docs/maintainers/source-layout.md, docs/maintainers/speakswiftly-api-coverage-matrix.md, skills/speak-swiftly-codex-hooks/SKILL.md
Updates API reference to clarify server-derived request purpose and prefacePolicy behavior; updates release notes to document ownership shift and migration guidance; updates maintainer and coverage docs for new structure; updates version references to 8.0.1.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • gaelic-ghost/SpeakSwiftlyServer#90: Both PRs modify the same speech request-context handling (request purpose/prefacePolicy) and related server/MCP/HTTP code and tests.

Poem

🐰 A new payload type hops into place,
Request purpose claimed by the server's grace,
Preface policy now caller can control,
Schemas consolidated, schemas made whole!
From seven to eight, the version takes flight,
Context refactored—everything's right!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'release: prepare v8.0.1' clearly and specifically describes the primary purpose of the pull request: preparing the v8.0.1 release by updating version numbers and related configurations.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch api/hide-request-purpose-schema

Comment @coderabbitai help to get the list of available commands and usage tips.

@gaelic-ghost gaelic-ghost merged commit 9213efc into main May 9, 2026
2 checks passed
@gaelic-ghost gaelic-ghost deleted the api/hide-request-purpose-schema branch May 9, 2026 16:05
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