Fixes a real bug in the Slack reporter and closes a couple of security/CI gaps found during a hardening pass. No breaking changes.
Fixed
--output slackcould silently drop the webhook post. It fired on an unstructuredTaskand returned immediately, so with--exit-codeset the process would callexit(1)before the task ever got scheduled.analyzenow awaits the Slack post before returning.ClaudeClassifierswallowed JSON encoding failures and sent an empty request body instead of raising an error, which showed up as a confusing 400 from the Claude API. It now throws a clearparseErrorif the request can't be encoded.- The CLI's
--versionflag was still printing0.1.0, left over from before the v1.0.0 tag. Now prints1.1.0.
Added
- SwiftLint in CI (
.swiftlint.ymltuned to the existing code style,force_unwrappingopted in since this tool parses untrusted xcodebuild/xcresult output and Claude API responses). - CodeQL analysis workflow for Swift.
dependency-review-actiongated on pull requests.- First test coverage for
ClaudeClassifier: well-formed responses, markdown-fenced JSON, non-200 status codes, and malformed response bodies, using a stubbedURLProtocolinstead of hitting the real API.
Docs
- Removed a README link to
docs/architecture.drawio, which was never actually checked into the repo.
17 tests before this release, 22 after. swift build -c release and swift test both pass clean.