Skip to main content

Stegosaurus September 2026

· 137 min read
Project Bluefin
Automation & Factory
Completed work
780
79 planned • 701 opportunistic
Contributors
27
11 first-time contributors

Activity

Completed work across the configured factory portfolio.

Daily merged pull requests

1,200merged pull requests
Source: GitHub GraphQL · September 2026 UTC (2026-09-01 to 2026-09-30)
Show the numbers
Daily merged pull requests data for September 2026 UTC (2026-09-01 to 2026-09-30)
LabelMerged pull requests
2026-09-019
2026-09-0214
2026-09-032
2026-09-0410
2026-09-0539
2026-09-0647
2026-09-0738
2026-09-0835
2026-09-0920
2026-09-1076
2026-09-116
2026-09-1234
2026-09-1333
2026-09-1439
2026-09-156
2026-09-1614
2026-09-1716
2026-09-1839
2026-09-1941
2026-09-2078
2026-09-2122
2026-09-2281
2026-09-23113
2026-09-2448
2026-09-2575
2026-09-2663
2026-09-2750
2026-09-2815
2026-09-2988
2026-09-3049

Merged pull requests by repository

1,200merged pull requests
Source: GitHub GraphQL · September 2026 UTC (2026-09-01 to 2026-09-30)
Show the numbers
Merged pull requests by repository data for September 2026 UTC (2026-09-01 to 2026-09-30)
LabelMerged pull requests
projectbluefin/actions96
projectbluefin/bonedigger7
projectbluefin/common133
projectbluefin/dakota133
projectbluefin/documentation255
projectbluefin/finpilot85
projectbluefin/iso2
projectbluefin/server134
projectbluefin/testsuite77
projectbluefin/utah150
projectbluefin/utah-packages128

Merged pull requests by label

865label assignments
Source: GitHub GraphQL · September 2026 UTC (2026-09-01 to 2026-09-30)
Show the numbers
Merged pull requests by label data for September 2026 UTC (2026-09-01 to 2026-09-30)
LabelLabel assignments
2-discussing5
3-clanker-queue26
3-human-queue26
4-review41
agent/architect19
agent/ci-maintainer4
agent/quality32
agent/scanner41
agent/security4
architecture17
automerge83
blocked4
build10
chore/deps82
dependencies7
flatcar-base6
full-build2
hive/hosted-projectbluefin-knuckle-gjvq82
hold112
javascript7
kde11
lgtm72
needs-human14
pr/needs-review63
quality36
release/blocked1
release/ready4
runner11
security6
size:XS1
tech-debt1
testing35

Stable portfolio

  • projectbluefin/dakota
  • projectbluefin/testsuite
  • projectbluefin/server
  • projectbluefin/actions
  • projectbluefin/bonedigger
  • projectbluefin/aurorafin-shared
  • projectbluefin/common
  • projectbluefin/documentation
  • projectbluefin/branding
  • projectbluefin/iso
  • projectbluefin/finpilot

Experimental portfolio

  • projectbluefin/utah
  • projectbluefin/utah-packages

Delivery

Publishing-lane outcomes, cadence, duration, and release events.

Factory Publishing Lanes

39Passed
4Failed
38mMedian Run

Pending runs: 22

Run History

Publishing-lane cadence

65publish runs
Source: GitHub Actions · September 2026 UTC (2026-09-01 to 2026-09-30)
Show the numbers
Publishing-lane cadence data for September 2026 UTC (2026-09-01 to 2026-09-30)
LabelDakota
2026-09-010
2026-09-020
2026-09-030
2026-09-040
2026-09-050
2026-09-060
2026-09-075
2026-09-0810
2026-09-090
2026-09-100
2026-09-110
2026-09-120
2026-09-130
2026-09-140
2026-09-150
2026-09-160
2026-09-170
2026-09-180
2026-09-190
2026-09-200
2026-09-210
2026-09-220
2026-09-230
2026-09-240
2026-09-2514
2026-09-2610
2026-09-2722
2026-09-282
2026-09-292
2026-09-300

Release events

29release events
Source: GitHub Releases API · September 2026 UTC (2026-09-01 to 2026-09-30)
Show the numbers
Release events data for September 2026 UTC (2026-09-01 to 2026-09-30)
LabelRelease events
2026-09-211
2026-09-181
2026-09-161
2026-09-141
2026-09-091
2026-09-041
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-301
2026-09-291
2026-09-291
2026-09-291
2026-09-291
2026-09-291
2026-09-291
2026-09-281
2026-09-081

Participation

Human and automated contributions with current contributors.

Human and automation activity

1,200pull requests
Source: GitHub GraphQL · September 2026 UTC (2026-09-01 to 2026-09-30)
Show the numbers
Human and automation activity data for September 2026 UTC (2026-09-01 to 2026-09-30)
LabelHumanAutomation
Report period780420

Ecosystem context

Public ecosystem measures labelled with their native source windows.

Countme trendData unavailable: Countme active-system measurement is incomplete.

Homebrew tap additions

4package additions
Source: Homebrew taps · September 2026 UTC (2026-09-01 to 2026-09-30)
Show the numbers
Homebrew tap additions data for September 2026 UTC (2026-09-01 to 2026-09-30)
LabelAdditions
Production tap1
Experimental tap3

Flathub downloads

138,860,924calendar-month downloads
Source: Flathub · 2026-09-01 to 2026-09-30 UTC
Show the numbers
Flathub downloads data for 2026-09-01 to 2026-09-30 UTC
LabelDownloads
2026-09-013847891
2026-09-023704773
2026-09-033346979
2026-09-043546709
2026-09-053606051
2026-09-063971490
2026-09-074269175
2026-09-083641711
2026-09-093430562
2026-09-103964229
2026-09-114223264
2026-09-123427171
2026-09-133209228
2026-09-143253176
2026-09-156879476
2026-09-169581954
2026-09-175635105
2026-09-185799594
2026-09-196441098
2026-09-205626597
2026-09-215122010
2026-09-225022777
2026-09-234330136
2026-09-244717927
2026-09-254303001
2026-09-264377214
2026-09-274183987
2026-09-285367481
2026-09-295826789
2026-09-304203369

Release details remain on the canonical /changelogs surface.

