Skip to content

Conversation

@nchapman
Copy link
Collaborator

@nchapman nchapman commented Jan 2, 2026

This PR optimizes GitHub Actions by implementing Docker image caching to avoid redundant builds.

Copilot AI review requested due to automatic review settings January 2, 2026 19:39
Copy link

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 optimizes GitHub Actions by implementing Docker image caching to avoid redundant builds, and adds comprehensive support for Retroid Pocket devices (Pocket 5, Flip 2, Mini V1/V2) running LessOS.

Key Changes:

  • Optimized CI/CD: Docker image caching using GHCR to skip redundant builds when Dockerfile hasn't changed
  • Retroid platform support: Full platform implementation with SDL2 rendering, libudev input discovery, and device variant detection
  • Dynamic input discovery: Introduced shared udev_input module for robust input device enumeration across LessOS platforms

Reviewed changes

Copilot reviewed 68 out of 73 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
.github/workflows/qa.yml Implements Docker image caching strategy with GHCR registry
Makefile.qa Adds docker-pull target to fetch prebuilt images from GHCR
workspace/retroid/* Complete platform implementation for Retroid Pocket devices
workspace/all/common/udev_input.* New shared module for libudev-based input device discovery
workspace/rgb30/platform/* Migrated from hardcoded input paths to libudev
workspace/*/show/show.c Unified SDL_Renderer-based boot splash implementation
workspace/all/paks/Emus/cores.json Added SwanStation PS1 core for ARM64 devices
Various config files Added Retroid-specific scaling configs and platform support
Comments suppressed due to low confidence (9)

workspace/tg5040/show/show.c:1

  • The destination rectangle in SDL_RenderCopyEx appears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
    workspace/rgb30/show/show.c:1
  • The destination rectangle in SDL_RenderCopyEx appears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
    workspace/rg35xxplus/show/show.c:1
  • The destination rectangle in SDL_RenderCopyEx appears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
    workspace/retroid/show/show.c:1
  • The destination rectangle in SDL_RenderCopyEx appears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
    workspace/all/utils/keymon/keymon.c:1
  • Unnecessary blank line after button state update. This blank line creates inconsistent spacing compared to the similar pattern for the L1 button handler immediately below, where no blank line appears after the state update.
    workspace/all/utils/keymon/keymon.c:1
  • Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.
    workspace/all/utils/keymon/keymon.c:1
  • Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.
    workspace/all/utils/keymon/keymon.c:1
  • Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.
    workspace/all/utils/keymon/keymon.c:1
  • Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Avoids rebuilding the dev container on every CI run by:
- Adding docker-build job that hashes Dockerfile and checks GHCR
- Only builds/pushes when the image doesn't exist for that hash
- lint/analyze/test jobs pull the prebuilt image from GHCR

Makefile.qa now pulls from GHCR by default. Use FORCE_DOCKER_BUILD=1
to build locally when iterating on the Dockerfile.
Use matrix strategy to build miyoomini and tg5040 concurrently.
Changed from trimuismart to tg5040 for better code coverage.
@nchapman nchapman force-pushed the feature/optimize-actions branch from c1ec8a0 to 78c9acc Compare January 2, 2026 20:12
Use project's sdl.h wrapper instead of <SDL.h> directly. The wrapper
handles SDL1 vs SDL2 include paths correctly (<SDL2/SDL.h> vs <SDL/SDL.h>).
@nchapman nchapman force-pushed the feature/optimize-actions branch from 78c9acc to 9277838 Compare January 2, 2026 20:16
@nchapman nchapman merged commit 9ce5f48 into develop Jan 2, 2026
6 checks passed
@nchapman nchapman deleted the feature/optimize-actions branch January 2, 2026 20:20
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