Skip to content

SwiftBot 1.22.6: Stuck Voice Recovery Rejoins - #10

Merged
johnwatso merged 1 commit into
mainfrom
codex/announcer-recovery-diagnostics
Aug 17, 2026
Merged

SwiftBot 1.22.6: Stuck Voice Recovery Rejoins#10
johnwatso merged 1 commit into
mainfrom
codex/announcer-recovery-diagnostics

Conversation

@johnwatso

Copy link
Copy Markdown
Owner

Summary

  • Recover queued announcer work when DAVE/media recovery remains paused for 60 seconds.
  • Export detailed redacted announcer, UDP transport, voice-resume, and DAVE/MLS diagnostics, with a SwiftMiner-style preparation sheet.
  • Bump SwiftBot to 1.22.6 (build 2026081718) and add release notes.

Root cause

A recovery that awaited DAVE media readiness kept the announcer paused. The health watchdog excluded all recovering states, so queued messages could remain unspoken indefinitely.

Validation

  • xcodebuild -project SwiftBot.xcodeproj -scheme SwiftBot -configuration Debug build -quiet
  • xcodebuild -project SwiftBot.xcodeproj -scheme SwiftBot -configuration Debug test -only-testing:SwiftBotTests/VoiceRecoveryBackoffTests -quiet
  • Verified the built app reports CFBundleShortVersionString=1.22.6 and CFBundleVersion=2026081718.

The signed Sparkle appcast entry remains ShipHook-managed and is generated after the release artifact is published.

@johnwatso
johnwatso force-pushed the codex/announcer-recovery-diagnostics branch from 5dd8669 to 1ef6602 Compare August 17, 2026 06:07
A focused Announcer reliability update: a voice recovery that gets stuck waiting for secure media now recovers itself, and the next diagnostic report will say exactly where the voice pipeline stopped.

Stuck Voice Recovery Rejoins

- If queued Announcer work remains paused while recovering for 60 seconds, perform the normal clean voice rejoin.
- Keep normally paused and empty Announcers out of the recovery escape hatch.

Voice Diagnostics You Can Use

- Export Announcer health, voice events, audio-frame timing, UDP keepalive history, voice resume, and DAVE/MLS state.
- Show a SwiftMiner-style preparation sheet before the save sheet.
- Keep exported diagnostics redacted.
@johnwatso
johnwatso force-pushed the codex/announcer-recovery-diagnostics branch from 1ef6602 to fed68a0 Compare August 17, 2026 06:07
@johnwatso johnwatso changed the title Release SwiftBot 1.22.6: recover stalled announcer voice SwiftBot 1.22.6: Stuck Voice Recovery Rejoins Aug 17, 2026
@johnwatso
johnwatso marked this pull request as ready for review August 17, 2026 06:08
@johnwatso
johnwatso merged commit 7ff46e4 into main Aug 17, 2026
1 check failed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fed68a0572

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

out += "(none)\n"
} else {
for entry in voiceEntries {
out += "[\(iso.string(from: entry.time))] \(SwiftBotLogRedactor.redact(entry.description))\n"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Redact channel snowflakes from the exported voice log

When the voice log contains entries such as Voice join requested for channel 123456789012345678 (generated by connectVoice), this new export loop writes the snowflake unchanged. SwiftBotLogRedactor only recognizes forms such as channel_id=..., not the natural-language channel ... form used by these entries, so a report attached to a public GitHub issue can disclose Discord IDs despite the release notes describing them as scrubbed. Extend the redaction rule or omit raw IDs from exported voice entries.

Useful? React with 👍 / 👎.

@johnwatso
johnwatso deleted the codex/announcer-recovery-diagnostics branch August 20, 2026 20:56
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