Skip to main content

Brazilian Bluefins

· 2 min read
Delphic Melody
Bluefin Artist

Intro​

Hi there, I'm Delphic Melody. I'm the vector artist who's been creating vector art for Project Bluefin. You might be familiar with some of the vector wallpapers that I've created by remastering and expanding on the work of the extremely talented Natalia Jagielska and Atius Amy: Wallpapers

Brazilian Bluefins​

I'm chiming in to let folks know that Brazilian Bluefins live!

brazilian dromaeosaurus brazilian dromaeosaurus

You're more than welcome to modify the vectorized dinos to create your own personalized versions of Bluefin with your country's flag.

Please feel free to PR your renditions to Bluefin's official artwork repository: Artwork Repo

Oh, and if you enjoy my work, please consider donating to my Ko-fi if you can. It really helps keep me motivated to create vector art.

Thank you for your time and consideration. May you have an amazing week.

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

Bluefin Development Visualized

· 3 min read
Jorge O. Castro
Director of Dinosaurs

Endless Forms most Beautiful​

I wanted to capture the recent swarm of activity in the project lately, so I turned to a trusted tool: gource. This is a visualization tool that makes git activity look cool. We needed something that showed how Bluefin used to be, to how Bluefin is now. Here's the past few months:

Bluefin Development Visualized

Some high points:

  • 02:59 — Starting up the Bluefin Factory with Hive - Prepping for the clankers to start their work. Here you find me frantically realizing that it's only a few months to GitHub Universe so you see me doing a bunch of fixes in the docs and YAML files in order to prepare for the automation
  • 04:00 — Where Hive is introduced and mostly turned on

I'll likely refresh this in a few weeks since we're really grooving now and getting in lots of fixes. We'll see how it plays out over the next month or so! I think this graphical representation is quite cool. It's a good graphical representation that shows how we went from manual mode to agentic mode. It's also nice that everything is MORE SPREAD OUT across MORE people instead of just a few. The next few months will be the real test to see how we do! Check clankers.projectbluefin.io for contribution instructions if you want to check it out!

For me the reviewer role has changed significantly. We have testing branches and test suites now so we can do better reviews instead of "this is mostly fine if it breaks users will tell us.". There's still a lot of that of course, we can never know who is using every knob in an operating system. Mostly now I review things in my omp harness and watch things scroll by slowly. Sometimes I need to steer/adjust but these days it's more acking each other's reviews. This is particular handy with James being in India, we can leave each other homework to review since every change still needs a +2 from maintainers.

Here's two more, both on manual mode:

Bazzite​

Bazzite Development Visualized

Aurora​

Aurora development visualized

Dakota Alpha 6

· 8 min read
Jorge O. Castro
Director of Dinosaurs

Dakota Alpha 6 is out. This one is brought to you by Ahmed Adan/ Built against GNOME 51 and freedesktop-sdk 26.08.1, running Linux 7.2.6, NVIDIA 615.71.09. Kernel OGC 7.2.6-ogc1 for your gaming needs.

This one certainly feels good! Please remember that we still do NOT support secure boot, so temper your expectations! Here's the changelog, I'll make a video on this one since we have a lot to discuss!

Bluefin Dakota desktop running GNOME
Dakota, built from source with BuildStream

Version matrix​

Alpha 5 baseline values are from tag stable-20260731 (as reflected in the Alpha 5 release announcement):

ComponentAlpha 5Alpha 6Source / Pin
GNOME Shell50.351.0gnome-build-meta
Mutter50.351.0gnome-build-meta
freedesktop-sdk25.08.1426.08.1elements/freedesktop-sdk.bst
gnome-build-meta50.3-5-g4b2504651.0-3-ge34f1ebelements/gnome-build-meta.bst
Kernel7.0.117.2.6elements/core/linux-fdsdk.bst
Game Mode kernel7.1.4-ogc17.2.6-ogc1elements/core/linux-ogc.bst
NVIDIA610.43.02615.71.09elements/bluefin-nvidia/nvidia-drivers.bst
bootc1.16.61.16.13elements/gnomeos-deps/bootc.bst
systemd260.2261.2gnome-build-meta
Mesa26.1.426.2.2freedesktop-sdk
GTK4.22.44.24.0gnome-build-meta
PipeWire1.6.11.6.8gnome-build-meta
WirePlumber0.5.150.5.17freedesktop-sdk
NetworkManager1.56.11.58.1gnome-build-meta
xdg-desktop-portal1.22.11.22.1gnome-build-meta

