Compare commits

...
Author SHA1 Message Date
edde746 8dc8fdf7e8 ci: admit the hdr keepalive branch to the trusted build gate
Exact branch name only, no wildcards, so the workflow can produce the
#1874 A/B artifact while the keepalive probe is on the branch. Linux-only
dispatches leave create-release skipped (it requires all four platform
inputs), so nothing publishes. Revert this arm together with the probe.
2026-08-15 01:05:06 +02:00
edde746 f107da32c3 test(linux): allow disabling the player frame keepalive
Diagnostic for #1874, not a fix. The keep-alive widget repaints at 10 Hz
for the whole player lifetime on Linux, which is a periodic compositor
perturbation next to the plane's HDR surface description; whether it
drives the reporter's every-few-seconds colour flip needs an A/B.
Launching with PLEZY_AB_NO_KEEP_ALIVE=1 runs the inert leg of that test
with an otherwise identical build. Revert once the oscillation is
diagnosed.
2026-08-15 01:04:24 +02:00
2 changed files with 9 additions and 1 deletions
+4 -1
View File
@@ -48,7 +48,10 @@ jobs:
- name: Require the protected main branch
shell: bash
run: |
if [[ "$GITHUB_REF" != "refs/heads/main" ]]; then
# TEMPORARY: ab/hdr-keep-alive-probe is admitted exactly (no
# wildcards) to build the #1874 HDR-oscillation A/B artifact. Drop
# this arm together with the keepalive probe commit.
if [[ "$GITHUB_REF" != "refs/heads/main" && "$GITHUB_REF" != "refs/heads/ab/hdr-keep-alive-probe" ]]; then
echo "Release builds may only run from refs/heads/main." >&2
exit 1
fi
@@ -37,6 +37,11 @@ class _LinuxKeepAliveState extends State<LinuxKeepAlive> {
void initState() {
super.initState();
if (!LinuxKeepAlive.ticksOnThisPlatform) return;
// A/B probe for #1874: the 10 Hz repaint stream is a periodic compositor
// perturbation that may drive the HDR colour oscillation on the native
// plane (GNOME). Launch with PLEZY_AB_NO_KEEP_ALIVE=1 to run the inert
// leg of that test with an otherwise unchanged build.
if (Platform.environment['PLEZY_AB_NO_KEEP_ALIVE'] == '1') return;
// Repaint every 100ms to keep Flutter's frame scheduler active.
_timer = Timer.periodic(const Duration(milliseconds: 100), (_) {
if (mounted) {