Commit Graph
80 Commits
Author SHA1 Message Date
Alex d2493906df ci(freebsd): install bzip2 so freetype2's pkg-config resolves
The FreeBSD build broke on 'Package bzip2, required by freetype2, not found':
freetype2.pc lists bzip2 as a (private) requirement, but no bzip2.pc was
installed, so pkg-config could not generate cflags for gtkmm-3.0. Add bzip2
to the package list.
2026-07-05 10:43:57 +02:00
Alexis Rouillard 3868e06dee Merge pull request #5173 from Alexays/ci/smoke-plus
ci(smoke): sanitizer build + module/interaction/a11y/layout coverage
2026-07-05 10:39:29 +02:00
Alex eb10a511f0 ci(smoke): sanitizer build + module/interaction/a11y/layout coverage
Turn the smoke test into a real runtime safety net. Waybar is now built with
AddressSanitizer and exercised end to end in a headless compositor:

- Tier 0: run everything under ASan; fail on ASan reports and Gtk/GLib
  criticals in the log (lib.sh assert_clean)
- Tier 1: per-module render matrix (modules.sh) — each headless-safe module
  rendered in isolation
- Tier 2: pointer interaction (interact.sh) — inject clicks via sway, assert
  on-click side effect and format-alt toggle; AT-SPI assertions (a11y.sh/.py)
  check module labels semantically instead of by pixels
- Tier 3: layout matrix (positions.sh) — top/bottom/left + HiDPI scale 2;
  second compositor run under labwc

Shared helpers extracted to lib.sh. Adds a workflow_dispatch `bless` input to
regenerate the golden reference in one click. Trigger push only on master to
avoid duplicate PR runs. AT-SPI and labwc steps are continue-on-error.
2026-07-05 10:25:49 +02:00
Alex fc297a7df3 ci: only trigger on push to master to avoid duplicate PR runs
These workflows triggered on both push and pull_request with no branch
filter, so every push to a PR branch ran each workflow twice. Restrict the
push trigger to master; pull_request already covers PR branches.
2026-07-05 10:10:04 +02:00
AlexandClaude Opus 4.8 cf2f120ad7 ci: add headless smoke + screenshot test for the bar
Launch the real Waybar binary inside a headless, software-rendered sway
compositor and verify it actually runs and renders — something the unit
tests and build jobs never do.

- test/smoke/run.sh: boots sway (WLR_BACKENDS=headless, pixman), starts
  waybar, asserts it stays alive with no fatal log, optionally grabs a
  screenshot with grim
- level 1: real modules (clock/cpu/memory/disk) load without crashing
- level 2: deterministic config is screenshotted and checked to be non-blank
- level 3: screenshot compared to test/smoke/reference.png (fuzz 8%,
  800px tolerance); screenshot + diff uploaded as artifacts
- .github/workflows/smoke.yml runs it on push/PR

The reference image must be blessed from a CI artifact (see test/smoke/README.md).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:15:05 +02:00
AlexandClaude Opus 4.8 54db6642ce docs: revamp README and add contributor docs
- README: quick-links bar, compositor-support table, module list grouped by
  theme with links to the wiki, getting-started section, collapsible
  dependency blocks, updated badges (CI, release), and a note that module
  docs live in man/ (auto-synced to the wiki)
- add CONTRIBUTING.md (dev build, code style, docs workflow, PR checklist)
- add issue templates (bug report, feature request) and a PR template

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:06:47 +02:00
AlexandClaude Opus 4.8 5180dec43e ci(wiki): fix STYLE lists rendering as blockquotes
Some pandoc versions (incl. the pinned 3.5) render scdoc bullet lists as a
series of `> ·` blockquotes instead of a Markdown list, which made the STYLE
sections look broken. Post-process the generated Markdown to collapse that
artifact back into real `- item` bullets, independent of the pandoc version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 12:53:20 +02:00
AlexandClaude Opus 4.8 33223d5534 ci(wiki): render option tables, pin pandoc, add visible auto-gen note
Improve the generated wiki pages:
- normalize definition-style option blocks (*name*: / typeof: / default:)
  into scdoc tables, so every module renders options as a clean table like
  the table-style pages (Bluetooth, Network, ... no longer a wall of text)
