Skip to content

Development#38

Merged
pladisdev merged 80 commits intomainfrom
development
Feb 14, 2026
Merged

Development#38
pladisdev merged 80 commits intomainfrom
development

Conversation

@pladisdev
Copy link
Owner

No description provided.

pladisdev and others added 30 commits November 2, 2025 09:42
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
Copilot AI review requested due to automatic review settings February 14, 2026 09:27
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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-tts version in requirements.txt.
  • Modify Twitch bot event_ready behavior (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.

Comment on lines 334 to 342

# 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()]}")

Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
# 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()]}"
)

Copilot uses AI. Check for mistakes.
Comment on lines +664 to +676
# - 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 }}
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
# - 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 }}

Copilot uses AI. Check for mistakes.
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build, linux-build, docker-build]
needs: [build, linux-build]
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
needs: [build, linux-build]
needs: [build, linux-build, docker-build]

Copilot uses AI. Check for mistakes.
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11']
python-version: ['3.10']
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
python-version: ['3.10']
python-version: ['3.9', '3.10', '3.11']

Copilot uses AI. Check for mistakes.
Comment on lines 228 to 232
### v1.3.1 (Latest)
- **New Features:**
- Twitch fix
- Allow random avatar assignment
- More fonts to select from
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
@github-actions
Copy link

✅ Windows Build Successful

Executable: ChatYapper.exe (66.62 MB)
MSI Installer: ChatYapper-1.3.1.msi (65.94 MB)
App Version: 1.3.1
Build ID: build-v1.3.1-2026.02.14-1f81354
Commit: 1f81354

Build Status

  • ✅ Windows executable & MSI installer
  • 🔄 Linux build (check separate job)
  • 🔄 Docker image (check separate job)

Download the artifacts from the workflow run to test before merging.

Once merged to main, an official release will be created automatically with tag v1.3.1.

@github-actions
Copy link

🐳 Docker Image Built Successfully

Image: ghcr.io/pladisdev/chat-yapper:pr-1f81354
Tag: pr-1f81354

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-1f81354

Access at: http://localhost:8069

The Docker image will be published to the GitHub Container Registry when merged to main.

@pladisdev pladisdev merged commit ce9332b into main Feb 14, 2026
6 checks passed
@github-actions
Copy link

✅ Windows Build Successful

Executable: ChatYapper.exe (66.62 MB)
MSI Installer: ChatYapper-1.3.1.msi (65.94 MB)
App Version: 1.3.1
Build ID: build-v1.3.1-2026.02.14-4911f3c
Commit: 4911f3c

Build Status

  • ✅ Windows executable & MSI installer
  • 🔄 Linux build (check separate job)
  • 🔄 Docker image (check separate job)

Download the artifacts from the workflow run to test before merging.

Once merged to main, an official release will be created automatically with tag v1.3.1.

@github-actions
Copy link

🐳 Docker Image Built Successfully

Image: ghcr.io/pladisdev/chat-yapper:pr-4911f3c
Tag: pr-4911f3c

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-4911f3c

Access at: http://localhost:8069

The Docker image will be published to the GitHub Container Registry when merged to main.

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.

2 participants