# GitHub Actions Workflows This directory contains the GitHub Actions workflows for the MangoWC project. ## Workflows ### build.yml **Purpose**: Builds the project to ensure code changes compile successfully. **Triggers**: - Push to `main` or `master` branch (only when code files change) - Pull requests to `main` or `master` branch (only when code files change) - Manual dispatch (workflow_dispatch) **Path filters** (only runs when these change): - Source files: `**.c`, `**.h`, `**.cpp`, `**.scm` - Build files: `meson.build`, `meson_options.txt`, `flake.nix` - Protocol definitions: `protocols/**` - Workflow file itself: `.github/workflows/build.yml` **What it does**: 1. Installs system dependencies (libinput, libdrm, etc.) 2. Installs wayland (tries apt first, builds 1.23.1 from source if needed) 3. Installs wlroots (tries apt first, builds 0.19 from source if needed) 4. Builds scenefx 0.4.1 from source (not available in apt) 5. Configures the project with meson 6. Builds the project with ninja 7. Verifies the executables were created **Install Strategy**: - Prefers apt packages when available and version requirements are met - Falls back to building from source only when necessary - wayland: requires >= 1.23.1 (Ubuntu apt has 1.22, builds from source) - wlroots: requires >= 0.19.0 (checks apt version, builds from source if too old) - scenefx: not in apt repositories (always builds from source) **Dependencies**: - Ubuntu latest runner - Meson build system - Ninja build tool - Wayland >= 1.23.1 - wlroots >= 0.19.0 - scenefx 0.4.1 ### docs.yml **Purpose**: Validates markdown documentation for style and formatting consistency. **Triggers**: - Push to `main` or `master` branch (only when markdown files change) - Pull requests to `main` or `master` branch (only when markdown files change) - Manual dispatch (workflow_dispatch) **Path filters** (only runs when these change): - Markdown files: `**.md` - Workflow file itself: `.github/workflows/docs.yml` **What it does**: - Lints all markdown files using markdownlint-cli2 - Checks for common markdown formatting issues - Ensures documentation follows consistent style guidelines ### lock.yml **Purpose**: Automatically locks inactive issues and PRs to keep the repository clean. **Triggers**: - Scheduled daily at 12:30 UTC - Manual dispatch **What it does**: - Locks issues, PRs, and discussions that have been closed for 30 days - Adds a comment explaining why the thread was locked ### stale.yml **Purpose**: Automatically closes issues that have been manually marked as stale. **Triggers**: - Scheduled daily at 12:30 UTC **What it does**: - Closes issues marked with the "stale" label after 7 days of inactivity - Adds "automatic-closing" label when closing - Does not automatically mark issues as stale (only processes manually marked ones) ## Development Notes The build workflow ensures that: - Only runs when actual code or build configuration changes - All dependencies are properly installed - The project compiles without errors - Both main executables (`mango` and `mmsg`) are built successfully The docs workflow ensures that: - Only runs when markdown documentation changes - Documentation follows consistent formatting - Markdown files are well-formed and free of common issues If the build workflow fails, check: 1. Dependencies are up to date in the workflow file 2. wlroots and scenefx versions match requirements in meson.build 3. Build configuration in meson.build hasn't changed