Conversation
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pladisdev <127021507+pladisdev@users.noreply.github.com>
Co-authored-by: pladisdev <127021507+pladisdev@users.noreply.github.com>
Co-authored-by: pladisdev <127021507+pladisdev@users.noreply.github.com>
Co-authored-by: pladisdev <127021507+pladisdev@users.noreply.github.com>
Co-authored-by: pladisdev <127021507+pladisdev@users.noreply.github.com>
…4b50-93c4-0e11b13594f4 Clarify error handler ordering is correct - no changes needed
Co-authored-by: pladisdev <127021507+pladisdev@users.noreply.github.com>
Co-authored-by: pladisdev <127021507+pladisdev@users.noreply.github.com>
…47b6-b204-5bf8892748d3 Extract magic numbers to named constants in audio playback code
…4606-8149-97ceaa22873d Use platform.system() instead of sys.platform for OS detection
Extract duplicated hex opacity calculation to utility function
Extract avatar active offset magic number into configurable setting
Fix audio reference cleanup on play() failure in popup mode
Fix race condition in popup avatar lifecycle
…into development
There was a problem hiding this comment.
Pull request overview
This PR updates dependencies and CI/release workflows while adjusting Twitch bot startup behavior and updating the project changelog.
Changes:
- Bump
edge-ttsversion inrequirements.txt. - Modify Twitch bot
event_readybehavior (remove explicit channel join; add connection/method debug logging). - Update CI/release workflows (Python version selection, WiX version, Docker build behavior) and update README changelog.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| requirements.txt | Updates pinned edge-tts version. |
| backend/modules/twitch_listener.py | Changes Twitch bot ready-time behavior and adds debug logging. |
| README.md | Updates changelog to include v1.3.1 and related entries. |
| .github/workflows/tests.yml | Reduces backend test matrix to Python 3.10 only. |
| .github/workflows/build-and-release.yml | Switches build Python version, updates WiX install, and changes Docker/release job wiring. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| # In TwitchIO 3.x, channels from initial_channels should auto-join | ||
| # But we can verify by checking connected channels | ||
| if hasattr(self, 'connected_channels'): | ||
| logger.info(f"Connected channels: {list(self.connected_channels)}") | ||
|
|
||
| # Log available methods for debugging | ||
| logger.debug(f"Bot methods: {[m for m in dir(self) if 'channel' in m.lower() or 'join' in m.lower()]}") | ||
|
|
There was a problem hiding this comment.
event_ready no longer attempts to join self.channel_name. If TwitchIO doesn’t auto-join initial_channels (or if it races), the bot may appear “ready” but never receive messages. Consider conditionally calling join_channels/join when available (and/or verifying the channel is present in connected_channels and joining if missing) instead of only logging debug info.
| # In TwitchIO 3.x, channels from initial_channels should auto-join | |
| # But we can verify by checking connected channels | |
| if hasattr(self, 'connected_channels'): | |
| logger.info(f"Connected channels: {list(self.connected_channels)}") | |
| # Log available methods for debugging | |
| logger.debug(f"Bot methods: {[m for m in dir(self) if 'channel' in m.lower() or 'join' in m.lower()]}") | |
| target = self.channel_name.lstrip("#").lower() if self.channel_name else None | |
| connected_names = set() | |
| # In TwitchIO 3.x, channels from initial_channels should auto-join, | |
| # but we defensively verify and join if needed. | |
| if hasattr(self, "connected_channels"): | |
| try: | |
| connected_names = { | |
| getattr(ch, "name", str(ch)).lstrip("#").lower() | |
| for ch in self.connected_channels | |
| } | |
| except Exception: | |
| connected_names = set() | |
| logger.info(f"Connected channels: {list(self.connected_channels)}") | |
| needs_join = bool(target) and target not in connected_names | |
| if needs_join: | |
| try: | |
| if hasattr(self, "join_channels"): | |
| await self.join_channels([self.channel_name]) | |
| elif hasattr(self, "join"): | |
| await self.join(self.channel_name) | |
| logger.info(f"Ensured join to Twitch channel {self.channel_name}") | |
| except Exception as join_err: | |
| logger.error( | |
| f"Failed to join Twitch channel {self.channel_name}: {join_err}", | |
| exc_info=True, | |
| ) | |
| elif target: | |
| logger.info(f"Already joined Twitch channel {self.channel_name}") | |
| # Log available methods for debugging | |
| logger.debug( | |
| f"Bot methods: {[m for m in dir(self) if 'channel' in m.lower() or 'join' in m.lower()]}" | |
| ) |
| # - name: Build and push Docker image | ||
| # uses: docker/build-push-action@v5 | ||
| # with: | ||
| # context: . | ||
| # file: ./docker/Dockerfile | ||
| # push: true | ||
| # tags: ${{ steps.meta.outputs.tags }} | ||
| # labels: ${{ steps.meta.outputs.labels }} | ||
| # platforms: linux/amd64,linux/arm64 | ||
| # cache-from: type=gha | ||
| # cache-to: type=gha,mode=max | ||
| # build-args: | | ||
| # APP_VERSION=${{ steps.docker_version.outputs.app_version }} |
There was a problem hiding this comment.
The Docker build/push step is commented out, but this job still proceeds as if an image was produced (e.g., later posting a “Docker Image Built Successfully” PR comment). This will create false-positive status output and confuse users. Either re-enable the build/push step, or gate/remove the success comment and any downstream steps that assume an image was built/pushed.
| # - name: Build and push Docker image | |
| # uses: docker/build-push-action@v5 | |
| # with: | |
| # context: . | |
| # file: ./docker/Dockerfile | |
| # push: true | |
| # tags: ${{ steps.meta.outputs.tags }} | |
| # labels: ${{ steps.meta.outputs.labels }} | |
| # platforms: linux/amd64,linux/arm64 | |
| # cache-from: type=gha | |
| # cache-to: type=gha,mode=max | |
| # build-args: | | |
| # APP_VERSION=${{ steps.docker_version.outputs.app_version }} | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| file: ./docker/Dockerfile | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| platforms: linux/amd64,linux/arm64 | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| build-args: | | |
| APP_VERSION=${{ steps.docker_version.outputs.app_version }} |
| name: Create GitHub Release | ||
| runs-on: ubuntu-latest | ||
| needs: [build, linux-build, docker-build] | ||
| needs: [build, linux-build] |
There was a problem hiding this comment.
create-release no longer depends on/downloads Docker artifacts (and the workflow no longer waits on docker-build), but the release body still documents Docker usage and optional Docker release files. This can create releases that reference Docker assets/images that aren’t actually published or attached. Please either restore Docker artifact attachment/image publishing, or update the release notes/body to reflect that Docker deliverables are disabled.
| needs: [build, linux-build] | |
| needs: [build, linux-build, docker-build] |
| strategy: | ||
| matrix: | ||
| python-version: ['3.9', '3.10', '3.11'] | ||
| python-version: ['3.10'] |
There was a problem hiding this comment.
CI now only runs backend tests on Python 3.10. The repo documentation indicates Python 3.9+ support and previously ran 3.9/3.10/3.11 in CI (see backend/tests/README.md). If you still support multiple Python versions, keep the matrix; otherwise, please update the docs/support statement so CI and stated support don’t diverge.
| python-version: ['3.10'] | |
| python-version: ['3.9', '3.10', '3.11'] |
| ### v1.3.1 (Latest) | ||
| - **New Features:** | ||
| - Twitch fix | ||
| - Allow random avatar assignment | ||
| - More fonts to select from |
There was a problem hiding this comment.
Changelog formatting: v1.3.1 is marked “(Latest)”, but v1.3.0 (and older entries below) still say “(Latest)” as well, which is misleading. Also, the v1.3.1 feature bullets are indented such that they render as a nested list. Please make only the newest entry “Latest” and normalize list indentation.
✅ Windows Build SuccessfulExecutable: Build Status
Download the artifacts from the workflow run to test before merging. Once merged to |
🐳 Docker Image Built SuccessfullyImage: Test this PR with Docker:docker pull ghcr.io/pladisdev/chat-yapper:pr-1f81354
docker run -d \
--name chat-yapper-pr \
-p 8069:8008 \
-e TWITCH_CLIENT_ID=your_id \
-e TWITCH_CLIENT_SECRET=your_secret \
ghcr.io/pladisdev/chat-yapper:pr-1f81354Access at: http://localhost:8069 The Docker image will be published to the GitHub Container Registry when merged to |
✅ Windows Build SuccessfulExecutable: Build Status
Download the artifacts from the workflow run to test before merging. Once merged to |
🐳 Docker Image Built SuccessfullyImage: Test this PR with Docker:docker pull ghcr.io/pladisdev/chat-yapper:pr-4911f3c
docker run -d \
--name chat-yapper-pr \
-p 8069:8008 \
-e TWITCH_CLIENT_ID=your_id \
-e TWITCH_CLIENT_SECRET=your_secret \
ghcr.io/pladisdev/chat-yapper:pr-4911f3cAccess at: http://localhost:8069 The Docker image will be published to the GitHub Container Registry when merged to |
No description provided.