From 5e9795f81a1e97930b7e3b0d57b442df62503359 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 05:05:25 +0000 Subject: [PATCH 1/2] docs: document base image selection decision Added documentation to architecture.md outlining the tradeoffs of different base images for Wine, and recorded the decision to use Debian Trixie for optimal balance of size, compatibility, and modern Wine version availability. Co-authored-by: mark-e-deyoung <1854350+mark-e-deyoung@users.noreply.github.com> --- .gitignore | 1 + docs/architecture.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/.gitignore b/.gitignore index a3d267c..1ffce94 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ WineBot-codex-starter-files.zip # Artifacts (keep empty dir) /artifacts/* !/artifacts/.gitkeep +venv/ diff --git a/docs/architecture.md b/docs/architecture.md index f3715cb..1cbbb09 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -2,6 +2,21 @@ WineBot runs Windows GUI applications inside a Linux container using Wine, Xvfb, and a lightweight window manager. It exposes an HTTP API for programmatic control. +## Base Image Selection + +Choosing the correct base image is critical for supporting modern versions of Wine while maintaining container best practices. The following options were evaluated: + +* **Ubuntu LTS + WineHQ Repository:** While this provides access to the latest Wine versions, Ubuntu images are larger, and relying on third-party repositories introduces build-time failure risks (e.g., repository downtime or GPG key changes). +* **Alpine Linux:** Offers the smallest possible footprint. However, Alpine uses `musl` libc instead of `glibc`. Wine heavily relies on `glibc`, making Alpine highly incompatible and requiring complex, fragile workarounds. +* **Arch Linux:** Provides native, bleeding-edge packages without external repositories. However, rolling releases lack the stability required for predictable CI/CD pipelines and production container runtimes. +* **Debian Stable + WineHQ / Backports:** Provides a rock-solid base, but backports often lag behind the latest Wine releases, and using WineHQ reintroduces third-party dependency risks. + +**Final Decision:** WineBot uses a **minimal Debian Trixie (Testing) base** (`debian:trixie-slim`) layered with specific requirements. This approach was chosen because it: +1. **Provides Modern Wine:** Access to recent Wine versions directly from native Debian repositories without third-party repos. +2. **Maintains Minimal Size:** The slim variant keeps the base layer small. +3. **Ensures High Compatibility:** Full `glibc` support ensures standard behavior for Wine and Windows applications. +4. **Is Future-Proof:** Using the upcoming stable release prepares the project for the future without major migrations. + ## System Layers 1. **Application Layer (Windows)** From b689d9acee99f6ccfacf837a27b6600ade957f27 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 05:17:01 +0000 Subject: [PATCH 2/2] test: bump playwright e2e image to v1.59.0 Fixes CI failure where playwright python tests expected v1.59.0 but the e2e docker image was stuck on v1.58.0. Co-authored-by: mark-e-deyoung <1854350+mark-e-deyoung@users.noreply.github.com> --- .gitignore | 1 - tests/e2e/Dockerfile | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 1ffce94..a3d267c 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,3 @@ WineBot-codex-starter-files.zip # Artifacts (keep empty dir) /artifacts/* !/artifacts/.gitkeep -venv/ diff --git a/tests/e2e/Dockerfile b/tests/e2e/Dockerfile index 483d53f..f9a70de 100644 --- a/tests/e2e/Dockerfile +++ b/tests/e2e/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/playwright/python:v1.58.0-noble +FROM mcr.microsoft.com/playwright/python:v1.59.0-noble # Set up workspace first to copy requirements WORKDIR /work