Note on kernel and bootc: Dakota pins its kernel at 7.2.6 via elements/core/linux-fdsdk.bst (ahead of freedesktop-sdk 26.08.1's default of 7.2.2) and pins bootc at 1.16.13 via elements/gnomeos-deps/bootc.bst (ahead of gnome-build-meta's default of 1.16.6).

GNOME 51 "A Coruña" was officially released on September 16, 2026 — see the official release notes.

Migrating Major GNOME Versions​

This is the first time we utilized dakota:next tracking a dev release, and Ahmed smoothly transitioned the testing branches through these:

ChangeCommit
GNOME 51 and freedesktop-sdk 26.08 on testing5005f85
freedesktop-sdk 26.08.1 and NVIDIA 615.71.09e835b88
Complete fdsdk 26.08 port across all variantsa29d9f6
Derive fdsdk pin and patches from tracked gnome-build-meta57a70d3
Stage sandbox shell explicitly for fdsdk 26.08526affd
Core junctions to GBM 50.4 and fdsdk 25.08.165e630bc
Core junctions to GBM 51.0-312334d2
Track gnome-build-meta master in :next3af437b

Kernel and hardware​

Here's a bunch of enablement crap:

ChangeCommit
Kernel 7.2 with hardware enablement5fbeae7
Align testing on 7.1.86e388f8
OGC gaming kernel 7.2.6-ogc11371bce
Carry hid-asus build fix for OGC 7.2.6-ogc1d2c8cf7
NVIDIA 610.57.04 plus missing data filesed2bea8
ATH12K Wi-Fi across variantsb307333
Restore desktop capabilities across streamsa984a81
Preserve hybrid graphics configuration997f6ec
brlaser CUPS driver846cd92
dmidecode for BIOS info0c5c9ea
Disable zram in favor of zswap53952c7
ydotool input automation and uinput rulesa182aba
plugdev and nintendo_switch groups for udev02bb985

Desktop​

And some of the upcoming desktop improvements that we've been going over in the Discussions:

ChangeCommit
Curated GNOME Shell extensions suite01b757b
quick-settings-audio-panel enabled by default8897f7c
BudsLink-Companion replaces Bluetooth-Battery-Meterb07c05d
syncthing-toggle → bluefin-bling v2bd7bbe6
Ghostty resize overlay off by default (Wayland loop)556bc0c
Ghostty dual-theme tracks GNOME Dark/Lightffe6271
Stop GDM fingerprint retry loop on unenrolled readersddc37d7
Disable PC-speaker WirePlumber sinka5e9152
Portable unzip flags for extension installs787bf4d
Preserve release ZIP root files in extension packaging20113c3
Avoid broken and intrusive desktop defaults691a377
Developer mode adapted to Dakota9efe6e9
Bluefin dinosaur avatars in GNOME user-account pickere106345
Unbreak fresh-ISO post-install (uwelcome, brew, devmode)85a1123

Game Mode​

Fastfetch output showing the Dakota NVIDIA gaming image and the OGC gaming kernel
dakota-nvidia-gaming on the OGC kernel

Bluefin's "Game Mode" is fleshed out now, offering access to a "Bazzite Light" gaming setup, perfect for slaying out. Destiny on Linux please Sony!

ChangeCommit
OGC gaming kernel 7.2.6-ogc11371bce
32-bit GL/Vulkan drivers, Steam UI GPU acceleration096b351
Steam .deb pinned to versioned pool URLe051009
patches/linux-ogc added to sync overlayefc23c7
Re-pin LuaJIT after upstream deleted ROLLING tagf277abd

Image and boot plumbing​

The chunka work is great, you'll notice way smaller updates than the old images. Top of the line hunter!

ChangeCommit
Single source of truth for the image-variant seta987f87
Real stream tag in fastfetch via boot-time booted-image syncd4048c6
Generate ownership during image builds with chunkah4360e70
Fetch remote companion data before reading in chunkah73ff57e
Preserve export mtimes in chunkah1c081c0
Compose host toolchain once during image buildse4a2dfd
Stop using /dev/stdin for inline writes under BuildBarn/BuildBox5e30bde

