Skip to content

v3.1.0#52

Merged
GJFR merged 57 commits intomainfrom
beta
May 7, 2026
Merged

v3.1.0#52
GJFR merged 57 commits intomainfrom
beta

Conversation

@GJFR
Copy link
Copy Markdown
Member

@GJFR GJFR commented May 7, 2026

Key Changes

Features:

  • Added the lab environment, where PoCs can be fine-tuned more easily.
  • Servo Integration: Added the Servo browser as a new evaluation subject, including support for tar.gz release binaries.
  • Built-in Examples: Added a collection of example PoCs (e.g., csp-image-src) to the subject/ directory for immediate use.
  • UI Improvements:
    • Added Dark Mode support to the Gantt chart (upgraded Bokeh to 3.8.2).
    • Enhanced the version range slider to handle complex subject versioning.
    • Added the ability to delete individual experiment results directly from the UI.
  • Performance: Pre-warms the subject availability cache at startup to speed up the initial UI load.

Architecture & Refactoring

  • Version Logic: Introduced a centralized Version class and overhauled the StateFactory to provide consistent version parsing across all browser types.
  • Modern Configuration: Replaced manual environment parsing with Pydantic Settings.

Build & Infrastructure

  • Docker Overhaul: Redesigned Dockerfiles to use multi-stage builds and a centralized python-app stage, reducing image sizes and build times.
  • Dependency Management: Migrated to uv and pyproject.toml for faster, pinned dependency resolution.

Quality & CI/CD

  • Modern Linting & Typing: Switched from flake8 to ruff and introduced ty for rigorous static type checking.
  • Testing: Migrated the entire test suite from unittest to pytest, improving test readability and execution speed.
  • CI Workflows: Enhanced GitHub Actions with Docker layer caching, automated coverage/type-check badges, and stricter build gates.

Documentation

  • Wiki Migration: Migrated the external GitHub wiki into the docs/ folder, adding a comprehensive Tutorial (docs/TUTORIAL.md) and Configuration Guide (docs/CONFIGURATION.md).
  • Updated README: Refreshed installation instructions to reflect the new ./scripts/deploy.sh workflow.

GJFR added 30 commits February 4, 2026 13:18
is selected

This works for V8, but still needs tweaking for browsers. Now, the
latest major version is not adequately updated. Likely because of a bug
in the bughog-service API.
Also return 'min_commit' and 'max_commit' to web UI.
- Rename Playground.vue to Lab.vue and update all routing/references to '/lab'
- Sync dark mode toggle with global state and fix dark mode visibility for buttons
- Enhance experiment list in Home.vue with selection counts and hover actions (Edit, Lab)
- Improve experiment selection logic to correctly sync "Select All" state
- Fix subject state selector to handle null inputs and out-of-range increments
- Stabilize Gantt chart dropdown width with truncation
- Wrap Lab page controls in styled panes to match UI consistency
- Set Lab page title to "Bughog - Lab"
- Replace non-functional stop button in ExperimentControls with a disabled "Running experiment..." indicator
- Remove unused stop experiment methods and listeners from Lab view
…rency

- Include `nb_of_running_containers` in server state updates by querying Docker.
- WorkerManager: Replace busy-wait polling with efficient blocking queue calls for container IDs.
- Increase state polling frequency to ensure live container counts during evaluations.
- Upgrade Tailwind CSS v3 -> v4 with @tailwindcss/vite plugin, removing postcss/autoprefixer setup
- Upgrade other npm deps
- Migrate style.css from @apply directives to Tailwind v4 CSS syntax
- Upgrade Python deps
- Minor UI cleanup in evaluation-status.vue
- Add the BUGHOG_EXPERIMENT_TRIES variable
- Apply light/dark theme to Gantt chart based on useDarkMode composable
- Make Gantt chart responsive with sizing_mode stretch_both
- Fix experiment params to accept experiment_to_plot as alias for poc_name
- Bump Bokeh JS from 3.6.1 to 3.8.2 in Dockerfile
…y support