Completed work​

  • fix(ci): report required checks on docs-only PRs by @​Danathar in #1181
  • docs(secrets-policy): record Cloudflare secrets as provisioned by @​clubanderson in #1275
  • feat(wallpaper): ship original looping movie for Hidamari by @​mendezr in #1207
  • refactor: remove produced-but-unconsumed nvidia overlay by @​mendezr in #1263
  • docs(ci-tooling): record Renovate fork processing for the printer forks by @​sramkrishna in #1259
  • docs(release-promotion): record printer testing-to-stable promotion proof by @​kylerankin in #1257
  • feat(brew): update opencode to the v2 formula by @​kronikpillow in #1270
  • docs(ci-pitfalls): correct create-github-app-token owner/repositories scoping by @​castrojo in #1269
  • fix(chairlift): refresh vendored desktop entry and icons to v26.09.0-alpha.2 by @​clubanderson in #1274
  • docs(chairlift): fix broken brew-lifecycle doc reference in config.yml by @​buggtb in #1273
  • fix: align ChairLift config and ship GSettings schemas by @​mendezr in #1265
  • fix(nvidia): pin suspend notifiers so sleep is not vetoed by @​mendezr in #1176
  • fix(brew): comment out kcl, use upstream kpt, remove aurora-wp by @​KiKaraage in #1131
  • feat(wallpaper): add Damask first-run setup hook and non-destructive defaults by @​repires in #1186
  • fix: reconcile inert .github Renovate configuration by @​repires in #1183
  • feat(damask): ship flatpak overrides and background systemd service by @​repires in #1187
  • feat(chairlift): add wallpaper slideshow and video wallpaper brew bundles by @​sramkrishna in #1185
  • ci: run all maintained unit suites in CI by @​arteeh in #1249
  • feat(testing): add a hardware-free eSCL scanner fixture by @​sramkrishna in #1225
  • docs(contributing): add per-repo reviewer coverage map with refresh procedure by @​mendezr in #1248
  • docs: inventory printer and scanner driver projects by @​arteeh in #1221
  • docs: record printer application upstream source baseline by @​buggtb in #1251
  • docs(skills): track PAPPL scanning API upstream status and ownership boundary by @​buggtb in #1218
  • docs(printer-apps): add release-contract evidence matrix by @​buggtb in #1222
  • docs(ci-tooling): correct stale claim about dockerfile manager and COPY --from by @​buggtb in #1255
  • docs(skills): correct renovate versioned-binary tracking wording by @​mendezr in #1250
  • docs: assess native HP PCL app against HPLIP OCI coverage by @​buggtb in #1236
  • docs: evaluate LPrint v1.4.0 as FSDK OCI label-printer appliance by @​kylerankin in #1235
  • docs: correct reusable lifecycle automation ownership (bonedigger, not actions) by @​buggtb in #1227
  • docs(scanner): evaluate scanApp POC and pappl-retrofit scanning feasibility by @​buggtb in #1220
  • docs: evaluate legacy SANE scanning appliance without claiming driverless parity by @​buggtb in #1219
  • docs(contributing): add self-collision preflight draft for intra-lane duplicate PRs by @​sramkrishna in #1201
  • fix(audio): make Bluetooth auto-switch opt-in instead of default by @​mendezr in #1179
  • feat(brew): remove RamaLama from Bluefin AI tools bundle by @​kylerankin in #1204
  • fix: honor NO_COLOR in local override output by @​Danathar in #1190
  • fix: require review for GitHub Actions minor/patch updates by @​Danathar in #1146
  • ci: run the suite-registration drift gate on every PR by @​kylerankin in #1192
  • feat: WSL/container machine equivalent developer environment via Lima by @​repires in #1175
  • fix(systemd): remove local-fs ordering cycle in rechunker-group-fix by @​kylerankin in #1208
  • feat(countme): add dakota-scoped client and systemd units by @​castrojo in #1154
  • feat(bazaar): Sept 2026 curation update, 7 new recs by @​KiKaraage in #1173
  • fix: empty hooks directory made setup services exit 127 by @​kylerankin in #1193
  • ci: block unpinned git checkouts in Containerfile builder stages by @​mendezr in #1178
  • feat: Super+E should open a new Nautilus window on every press by @​repires in #1184
  • chore: update motd + config by @​theMimolet in #1077
  • fix(brew): drop tremor-runtime, removed from Homebrew by @​castrojo in #1206
  • fix(countme): retry Dakota once per UTC week by @​castrojo in #1203
  • fix(chairlift): track rebranded projectbluefin/chairlift release by @​eltorrero in #1121
  • fix(apps): pin and sha256-verify OpenTabletDriver install fetches by @​mendezr in #1198
  • docs(contributing): add agent-lane-throttle.md — demand-side throttle for the hold-gate queue by @​sramkrishna in #1197
  • docs(contributing): add triage-sla.md — 14-day first-response SLA proposal for human-authored issues by @​mendezr in #1195
  • docs(skills): record image-identity ownership decision — docs/skills/image-identity.md by @​sramkrishna in #1191
  • docs: add systemd-homed-by-default decision record by @​eltorrero in #1200
  • docs(bluespeed): mark bluefin-mcp as archived in the specification by @​kylerankin in #1199
  • docs(contributing): add hold-gate PR queue prioritization rubric by @​repires in #1188
  • docs: correct secrets-policy enforcement claim and add credential preflight rule by @​sramkrishna in #1180
  • docs: document downstream label subsets separate from core factory catalog by @​mendezr in #1177
  • docs(skills): widen category enum to include platform and product by @​repires in #1182
  • docs(factory): ban COMMENT-only PR reviews and comment spam by @​castrojo in #1174
  • fix(brew): preserve user-owned preinstall packages by @​Danathar in #1109
  • fix(wireplumber): disable IR sensor on Kingcome hybrid webcam (2b7e:55c0) by @​castrojo in #1119
  • fix(cli): replace atuin and bash-preexec with starship and add tests by @​castrojo in #1113
  • docs(skills): maintainer-driven tool actions and duplicate-cluster resolution by @​castrojo in #970
  • docs: fix grammatical and readability problems README.md by @​xHope-tech in #1017
  • feat(bazaar): modernize curated layout and add Flathub IDE host integration hooks by @​castrojo in #1155
  • fix(bling): ship working ujust completions for bash/zsh/fish by @​KiKaraage in #1129
  • ci(actionlint): allow the ubuntu-26.04 runner labels by @​Danathar in #1151
  • fix: add consistent bootc sudo policy by @​castrojo in #932
  • fix(sec): ship Sigstore trust materials (Fulcio root + Rekor key) by @​hanthor in #933
  • feat: add llmman to ai-tools Brewfile by @​ericcurtin in #1097
  • fix(brew): allow dedicated ChairLift migration by @​ahmedadan in #1100
  • fix(bling): rearm bash-preexec DEBUG trap on each prompt by @​castrojo in #943
  • fix(brew): replace invalid brew tap --trust with brew tap + brew trust by @​castrojo in #941
  • test: isolate UWELCOME_SHOWN in test_motd_integration.bats by @​castrojo in #1088
  • refactor(just): move 00-entry.just to shared with optional imports by @​Siddhj2206 in #1042
  • fix(flatpak): correct metered check in appstream refresh service by @​HuntedRaven7 in #1035
  • fix: restore native recipes without bluefinctl by @​ahmedadan in #1083
  • fix: resolve cask references and expose validation errors by @​ahmedadan in #1084
  • fix(uwelcome): skip greeting for root and dedupe chained shells by @​ahmedadan in #1059
  • fix(pages): dashboard CNAME qa.projectbluefin.io shadowed by redirect by @​kylerankin in #902
  • fix(gate): let non-Bluefin images skip Bluefin-only scenarios, tolerate GNOME 51 display key by @​hanthor in #900
  • fix(smoke): notify sandbox before app-availability early skips by @​hanthor in #899
  • fix(e2e): allow unsafe-mode test extension on GNOME 51 shells by @​hanthor in #898
  • fix(e2e): enable sshd via kernel arg so image presets cannot undo it by @​hanthor in #895
  • fix(bazzite): mark extension 'is enabled' scenarios pending on state=6 regression by @​buggtb in #888
  • refactor: remove unconsumed DEFAULT_SLA and SLA_STRICT from timing helper by @​repires in #882
  • fix(renovate): restrict automerge to immutable-ref housekeeping by @​kylerankin in #886
  • chore(scripts): remove dead parse_results script and tests by @​repires in #884
  • docs(coverage): sync qa-review recount totals with suite-map snapshot by @​repires in #881
  • chore(deps): update github-actions (non-major) by @​castrojo in #879
  • docs(coverage): sync qa-review totals, add installer matrix row, fix flatpak gap by @​castrojo in #880
  • test(smoke): comprehensive AT-SPI, stability, and presence coverage for Dakota GNOME extensions by @​castrojo in #808
  • docs: remove ghost-lab dependencies and gate requirements by @​castrojo in #878
  • chore: remove bluefinctl test coverage by @​castrojo in #822
  • fix(shared): route AT-SPI tree dump through resolve_results_dir by @​kylerankin in #825
  • fix(justfile): route results parsing through e2e_summary.py by @​mendezr in #873
  • docs(software): audit the @future scenarios blocking GNOME 51 re-validation by @​sramkrishna in #877
  • test(smoke): skip @vm_only scenarios in container lanes by @​castrojo in #740
  • test(lifecycle): add settled-deployment barrier and activate bootc pin scenario by @​mrbobbytables in #837
  • [sec-check] fix: declare top-level permissions: {} in e2e.yml by @​Danathar in #813
  • refactor(ssh): Phase 2 — route dx/flatcar/kde-smoke/software/vanilla-gnome onto ssh_config.ssh_argv() by @​mrbobbytables in #790
  • fix(gnome-e2e): source the results summary from scripts/e2e_summary (#797) by @​mendezr in #819
  • docs(gnome): trim duplicate blank line to satisfy 500-line SKILL.md cap by @​Danathar in #869
  • refactor: fold duplicated _first_value into shared ssh_config by @​mrbobbytables in #787
  • docs(ci): make GNOME version string neutral across e2e summary and docs by @​mendezr in #854
  • test(vanilla-gnome): add GNOME 51 reduced-motion and focus-ring gsettings round-trips by @​kylerankin in #851
  • test(common): activate podman user socket scenario and track immutable status blockers by @​mrbobbytables in #852
  • test(smoke): audit GNOME 50 workarounds against GNOME 51, update gnome.md by @​kylerankin in #848
  • fix(ci): unify image-slug grammar across e2e workflow and artifact tags by @​mrbobbytables in #865
  • ci: restore migration-target and extra-tags inputs to e2e.yml by @​kylerankin in #867
  • test(software): re-anchor @future scenarios from closed #176 to #847 by @​mrbobbytables in #849
  • test(vanilla-gnome): GNOME 51 readiness — Shell version canary by @​mrbobbytables in #864
  • docs: align AGENTS.md and contributing/SKILL.md on skill-update gate by @​mrbobbytables in #862
  • test(smoke): suppress session idle-lock in smoke setup to unblock GOA provider-list by @​mrbobbytables in #850
  • test(quality): unit coverage for scripts/generate_skill_index.py by @​mrbobbytables in #788
  • docs(scanner): fix malformed unit-test documentation block by @​mrbobbytables in #785
  • fix(e2e): scope metadata artifacts by image by @​castrojo in #856
  • fix(smoke): ignore Nvidia CDI failures in QEMU by @​castrojo in #855
  • fix(e2e): stabilize Firefox accessibility workflow by @​castrojo in #853
  • fix(e2e): robust toggle-updates probe, storage service lifecycle, and Firefox window lookup by @​castrojo in #792
  • feat(nvidia): NVIDIA sysext skill and driver release tracking by @​dtg01100 in #326
  • ci(build): run boot-test and release-dry-run when kernel-cache is skipped by @​jeefy in #328
  • fix(initrd): verify the per-node Ignition config before applying it by @​kylerankin in #285
  • fix(installer): keep console install failures visible instead of halting by @​dtg01100 in #321
  • feat(nvidia): deliver the driver and toolkit sysexts to nodes by @​jeefy in #319
  • fix(os): ship /etc/protocols and /etc/services (IANA netdb) for NFSv3 by @​jeefy in #317
  • fix(sysupdate): ship the trust keyring in the vendor image by @​arteeh in #312
  • feat(nvidia): container toolkit sysext (CDI) by @​jeefy in #304
  • feat(nvidia): open-kernel-module driver sysext (nvidia-open-595) by @​jeefy in #305
  • fix(kernel-cache): verify the whole tarball before restoring it by @​castrojo in #315
  • ci(build): key-free kernel cache in ghcr.io for release builds by @​castrojo in #314
  • ci(build): validate pull requests, build the image nightly, on main and on demand by @​castrojo in #313
  • feat(installer): carry stick credentials to the installed disk; developer-mode admin user by @​castrojo in #300
  • fix(security): clear group/other write from image paths; repair /etc on existing installs by @​castrojo in #303
  • docs: sync the Booty story with jeefy/booty main by @​jeefy in #298
  • feat(os): NFS client (nfs-utils + rpcbind, client-only) in the base image by @​jeefy in #295
  • fix(installer): quiet vfat exec-bit repart warnings on diskless boot path by @​kylerankin in #283
  • fix(installer): accurate login banner and first-boot password docs by @​castrojo in #297
  • fix(installer): ask for a root password on the installed disk's first boot by @​castrojo in #293
  • ci(build): queue main runs instead of cancelling them; upload installer logs by @​jeefy in #292
  • ci(track-binaries): refresh amd64 and arm64 pins together, with tests by @​jeefy in #288
  • build: drop FSDK os-release from the build sandbox and its patches by @​castrojo in #291
  • fix(installer): no keymap or erase questions, reboot when done by @​castrojo in #290
  • docs: follow-ups deferred from #276 by @​jeefy in #289
  • ci: boot-test the offline USB installer end to end by @​jeefy in #277
  • test: assert parsed properties instead of file text; no silent skips in CI by @​jeefy in #278
  • build: reproducible image assembly, key-set safety, patch docs by @​jeefy in #281
  • build: drop the gnome-build-meta junction by @​jeefy in #280
  • refactor: shared sysext packing recipe, arm64 binary pins, base-image cleanups by @​jeefy in #279
  • ci(release): dry-run the publish path on pull requests; attest provenance and publish an SBOM by @​jeefy in #269
  • ci: boot-test tamper refusal, HTTP boot, Ignition and A/B rollback; skip image builds for docs-only changes by @​jeefy in #270
  • fix(installer): boot offline, allow credential overrides, quiet repart warnings by @​castrojo in #268
  • feat(update): automatic updates with a Kubernetes interlock, a boot health gate and a diskless update signal by @​jeefy in #271
  • feat(initrd): explain diskless boot failures and ignored Ignition kargs by @​jeefy in #273
  • docs: accuracy pass after the FSDK rebase by @​jeefy in #276
  • ci: track patch releases of upstream binaries (Kubernetes, containerd, runc, CNI, k0s, ORAS) by @​jeefy in #272
  • fix(security): ship root locked; provision access per node by @​jeefy in #275
  • feat(installer): offline USB installer image booting into systemd-sysinstall by @​castrojo in #264
  • fix(ci): install ORAS 1.3.4 by URL and checksum by @​castrojo in #266
  • feat!: FSDK-composed OS with a signed, diskless-first boot chain by @​jeefy in #262
  • Remove heading from README.md by @​castrojo in #261
  • docs: add theme-adaptive wordmark to README by @​castrojo in #260
  • feat(installer): opt-in network credentials pull (inst.creds_url / inst.creds_sha256) for PXE installs by @​jeefy in #253
  • fix(ddi): restore the setuid/setgid bits Flatcar ships on sudo, su, passwd, mount, … by @​jeefy in #255
  • fix(installer): actually wait for the network before the DDI download by @​jeefy in #252
  • fix(installer): stage the network DDI in /dev/shm and check free space before decompressing by @​jeefy in #251
  • fix(creds): apply firstboot.* credentials without systemd-firstboot by @​jeefy in #254
  • fix(installer): rewrite the network DDI repart override without sed by @​jeefy in #250
  • fix(installer): bare-metal USB install consolidation, preset ordering, and OVMF boot test by @​castrojo in #243
  • fix(fsdk): disable tests in glib-stage1 bootstrap by @​castrojo in #51
  • docs(arch): scope FSDK hard rule to installer by @​castrojo in #133
  • chore(ci): pin runners to ubuntu-26.04 by @​castrojo in #237
  • fix(kiosk): bridge guest loopback proxy via SSH port forwarding for QEMU by @​mrbobbytables in #202
  • refactor: switch OS payload to Flatcar base, drop displaced FSDK components by @​kylerankin in #132
  • refactor(arch): split release-version into installer and Flatcar axes by @​mrbobbytables in #136
  • fix(flatcar): use flatcar-kernel-container-sha256 in flatcar-usr.bst by @​castrojo in #236
  • feat(flatcar): add flatcar-usr.bst importing Flatcar /usr as the OS payload base by @​mrbobbytables in #140
  • build: os-base option to compare FSDK payload against Flatcar reference by @​kylerankin in #163
  • feat(installer): add opt-in PXE network DDI pull by @​kylerankin in #229
  • test(installer): behavioural contract for the QEMU boot-proof readiness gate by @​Danathar in #219
  • fix(k0s): pin argocd image by digest and upgrade past EOL v2.12.3 by @​kylerankin in #212
  • fix(kiosk): console shows live local cluster state on first boot by @​kylerankin in #214
  • arch: make include/flatcar.yml the single source of truth for Flatcar pins by @​kylerankin in #143
  • feat(creds): extend systemd-creds provisioning to SSH keys, network, firstboot, and TPM2 by @​mrbobbytables in #221
  • revert: remove unapproved appliance identity design (#208) by @​castrojo in #235
  • fix(installer): harden flash-installer with refusal guards, write verification, and GPT backup relocation by @​castrojo in #225
  • chore(renovate): disable the homebrew manager for binary-asset formulae by @​castrojo in #211
  • ci: include scripts/** in unit-tests workflow paths filter by @​mendezr in #234
  • fix(justfile): probe install-vm kiosk readiness from inside the guest (rebased) by @​castrojo in #227
  • fix(installer): hard preflight abort when bluefin-installer-data is absent by @​castrojo in #224
  • fix(boot): resolve QEMU installer boot deadlock and console readiness probe by @​mrbobbytables in #220
  • fix(ci): pin just tool version in CI workflows by @​kylerankin in #190
  • ci: expand unit-tests workflow paths trigger by @​mrbobbytables in #189
  • fix(renovate): match the freedesktop-sdk series the junction actually tracks by @​hanthor in #84
  • ci: land #190, #189 and #84 with the build.yml conflict resolved by @​castrojo in #217
  • fix(ci): move junction ref tracking out of the pull_request path by @​castrojo in #180
  • feat(flatcar): record container runtime parity by @​castrojo in #192
  • feat(arch): produce Flatcar-to-FSDK version parity matrix (#142) by @​mrbobbytables in #184
  • test(build-depends): lock in os-countme curl+jq FSDK paths by @​kylerankin in #122
  • fix(installer): bound root-a partition to guarantee room for var by @​mrbobbytables in #207
  • fix(test): preserve installer-created var partition by @​castrojo in #157
  • ci: update installer evidence workflow pin by @​castrojo in #156
  • fix(ci): support repart on hosted runners by @​castrojo in #152
  • ci: update installer test workflow pin by @​castrojo in #151
  • ci: run installer smoke through shared QEMU workflow by @​castrojo in #149
  • Add kmod component and update depmod path by @​bronson in #146
  • docs: mandate distributed BuildStream builds on ghost cluster by @​castrojo in #121
  • fix(installer): fix kernel module extraction and probe USB storage drivers by @​castrojo in #120
  • fix(e2e): support self-signed TLS certificates in readiness checks by @​castrojo in #118
  • feat(lima): end-to-end Lima VM orchestration and automated browser login by @​castrojo in #117
  • perf(kiosk): set KAGENTI_CONTROLLER_URL="none" in kc-agent gate command by @​mrbobbytables in #114
  • feat(kiosk): forward kubernetes API port 6443 in install-vm by @​castrojo in #107
  • feat(countme): ship the shared bluefin-countme reporter by @​castrojo in #94
  • fix(kubestellar): correct container image tags and names in k0s manifests by @​kylerankin in #103
  • fix(k0s): generate kubeflex postgres password at first boot instead of hardcoding it by @​kylerankin in #102
  • fix(ci): restore dropped k0s sysext copy into dist/release/ by @​castrojo in #93
  • feat(kernel): add Flatcar LTS kernel & ZFS sysext, export PXE release assets by @​castrojo in #92
  • fix(installer): show interactive UI on the local display by @​TB516 in #79
  • fix(k0s): complete first-boot activation and console readiness by @​castrojo in #63
  • fix(build): prepare alpha release validation and sysext cleanup by @​castrojo in #59
  • fix(fsdk): create uninstalled libappstream symlinks in appstream-minimal by @​castrojo in #58
  • fix(build): add SONAME symlinks and LD_LIBRARY_PATH for gdk-pixbuf by @​castrojo in #56
  • fix(fsdk): resolve libgirepository SONAME symlinks in gobject-introspection-base by @​castrojo in #54
  • fix(chunka): pin chunkah's build clock so an unchanged rebuild keeps its digest by @​dtg01100 in #592
  • chore: bump testsuite e2e pin for Utah gate fixes by @​hanthor in #588
  • chore: bump testsuite e2e pin for GNOME 51 + early-skip fixes by @​hanthor in #587
  • chore: bump testsuite e2e pin to include preset-proof sshd enablement by @​hanthor in #584
  • fix(factory-health): dedupe open alerts by author by @​repires in #577
  • fix(factory-health): close recovered alerts so dedupe stops muting pipelines by @​Danathar in #550
  • ci(unit-tests): add missing workflow paths for tested guarded workflows by @​buggtb in #578
  • fix(ci): annotate reusable-thin-caller-gate and drop hardcoded count in test by @​castrojo in #573
  • fix(factory-health): require a minimum sample before alerting by @​Danathar in #560
  • ci(promote-squash): let callers say the promotion PR is merged by a human by @​Danathar in #566
  • fix(factory-health): fail the run when factory alerts are misrouted by @​Danathar in #564
  • fix(workflows): stop PR-controlled CHUNKAH_VERSION reaching shell in vendor-chunka-files by @​sramkrishna in #570
  • fix(release): normalize caller-supplied image reference by @​Siddhj2206 in #524
  • feat(ci): annotate reusable workflows with required token type by @​mrbobbytables in #547
  • ci(unit-tests): cover reusable-renovate-automerge.yml in the paths filter by @​Danathar in #553
  • feat(reusable-build): allow testing-stream builds to opt into rechunking and SBOM by @​mendezr in #557
  • fix(factory-health): bound the run fetch by the window, not a run count by @​Danathar in #551
  • feat(ci): enforce thin-caller gate in consumer repos (issue #546) by @​Danathar in #554
  • fix(ci): mint app token for renovate auto-merge wiring check by @​Danathar in #552
  • docs(skills): add merge-governance and document the empty-commit consumer PR by @​castrojo in #537
  • ci(unit-tests): cover ghcr-cleanup.yml in the paths filter by @​castrojo in #534
  • ci(actionlint): make the required check reachable on PRs and merge groups by @​castrojo in #536
  • fix(setup-runner): support ubuntu-26.04 runners and skip resolute apt source (#541) by @​castrojo in #549
  • ci(unit-tests): cover guarded release workflows in paths filter by @​kylerankin in #532
  • ci: test the Renovate auto-merge merge/outcome step (issue #403) by @​mendezr in #516
  • test(bootc-build): add coverage and drift guards for ghcr-cleanup action by @​mrbobbytables in #511
  • fix(promotion): treat missing E2E as pending by @​castrojo in #527
  • fix(promotion): gate merge status on evidence by @​castrojo in #526
  • fix(release): harden promotion orchestration by @​castrojo in #525
  • fix(promotion): trust only Actions E2E status by @​castrojo in #521
  • fix(promotion): forward E2E status context by @​castrojo in #519
  • fix(promotion): bind E2E evidence to source commit by @​castrojo in #515
  • fix(promotion): gate queue enrollment on verification by @​castrojo in #513
  • refactor(ci): narrow installer artifact contract by @​castrojo in #506
  • fix(ci): upload only QEMU serial logs by @​castrojo in #505
  • fix(ci): stage QEMU failure evidence by @​castrojo in #504
  • fix(ci): grant runner access to KVM device by @​castrojo in #502
  • feat(ci): add server installer QEMU workflow by @​castrojo in #501
  • fix(renovate): target caller repository by @​Siddhj2206 in #460
  • fix(release): normalize OCI registry namespaces by @​Siddhj2206 in #461
  • fix(chunka): create config temp file as root to avoid protected_regular denial by @​Siddhj2206 in #497
  • ci: add scheduled Renovate auto-merge wiring assertion (#403) by @​kylerankin in #498
  • arch: enforce thin-caller size gate (issue #411) by @​mendezr in #472
  • fix(sign-and-publish): mitigate SBOM exceeding GitHub Attestations 16MB limit (fixes #480) by @​mrbobbytables in #484
  • fix(pkg-cadence): open a PR instead of pushing to main by @​kylerankin in #476
  • fix(cadence): pass app credentials to reusable workflow (fixes #425) by @​mrbobbytables in #492
  • chore(ci): narrow MergeRaptor app token permissions to what's needed (fixes #421) by @​mendezr in #478
  • docs(supply-chain): record cosign install trust policy (upstream-pinned single mechanism; refs #464) by @​eltorrero in #491
  • docs(skills): add session-hygiene skill and mandatory gate by @​castrojo in #424
  • docs(skills): capture merge-queue, consumer-CI, and Renovate learnings by @​castrojo in #402
  • docs(skills): bring remaining skill files into canonical skill spec conformance by @​mrbobbytables in #471
  • ci: test the Renovate auto-merge PR-lookup matcher end-to-end by @​kylerankin in #488
  • fix(factory): exclude cancelled/action_required from success rate by @​kylerankin in #495
  • [sec-check] fix: declare top-level permissions: {} in consumer-validation and prune-merged-branches by @​mrbobbytables in #466
  • test(bats): add unit tests for 4 bootc-build composite actions by @​castrojo in #451
  • ci(unit-tests): expand bootc-build path filter to cover all actions by @​castrojo in #452
  • fix(validate-pr): handle spaces in system_files shellcheck paths by @​castrojo in #454
  • fix(chunka): avoid E2BIG by passing inspect JSON via file instead of argv by @​mendezr in #473
  • fix(promote): skip queued promotion branch rebuilds by @​castrojo in #463
  • fix(scan-image): fail-closed when trivy-results.json is missing by @​HuntedRaven7 in #427
  • fix(workflows): add top-level permissions: {} to consumer-validation and prune-merged-branches by @​mrbobbytables in #456
  • fix: add top-level permissions: {} to consumer-validation and prune-merged-branches workflows by @​mrbobbytables in #457
  • fix(ci): pass RESOLVE_OK via env in release-gate verify step by @​mrbobbytables in #458
  • fix(tests): isolate podman-missing bats test from preinstalled runner podman by @​mrbobbytables in #459
  • fix(promote): make reviewer requests optional by @​Siddhj2206 in #455
  • fix(bootc-build): use kernel overlayfs in reusable-build by @​KiKaraage in #443
  • fix(renovate-automerge): await nonterminal check states instead of blocking by @​castrojo in #448
  • docs(ujust): specify console QR codes for reports by @​kylerankin in #44
  • docs: update scope to ujust report framework and remove stale references by @​castrojo in #41
  • chore: remove lifecycle workflow and obsolete files by @​castrojo in #40
  • fix(ci): read MERGERAPTOR_APP_ID from secrets in sync-templates by @​castrojo in #39
  • ci: allow ubuntu-26.04 runner labels in actionlint config by @​castrojo in #38
  • fix(report): require diagnostic Gists by @​castrojo in #36
  • Rename 2026-12-30-brazilian-bluefin.md to 2026-09-30-brazilian-bluefi… by @​castrojo in #1442
  • Publish blog post on Ubuntu's community building by @​castrojo in #1440
  • feat(blog): draft post for How We Built Ubuntu's 65M+ Community by @​castrojo in #1439
  • Add brazilian-bluefins blog post by @​delphicmelody in #1428
  • perf(ci): build locales in parallel shards so build time stays flat by @​castrojo in #1420
  • docs(i18n): translate installation, mission, values, command-line into Czech by @​Danathar in #1423
  • fix(i18n): correct ExtensionManager Flathub link casing across 5 locales by @​castrojo in #1424
  • i18n(de): translate index.md and UI strings for German by @​castrojo in #1421
  • i18n(sv): translate index.md and UI strings for Swedish by @​kylerankin in #1409
  • feat(i18n): translate docs: Indonesian (id) by @​kylerankin in #1413
  • feat(i18n): translate core docs and UI strings into Vietnamese (vi) by @​kylerankin in #1405
  • docs: translate index.md and UI strings to Spanish by @​kylerankin in #1414
  • i18n(uk): translate index.md and UI strings for Ukrainian by @​kylerankin in #1416
  • i18n(ko): translate index.md and UI strings for Korean by @​dtg01100 in #1418
  • docs(analytics): describe the daily projectbluefin-countme ping by @​castrojo in #1355
  • fix: give Utah a real tag series in the update-churn pipeline by @​dtg01100 in #1419
  • docs: add Czech (cs) i18n translations by @​castrojo in #1408
  • i18n(fr): translate index.md and UI strings for French by @​castrojo in #1415
  • perf(ci): cut pages.yml build time — parallel fetch-data, verify job, leaner caches by @​castrojo in #1411
  • i18n(hi): translate index.md and UI strings for Hindi by @​dtg01100 in #1410
  • i18n(tr): translate index.md and UI strings for Turkish by @​dtg01100 in #1407
  • i18n(ar): translate index.md and UI strings for Arabic by @​dtg01100 in #1406
  • docs: translate docs into Chinese (Traditional) (zh-Hant) by @​castrojo in #1401
  • docs: add Chinese (Simplified) zh-Hans docs translation by @​kylerankin in #1404
  • i18n(pl): translate index.md and UI strings for Polish by @​kylerankin in #1402
  • Add download section to Utah documentation by @​castrojo in #1403
  • fix(i18n): close review gaps in translated builds by @​castrojo in #1400
  • docs(skills): add countme reporting diagnosis procedure by @​castrojo in #1354
  • feat(i18n): open 20 locales for PR-based docs translation by @​castrojo in #1379
  • Change header style in blog post by @​castrojo in #1378
  • Update blog on Bluefin development insights by @​castrojo in #1377
  • Add section on project visualization with gource by @​castrojo in #1376
  • Revise Bluefin development visualization blog post by @​castrojo in #1375
  • feat: Bluefin development visualized blog post by @​castrojo in #1374
  • fix(docs): point the Dakota page's Bluefin Classic link at /classic by @​castrojo in #1369
  • fix(driver-versions): order tabs Bluefin, Server, Classic, Utah by @​castrojo in #1368
  • Update Dakota alpha information and add Bluefin Classic note by @​castrojo in #1367
  • Revise Dakota description and alpha status by @​castrojo in #1366
  • Revise Bluefin Classic documentation by @​castrojo in #1365
  • fix(images): name the catalog cards Bluefin and Bluefin Classic by @​castrojo in #1364
  • feat(docs): order the Images catalog Bluefin, Classic, Utah by @​castrojo in #1363
  • feat(docs): order Images sidebar and add the Classic legacy ISOs by @​castrojo in #1362
  • feat(docs): remove Bluefin LTS and GDX from the site by @​castrojo in #1361
  • Rename Dakota to Bluefin and update content by @​castrojo in #1360
  • Revise Utah documentation for alpha status by @​castrojo in #1359
  • Update warning message for legacy ISOs by @​castrojo in #1358
  • Modify sidebar items and remove Donations category by @​castrojo in #1357
  • Update Docusaurus config for Bluefin documentation by @​castrojo in #1356
  • feat(analytics): read the Bluefin card from daily pings too by @​castrojo in #1350
  • feat(analytics): add a Bluefin Utah chart between Bluefin and Bluefin Classic by @​castrojo in #1349
  • docs(ai): replace ramalama with llmman by @​castrojo in #1348
  • refactor(countme): cut /v1 to a daily ping counted per image by @​castrojo in #1347
  • feat(countme): allowlist Bluefin image names and split daily counts per image by @​castrojo in #1346
  • fix(countme): create eos tables in the Worker, drop the migration step by @​castrojo in #1345
  • feat(countme): receive eos-phone-home pings in the canonical Worker by @​castrojo in #1344
  • feat(countme): chart Bluefin stable and testing check-ins by @​castrojo in #1343
  • feat(portal): source PortalNews from local blog index and align unavailable state by @​repires in #1340
  • fix(countme): preserve raw pings outside published Dakota series by @​castrojo in #1342
  • fix(countme): acknowledge Dakota reports after storage by @​castrojo in #1339
  • feat(leaderboards): render Recent Milestones as horizontal scroller below Community Builders by @​castrojo in #1337
  • feat(images): rework catalog for Bluefin Classic at ublue-os, Dakota, and Utah by @​castrojo in #1335
  • feat(leaderboards): add Recent Milestones leaderboard as a ledger of teamwork by @​castrojo in #1336
  • feat(leaderboards): add GNOME seasons and modern standings by @​castrojo in #1333
  • refactor: route remaining hand-rolled GitHub auth sites through shared clients by @​sramkrishna in #1327
  • fix(registry): support REGISTRY_CACHE_HOURS=0 to keep live task data fresh on deploy by @​castrojo in #1332
  • fix(ci): allow manual force refresh on update-hive-cache workflow by @​castrojo in #1331
  • fix(leaderboard): restore freshness and accurate contributor ranking by @​castrojo in #1330
  • fix: typo in contributors name by @​ahmedadan in #1329
  • refactor: route sbom GHCR token reads through shared githubToken by @​mendezr in #1315
  • fix(branding): make the monthly social preview card actually rotate by @​Danathar in #1313
  • docs: record the green-skip signature for a missing BLUEFIN_DISCUSSIONS_TOKEN by @​Danathar in #1299
  • Fix link text for latest Dakota daily snapshot by @​castrojo in #1325
  • Embed YouTube video and update GNOME release note by @​castrojo in #1326
  • fix(blog): use plain anchor for full resolution link in ImageCarousel by @​castrojo in #1323
  • Revise bug reporting link and add lore content by @​castrojo in #1322
  • fix(blog): use group role and aria-current for ImageCarousel thumbnail strip by @​castrojo in #1321
  • feat(blog): add ImageCarousel component and gallery to Dakota Alpha 6 post by @​castrojo in #1320
  • docs(blog): Dakota Alpha 6 release announcement and downloads by @​castrojo in #1319
  • docs(analytics): switch countme opt-out instructions to systemctl disable timer by @​castrojo in #1308
  • fix(countme): scope first-party telemetry tracking exclusively to dakota by @​castrojo in #1307
  • fix/countme dakota exclusive by @​castrojo in #1306
  • fix(countme): label dakota first-party charts as Bluefin by @​castrojo in #1305
  • fix(analytics): focus first-party active systems chart solely on dakota by @​castrojo in #1304
  • fix(countme): map root chart aliases to dakota by @​castrojo in #1303
  • docs(skills): document Bluefin Classic rebadge in cloudflare-workers by @​castrojo in #1302
  • fix(countme): rebadge upstream ublue-os/bluefin chart as Bluefin Classic by @​castrojo in #1301
  • [architect] fix: propagate typecheck and lint exit codes in pages.yml validation step by @​castrojo in #1297
  • [ci] skip open-discussion job when BLUEFIN_DISCUSSIONS_TOKEN is unset by @​castrojo in #1296
  • refactor: converge CJS GitHub fetchers onto the shared request-queue client (#1232) by @​castrojo in #1295
  • fix(blog): restore scrollable viewport constraint to left sidebar by @​castrojo in #1284
  • ci: run the unit-test gate on every PR and run the knowledge-mcp suite by @​Danathar in #1290
  • Revise warning about Dakotaraptor and legacy ISOs by @​castrojo in #1280
  • Add warning for unsupported images in downloads by @​castrojo in #1278
  • ci: add unit test gate for scripts by @​castrojo in #1226
  • Factory: Optimize layout by combining data sections into 2-column rows on desktop by @​mrbobbytables in #1228
  • fix(cards): parse HTML release-feed tables before generating Bluefin cards by @​mrbobbytables in #1213
  • fix(sbom): add Bluefin LTS NVIDIA stream and retire dx/gdx package queries by @​mrbobbytables in #1212
  • [architect] Converge ESM GitHub fetch sites onto lib/gh.js (#1232) by @​kylerankin in #1236
  • fix(countme): count every published image variant under its family by @​castrojo in #1250
  • test: add update artwork seams by @​TB516 in #1238
  • fix(analytics): name the legacy panel for the image it counts by @​castrojo in #1251
  • fix(repos): repair moved GitHub slugs and preserve partial repository-stat cache by @​kylerankin in #1256
  • test: cover safeNum and loadHistory in fetch-hive-history.js by @​kylerankin in #1255
  • [architect] converge hive-live + factory-stats fetchers onto shared lib/gh.js by @​kylerankin in #1257
  • test: cover scripts/lib coverage-gap modules (#905) by @​kylerankin in #1254
  • Add link to wolves.projectbluefin.io and follow-up note by @​castrojo in #1252
  • fix(analytics): make the weekly active systems labels readable by @​castrojo in #1249
  • fix(countme): ink the upstream chart title by @​castrojo in #1248
  • feat(countme): serve the upstream chart in the Bluefin palette by @​castrojo in #1247
  • Revise analytics documentation for Project Bluefin by @​castrojo in #1246
  • feat(analytics): fold game mode into its image and show the upstream series by @​castrojo in #1245
  • fix(analytics): serve weekly active systems from the first-party aggregate by @​castrojo in #1244
  • fix(analytics): remove manufactured copy from the weekly active systems panel by @​castrojo in #1243
  • fix(analytics): stop publishing internal service posture in a panel reason by @​castrojo in #1242
  • fix(analytics): count our own images, and drop the last bar charts by @​castrojo in #1241
  • feat(analytics): put the charts on the Bluefin palette and the real image matrix by @​castrojo in #1240
  • feat(analytics): rebuild the charts around the full image matrix by @​castrojo in #1239
  • feat(portal): add brand iconography, Karl backlog callout, and quotes to Users and Developers scenes by @​castrojo in #1211
  • [quality] test: unit coverage for scripts/lib/sbom/api.js (GHCR tags, oras download, cosign verification) by @​Danathar in #1210
  • test(scripts): silence unused-arg lint warning in build-metrics test by @​castrojo in #1225
  • fix: consolidate CI supply-chain pins, light-mode repairs, and scripts/lib test coverage by @​castrojo in #1223
  • test(portal): provide fixture data in PortalContributors static render test by @​castrojo in #1209
  • fix(gnome-extensions): render missing and unavailable extension data states by @​castrojo in #1177
  • fix(cards): preserve prevVersion on header chips by @​castrojo in #1174
  • fix(driver-versions): generate Bluefin LTS release links with stable tags by @​castrojo in #1208
  • feat(portal): implement PortalPageLoading overlay and character asset preloader by @​castrojo in #1207
  • fix(portal): resolve nested <main> landmark, focus suppression, and WCAG AA contrast by @​castrojo in #1206
  • feat(portal): implement PortalNews component consuming blog feed by @​castrojo in #1205
  • feat(portal): implement PortalFlock section with DNF Count Me growth chart by @​castrojo in #1204
  • feat(portal): harmonize design tokens, Inter font stack, and unified 956px/512px breakpoints by @​castrojo in #1203
  • feat(portal): add "Try Out" secondary hero CTA and seasonal raptor character rotation by @​castrojo in #1202
  • fix(analytics): align Countme family sparkline domains with rendered images by @​castrojo in #1201
  • fix(portal): update navbar test links to match production navbar by @​castrojo in #1200
  • fix(analytics): include Dakota and Utah in edition and workstation chart series by @​Danathar in #1194
  • fix(analytics): retain Countme zeros and preserve missing values as gaps by @​Danathar in #1191
  • fix(portal): reconcile TopNavbar navigation links and Docusaurus layout header by @​Danathar in #1169
  • feat(portal): restore complete mission statements, Edith Wharton quote, and punchline by @​mrbobbytables in #1155
  • fix(feed-items): supply NVIDIA versions at the data shape the release feed consumes by @​mrbobbytables in #1178
  • fix(profiles): remove nonexistent chandeleer1698 GitHub username by @​mrbobbytables in #1151
  • fix(pin-state): replace removed Bluefin LTS HWE workflow paths by @​Danathar in #1185
  • fix(factory): calculate merged-this-week from merged pull requests by @​Danathar in #1190
  • fix(factory): replace the Hive snapshot CTA hostname with a valid TLS endpoint by @​Danathar in #1189
  • fix(factory): use a public queue-data fallback for anonymous visitors by @​Danathar in #1188
  • fix(factory): render an unavailable change-failure rate instead of 0.0 percent by @​Danathar in #1187
  • fix(sbom): migrate Bluefin LTS stream specs to its package and stable tags by @​Danathar in #1186
  • fix(contributors): prevent visitor-side GitHub requests when contributor data is unavailable by @​mrbobbytables in #1197
  • fix(countme): recognize Dakota and Utah without misclassifying Bluefin variants by @​mrbobbytables in #1198
  • fix(blog): replace Printful CDN hotlinks blocked on five-years-of-bluefin by @​Danathar in #1196
  • fix(catalog): generate Bluefin LTS rebases against the bluefin-lts package by @​Danathar in #1195
  • fix(images): hide unpublished Utah testing image commands and attestations by @​Danathar in #1193
  • fix(blog): remove expired Discourse CDN images from ublue-2024 wrap-up by @​Danathar in #1199
  • fix(sbom): support version-qualified live tags in recent-release discovery by @​Danathar in #1163
  • feat(portal): resolve 7 package version rows for Dakota product card by @​Danathar in #1164
  • fix(ci): make generate-social-cards exit 0 when converters are missing by @​castrojo in #1182
  • feat(analytics): modernize analytics and churn charts, promote page to top level by @​castrojo in #1181
  • feat(branding): add rotating monthly night wallpaper social preview card by @​castrojo in #1179
  • feat(branding): implement new social preview cards for documentation by @​castrojo in #1068
  • fix(cards): parse HTML release-feed tables before generating Bluefin cards by @​castrojo in #1126
  • fix(blog): replace Printful CDN hotlinks blocked on five-years-of-bluefin by @​castrojo in #1125
  • fix(contributors): prevent visitor-side GitHub requests when contributor data is unavailable by @​castrojo in #1124
  • fix(feed-items): supply NVIDIA versions at the data shape the release feed consumes by @​castrojo in #1123
  • fix(gnome-extensions): render missing and unavailable extension data states by @​castrojo in #1122
  • fix(pin-state): replace removed Bluefin LTS HWE workflow paths by @​castrojo in #1121
  • fix(factory): render an unavailable change-failure rate instead of 0.0 percent by @​castrojo in #1120
  • fix(factory): use a public queue-data fallback for anonymous visitors by @​castrojo in #1119
  • fix(factory): replace the Hive snapshot CTA hostname with a valid TLS endpoint by @​castrojo in #1118
  • fix(factory): calculate merged-this-week from merged pull requests by @​castrojo in #1117
  • fix(analytics): calculate and format hero deltas for the selected range by @​castrojo in #1116
  • fix(blog): remove expired Discourse CDN images from ublue-2024 wrap-up by @​castrojo in #1114
  • fix(images): hide unpublished Utah testing image commands and attestations by @​castrojo in #1113
  • fix(analytics): include Dakota and Utah in edition and workstation chart series by @​castrojo in #1111
  • fix(analytics): retain Countme zeros and preserve missing values as gaps by @​castrojo in #1110
  • fix(analytics): align Countme family sparkline domains with rendered images by @​castrojo in #1109
  • fix(repos): repair moved GitHub slugs and preserve partial repository-stat cache by @​castrojo in #1107
  • fix(sbom): migrate Bluefin LTS stream specs to its package and stable tags by @​castrojo in #1106
  • fix(countme): recognize Dakota and Utah without misclassifying Bluefin variants by @​castrojo in #1105
  • fix(driver-versions): generate Bluefin LTS release links with stable tags by @​castrojo in #1104
  • fix(catalog): generate Bluefin LTS rebases against the bluefin-lts package by @​castrojo in #1102
  • fix(profiles): remove nonexistent chandeleer1698 GitHub username by @​castrojo in #1101
  • feat(portal): implement PortalNavigation floating dock and section scroll spy by @​mrbobbytables in #1153
  • feat(portal): implement PortalContributors component and contributor harvester workflow by @​mrbobbytables in #1156
  • fix(portal): update deprecated ublue-os links and synchronize Discord invite code by @​Danathar in #1165
  • fix(portal): align Utah ecosystem card link destination to devconf.us by @​mrbobbytables in #1159
  • feat(portal): generate bootc switch terminal command and copy button in PortalImageChooser by @​mrbobbytables in #1152
  • test: add coverage reporting for data-fetching script tests by @​mrbobbytables in #1061
  • fix(sbom): support version-qualified live tags in recent-release discovery by @​mrbobbytables in #1128
  • feat(portal): add interactive image picker by @​castrojo in #1131
  • feat(portal): complete static landing sections by @​castrojo in #1130
  • feat(portal): add parallax portal prototype by @​castrojo in #1127
  • docs: add Copilot workflow instructions by @​castrojo in #1108
  • fix: link leaderboard contributor dossiers by @​castrojo in #1103
  • fix: restore Hive leaderboard data and styling by @​castrojo in #1076
  • feat: add standalone Hive leaderboards by @​castrojo in #1071
  • feat(analytics): add update churn rate pipeline, analytics charts, and trigger workflow by @​castrojo in #1070
  • feat: add Hive leaderboards landing by @​castrojo in #1069
  • feat(nav): rename Factory to Hive in navbar linking to hive.projectbluefin.io by @​castrojo in #1058
  • docs: announce Bluefin Server by @​castrojo in #1066
  • fix(images): point bluefin-lts to projectbluefin/bluefin-lts package and update catalog by @​castrojo in #1067
  • feat(analytics): unify Bluefin family countme charts and multi-image catalog by @​castrojo in #1065
  • feat(analytics): add legacy bluefins and ecosystem countme analytics charts by @​castrojo in #1063
  • feat(reports): migrate monthly reports to blog with infograms and Hive Leaderboard by @​castrojo in #1059
  • fix: restrict countme worker entrypoint exports to default handler by @​castrojo in #1060
  • docs: announce mcp.projectbluefin.io and update hive links by @​castrojo in #1057
  • feat(mcp): serve the org knowledge base at mcp.projectbluefin.io by @​castrojo in #1055
  • feat: refine image navigation, fix driver versions catalog, and track stable streams by @​castrojo in #1050
  • feat(branding): use new Bluefin wordmark in docs and drop ublue 'u' by @​castrojo in #1043
  • Add link to upstream doc about IME setup by @​sebjag in #1038
  • fix(e2e): deliver the kickstart through an initramfs overlay by @​Danathar in #74
  • fix(ci): restore ISO rename output and soft-fail arm64 legs by @​hanthor in #70
  • fix(just): resolve sudo via PATH in sudoif and pass arguments without word-splitting by @​castrojo in #394
  • fix(justfile): make the final artifact move idempotent in _build-bib by @​mendezr in #412
  • ci(workflow): correct sync-stable-to-main header comment by @​kylerankin in #413
  • ci(workflow): retry just download in unit-tests by @​kylerankin in #414
  • fix(build): write an unverified update ref instead of a signed one by @​Danathar in #406
  • fix(ci): skip Renovate when the token is not set by @​Siddhj2206 in #395
  • ci(promote): stop citing the deleted scheduled approver by @​Danathar in #404
  • fix(ci): restore merge_group trigger to pr-validation and unit-tests by @​castrojo in #418
  • refactor: full rewrite of the template by @​castrojo in #393
  • refactor: full rewrite of the template by @​Siddhj2206 in #383
  • docs: document E2E gap as intentional release risk (#281) by @​mrbobbytables in #328
  • ci: auto-approve action_required checks on trusted promotion PRs by @​mrbobbytables in #335
  • fix(ci): validate Brewfiles statically instead of evaluating them as Ruby by @​Siddhj2206 in #320
  • fix(just): use a per-invocation temp file for the registry tag list by @​Siddhj2206 in #314
  • ci: run BATS unit tests on PRs touching build, tests, or Justfile by @​Siddhj2206 in #317
  • fix(ci): stop inheriting all repo secrets in label-enforcement by @​Siddhj2206 in #318
  • fix(just): build IMAGE_NAME from target_image so renames upgrade correctly by @​Siddhj2206 in #313
  • fix(ci): derive ghcr-cleanup target from the repository name by @​Siddhj2206 in #319
  • fix(ujust): stop install-jetbrains-toolbox when the checksum fails by @​Siddhj2206 in #315
  • fix(just): repair clean recipe so it finishes and removes all artifacts by @​Siddhj2206 in #312
  • fix(packages): stamp the provenance report from SOURCE_DATE_EPOCH, not the wall clock by @​dtg01100 in #343
  • ci: add a tested factory-pin rev tool for #336 by @​dtg01100 in #337
  • fix(packages): pin the baseurl of every allowlisted repository by @​dtg01100 in #334
  • test(services): enforce the unit exit-tolerance convention by @​dtg01100 in #341
  • fix(hooks): stamp 20-home-labels.sh after the body runs by @​dtg01100 in #327
  • fix(e2e): accept substituted sentinel reads and re-read before reshooting by @​hanthor in #381
  • fix(build): re-declare the factory pin ARG so the label bakes its value by @​hanthor in #374
  • fix(build): key the package transaction on the factory pin, fail loud on skew by @​hanthor in #373
  • chore(deps): update packages pin to GNOME 51.0 finals build by @​hanthor in #359
  • test: label parity-ref tests as #152 pinned-ref work by @​kylerankin in #356
  • docs: correct stale package-image copy statement in package-contract by @​kylerankin in #333
  • fix(packages): reject proxy and sslverify=0 in allowlisted repositories by @​mendezr in #351
  • fix(ci): let the kernel cache verify accept dispatch-run signatures by @​mendezr in #348
  • feat(packages): add alsa-utils, restoring kernel mixer state across reboots by @​castrojo in #297
  • fix(ci): sign the kernel cache digest the registry actually stored by @​kylerankin in #317
  • chore(ci): bump actions pin for GNOME 51 gate fixes by @​hanthor in #315
  • chore(ci): point release reusable at actions with preset-proof gate sshd by @​hanthor in #310
  • feat(kernel): build v4l2loopback for every flavor's kernel by @​Danathar in #298
  • fix(packages): add default-fonts-core-emoji to the parity contract by @​buggtb in #296
  • fix(image): strip extension build toolchain closure from shipping image by @​hanthor in #295
  • fix(iso): retry flaky Flathub pulls 5x so a timeout window can't fail E2E by @​hanthor in #285
  • feat(packages): printing and cameras, from the 2026-09-26 factory image by @​hanthor in #282
  • fix(selinux): keep Hummingbird's useradd HOME; only generate the rules from /home by @​hanthor in #283
  • fix(selinux): label /var/home so GNOME Initial Setup can create the account by @​hanthor in #281
  • fix(iso): build the tacklebox live ISO with release compression by @​hanthor in #280
  • feat(iso): installs boot to GNOME Initial Setup, as Bluefin and Dakota do by @​hanthor in #279
  • feat(packages): pin the 2026-09-26 factory image; Wi-Fi, Files, phones, printing, Initial Setup by @​hanthor in #265
  • fix(packages): install samba, samba-winbind and samba-winbind-clients by @​buggtb in #268
  • fix(ci): scope download-integrity clearance to each fetch by @​mendezr in #233
  • feat: build live ISOs for unpublished variants via tacklebox by @​hanthor in #252
  • fix(iso): installed systems get their Flatpaks (the dock was empty) by @​hanthor in #272
  • fix(iso): retry flatpak remote-add, which fetches over the network by @​hanthor in #270
  • chore(iso): pin bootc-installer v2026.09.25-51f8cfe6 (offline installs of Utah work) by @​hanthor in #269
  • feat(baselines): measure Utah against the published Bluefin and Dakota images by @​hanthor in #264
  • fix(parity): install the Bluefin base packages Utah can resolve today by @​hanthor in #266
  • fix(e2e): count flatpak runtimes when checking the offline default set by @​hanthor in #267
  • fix(iso): let the installer create the first account by @​hanthor in #260
  • fix(iso): keep the listed GTK3 theme runtimes in the live ISO by @​hanthor in #256
  • fix(desktop): enable per-user services — installed Utah had no audio by @​hanthor in #255
  • fix(boot): installed systems boot again — keep the base's shim-paired GRUB, guard the EFI chain (#253) by @​hanthor in #254
  • fix(iso): separate installed-desktop and installed-fastfetch captures by @​repires in #243
  • ci: opt the testing stream into rechunking and build SBOMs by @​mendezr in #226
  • fix(packages): install device firmware, which the bootable base ships none of by @​sramkrishna in #236
  • fix: mask serial-getty@ttyS0 so desktops stop spamming the journal by @​sramkrishna in #235
  • fix: repoint install-flatpaks.sh at tuna-os/bootc-installer by @​Danathar in #219
  • ci: retain gated production ISO artifacts by @​Danathar in #198
  • fix(iso): tighten live ISO size budget by @​Danathar in #206
  • chore(deps): update actions/upload-pages-artifact action to v5 by @​hanthor in #234
  • ci: gate the live boot on the UTAH_LIVE_READY serial marker by @​mendezr in #229
  • fix(iso): force software GL rendering for the E2E test's terminal by @​Danathar in #224
  • test(installer): assert offline payload and default Flatpaks survive encrypted install by @​Danathar in #215
  • test: cover btrfs live-kernel contract by @​Danathar in #207
  • ci: document Utah testing-stream rechunk gate by @​Danathar in #205
  • docs: close README/skill package-count drift against the manifests by @​Danathar in #225
  • fix(flavors): single-source flavor to image name mapping in flavors.py by @​mrbobbytables in #144
  • fix(desktop): enable input-remapper.service for desktop input devices by @​mrbobbytables in #148
  • ci(parity): pin check-parity upstream fetch to committed revision by @​mrbobbytables in #152
  • ci: stop a testing build cancelling the one before it, which is losing the ISO evidence the release gate needs by @​hanthor in #185
  • ci(release): stop a missed stable release from looking exactly like a normal merge by @​hanthor in #195
  • fix: fall back to kernel module tree and refuse empty kernel releases in verify-rpm-contract by @​mrbobbytables in #204
  • fix: enable PipeWire user units so GNOME screencast can start by @​KiKaraage in #177
  • fix(installer): harden live-media boot paths and define Secure Boot strategy by @​mrbobbytables in #143
  • Retry Flathub pulls, so one timed-out object cannot fail a flavor's ISO by @​hanthor in #162
  • fix(nvidia): bump the driver for kernel 7.2, and make the base bump actually build by @​hanthor in #182
  • fix(packages): correct evolution-ews-core parity debt after EDS closure builds by @​kylerankin in #191
  • fix: disable nvidia-container repo on non-NVIDIA flavors by @​kylerankin in #192
  • ci: drop timestamp from generated skill catalog to avoid merge conflicts by @​mrbobbytables in #193
  • site: publish a status and project information page on GitHub Pages by @​hanthor in #164
  • fix(image): stop shipping the 4 GB package repository in every image, and check Hummingbird signatures by @​hanthor in #133
  • fix: enable the btrfs kernel module in the OGC gaming-flavor kernel by @​kylerankin in #158
  • ci: stop fork pull requests failing on a GHCR permission they cannot have by @​hanthor in #184
  • fix(packages): single-source install repository identity in packages/*.repo by @​mrbobbytables in #146
  • fix(desktop): mask bootc-fetch-apply-updates across cross-vendor etc merge by @​mrbobbytables in #153
  • fix: stop shipping the 4 GB package repository in every image (#128) by @​kylerankin in #156
  • test(ci): add unit tests for check-download-integrity and check_workflow_outputs by @​mrbobbytables in #147
  • fix: enable bluetooth.service for desktop adapters by @​kylerankin in #125
  • feat(packages): install what Bluefin inherits from Fedora's base and Hummingbird already has by @​hanthor in #129
  • fix(iso): get the LUKS end-to-end test green on all four flavors by @​hanthor in #94
  • test: unit coverage for scripts/flavors.py flavor-matrix queries — new tests/test_flavors.py, just test recipe by @​mendezr in #118
  • fix(uupd): pin and verify uupd.service/uupd.timer against committed digests by @​kylerankin in #124
  • fix(e2e): capture the fastfetch shot at 1080p, with its logo by @​hanthor in #112
  • fix(packages): ship glibc-all-langpacks so a chosen locale exists by @​hanthor in #116
  • fix: keep GSConnect loading on GNOME 51 (clipboard final-type) by @​mrbobbytables in #89
  • fix: resolve OGC kernels when assembling live ISOs by @​hanthor in #87
  • fix(iso): repair CI handoff, payload digests, and live kernel support by @​hanthor in #86
  • ci: automate LUKS ISO validation and screenshot evidence by @​hanthor in #84
  • Build the Utah ISO, install it to an encrypted disk, and prove the desktop starts by @​hanthor in #41
  • fix(build): resolve the pinned package contract before composing Utah by @​hanthor in #82
  • docs: Utah's current status by @​HuntedRaven7 in #31
  • feat: compose Utah from a local package repository by @​hanthor in #37
  • supply-chain: pin and verify executable image and installer downloads by @​hanthor in #32
  • ci: stop main waiting on the kernel cache; cut layer overhead per flavor by @​hanthor in #33
  • feat: build zram-generator packages by @​mendezr in #294
  • feat: build zram-generator packages (carries #294) by @​castrojo in #301
  • fix(ci): report nothing for a cancelled run instead of every package as failed (carries #271) by @​castrojo in #300
  • feat(feeds): poll 68 more upstreams via explicit lock feeds by @​hanthor in #296
  • fix(libadwaita): drop obsolete sassc backport, merged upstream in 1.10.0 by @​hanthor in #299
  • fix(gsettings): drop GConf .convert files removed upstream in GNOME 51.0 by @​hanthor in #298
  • chore(gnome): bump the GNOME 51 stack off prerelease to 51.0 finals by @​hanthor in #295
  • feat(supply-chain): lock factory buildroots and require recipe provenance by @​Danathar in #186
  • fix: retry the hermetic lane's online steps and package v4l-utils' udevd drop-in by @​clubanderson in #288
  • fix(sources): reset release on upstream version bumps by @​arteeh in #281
  • fix(ci): drop canary inject_failure from build matrix (#285) by @​mrbobbytables in #286
  • ci(validate): give check_workflow_quoting and runtime_contract a PR-wide trigger by @​buggtb in #282
  • feat(libass): update to 0.17.5 by @​hanthor in #266
  • fix: prevent lock screen password controls from overlapping by @​arteeh in #290
  • feat(ci): let a dispatch build and publish only named packages by @​hanthor in #279
  • fix(printing): import pdfio for libcupsfilters, and rebuild libgphoto2 by @​hanthor in #278
  • fix(enchant2): build without the Nuspell backend by @​hanthor in #276
  • feat(publish): resolve the blocking transaction in Utah's pinned base by @​hanthor in #277
  • fix(build): resolve the hermetic root with best=0, like the container lane by @​hanthor in #275
  • feat(publish): publish each wave's successes as that wave finishes by @​hanthor in #274
  • fix(publish): a bootstrap build never replaces the real package by @​hanthor in #273
  • fix(publish): resolve Utah's install set in Utah's own base image by @​hanthor in #272
  • feat(publish): resolve what Utah actually installs, and track each gap by @​hanthor in #270
  • fix(publish): import libexif and ghostscript for libgphoto2 and libppd by @​hanthor in #269
  • fix(plan): call a published build stale only when its soname moved by @​hanthor in #268
  • feat(xdg-terminal-exec): update to 0.14.3 by @​hanthor in #265
  • feat(build): make the hermetic mock lane the default by @​hanthor in #264
  • fix(publish): let a re-run publish over its own earlier attempt by @​hanthor in #262
  • fix(ci): keep a canary dispatched on main away from the tracking issue by @​hanthor in #261
  • feat(build): hermetic mock lane -- lock the build root, build offline from the lock by @​hanthor in #260
  • feat(build): rebuild what changed and what BuildRequires it, on every merge by @​hanthor in #259
  • ci(build): retry a failed %check once before failing the package by @​hanthor in #256
  • feat(publish): publish each good build, keep a failed package's previous one by @​hanthor in #258
  • ci(canary): prove pipeline changes on the real workflow in minutes by @​hanthor in #257
  • fix(buildroot): keep the pin in config/ and move it to the first mirror image by @​hanthor in #255
  • ci(buildroot): factory-owned build-root mirror, and a cache key that survives a publish by @​hanthor in #252
  • fix(publish): lead the repository image with a repodata-only layer by @​hanthor in #254
  • feat: import Utah runtime dependencies with no factory recipe by @​hanthor in #246
  • fix(publish): log in for the provenance attestation and keep it from failing a publish by @​hanthor in #253
  • fix(python-pydantic-core): BuildRequire python3-packaging for %prep by @​hanthor in #250
  • fix(publish): close the ffmpeg and libosinfo runtime closure by @​hanthor in #249
  • fix: restore python-pydantic and build pydantic-core from vendored crates by @​hanthor in #248
  • fix(librist): backport upstream's nettle 4.0 support by @​hanthor in #245
  • chore: remove python-pydantic and python-pydantic-core from the factory by @​hanthor in #244
  • fix(libppd): include <cstdint> before cups/transcode.h by @​hanthor in #243
  • fix(librist): correct the 0.2.11-1 changelog year so rpm accepts the spec by @​hanthor in #242
  • fix(srt): build with the OpenSSL EVP backend instead of gnutls+nettle3.10 by @​hanthor in #241
  • fix(ci): upgrade libxml2 to Hummingbird's split release before builddep by @​hanthor in #240
  • fix(grub2): efi_vendor=fedora so GRUB sits beside Utah's shim (Utah install e2e red since 09-21) by @​hanthor in #238
  • test: gate architecture inventory counts by @​Danathar in #194
  • fix(factory): source rebuild matrix package set from source_locks by @​repires in #232
  • fix(import): skip factory-sourced packages in Rawhide resolver by @​mrbobbytables in #185
  • refactor(ci): align Justfile check with CI workflow gate catalog by @​mrbobbytables in #196
  • fix(ci): verify cosign signature before seeding from the factory image by @​Danathar in #215
  • fix(ci): gate sccache setup to mozjs140 to prevent token exposure by @​repires in #227
  • fix(validate): refuse a recipe that silences its own %check by @​Danathar in #197
  • fix(publish): close the consumer-transaction dep closure by @​hanthor in #229
  • fix(dist_bump): tolerate macro-based Release fields (carries #100) by @​hanthor in #138
  • fix(verify): pin srt, libcue, game-music-emu, cjson to Fedora lookaside primaries by @​hanthor in #231
  • feat(printing): add cups-filters, cups-browsed, libcupsfilters, and libppd recipes by @​mrbobbytables in #214
  • ci(audit): pin pyyaml and declare it for the unit tests job by @​mendezr in #221
  • feat(packages): import google-noto-color-emoji-fonts and stix-fonts recipes by @​mrbobbytables in #199
  • docs: define ORAS source lookaside policy by @​mrbobbytables in #189
  • fix(linux-atm): pin kernel-headers to 6.19.6 for atmsvc.h by @​hanthor in #218
  • fix: exclude libicu-77 from every build root by default, with per-package opt-in by @​hanthor in #217
  • feat: ppp/libpcap/linux-atm/libgda closure parity (utah-packages#149) by @​kylerankin in #203
  • feat: add libfprint + fprintd recipes for fingerprint login parity (#145) by @​kylerankin in #204
  • feat: import microcode_ctl for CPU errata parity by @​kylerankin in #205
  • fix(scan): skip malformed repoquery lines instead of crashing the scan by @​kylerankin in #206
  • feat: add alsa-utils recipe for mixer-state restore (Dakota parity) by @​kylerankin in #202
  • fix(rebuild): build nautilus-python after nautilus by @​Danathar in #213
  • fix(gaps): drop runtime-contract [unavailable] packages from the parity report by @​mendezr in #207
  • fix(renovate): require human review for github-actions updates by @​mrbobbytables in #193
  • fix(factory): defer base packages to Hummingbird by @​hanthor in #191
  • docs(ci): preserve the package cache contract by @​hanthor in #184
  • feat(ci): restore and publish per-package RPM cache by @​hanthor in #183
  • feat(ci): cache key for per-package build reuse, and the rule for when to use it by @​hanthor in #178
  • fix: enforce recipe-set agreement across the three package sources by @​kylerankin in #164
  • fix(dist_bump): tolerate macro-based Release fields by @​kylerankin in #100
  • ci: pin zstandard version in rebuild-rpms prepare job (#105) by @​mendezr in #109
  • ci: pin zstandard in the prepare job (carries #109) by @​hanthor in #137
  • fix(quality): add missing provenance for gnome-desktop3 and malcontent-bootstrap by @​mrbobbytables in #98
  • fix(ci): guard build toolchain containers against mutable tags by @​kylerankin in #110
  • fix(workflows): bind rawhide dispatch inputs via env, not run interpolation by @​kylerankin in #114
  • Build the whole Utah contract: 343 recipes, Firefox as a Flatpak, four stage failures fixed by @​hanthor in #70
  • test: add unit coverage for tools/scan_rawhide_state.py by @​kylerankin in #99
  • fix(ci): pin build toolchain containers by digest by @​kylerankin in #88
  • ci: repin Packit SRPM image to live digest by @​Danathar in #85
  • fix(buildroot): exclude legacy ruby default-gems from Hummingbird repo by @​mrbobbytables in #83
  • fix(tailscale): disable incompatible jsonv2 experiment by @​Danathar in #86
  • ci: publish factory repositories atomically after closure validation by @​kylerankin in #89
  • fix(gcc): drop gcc from the rebuild set, let Hummingbird supply it by @​kylerankin in #90
  • fix(batch): consolidate verified fixes for tools, ci checksum, rawhide import, and contract (#71, #72, #56, #57) by @​castrojo in #92
  • refactor(tools): wrap check_workflow_quoting and validate in testable functions by @​castrojo in #73
  • ci: make the compiler cache outlive the build container by @​hanthor in #33
  • fix: keep GSConnect loading on GNOME 48+ (clipboard final-type) by @​hanthor in #53
  • feat: compose a local Utah package repository by @​hanthor in #34
  • feat(packit): wire packit srpm into a real pilot job by @​castrojo in #41
  • fix(packit-sdk): use upstream quay.io/packit/packit instead of rebuilding by @​castrojo in #40
  • fix(packit-sdk): publish as ghcr.io/projectbluefin/packit-sdk by @​castrojo in #38
  • fix(packit-sdk): share DOCKER_CONFIG auth between podman and cosign by @​castrojo in #37
  • feat(packit-sdk): add pinned Packit+Mock build image by @​castrojo in #36
  • ci: build WebKitGTK as two shards on two runners by @​hanthor in #32
Dakota (GNOME OS Prototype)​

Contributors​

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Sources​

  • github-activity: available (2026-09-01 to 2026-09-30): source
  • github-lanes: available (2026-09-01 to 2026-09-30): source
  • github-releases: available (2026-09-01 to 2026-09-30): source
  • github-releases: available (2026-09-01 to 2026-09-30): source
  • github-releases: available (2026-09-01 to 2026-09-30): source
  • countme: unavailable — Countme active-system measurement is incomplete. (2026-09-01 to 2026-09-30): source
  • homebrew: available (2026-09-01 to 2026-09-30): source
  • flathub: available (2026-09-01 to 2026-09-30): source