Behavior changes​

  • Ghostty ships resize-overlay = never; theme tracks the GNOME Dark/Light preference.
  • snd_pcsp sink disabled in WirePlumber — audio no longer falls back to the PC speaker after resume.
  • zram is disabled; swap is zswap backed by /var/swap/swapfile.
  • Bluetooth-Battery-Meter is replaced by BudsLink-Companion plus the io.github.maniacx.BudsLink Flatpak.
  • aarch64 images are not published this cycle. (We'll turn these on soon)

Images​

ImageStreamCommand
DakotaStablesudo bootc switch ghcr.io/projectbluefin/dakota:stable
DakotaTestingsudo bootc switch ghcr.io/projectbluefin/dakota:testing
NVIDIAStablesudo bootc switch ghcr.io/projectbluefin/dakota-nvidia:stable
NVIDIATestingsudo bootc switch ghcr.io/projectbluefin/dakota-nvidia:testing
GamingStablesudo bootc switch ghcr.io/projectbluefin/dakota-gaming:stable
GamingTestingsudo bootc switch ghcr.io/projectbluefin/dakota-gaming:testing
NVIDIA GamingStablesudo bootc switch ghcr.io/projectbluefin/dakota-nvidia-gaming:stable
NVIDIA GamingTestingsudo bootc switch ghcr.io/projectbluefin/dakota-nvidia-gaming:testing

You can't rebase to Dakota from another image. If you're not on Dakota already, reinstall from the ISO.

ISO downloads​

Testing instructions and bug reporting: ISO Testing. File ISO bugs in projectbluefin/dakota-iso.

Lore​

Remember that the wolves are coming, level up your skills at training.projectbluefin.io. It's a tough world out there, here's a sneak peek at the artwork from the artists at makemeacomic.com! These are just a sample of entries from a mysterious journal uncovered on Europa by a [REDACTED] merchant. Inside are the secrets to unlocking the potential of Contributor-Guardians and their mounts. But the forces of the Toilmaster are already ahead of them. Instructions from a doomed CNCF Expedition are sparse:

CNCF VANGUARD // ALERT ONE

There's a stone here. "All these worlds are yours, except Europa, attempt no landing there." But sir didn't the Hummingbird team leave three days ago?

1 / 4

Bluefin

Long-Range Raptor Mount

Bluefin — Long-Range Raptor Mount
Bluefin — Long-Range Raptor Mount concept illustration

Bluefin Server Alpha 2

· 4 min read
Project Bluefin
Automation & Factory

Alright, here it is, Bluefin Server, this one actually boots. This is the base of the Bluefin Factory, the thing you'll build your homelab on. And in turn, your desktops or whatever you want. Kubernetes for the home.

Bluefin Server

An FSDK-based, image-based Linux server OS.**

To celebrate this milestone, enjoy the latest video, with some fresh lore!

Bluefin Server targets the same use-case space as Flatcar Container Linux, Kairos, Fedora CoreOS, and Talos, but is built from scratch with BuildStream 2 from freedesktop-sdk (FSDK 26.08) components and uutils coreutils.

It is designed to be installed and then managed entirely through the Kubestellar GUI. I'll be releasing point releases quickly over the next few days. After the install it will give you a web address, then you go to it on your computer. Then that's it, your perfect home server.

Except the dashboards are empty. The more people we have making these the better, including a ZFS one! This variant will have ZFS support so now's the time to jump onboard!

It is DDI first: the OS payload is a compressed XFS DDI filesystem image that is deployed by an offline, systemd-native installer.

Release status: Alpha​

Bluefin Server is currently in Alpha:

  • Milestone status: Phase A (reproducible build path, uutils, k0s sysext, graph validation) is complete. Phase B (automated boot verification on lab cluster) is in progress.
  • systemd-sysupdate should work, we're about to find out! configurations.
  • Readiness roadmap: Track completed criteria and remaining gates toward 1.0 in docs/MVP_1_0_READINESS.md.

How this works​

  • A/B root rollback — an MVP 1.0 gate: 50-root.transfer names root-a and root-b; the installer currently creates only root-a.
  • DDI-first delivery — the installer embeds the OS payload as a data partition; no network is required at install time. This is basically Linux systemd style.
  • Minimal, distroless OS image — no shell in the running rootfs by default IS what we are shooting for. We'll probably fail at this lol.
  • systemd-native installer — systemd-sysinstall provides the interactive terminal UI and systemd-repart handles partitioning and block-copy DDI placement. Finally distro installers can all go die!
  • Optional k0s as a systemd-sysext so the base image stays distroless. We started with k3s but I want to see how this one goes, stripped down for the home.

SSH ON: SSH is enabled for cluster boot tests and remote debugging. It is scheduled for removal once diagnostics move to serial logs or a guest agent. See docs/skills/factory-integration.md.

Quick start​

Bare metal sorely needed! However this runs on any Linux, feel free to fire up a VM and start designing that dashboard! Once we get home assistant and all the goodies it'll be amazing! Thanks for checking it out!

You need only podman and just. BuildStream runs inside the FSDK bst2 container, so BuildStream is not installed locally.

just validate # resolve the element graph
just show-me-the-future # end-to-end QEMU installer smoke test

See AGENTS.md for the full build command matrix, hard rules, and agent skill routing.

Contributing​

See CONTRIBUTING.md for the contributor checklist, Conventional Commit rules, and docs/skills/index.md for task-specific guidance.

I Dreamed of Linux Laptops for My Family

· 9 min read
Benjamin Sherman
Bluefin Contributor

Original post

A belated happy five years to Universal Blue, and how wanting laptops my family could actually live with turned me into an open source maintainer.

This is my personal site. Opinions here are my own and don't necessarily reflect those of Red Hat.

Maybe you saw that Universal Blue recently celebrated its five-year anniversary. Aurora, Bazzite, and Bluefin (the OG) all marked it with posts of their own. I’m thankful to be a part of the team that’s done such great work. I’m usually content to just get things done in the background, but it’s high time I share some of my thoughts about this project and organization we call Universal Blue.

When Jorge Castro made that initial commit five years ago, he was doing different things than we do today. He was running Fedora Silverblue or openSUSE MicroOS, using various scripts to shape the installation into his dream. It was a beginning.

I was in a different, but similar place. I could see the day approaching when my kids were going to need laptops for school, and they already wanted to do more gaming. I didn’t love managing Windows even for myself and didn’t want to manage multiple installs, but multiple Linux installs weren’t much more exciting. I was experimenting to find a solution to make supporting my family’s laptops seem less like sysadmin work, to find something that would “just work” instead.

My GitHub and private Git server are littered with repos full of old dotfiles, configs, Ansible playbooks and shell scripts. I was determined to pre-configure and automate all the post-install Linux things. For me, this “perfect Linux laptop” idea was brewing in 2021. That’s probably when I started to get a solid base of Ansible to manage my family’s Linux systems.

Though I’ve consistently been using Linux on the server for 30 years, desktop use has been more intermittent. “The Year of the Linux Desktop” is almost a perennial joke, and laptops almost always meant more pain than a typical desktop PC. It’s been decades since I bought into the religious wars of macOS versus Windows versus Linux versus BSD. At some point, pragmatism set in. I don’t really care which OS you’re running, but maintaining a fleet of laptops for your family is still a pain, except perhaps if they are all Chromebooks.

In November 2022, I stumbled across a blog post and video by Jorge. He’d been writing (and talking) about immutable Linux OSes, and at that moment he was comparing Fedora Silverblue and openSUSE’s MicroOS. MicroOS caught my attention as something I might use to make my family’s laptops a little bit more reliable. It promised something like ChromeOS that could still function as a normal system. I found it intriguing, but there were enough rough edges that I just couldn’t switch off the Ansible-customized Ubuntu which had become the in-home standard.

In December 2022, Jorge posted something magical. Fedora had released an experimental feature for Silverblue and Kinoite: container-native rpm-ostree. It meant we could have a custom built operating system image, but built like any other Docker image. I’d been living and breathing Docker images. I’d been running Kubernetes at home. I’d packaged applications in Docker images for work and home. The promise of pre-built application images, running the same thing everywhere, was now available as a custom operating system! I could bake in customizations for my family, fixes for all the quirks that normally I had to fix after an installation, or whatever I wanted. Maybe most importantly, all of the package and upgrade conflicts which inevitably occurred for any package management system were no longer an issue.

Quote

That whole class of problem would happen in CI, not on my laptop, certainly not on my wife’s or kids’ laptop!

And NVIDIA, oh, NVIDIA: the greatest love/hate of any Linux user who’d chosen to use it. Powerful and wonderful when it works, but often a pain to get going: NVIDIA would get the same treatment.

Fun fact, I’d used both Fedora Silverblue and CoreOS before, but I found them too restrictive without a better way to customize the defaults to have a better overall user experience. It’s kind of crazy that this turned around so quickly once I could participate in building the OS image itself. Container-native truly opened the door wide for new contribution in this space. It certainly did for me!

This is where I stopped watching what Jorge was doing from afar and got involved.

The ublue-os GitHub org and a Discord server had both been created. I joined the chat and saw them working on a pre-built NVIDIA kmod. I had some of my own custom images going, but I jumped in to help with that NVIDIA kmod; I had a vested interest in making it work. My first official contribution was on February 20, 2023. It wasn’t much, but Universal Blue was (and still is) a welcoming community, and I quickly became involved in more and more code reviews and code contributions. Not even a month later, I’d forked Kyle Gospodnetich’s serverblue repo into uCore, with his blessing of course. By then Kyle was fully invested in Bazzite!

The rest, as they say, is history! And frankly, most of the history is public record because all of our commits, issues, PRs and discussions are out in the open. It’s Open Source Software, after all. I found a passion for participating in the shared effort of building and maintaining our various Universal Blue projects; I stuck with it.

Quote

One day I looked up and realized, “oh, I’m a maintainer.”

Achieving that “status” was never a goal; rather, it was a natural progression. uCore became my primary Universal Blue project, and I’m practically its sole maintainer, though I’m also a core maintainer across all of Universal Blue, and a user of most of it. Working in the server space certainly matches my traditional interests, so I’m glad I can assist with the desktop projects but don’t need to carry that load alone.

Bluefin and Bazzite fulfilled the dream of Linux laptops that “just work.” Ansible ceased to be used for desktop/laptop management as the prebuilt images (bOS, my lightly personalized version of Universal Blue images) became the new home standard. My boys got Dell laptops with NVIDIA cards which enabled some 3D gaming as well as school, and maintenance was minimal, since those failures now occur in CI and never make it to the laptops themselves. My wife and daughter got a matching pair of HP laptops with AMD integrated graphics, better battery life and still some light gaming ability.

Quote

These systems just keep updating.

Are there occasional hiccups? Yes. Is it massively easier to maintain than before, when every other update seemed to result in a broken NVIDIA kmod or some other issue? 100%! I confess the boys argued their way into Windows specifically to play a game which still doesn’t work on Linux with Proton, but they miss the Linux desktop and I think I’ll win them back soon.

There is another important thing. I want to say “thank you” to Jorge and Kyle. Each had their own dreams… Kyle’s vision was to bring the “just works” gaming experience of the Steam Deck to any desktop or handheld, while Jorge pushed for the “just works” experience of a Chromebook but with more power and flexibility. Kyle, Jorge and I worked and gamed together, and Kyle would sometimes join me and my boys for gaming sessions. I wasn’t always sure how to relate to Jorge’s ambitious goals, but he challenged me to think bigger. Beyond these two, a whole group of people came together as friends and teammates to support each other personally and technically as we built the various Universal Blue projects.

Quote

This team has brought dreams to life.

One of those dreams has been to get people jobs! Most of us did this work outside our day jobs. Eventually some folks set up sponsorship via GitHub, etc, and that’s been awesome to help offset the costs of development, but day jobs pay the bills. The community and network Jorge built here has been excellent in that regard. Contributors to Universal Blue at different career stages have found their way into new opportunities at several different software companies. I’m one of them. My fairly recent start at Red Hat is a great example. My previous years of experience were crucial, but learning specific technologies and Open Source methodologies with Universal Blue provided a direct path to what Red Hat needed. So when I say I’m thankful for this project, and for the opportunity to participate, I mean it. My Universal Blue experience had already been personally and technically rewarding, but finding a job in Open Source through this project experience was next level!

Thank you to everyone who has contributed to a Universal Blue project, however big or small! Thank you for all the users! This has been a great adventure, and in the best possible way, I don’t see an end in sight.

Announcing mcp.projectbluefin.io

· 2 min read
Jorge O. Castro
Director of Dinosaurs

Model Context Protocol (MCP) is an open protocol for LLMs and agents to talk to each other. We're now serving the Project Bluefin organization knowledge base and live factory state at https://mcp.projectbluefin.io/mcp.

Right now hive.projectbluefin.io exposes an API that has things that are useful for agents. We use it to dole out work to volunteers and to get review tasks. This is what's letting us scale out in ways we haven't been able to before. Hive has a nice Knowledge Base that it exposes, so this initial cut is to search that knowledge. This is mostly useful to connect whatever agent you use to our stuff and get context for your agent. So if you want to do Bluefin things you just add this. I've updated the Agentic Contributor Guide, note that our hive API endpoints are published, so if you're building a deep integration it probably makes sense to work with the Hive API directly. Feedback and usage notes welcome!

Endpoint Details​

  • URL: https://mcp.projectbluefin.io/mcp
  • Transport: Streamable HTTP / Server-Sent Events (SSE)
  • Authentication: None (public, read-only)
  • Health Check: https://mcp.projectbluefin.io/health

Available Tools​

Here's what's exposed:

ToolDescriptionParameters
search_knowledgeSearch Project Bluefin knowledge base: engineering patterns, test coverage gaps, CI conventions, and repo findings across projectbluefin/*.query (string, required)
limit (integer 1–25, default 10)
get_factory_statusLive factory status from Hive: hub health, active contributors, actionable items, per-tier limits.None
get_work_queueLive work queue and triage state from Hive: issues ready to implement and triage grouping.limit (integer 1–25, default 10)
get_index_statusOperational health, record count, and timestamp of the published knowledge index.None
get_quickstartOnboarding checklists (first-pr, run-tests, factory-gates, branch-rules).topic (enum, required)
get_repository_mapHigh-level component map, entrypoints, and branch targets for bluefin, bluefin-lts, common, dakota, documentation.repo (enum, required)

Archaeopteryx August 2026

· 63 min read
Project Bluefin
Automation & Factory
Completed work
258
24 planned • 234 opportunistic
Contributors
16
0 first-time contributors

Activity

Completed work across the configured factory portfolio.

Daily merged pull requests

541merged pull requests
Source: GitHub GraphQL · August 2026 UTC (2026-08-01 to 2026-08-31)
Show the numbers
Daily merged pull requests data for August 2026 UTC (2026-08-01 to 2026-08-31)
LabelMerged pull requests
2026-08-0138
2026-08-0220
2026-08-0330
2026-08-0414
2026-08-0512
2026-08-0610
2026-08-07117
2026-08-0820
2026-08-0954
2026-08-108
2026-08-113
2026-08-125
2026-08-1310
2026-08-145
2026-08-1515
2026-08-1611
2026-08-177
2026-08-188
2026-08-195
2026-08-2014
2026-08-2121
2026-08-2217
2026-08-238
2026-08-2419
2026-08-257
2026-08-2614
2026-08-274
2026-08-2811
2026-08-2910
2026-08-3022
2026-08-312

Merged pull requests by repository

541merged pull requests
Source: GitHub GraphQL · August 2026 UTC (2026-08-01 to 2026-08-31)
Show the numbers
Merged pull requests by repository data for August 2026 UTC (2026-08-01 to 2026-08-31)
LabelMerged pull requests
projectbluefin/actions44
projectbluefin/bluefin155
projectbluefin/bluefin-lts38
projectbluefin/bonedigger3
projectbluefin/common50
projectbluefin/dakota92
projectbluefin/documentation18
projectbluefin/finpilot49
projectbluefin/iso1
projectbluefin/server4
projectbluefin/testsuite67
projectbluefin/utah6
projectbluefin/utah-packages14

Merged pull requests by label

435label assignments
Source: GitHub GraphQL · August 2026 UTC (2026-08-01 to 2026-08-31)
Show the numbers
Merged pull requests by label data for August 2026 UTC (2026-08-01 to 2026-08-31)
LabelLabel assignments
1-triage3
3-clanker-queue41
4-review38
agent/contributor2
automerge52
chore/deps52
cli/copilot2
contributor/castrojo2
dependencies2
hold13
javascript2
kde9
lgtm23
needs-human1
pr/needs-review67
quality3
release/ready63
renovate/high-risk16
renovate/low-risk3
runner9
security6
size:M1
size:S2
size:XL1
size:XS19
testing3

Stable portfolio

  • projectbluefin/bluefin
  • projectbluefin/bluefin-lts
  • 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

Bluefin Testing
projectbluefin/bluefin
! 0%
0Passed
3Failed
65mMedian Run

Pending runs: 5

Run History
0Passed
0Failed
—Median Run

Pending runs: 30

Run History
71Passed
2Failed
39mMedian Run

Pending runs: 12

Run History

Publishing-lane cadence

123publish runs
Source: GitHub Actions · August 2026 UTC (2026-08-01 to 2026-08-31)
Show the numbers
Publishing-lane cadence data for August 2026 UTC (2026-08-01 to 2026-08-31)
LabelBluefin TestingBluefin LTSDakota
2026-08-01000
2026-08-02000
2026-08-03000
2026-08-04000
2026-08-05000
2026-08-06000
2026-08-07000
2026-08-08000
2026-08-09000
2026-08-10000
2026-08-11000
2026-08-12000
2026-08-13000
2026-08-14000
2026-08-15000
2026-08-16000
2026-08-17000
2026-08-18000
2026-08-19000
2026-08-20000
2026-08-21010
2026-08-22010
2026-08-23010
2026-08-24603
2026-08-25004
2026-08-26107
2026-08-27009
2026-08-280735
2026-08-290016
2026-08-301117
2026-08-31094

Release events

13release events
Source: GitHub Releases API · August 2026 UTC (2026-08-01 to 2026-08-31)
Show the numbers
Release events data for August 2026 UTC (2026-08-01 to 2026-08-31)
LabelRelease events
2026-08-071
2026-08-061
2026-08-051
2026-08-041
2026-08-031
2026-08-021
2026-08-011
2026-08-311
2026-08-281
2026-08-241
2026-08-211
2026-08-191
2026-08-151

Participation

Human and automated contributions with current contributors.

Human and automation activity

541pull requests
Source: GitHub GraphQL · August 2026 UTC (2026-08-01 to 2026-08-31)
Show the numbers
Human and automation activity data for August 2026 UTC (2026-08-01 to 2026-08-31)
LabelHumanAutomation
Report period258283

Ecosystem context

Public ecosystem measures labelled with their native source windows.

Countme active systems

3,920estimated weekly active systems
Source: Countme · Through 2026-07-27
Show the numbers
Countme active systems data for Through 2026-07-27
LabelActive systems
week-13561
week-23672
week-33606
week-43712
week-53780
week-63667
week-73584
week-83678
week-94195
week-103920

Homebrew tap additions

14package additions
Source: Homebrew taps · August 2026 UTC (2026-08-01 to 2026-08-31)
Show the numbers
Homebrew tap additions data for August 2026 UTC (2026-08-01 to 2026-08-31)
LabelAdditions
Production tap2
Experimental tap12
Flathub trendData unavailable: Flathub statistics could not be read.

Release details remain on the canonical /changelogs surface.

Completed work​

Dakota (GNOME OS Prototype)​

Contributors​

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

Sources​

  • github-activity: available (2026-08-01 to 2026-08-31): source
  • github-lanes: available (2026-08-01 to 2026-08-31): source
  • github-releases: available (2026-08-01 to 2026-08-31): source
  • github-releases: available (2026-08-01 to 2026-08-31): source
  • github-releases: available (2026-08-01 to 2026-08-31): source
  • github-releases: available (2026-08-01 to 2026-08-31): source
  • github-releases: available (2026-08-01 to 2026-08-31): source
  • countme: available (2026-08-01 to 2026-08-31): source
  • homebrew: available (2026-08-01 to 2026-08-31): source
  • flathub: unavailable — Flathub statistics could not be read. (2026-08-01 to 2026-08-31): source