Removes single-container mode in preparation for subject-specific worker images. In dev mode, workers expose port 5678 and mount the bughog source for live debugger attachment.
…ific

Core:
- Auto-detect image tag from running container via Docker API, removing the
  need to manually set BUGHOG_VERSION; falls back to env var if detection fails
- Group evaluations by subject in Main.run() so each subject gets its own
  WorkerManager with the correct image, instead of all sharing the first subject's
- Fix wait_until_all_evaluations_are_done() to use pool queue size instead of
  container count, fixing race conditions
- Move debugpy import inside the DEVELOPMENT guard; only debug a single worker
  when max containers is 1
- Forward subject/project/experiment name in plot_data WebSocket update

Workers:
- Rename image resolution from subject_type to subject_name based lookup
- Add MANAGE_CERTS and MANAGE_XVFB env vars for opt-in boot steps; remove
  Xvfb from core boot (core never needed a display)

Infrastructure:
- Add docker-bake.hcl as single source of truth for all image builds
- Replace scattered CI workflows with unified build-and-push.yml pipeline
- Add deploy.sh, build-deploy.sh, remove-images.sh scripts
- Add CONTRIBUTING_DOCKER.md documenting the build/release pipeline
- Add Dockerfile and build configuration for Servo workers.
- Implement `/versions/` API endpoint and service layer support.
- Refactor ExperimentResult version padding to support metadata suffixes (e.g., git hashes).
- Improve error logging in interaction scripts and fix Servo version parsing.
- Added `bughog/version_control/version.py` with the `Version` class.
- Refactored `ExperimentResult` and `Executable` to use `Version` objects.
- Updated `MongoDB` to handle `Version` serialization and deserialization.
- Added the `packaging` library as a dependency in `pyproject.toml`.
- Added tests for the `Version` class and updated existing tests.
GJFR added 27 commits April 14, 2026 21:53
Rename bughog/util.py into bughog/util/fs.py and bughog/util/http.py for
clearer separation of filesystem and HTTP helpers, update all imports
accordingly, and fix every diagnostic reported by the ty type checker.
- Create bughog user with host UID/GID so volume-mounted files are owned correctly
- Run containers as non-root bughog user instead of root
- Propagate UID/GID/DOCKER_GID args through bake and compose
- Remove uv sync from boot scripts; sync already happens at build time with --frozen
- Replace chown -R with --chown on COPY instructions to avoid duplicating layers
- Add apt-get clean where missing; remove curl/gnupg after use in core stage
- Fetch bokeh JS via ADD in nginx stage, removing the curl install entirely
- Bump uv to 0.11.7, add UV_COMPILE_BYTECODE=1 consistently across image
- Remove custom bughog user and related UID/GID arguments from Dockerfiles, bake, and compose configurations
- Update xlib dependency to python-xlib
- Fix Chromium state oracle bug in commit number retrieval
- Enable development dependencies in worker boot script when in development mode
- Refactor and clean up browser worker Dockerfiles for consistency
- Use `tool.uv.exclude-dependencies` to force the use of `python-xlib` 0.33 instead of the abandoned `python3-xlib` 0.15 required by pyautogui.
- Update `BrowserSimulation` to add logging.
- Update CI workflow to use `uv sync --locked` for stricter dependency validation.
- Detect docker socket path automatically in devcontainer, build, and deploy scripts
- Update docker-compose to use dynamic DOCKER_SOCKET path
- Remove redundant GID exports and obsolete VS Code launch environment variables
- Replace DOCKER_SOCKET environment variable with a project-local symlink ./.docker.sock.
- Update devcontainer, deploy, and build-deploy scripts to automatically detect and link the host's Docker socket (rootless or rootfull).
- Update docker-compose.yml to use the symlink for both core and core_dev services, removing the dependency on .env for socket paths.
- Add .docker.sock to .gitignore.
@GJFR GJFR self-assigned this May 7, 2026
@GJFR GJFR merged commit 0cb9f73 into main May 7, 2026
10 checks passed
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