- drop pandoc's empty leading table-header row so the real header shows
- pin pandoc to 3.5 in CI (the distro 2.x man reader mangled lists into
  blockquotes); matches local output
- prepend a visible "auto-generated from master, do not edit here" note to
  every page (was an invisible HTML comment)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 12:49:30 +02:00
AlexandClaude Opus 4.8 4e76d7339f ci(wiki): auto-insert new module pages into the sidebar
generate.py now keeps _Sidebar.md in sync: any Module:-* page from the
mapping that is not yet linked is inserted alphabetically into the
Modules list. Existing entries (custom labels, nested sub-entries,
hand-written non-module links) are left untouched, so adding a module no
longer requires editing the sidebar by hand.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 03:07:53 +02:00
AlexandClaude Opus 4.8 c76bfc018b ci: auto-sync GitHub wiki module pages from man pages
Add tooling that makes the scdoc man pages the single source of truth and
regenerates the wiki module pages from them:

- .github/wiki/mapping.json: man-page -> wiki-page mapping (aggregation-aware)
- .github/wiki/generate.py: scdoc -> pandoc -> gfm, strips man-only sections,
  concatenates aggregated pages, appends optional extras/<Page>.md
- .github/wiki/extras/: hand-kept appendices (screenshots) with no man equivalent
- .github/workflows/wiki.yml: on push to man/** (or the tooling), regenerate
  and push the wiki; other wiki pages are left untouched

Covers all 65 man pages -> 45 wiki pages (5 new: GPS, Inhibitor, Mango, Menu,
WWAN). Non-module and hand-written wiki pages are never modified.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 03:02:10 +02:00
AlexandClaude Opus 4.8 14cb78b835 ci: install systemd-dev for systemd.pc in build-full job
On Debian sid, `dependency('systemd')` needs systemd.pc, which is shipped by
the `systemd-dev` package, not `libsystemd-dev`. Add it so the forced
-Dsystemd=enabled configure step succeeds.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 02:34:31 +02:00
AlexandClaude Opus 4.8 45276f217e ci: add feature-complete build job to guarantee all modules compile
The linux matrix ran every distro with features in `auto` mode, so any
module whose dependency was missing from the image was silently skipped
and never compiled. Three modules (privacy/pipewire, gps, wwan) were built
by no CI job at all, and several others only on one or two distros.

Add a dedicated `build-full` job (Debian image) that installs the missing
dependencies inline and force-enables every optional feature, turning a
broken include or a missing dep into a hard build error instead of a silent
skip. Drop `debian` from the auto matrix since `build-full` uses the same
image and builds a strict superset.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 02:32:33 +02:00
Austin Horstman 833c40a84b feat(ci): enable concurrency for nix-tests
Don't let multiple tests run, cancel existing for same pr

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-02-06 15:19:04 -06:00
Austin Horstman d95809e11b chore(ci): bump flake lock actions
Multiple releases old, keep up to date.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-02-06 15:16:20 -06:00
Alex 47fb21a2c1 chore: upgrade to clang-format@21 2026-02-04 09:24:14 +01:00
Alex df138e12c4 fix: compat freebsd 2025-06-22 09:55:57 +02:00
Alex 373fd77f7a chore: update cross-platform-actions/action 2025-06-22 09:54:46 +02:00
peelz 0bdea1e46f ci: bump FreeBSD to 14.3 2025-06-22 01:02:53 -04:00
peelz 84bd0d452e ci: run the docker workflow monthly instead of daily
Rebuilding the gentoo docker image daily is most definitely going to
bust through the free CI tier limits.
2025-06-21 16:05:00 -04:00
peelz d4f61ad271 ci: allow manual triggering of docker workflow 2025-06-21 16:05:00 -04:00
Austin Horstman 5ff6b0ad0f .github/workflows: tweak job names
They didn't seem to correspond to the workflow, properly. Making
triggering them locally weird.
2025-04-04 00:04:51 -05:00
Austin Horstman 84162ec604 .github/workflows/clang-format: bump github action 2025-04-04 00:04:51 -05:00
Alexis Rouillard a3ee5f1125 Update clang-format.yml 2025-02-21 09:04:22 +01:00
Austin Horstman e53497bab6 .github/workflows: allow forks to manually run flake lock update 2024-09-28 13:21:55 -05:00
Austin Horstman e394485857 .github/workflows: don't run on forks 2024-09-28 12:55:47 -05:00
Alex 3ade275d10 fix: version 2024-09-13 09:02:23 +02:00
Alex 6417782af6 chore: lint 2024-09-13 08:55:14 +02:00
Alexis Rouillard dcbcf90aef Update freebsd.yml 2024-07-17 22:52:39 +02:00
Alexis Rouillard ed0ed398b7 Update freebsd.yml 2024-07-17 22:46:58 +02:00
Austin Horstman 16ff5ee99b .github/workflows/linux: fail-fast 2024-06-09 13:41:01 -05:00
zjeffer 532a90259b Dont fail docker image builds when another build fails 2024-05-30 20:18:33 +02:00
Austin Horstman 8adb0a5644 .github/workflows: fix meson deprecations 2024-05-28 15:41:10 -05:00
John Titor b6ca3ea4d9 worflows: add update-flake-lock action
automatically updates the nix flake lock file

runs once a month
2024-05-28 13:29:25 +05:30
John Titor 1a9952d0c0 workflows: add nix-test workflow
Checks the flake
Builds and tests the package
2024-05-28 13:29:25 +05:30
Alexis Rouillard af87388eb4 Update docker.yml 2024-05-28 09:13:11 +02:00
zjeffer 49afcdf715 Add GitHub action for nightly Dockerfiles building 2024-05-11 16:16:02 +02:00
Alex fc6d708fb6 chore: disable cland-tidy for now 2024-05-06 10:50:55 +02:00
Jan Beich 79ae530bd2 pipewire: unbreak build on FreeBSD (#3193) 2024-05-02 08:31:40 +02:00
Aleksei Bavshin 55915f95f1 ci: move FreeBSD to ubuntu runners
With the recent runner hardware upgrade[1] and support in the
cross-platform-actions[2] it became possible to use a Linux runner for
this workflow.
Linux-based configuration appears to be faster and stabler than macOS,
so it's now recommended for use.

[1]: https://github.blog/2024-01-17-github-hosted-runners-double-the-power-for-open-source/
[2]: https://github.com/cross-platform-actions/action/releases/tag/v0.23.0
2024-02-28 23:56:10 -08:00
Alexis Rouillard 977c66e7c5 Merge pull request #2948 from alebastr/clang-tidy-fix
ci: fix clang-tidy action
2024-02-21 09:19:20 +01:00
Alex 450a344426 chore: only label issues 2024-02-21 09:19:03 +01:00
Aleksei Bavshin 5fc2b97194 ci: fix clang-tidy action 2024-02-20 17:22:33 -08:00
Alex efb2eb5073 chore: update cpp-linter 2024-02-20 22:24:30 +01:00
Alex e42635197c chore: more labels 2024-02-20 08:35:28 +01:00
Alex b8324be8c4 fix: token 2024-02-20 08:26:14 +01:00
Aleksei Bavshin d59d6e8765 chore: remove duplicate fedora/c++20 job definition 2024-02-19 16:35:56 -08:00
Alex 175852e527 chore: auto label 2024-02-19 23:24:20 +01:00
Alex 41b2d0cb29 chore(workflows): concurrency 2024-02-19 23:09:24 +01:00
Alexis Rouillard 41ebdc3cb6 Merge pull request #2768 from zjeffer/feat/zjeffer/freebsd-bump 2023-12-25 08:31:03 +01:00
zjeffer 13e904c20d Bump cross-platform-action to attempt fixing freebsd runner 2023-12-25 00:26:39 +01:00