release: prepare v7.0.0#89
Conversation
📝 WalkthroughWalkthroughThis PR removes legacy Marvis resident-policy and Qwen resident-model configuration support, eliminates the ChangesLegacy resident-model/policy and source-format removal
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Sources/SpeakSwiftlyServer/Host/ServerModels.swift (1)
312-315:⚠️ Potential issue | 🔴 Critical | ⚡ Quick winRemove trailing comma that converts array to single-element tuple.
The trailing comma on line 314 after the array concatenation creates a single-element tuple
([String],)rather than an array. Tuples do not have a.joined(separator:)method, so this code will fail to compile.🐛 Proposed fix
let supportedFormats = ( TextForSpeech.TextFormat.allCases.map(\.rawValue) - + TextForSpeech.SourceFormat.allCases.map(\.rawValue), - ).joined(separator: ", ") + + TextForSpeech.SourceFormat.allCases.map(\.rawValue) + ).joined(separator: ", ")🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Sources/SpeakSwiftlyServer/Host/ServerModels.swift` around lines 312 - 315, The expression that builds supportedFormats is currently ending with a trailing comma which creates a single-element tuple instead of an array, causing the subsequent .joined(separator:) call to fail; fix this by removing the trailing comma after the concatenation so the result is an Array (keep the concatenation of TextForSpeech.TextFormat.allCases.map(\.rawValue) and TextForSpeech.SourceFormat.allCases.map(\.rawValue) and then call .joined(separator:) on that array), ensuring supportedFormats is a String as intended.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Package.swift`:
- Line 32: Package.swift declares SpeakSwiftly at version "8.0.0" but
Package.resolved records a different revision; update Package.resolved so the
resolved entry for the package with URL
"https://github.com/gaelic-ghost/SpeakSwiftly.git" and the declared
product/version v8.0.0 uses the actual tag commit
075d5d984f38f52cca165dda7ec2351176a6393f (replace the incorrect revision
5d4b54a247fe4327901e35005b7696e7174d5df1) to keep Package.swift and
Package.resolved synchronized and ensure reproducible builds.
---
Outside diff comments:
In `@Sources/SpeakSwiftlyServer/Host/ServerModels.swift`:
- Around line 312-315: The expression that builds supportedFormats is currently
ending with a trailing comma which creates a single-element tuple instead of an
array, causing the subsequent .joined(separator:) call to fail; fix this by
removing the trailing comma after the concatenation so the result is an Array
(keep the concatenation of TextForSpeech.TextFormat.allCases.map(\.rawValue) and
TextForSpeech.SourceFormat.allCases.map(\.rawValue) and then call
.joined(separator:) on that array), ensuring supportedFormats is a String as
intended.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 4eeb90be-b902-4e17-9aec-976784922f91
📒 Files selected for processing (44)
.codex-plugin/plugin.jsonAPI.mdPackage.resolvedPackage.swiftSources/SpeakSwiftlyServer/Config/RuntimeStartupConfiguration.swiftSources/SpeakSwiftlyServer/Config/RuntimeStartupConfigurationStore.swiftSources/SpeakSwiftlyServer/Config/ServerConfigPersistence.swiftSources/SpeakSwiftlyServer/EmbeddedServerSession.swiftSources/SpeakSwiftlyServer/HTTP/HTTPRuntimeRoutes.swiftSources/SpeakSwiftlyServer/HTTP/HTTPSpeechRoutes.swiftSources/SpeakSwiftlyServer/Host/EmbeddedServer.swiftSources/SpeakSwiftlyServer/Host/EmbeddedServerSnapshots.swiftSources/SpeakSwiftlyServer/Host/ServerHost+EventMapping.swiftSources/SpeakSwiftlyServer/Host/ServerHost+Profiles.swiftSources/SpeakSwiftlyServer/Host/ServerHost+RequestEvents.swiftSources/SpeakSwiftlyServer/Host/ServerHost+Requests.swiftSources/SpeakSwiftlyServer/Host/ServerHost+RuntimeControls.swiftSources/SpeakSwiftlyServer/Host/ServerHost.swiftSources/SpeakSwiftlyServer/Host/ServerHostEvents.swiftSources/SpeakSwiftlyServer/Host/ServerModels.swiftSources/SpeakSwiftlyServer/Host/SpeakSwiftlyRuntimeAdapter.swiftSources/SpeakSwiftlyServer/Host/SpeakSwiftlyRuntimeServing.swiftSources/SpeakSwiftlyServer/MCP/MCPPrompts.swiftSources/SpeakSwiftlyServer/MCP/MCPResources.swiftSources/SpeakSwiftlyServer/MCP/MCPToolCatalog.swiftSources/SpeakSwiftlyServer/MCP/MCPToolHandlers.swiftSources/SpeakSwiftlyServer/MCP/MCPToolSupport.swiftSources/SpeakSwiftlyServer/Resources/default-server.yamlTests/SpeakSwiftlyServerLibraryTests/ConfigTests.swiftTests/SpeakSwiftlyServerLibraryTests/HTTPWorkflowTests.swiftTests/SpeakSwiftlyServerLibraryTests/HostStateTests.swiftTests/SpeakSwiftlyServerLibraryTests/MCPCatalogListingTests.swiftTests/SpeakSwiftlyServerLibraryTests/MCPCatalogResourceTests.swiftTests/SpeakSwiftlyServerLibraryTests/MCPCatalogRuntimeTests.swiftTests/SpeakSwiftlyServerLibraryTests/MCPValidationTests.swiftTests/SpeakSwiftlyServerLibraryTests/MockRuntime+SpeechGeneration.swiftTests/SpeakSwiftlyServerLibraryTests/MockRuntime.swiftTests/SpeakSwiftlyServerLibraryTests/SpeakSwiftlyServerHostTestSupport.swiftdocs/codex-hooks-tts.mddocs/maintainers/source-layout.mddocs/maintainers/speakswiftly-api-coverage-matrix.mdhooks/hooks.jsonskills/speak-swiftly-codex-hooks/SKILL.mdskills/speak-swiftly-voice-workflows/SKILL.md
💤 Files with no reviewable changes (17)
- Sources/SpeakSwiftlyServer/Resources/default-server.yaml
- Sources/SpeakSwiftlyServer/Host/ServerHost+Requests.swift
- Sources/SpeakSwiftlyServer/Host/ServerHost+EventMapping.swift
- Tests/SpeakSwiftlyServerLibraryTests/MockRuntime.swift
- Sources/SpeakSwiftlyServer/Host/SpeakSwiftlyRuntimeAdapter.swift
- Tests/SpeakSwiftlyServerLibraryTests/MCPValidationTests.swift
- Sources/SpeakSwiftlyServer/HTTP/HTTPRuntimeRoutes.swift
- Sources/SpeakSwiftlyServer/Host/ServerHost+RequestEvents.swift
- Sources/SpeakSwiftlyServer/Host/EmbeddedServerSnapshots.swift
- Sources/SpeakSwiftlyServer/MCP/MCPToolSupport.swift
- Sources/SpeakSwiftlyServer/Host/ServerHostEvents.swift
- Sources/SpeakSwiftlyServer/Host/ServerHost.swift
- Sources/SpeakSwiftlyServer/Host/ServerHost+Profiles.swift
- Tests/SpeakSwiftlyServerLibraryTests/SpeakSwiftlyServerHostTestSupport.swift
- Sources/SpeakSwiftlyServer/Host/ServerHost+RuntimeControls.swift
- Sources/SpeakSwiftlyServer/Config/ServerConfigPersistence.swift
- Sources/SpeakSwiftlyServer/Host/SpeakSwiftlyRuntimeServing.swift
| .package(url: "https://github.com/hummingbird-project/hummingbird.git", from: "2.21.1"), | ||
| .package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.1.0"), | ||
| .package(url: "https://github.com/gaelic-ghost/SpeakSwiftly.git", from: "7.2.7"), | ||
| .package(url: "https://github.com/gaelic-ghost/SpeakSwiftly.git", from: "8.0.0"), |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Verify SpeakSwiftly 8.0.0 tag exists on GitHub
# Check if tag v8.0.0 exists
gh api repos/gaelic-ghost/SpeakSwiftly/git/refs/tags/v8.0.0 --jq '.object.sha' 2>/dev/null || echo "Tag not found"
# Cross-check with the revision in Package.resolved
echo "Expected revision from Package.resolved: 5d4b54a247fe4327901e35005b7696e7174d5df1"Repository: gaelic-ghost/SpeakSwiftlyServer
Length of output: 198
Package.swift and Package.resolved are out of sync for SpeakSwiftly 8.0.0.
The tag v8.0.0 exists on the upstream repository but points to commit 075d5d984f38f52cca165dda7ec2351176a6393f, while Package.resolved specifies revision 5d4b54a247fe4327901e35005b7696e7174d5df1. Per the coding guidelines, package graph changes in Package.swift must be kept synchronized with Package.resolved to ensure reproducible builds. Update Package.resolved to match the actual commit of the v8.0.0 tag.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@Package.swift` at line 32, Package.swift declares SpeakSwiftly at version
"8.0.0" but Package.resolved records a different revision; update
Package.resolved so the resolved entry for the package with URL
"https://github.com/gaelic-ghost/SpeakSwiftly.git" and the declared
product/version v8.0.0 uses the actual tag commit
075d5d984f38f52cca165dda7ec2351176a6393f (replace the incorrect revision
5d4b54a247fe4327901e35005b7696e7174d5df1) to keep Package.swift and
Package.resolved synchronized and ensure reproducible builds.
|
Addressed the normalization-format tuple concern in 30f3f0c and verified it with the focused Swift test plus diff whitespace check. The Package.resolved revision is already correct for SwiftPM: GitHub reports v8.0.0 as annotated tag object 075d5d984f38f52cca165dda7ec2351176a6393f and peeled commit 5d4b54a247fe4327901e35005b7696e7174d5df1, which is the revision recorded in Package.resolved. |
|
Correction: I restored the trailing comma in 5054fb6 because SwiftFormat requires it and the expression compiles; the concern is not valid for this Swift toolchain. Verified with a focused Swift test and . |
Release
docs/qwen-voice-design-guidancemainupdates behind pull request review and CIv7.0.0will be created after CI and the review-comment gate pass, so failed or still-discussed release candidates do not get taggedReview Loop
Before merge and tagging,
scripts/repo-maintenance/release.shwatches CI and stops on review comments unless the maintainer has already addressed or resolved them and reruns with--review-comments-addressed.