Skip to main content
Project Bluefin
Automation & Factory
View all authors

Ornithopod October 2026

· 148 min read
Project Bluefin
Automation & Factory
Completed work
865
117 planned • 748 opportunistic
Contributors
24
6 first-time contributors

Activity

Completed work across the configured factory portfolio.

Daily merged pull requests

1,542merged pull requests
Source: GitHub GraphQL · October 2026 UTC (2026-10-01 to 2026-10-31)
Show the numbers
Daily merged pull requests data for October 2026 UTC (2026-10-01 to 2026-10-31)
LabelMerged pull requests
2026-10-0196
2026-10-0233
2026-10-03113
2026-10-0452
2026-10-0536
2026-10-0660
2026-10-0727
2026-10-0818
2026-10-0935
2026-10-1055
2026-10-1127
2026-10-1263
2026-10-1330
2026-10-1412
2026-10-1552
2026-10-1627
2026-10-1725
2026-10-1830
2026-10-1920
2026-10-2016
2026-10-2122
2026-10-2260
2026-10-2331
2026-10-2477
2026-10-2576
2026-10-2643
2026-10-27118
2026-10-2887
2026-10-2947
2026-10-3081
2026-10-3173

Merged pull requests by repository

1,542merged pull requests
Source: GitHub GraphQL · October 2026 UTC (2026-10-01 to 2026-10-31)
Show the numbers
Merged pull requests by repository data for October 2026 UTC (2026-10-01 to 2026-10-31)
LabelMerged pull requests
projectbluefin/actions59
projectbluefin/bonedigger12
projectbluefin/common171
projectbluefin/dakota62
projectbluefin/documentation131
projectbluefin/finpilot124
projectbluefin/iso1
projectbluefin/server167
projectbluefin/testsuite100
projectbluefin/utah422
projectbluefin/utah-packages293

Merged pull requests by label

1,627label assignments
Source: GitHub GraphQL · October 2026 UTC (2026-10-01 to 2026-10-31)
Show the numbers
Merged pull requests by label data for October 2026 UTC (2026-10-01 to 2026-10-31)
LabelLabel assignments
3-human-queue24
agent/quality1
agent/scanner61
approved219
architecture1
author/clanker163
author/hive38
automerge37
build31
chore/deps38
dco170
dependencies6
full-build40
hold59
javascript6
kde21
kind/bug1
kind/documentation1
lgtm2
merge-method/merge23
needs-human6
no-dco171
pr/needs-review3
release/ready19
reviewer-passed6
role/contributor31
role/newcomer2
role/trusted143
role/untrusted15
runner21
security1
sentinel-alert70
size:XS1
stage/050-review-pending78
stage/060-reviewed6
stage/070-fixing5
stage/071-needs-author2
stage/072-returned-to-contributor16
stage/074-adopted-by-hive8
stage/080-awaiting-merge-admission3
stage/085-needs-decision47
stage/090-ready-for-human-merge11
stage/095-pre-merge-soak10
stage/100-merge-queue7
stage/stalled2
triage/accepted1

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

24Passed
2Failed
26mMedian Run
Run History

Publishing-lane cadence

26publish runs
Source: GitHub Actions · October 2026 UTC (2026-10-01 to 2026-10-31)
Show the numbers
Publishing-lane cadence data for October 2026 UTC (2026-10-01 to 2026-10-31)
LabelDakota
2026-10-010
2026-10-020
2026-10-030
2026-10-040
2026-10-050
2026-10-060
2026-10-070
2026-10-080
2026-10-090
2026-10-100
2026-10-110
2026-10-120
2026-10-130
2026-10-140
2026-10-150
2026-10-160
2026-10-170
2026-10-180
2026-10-190
2026-10-200
2026-10-210
2026-10-220
2026-10-230
2026-10-244
2026-10-256
2026-10-260
2026-10-272
2026-10-284
2026-10-290
2026-10-302
2026-10-318

Release events

109release events
Source: GitHub Releases API · October 2026 UTC (2026-10-01 to 2026-10-31)
Show the numbers
Release events data for October 2026 UTC (2026-10-01 to 2026-10-31)
LabelRelease events
2026-10-231
2026-10-091
2026-10-311
2026-10-311
2026-10-311
2026-10-301
2026-10-301
2026-10-301
2026-10-301
2026-10-301
2026-10-291
2026-10-291
2026-10-281
2026-10-281
2026-10-281
2026-10-281
2026-10-281
2026-10-271
2026-10-271
2026-10-271
2026-10-271
2026-10-271
2026-10-271
2026-10-271
2026-10-271
2026-10-271
2026-10-261
2026-10-261
2026-10-261
2026-10-261
2026-10-261
2026-10-261
2026-10-251
2026-10-251
2026-10-251
2026-10-251
2026-10-231
2026-10-231
2026-10-231
2026-10-231
2026-10-231
2026-10-231
2026-10-221
2026-10-221
2026-10-221
2026-10-201
2026-10-191
2026-10-191
2026-10-191
2026-10-181
2026-10-181
2026-10-181
2026-10-181
2026-10-171
2026-10-171
2026-10-171
2026-10-171
2026-10-171
2026-10-171
2026-10-171
2026-10-161
2026-10-161
2026-10-161
2026-10-161
2026-10-161
2026-10-151
2026-10-151
2026-10-151
2026-10-141
2026-10-131
2026-10-121
2026-10-111
2026-10-101
2026-10-101
2026-10-091
2026-10-071
2026-10-071
2026-10-071
2026-10-061
2026-10-061
2026-10-061
2026-10-061
2026-10-061
2026-10-051
2026-10-051
2026-10-051
2026-10-051
2026-10-051
2026-10-041
2026-10-041
2026-10-041
2026-10-041
2026-10-041
2026-10-041
2026-10-031
2026-10-031
2026-10-031
2026-10-031
2026-10-021
2026-10-021
2026-10-021
2026-10-021
2026-10-021
2026-10-011
2026-10-011
2026-10-011
2026-10-011
2026-10-011
2026-10-011

Participation

Human and automated contributions with current contributors.

Human and automation activity

1,542pull requests
Source: GitHub GraphQL · October 2026 UTC (2026-10-01 to 2026-10-31)
Show the numbers
Human and automation activity data for October 2026 UTC (2026-10-01 to 2026-10-31)
LabelHumanAutomation
Report period865677

Ecosystem context

Public ecosystem measures labelled with their native source windows.

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

Homebrew tap additions

0package additions
Source: Homebrew taps · October 2026 UTC (2026-10-01 to 2026-10-31)
Show the numbers
Homebrew tap additions data for October 2026 UTC (2026-10-01 to 2026-10-31)
LabelAdditions
Production tap0
Experimental tap0

Flathub downloads

188,449,724calendar-month downloads
Source: Flathub · 2026-10-01 to 2026-10-31 UTC
Show the numbers
Flathub downloads data for 2026-10-01 to 2026-10-31 UTC
LabelDownloads
2026-10-013790664
2026-10-024178757
2026-10-035839774
2026-10-045807313
2026-10-055485186
2026-10-064076079
2026-10-073932159
2026-10-084699786
2026-10-094371138
2026-10-104212819
2026-10-113947779
2026-10-124161937
2026-10-136569881
2026-10-149426095
2026-10-156103350
2026-10-165278367
2026-10-174847317
2026-10-185512393
2026-10-194974984
2026-10-204959750
2026-10-215610235
2026-10-2216799391
2026-10-238927907
2026-10-247862408
2026-10-256344634
2026-10-266614279
2026-10-279967883
2026-10-287439218
2026-10-295853787
2026-10-305220053
2026-10-315634401

Release details remain on the canonical /changelogs surface.

Completed work​

  • fix(bootc): treat composefs "already up to date" refusal as success by @​kylerankin in #1568
  • fix(flatpak): make FlatPark filter readable from sandboxed app stores by @​castrojo in #1595
  • chore: update motd by @​theMimolet in #1567
  • feat(bazaar): add popular AI editors to curated section by @​castrojo in #1552
  • fix(bazaar): offer native installs for Cursor and Antigravity by @​mendezr in #1573
  • feat(desktop): ship Compass launcher defaults by @​castrojo in #1356
  • ci: keep pull request check tools at reviewed versions by @​thatguywob in #1589
  • fix(brewfiles): trust third-party tap items so Homebrew 6+ loads them by @​hanthor in #1590
  • docs: correct the test workflow version note by @​j1mc in #1581
  • feat: add dakota extensions defaults + some renaming by @​theMimolet in #1523
  • feat(flatpak): add flatpark system remote with deduplication filter by @​castrojo in #1549
  • ci(release): install a pinned, checksum-verified git-cliff by @​Danathar in #1553
  • ci(renovate): label the testsuite pin # v1 so Renovate can bump it by @​Danathar in #1546
  • feat(gnome): bind Goose to Copilot+Enter and Ctrl+Alt+Backspace by @​castrojo in #1485
  • fix(brew): drop Tavern from system-dx-flatpaks Brewfile by @​castrojo in #1551
  • ci: keep assistant setup tools up to date by @​mendezr in #1574
  • fix: route Bluefin and Bluefin LTS bug reports to projectbluefin/common by @​kylerankin in #1566
  • fix: stop the bug-report tool repeating the shared-logs link on retry by @​kylerankin in #1561
  • fix(fastfetch): drop rpm-ostree and ship stat placeholders for bootc images by @​castrojo in #1491
  • docs(chairlift): update the vendored attribution to the cask-pin release by @​kylerankin in #1550
  • docs(skills): document ChairLift GUI vs helper version skew by @​kylerankin in #1547
  • docs(renovate): correct stale ChairLift rationale in packageRule by @​kylerankin in #1548
  • fix: skip app catalog refreshes on metered connections by @​arteeh in #1538
  • ci(validate): survive transient GitHub API failures in required checks by @​castrojo in #1470
  • fix(gnome): launch Mission Center directly from the system menu by @​castrojo in #1500
  • fix: clean-system prune only dangling images to match preview by @​kylerankin in #1488
  • fix(check-oci-refs): time out the registry check so a stalled build cannot hang forever by @​kylerankin in #1522
  • fix(homebrew): use the core casks for Zed and Antigravity CLI by @​Danathar in #1531
  • fix: drop disabled font-opendyslexic cask from the Fonts collection by @​kylerankin in #1536
  • docs(ghostty): link Dakota-specific theme override by @​castrojo in #1528
  • fix: clarify the drawing tablet installer description by @​arteeh in #1537
  • fix: stop audio configuration errors at login by @​arteeh in #1539
  • fix(bazaar): denylist Steam by @​castrojo in #1542
  • fix(ci): retry truncated GHCR bodies and malformed JSON in check-oci-refs by @​j1mc in #1472
  • feat: added a more ptyxis like look to ghostty by @​HuntedRaven7 in #1495
  • chore(motd): update sha + remove umotd tags by @​theMimolet in #1483
  • docs(skills): replace deleted docs/design link in image-identity.md by @​castrojo in #1492
  • ci(e2e): bump testsuite pin to pick up extension-default fix by @​castrojo in #1465
  • test(brew-preinstall): cover stranded ublue-os/tap chairlift migration and rollback by @​castrojo in #1469
  • fix(brew-preinstall): migrate legacy chairlift before the hash early-exit by @​dtg01100 in #1422
  • fix(prow): pass app-ref pin to reusable transfer workflow by @​dtg01100 in #1451
  • fix: point Ask Bluefin at ChairLift --ask-bluefin dispatcher by @​dtg01100 in #1430
  • chore(deps): enable automerge for ChairLift release bumps by @​castrojo in #1425
  • fix(actions-security): strip YAML quotes from uses: and catch flow-list pull_request_target by @​Danathar in #1434
  • fix(chairlift): bump CHAIRLIFT_SCHEMA_REF to match the shipped cask by @​kylerankin in #1463
  • feat(brew): install chairlift and bluefin-wallpapers-extra from projectbluefin/tap by @​castrojo in #1459
  • feat(artwork): swap wallpaper container to projectbluefin/bluefin-wallpapers-gnome by @​castrojo in #1435
  • fix(chairlift): point Help links at the pages their titles name by @​castrojo in #1414
  • fix(apps): stop OpenTabletDriver user service on uninstall by @​kylerankin in #1457
  • fix(chairlift): bump CHAIRLIFT_SCHEMA_REF to match the shipped cask by @​dtg01100 in #1452
  • fix(oem): install the Framework system tool under its upstream cask name by @​dtg01100 in #1450
  • chore: update motd by @​theMimolet in #1448
  • fix: record setup version only after the hook body succeeds by @​kylerankin in #1196
  • chore(prow): add /transfer command support for triagers by @​castrojo in #1444
  • chore(printing): remove printer CI, fixtures, and tracking docs by @​castrojo in #1439
  • feat: gate Prow triage commands and open area classification by @​castrojo in #1429
  • feat: move to Prow-based development by @​castrojo in #1426
  • fix(countme): report Bluefin Server (DDI, no bootc) by @​dtg01100 in #1419
  • fix(chairlift): bump CHAIRLIFT_SCHEMA_REF to match the shipped cask by @​dtg01100 in #1403
  • docs: remove dead specs, configs, and duplicated checks by @​castrojo in #1401
  • fix(ci): restore literal @v1 on issue lifecycle workflow refs by @​castrojo in #1404
  • docs(label-workflow): clarify manual maintainer release and verification gates by @​castrojo in #1398
  • feat(lifecycle): expand intake autolabelling and enforce 4-kind taxonomy by @​castrojo in #1397
  • docs(printer-app): record the unreviewed-release limit common cannot verify by @​dtg01100 in #1384
  • docs(label-workflow): match shared bot messages and released gate behavior by @​castrojo in #1390
  • feat: adopt shared issue lifecycle and reusable onboarding by @​castrojo in #1383
  • fix(nvidia): save VRAM where systemd-sleep may write it by @​hanthor in #1374
  • docs(bonedigger): correct stale lifecycle ownership in SKILL.md by @​dtg01100 in #1382
  • docs: complete common label migration guidance by @​castrojo in #1378
  • fix: preserve maintainer and reporter lifecycle Markdown formatting by @​castrojo in #1381
  • fix: preserve human issue acceptance until actual implementation merges by @​castrojo in #1380
  • fix: state exact Common lifecycle actions by @​castrojo in #1379
  • fix: keep common backlog migration quiet by @​castrojo in #1376
  • feat: streamline common issue intake and lifecycle by @​castrojo in #1367
  • docs(devmode): correct moby-engine claim in docker daemon caveat by @​dtg01100 in #1363
  • docs(factory-improvement): note common uses pilot lifecycle, not 1-triage/3-clanker-queue by @​dtg01100 in #1369
  • feat(ci): check the printer forks' shared FSDK junction contract by @​dtg01100 in #1291
  • docs: update gutenprint FSDK junction testing HEAD by @​kylerankin in #1352
  • docs(skills): update clankers to agents.projectbluefin.io redirect landing page by @​castrojo in #1364
  • fix(toggle-testing): refuse on testing-only and dated-testing tags by @​kylerankin in #1334
  • fix(libsetup): create versioning dir before opening the flock lock by @​kylerankin in #1326
  • docs(factory): reframe lifecycle ownership as Hive-managed by @​dtg01100 in #1351
  • docs(workflows): correct lifecycle ownership framing by @​mendezr in #1360
  • fix(bonedigger-report): restore hardware info capture in ujust report by @​dtg01100 in #1340
  • docs: correct lifecycle ownership in SHA pinning guidance by @​mendezr in #1348
  • docs(release-promotion): point fsdk-junction doc at scripts/check-printing-junction.py by @​dtg01100 in #1345
  • docs(skills): record bootc upgrade unified-storage overlay bug + workaround (#1332) by @​dtg01100 in #1344
  • docs: quality sweep and specification alignment by @​castrojo in #1349
  • feat(chairlift): ship the helper, policy and schemas from the pinned release by @​castrojo in #1279
  • fix(pwquality): disable dictionary check so initial-setup password reads strong by @​kylerankin in #1282
  • feat(just): wire up ujust contribute by @​buggtb in #1278
  • ci: derive the unit-tests catalog from disk (#1105) by @​kylerankin in #1261
  • fix(just): drop the needlessly-escaped }} from clean-system preview and gate justfile brace syntax by @​dtg01100 in #1286
  • feat(gnome): enable rounded blur on the shell popups by @​dtg01100 in #1287
  • docs(release): record printer-app version semantics contract and check it by @​dtg01100 in #1289
  • docs(security): establish org-wide GitHub Actions security baseline by @​repires in #1189
  • feat(countme): replace bluefin-countme with a daily projectbluefin-countme ping by @​castrojo in #1205
  • fix(flatpaks): drop Warehouse and Smile from default system-flatpaks by @​castrojo in #1284
  • fix(goose): ship fixed Linux diagnostics preset by @​castrojo in #1321
  • docs: reword stale bonedigger lifecycle ownership claim by @​dtg01100 in #1339
  • feat(brew): add opt-in nsl bundle by @​arteeh in #1322
  • docs: add knuckle to lifecycle caller pin lists by @​kylerankin in #1308
  • fix: restore Justfile test exclusion format and update skill index by @​castrojo in #1337
  • fix(clean-system): guard rpm-ostree cleanup for bootc images by @​kylerankin in #1335
  • docs(ci-tooling): add Internal refs heading for cross-skill anchor by @​dtg01100 in #1316
  • docs: document ipp-usb and raw USB ownership coexistence by @​kylerankin in #1223
  • docs(release-promotion): record the shared FSDK junction baseline for the printer appliances by @​dtg01100 in #1292
  • docs: correct false libvirt exclusion comment by @​castrojo in #1301
  • docs: correct stale issue-routing ownership attribution (bonedigger, not actions) by @​kylerankin in #1302
  • docs(design): add OGC branding decision record for gaming images by @​dtg01100 in #1288
  • docs(design): record Bluefin-contract centralization RFC for #1328 by @​dtg01100 in #1329
  • feat(skills): publish bluefin-review as the team review skill by @​castrojo in #1230
  • docs(braille-maturity): assess braille-printer-app before an OCI appliance by @​castrojo in #1290
  • docs(bonedigger): consolidate lifecycle workflow table by @​arteeh in #1314
  • fix: reconcile ci-tooling SKILL.md with bonedigger retention-pin exception by @​kylerankin in #1311
  • docs(wallpaper): explain Hidamari movie setup by @​arteeh in #1323
  • docs: correct stale bonedigger lifecycle references by @​mendezr in #1312
  • fix(e2e): publish v1-gate desktop screenshots on the stream tag by @​castrojo in #1079
  • ci(e2e): free runner disk with the org setup-runner action by @​castrojo in #1077
  • test(software): cover Compass FlatPark lifecycle and real Bazaar UI by @​castrojo in #1075
  • fix(e2e): opt CI VMs out of the daily countme ping by @​hanthor in #1072
  • fix(e2e): default the test image to dakota:testing by @​Danathar in #1061
  • feat(e2e): test that first-boot setup really installs the default apps and tools by @​Danathar in #1051
  • docs: show how to run the GNOME 51 check on the published test image by @​Karibhou in #1029
  • feat(gnome): add a GNOME OS desktop check with real keyboard input by @​thatguywob in #1065
  • fix(e2e): run kde-smoke as one job instead of two shards by @​Danathar in #1064
  • fix(smoke): stop desktop tests waiting far too long when an app is missing by @​Danathar in #1056
  • docs: explain which service failures tests tolerate by @​Karibhou in #1052
  • fix(common): let the two immutable-OS checks ask with admin rights so a failure shows its cause by @​Karibhou in #1062
  • fix(e2e): gate the Bazzite suite and route assert_passed.py edits to kde-smoke by @​Danathar in #1050
  • fix(v1): hold v1 only for failures the tests at v1 do not have by @​Danathar in #1060
  • feat(v1): move v1 only after the merged tests boot (Option A) by @​Danathar in #1055
  • fix(smoke): stop Text Editor, Calculator, Settings and Firefox tests waiting far too long by @​Danathar in #1054
  • feat(gnome-e2e): check the GNOME OS test machine before it starts and record which build was tested by @​codebymarshall in #1035
  • fix(e2e): mandatory-coverage verdict blocks GNOME and KDE false green by @​kylerankin in #1045
  • feat(ci): list which real test-machine runs a change needs before it ships by @​codebymarshall in #1042
  • test(e2e): list every service the fast test run switches off and why by @​codebymarshall in #1040
  • fix(lifecycle): require proof that the updated image actually ran by @​thatguywob in #1047
  • docs: define how to test desktop startup and first login by @​thatguywob in #1043
  • fix(lifecycle): require a real upgrade instead of skipping no-op qualification by @​kylerankin in #1039
  • docs(gnome): update line citation for suite input in action.yml by @​mrbobbytables in #1041
  • fix(e2e): clone grim from its new home, pinned, with retry by @​Danathar in #1034
  • fix(smoke): restore checks for default PDF, image, and video apps by @​thatguywob in #1028
  • docs(gnome): fix the GNOME OS extension-validation lane doc, which still said the gate was not wired by @​kylerankin in #1031
  • test: Protect extension test reports in consumer projects by @​thatguywob in #1020
  • feat(gnome-e2e): gate extension-validation runs with mandatory service gate by @​j1mc in #991
  • fix(e2e): name the CI sudoers drop-in so it sorts after wheel by @​Danathar in #1011
  • feat(gnome): add GNOME OS extension-validation gate and lane docs (#908) by @​castrojo in #916
  • docs: correct the GNOME launch-wait time in the testing guide by @​kylerankin in #1008
  • fix(smoke): skip Search Light scenario where the extension is not shipped by @​hanthor in #987
  • fix(smoke): unblock power_status and GNOME Settings panel scenarios by @​hanthor in #986
  • fix(quarantine): keep the quarantine date across a feature-file rename by @​Danathar in #971
  • fix(scripts): keep validate_docs.py from tracebacking on out-of-repo links or list-valued category/status by @​dtg01100 in #958
  • test(gnome): cover Shade overview clones and widget helper/dependency errors by @​dtg01100 in #936
  • fix(ci): list build-runner.yml in its own paths filter by @​dtg01100 in #947
  • docs(gnome): include extensions in e2e suite descriptions by @​mendezr in #946
  • docs(e2e): align Promote step wording in distribution paragraph by @​dtg01100 in #943
  • docs(ci): capture workflow-self-paths rule (ci-ops reference skill) by @​dtg01100 in #940
  • fix(gnome): reject unsafe extension ZIP members before staging by @​mendezr in #930
  • fix(ci): tolerate all-skipped suites in the desktop screenshot gate by @​kylerankin in #924
  • ci: validate runner-image builds on pull_request by @​kylerankin in #933
  • test(gnome): collect Hive extensions with behavioral Behave coverage by @​castrojo in #914
  • fix(e2e): add the test user to wheel so privileged user setup can run by @​juanresendiz813 in #925
  • fix(e2e): salvage truncated results.json from a crashed smoke lane by @​castrojo in #889
  • feat(gnome): add packaged-extension ZIP validator for #909 step 1 by @​kylerankin in #915
  • fix(common): gate the Logo Menu/custom-command-list dconf scenarios on the image contract by @​juanresendiz813 in #904
  • fix(dashboard): guard all required converter arguments by @​arteeh in #922
  • feat: package NetBird as opt-in sysext by @​mrbobbytables in #555
  • chore: add pyproject.toml and pin python 3.14 floor by @​mrbobbytables in #557
  • docs: an unpublished upstream tag now fails the local build with a clear message by @​kylerankin in #553
  • fix: make the weekly homelab cluster test stop failing at random by @​mrbobbytables in #566
  • fix(dogfood): open the installer's journal mirror after the journal flush by @​jeefy in #554
  • fix(sysext): order boot-time sysext refreshes after the module loads by @​jeefy in #547
  • ci(renovate): automerge through the merge queue with platformAutomerge by @​jeefy in #546
  • fix(homelab): pull Argo CD's Redis from Docker Hub, not ECR Public by @​jeefy in #545
  • ci(prow): enqueue with PROW_TOKEN so merge groups get their checks by @​jeefy in #542
  • fix(os): arm the hardware watchdog while the system runs by @​jeefy in #538
  • ci: merge queue with required checks, weekly opt-in e2e, coverage floor by @​jeefy in #536
  • feat: package Tailscale as opt-in sysext by @​castrojo in #537
  • docs: ruff target-version is the oldest Python caller, not the setup-python version by @​kylerankin in #533
  • feat(home-server): package and bundle nspawn.org CLI tool by @​castrojo in #535
  • test(installer): check that prompts and failures stay readable by @​arteeh in #529
  • docs: keep NVIDIA driver examples current by @​arteeh in #526
  • docs: link system container operators to the published guide by @​castrojo in #528
  • build(junction): bump fsdk-containers for the brew machine ssh client by @​castrojo in #515
  • feat(homebrew): install tmux and neovim for the Home Server owner by @​castrojo in #514
  • Revise README with installation profiles and updates by @​castrojo in #513
  • ci(release): stop the oras pin comments naming a version by @​jeefy in #505
  • test: assert each contract once; name tests for what they check by @​jeefy in #498
  • ci(boot-test): split the image artifact so each bucket downloads only what it reads by @​jeefy in #497
  • test: shellcheck every tracked shell script at one severity by @​jeefy in #499
  • test: run the unit tests in parallel and report coverage by @​jeefy in #500
  • fix: extra reboot attempts only with FleetLock; keep sshd starting after the homebrew sysext is unmerged by @​jeefy in #494
  • ci(release): publish image sizes and flag growth; report boot-test bucket durations by @​jeefy in #493
  • docs(ci): label ownership map and the automations that write them by @​jeefy in #492
  • feat(kernel): drop firmware-less Wi-Fi, Bluetooth and GPU drivers; compress vmlinuz with zstd by @​jeefy in #491
  • ci(boot-test): run the scenarios as a matrix behind one gate, preflight the host tools by @​jeefy in #490
  • feat(image): prune ICU from the initrd and the leftover tools from both trees by @​jeefy in #489
  • feat(installer): add Home Server as an explicit opt-in profile by @​castrojo in #486
  • feat(homebrew): ship the transparent bridge as an opt-in sysext by @​castrojo in #485
  • feat(runtimes): ship opt-in rootless Podman and Docker sysexts by @​castrojo in #484
  • feat(image): prune gnupg, cracklib, lvm2 and other command-line tools from /usr by @​jeefy in #487
  • feat(host): one static Go binary for the runtime helpers, replacing twelve bash scripts by @​jeefy in #488
  • fix(dogfood): do not judge console muting on the first held frame by @​jeefy in #481
  • ci(prow): mark the issue_comment trigger as a reviewed zizmor ignore by @​jeefy in #480
  • feat(prow): onboard server to Prow by @​castrojo in #441
  • fix(tpm): skip PCR-lock services on unsupported hardware by @​TB516 in #469
  • fix(build): declare explicit sed build-depend for image assembly by @​j1mc in #458
  • fix(build): declare explicit gzip build-depend for image assembly by @​j1mc in #460
  • fix(installer): mute console spam during prompts and boot by @​castrojo in #446
  • fix(installer): stop userspace wait-online on offline USB installer boots by @​mrbobbytables in #452
  • fix(installer): copy blocks directly from loop partitions during diskless install by @​mrbobbytables in #447
  • docs: streamline README and add skills documentation index by @​castrojo in #455
  • fix: refresh taiki-e/install-action pins to current v2 tip by @​kylerankin in #434
  • feat(updates): FleetLock reboot lock for non-Kubernetes fleets by @​jeefy in #426
  • ci(track): open a tracking issue when a scheduled tracker fails by @​jeefy in #425
  • docs: element path note, image-version dev default, record the #249 kernel decision by @​jeefy in #423
  • feat(boot): build shim with the Bluefin vendor cert behind a shim option by @​jeefy in #427
  • fix(dogfood): end the Secure Boot enrollment step on the enrolled marker by @​jeefy in #424
  • docs(installer): add step-by-step developer stick burn runbook by @​castrojo in #420
  • feat(image): prune unused files from /usr and the initrd, guarded by check-image by @​jeefy in #419
  • ci: pin taiki-e/install-action to v2.87.26 by @​jeefy in #415
  • feat: appliance hostname, Bash prompt and mDNS for every install by @​jeefy in #412
  • fix(sysupdate): make updatectl features work on installed and diskless nodes by @​jeefy in #411
  • feat: dedicated Ignition config keyring, allow-unsigned as one build option by @​jeefy in #410
  • fix(countme): re-track the reporter to common main and declare image-tag latest by @​jeefy in #408
  • ci: lint Python with ruff and type-check the scripts with mypy by @​jeefy in #409
  • ci: cache the dev-key kernel with a committed INSECURE dev module key by @​jeefy in #404
  • test(join): wait for the source slot between rate-limit attempts by @​jeefy in #406
  • ci: Go tests, unfiltered checks, pinned CI deps, workflow linting, nightly alerts by @​jeefy in #401
  • ci: reproducibility covers every shipped element, shared CI scripts, doc drift by @​jeefy in #403
  • ci: main-only environments for secrets, build/boot-test/release correctness by @​jeefy in #402
  • fix(homelab): align dogfood checks with seeded sysexts by @​mendezr in #396
  • fix(cache): add Bluefin CAS to freedesktop-sdk junction project.conf by @​castrojo in #400
  • fix(homelab): add HSTS to add-on HTTPRoutes (issue #389) by @​dtg01100 in #390
  • feat(os): current IANA protocols/services, tracked by date (Fixes #318) by @​jeefy in #397
  • feat(installer): console path from disk choice to login (#311) by @​jeefy in #394
  • fix(join): same-source replay rejected as busy while slot still held by @​kylerankin in #392
  • fix(ignition): apply unit presets beyond first boot by @​arteeh in #379
  • feat(homelab): terminate HTTPS on the Gateway for the LAN add-ons by @​dtg01100 in #383
  • feat(installer): check Secure Boot before erasing anything (#309) by @​jeefy in #388
  • fix(kernel): enable hardware watchdog core and drivers (issue #377) by @​dtg01100 in #384
  • fix(updates): enable bluefin-update-status.service on nodes that updated into this image by @​dtg01100 in #368
  • test: discover sysupdate feature/transfer pairs from disk; cover .feature schema by @​dtg01100 in #386
  • fix(kubestellar-console): raise memory limit so it stops getting OOM-killed by @​kylerankin in #381
  • fix(kubeadm): remove MetalLB exclude label on a single node by @​kylerankin in #378
  • fix(installer): install onto disks that are not empty (#359) by @​jeefy in #369
  • feat(updates): stick installs update out of the box, visibly (#310) by @​jeefy in #366
  • docs: add release asset guide and USB quick start by @​arteeh in #362
  • ci(kernel-cache): seed the project CAS instead of a ghcr.io tarball by @​ahmedadan in #365
  • feat(homelab): KubeStellar Console without GitHub OAuth, behind a gated login by @​jeefy in #363
  • docs: preserve README links for native rendering by @​castrojo in #364
  • feat(homelab): Argo Workflows, MCP server and KubeStellar Console add-on sysexts by @​jeefy in #358
  • fix(kubeadm): migrate /etc/containerd/config.toml to declare imports on next start by @​dtg01100 in #352
  • feat(nvidia): ship nvidia-container-runtime (CDI mode) so GPU Operator operands with runtimeClassName nvidia can start by @​jeefy in #350
  • fix(homelab): report a join rate limit before "busy" by @​jeefy in #357
  • feat: Bluefin Server Homelab profile (opt-in sysexts + Ignition templates, multi-node join) by @​jeefy in #353
  • fix(nvidia): blacklist nouveau and evict it before loading the open modules by @​jeefy in #348
  • ci(release): skip a release whose commit can no longer be tagged by @​jeefy in #332
  • ci(track-binaries): track the NVIDIA Container Toolkit by its tag's commit by @​jeefy in #333
  • build(kernel-modules): sign and compress modules in parallel by @​jeefy in #331
  • fix(renovate-automerge): skip instead of failing when a dependency update changed just before merge by @​Danathar in #701
  • docs(composite-actions): retire legacy queue labels and reference Prow management by @​castrojo in #706
  • fix(reusable-build): fail the build when a published image is left unsigned by @​codebymarshall in #693
  • feat(pinned-fetches): supply-chain gate for unpinned, unverified downloads by @​kylerankin in #703
  • fix: pass branch-sync inputs via environment instead of inline shell by @​kylerankin in #675
  • docs(governance): remove obsolete 3-clanker-queue and align with prow management by @​castrojo in #705
  • fix(scan-image): warn when the security scan cannot check operating system packages by @​codebymarshall in #692
  • feat(promote-squash): forward a merge_note override to the PR body by @​Danathar in #680
  • fix(chunka): stop the build when its tool can't be downloaded instead of continuing as if it worked by @​kylerankin in #676
  • chore(ci): remove an unused workflow that could push test images to stable by @​codebymarshall in #696
  • fix(ci): catch alternate spellings of unapproved credentials by @​thatguywob in #684
  • chore: let the maintainers team approve as code owners by @​hanthor in #704
  • docs(supply-chain): list the Discord release-announcement key among approved secrets by @​codebymarshall in #694
  • fix(reusable-release): generate the inline SBOM in its own job by @​Danathar in #682
  • feat(create-release): add enable-desktop-screenshot input to omit screenshot section by @​castrojo in #673
  • feat(execute-release): add gate_test_ref to pin the release-gate testsuite by @​hanthor in #660
  • fix(ci): remove bluefin-lts from consumer workflows and docs by @​castrojo in #659
  • fix(factory): exclude pre-merge runs from factory health success rate by @​mendezr in #528
  • fix(ci): pin renovate automerge merge to the qualified commit by @​kylerankin in #649
  • fix(pkg-cadence): let first-seen packages reach bootstrap_interval() by @​Danathar in #641
  • feat(execute-release): plumb gate_extra_tags to the release gate by @​hanthor in #658
  • fix(render-pr-body): omit the screenshot section when the testsuite published none by @​tunix in #651
  • docs(skills): align pkg-cadence bootstrap doc with PR-based workflow by @​kylerankin in #643
  • fix(tests): reframe release-gate pin rationale onto testsuite repo by @​kylerankin in #637
  • fix(docs): point testsuite e2e pin at testsuite repo, not archived bluefin by @​kylerankin in #635
  • fix(workflows): drop misleading bluefin SHA-pin parenthetical in release-gate comment by @​dtg01100 in #627
  • docs(action-reference): bump download-artifact example to current SHA by @​dtg01100 in #632
  • fix(docs): align reusable-workflow pin check with bluefin floating @v1 by @​kylerankin in #620
  • fix(ci): align testsuite e2e.yml pins with release gate v1 pin by @​Danathar in #610
  • chore: preserve Markdown hard breaks in pre-commit and clean bats/Python fixtures by @​dtg01100 in #607
  • fix(issue-policy): allow trusted maintainer removal of human-only label by @​castrojo in #609
  • fix(issue-lifecycle): Hive decision pauses accepted issues instead of un-accepting by @​castrojo in #612
  • fix(issue-lifecycle): shorten lifecycle and Prow bot messages by @​castrojo in #611
  • feat: share reviewed issue lifecycle and constrained Prow onboarding by @​castrojo in #605
  • ci(sync-templates): stop syncing to archived bluefin and bluefin-lts by @​Danathar in #100
  • ci: add pull_request validation workflow for tests and pre-commit by @​kylerankin in #94
  • fix(ci): detect untracked templates and add workflow_dispatch trigger by @​castrojo in #82
  • docs: add ujust report screenshot analysis spec by @​castrojo in #43
  • fix(dakota): show NVIDIA driver, downloads first, left-aligned species by @​castrojo in #1641
  • feat(dakota): hero layout with dakotaraptor, wordmark, and inline release card by @​castrojo in #1640
  • Update video link in GitHub Universe trip report by @​castrojo in #1639
  • feat(blog): GitHub Universe 2026 Trip Report by @​castrojo in #1634
  • fix: exclude image bot from contributor counts by @​Karibhou in #1622
  • feat(analytics): show Utah's published images on the analytics page by @​hanthor in #1632
  • fix(reports): stop counting actions-user as a contributor by @​mrbobbytables in #1616
  • refactor: remove a leftover duplicate copy of the release-data checks by @​codebymarshall in #1617
  • fix: keep published update measurements unchanged by @​mendezr in #1604
  • i18n(de): translate installation.md for German by @​kylerankin in #1580
  • docs: explain how to sync files between two Bluefin computers by @​arteeh in #1579
  • fix(i18n/ko): fix garbled wording in the Press Kit by @​kylerankin in #1599
  • fix(analytics): make failed refreshes visible and isolate failure tests by @​castrojo in #1597
  • ci: run the lockfile's wrangler instead of a stale pinned copy by @​Danathar in #1596
  • fix(analytics): show actual org-wide contributor participation by @​castrojo in #1595
  • docs(ko): clean Konglish words and second-person in Korean prose by @​kylerankin in #1577
  • fix(analytics): align contributor layout, methodology, and chart series by @​castrojo in #1594
  • fix(analytics): align PR basis, add prsOpened, and remove synthetic fallbacks by @​castrojo in #1593
  • feat(analytics): add org contributor analytics pipeline and charts by @​castrojo in #1592
  • fix(analytics): plot the sum of all three Bluefin histories by @​castrojo in #1591
  • docs(analytics): separate contributor metrics section by @​castrojo in #1590
  • fix(analytics): include Classic total and remove churn charts by @​castrojo in #1589
  • fix(analytics): simplify charts and add daily Bluefin total by @​castrojo in #1588
  • Remove streams and throttle settings section by @​castrojo in #1586
  • Remove GNOME extensions recommendation section by @​castrojo in #1587
  • docs: add System Containers operator guide by @​castrojo in #1582
  • docs(troubleshooting): remove ujust probe references by @​castrojo in #1578
  • feat(changelogs): add Dakota release notes to changelog cards by @​castrojo in #1575
  • ci(countme): fail up front when Cloudflare secrets are missing by @​Danathar in #1573
  • Update downloads-testing.mdx with HP machines note by @​castrojo in #1574
  • docs(blog): Still Roaring: Bluefin Classic and LTS by @​juanresendiz813 in #1572
  • fix(tests): guard missing image releases data in catalog test by @​castrojo in #1570
  • feat(server): add versioned download boxes and release timeline by @​castrojo in #1569
  • fix(docs): redesign server page header and streamline hero layout by @​castrojo in #1568
  • docs(server): add enabling-extensions guide and remove gap-analysis-distros by @​castrojo in #1565
  • docs: simplify server operator guides for Linux sysadmins by @​castrojo in #1563
  • docs(navigation): rename User Guide to Desktop Guide and reorder sidebar categories by @​castrojo in #1562
  • docs(server): break out Bluefin Server into top-level collapsible section and render guide index by @​castrojo in #1561
  • fix(images): streamline Utah identity artwork and remove FanCollector chart by @​castrojo in #1543
  • docs(blog): add Fedora Hummingbird Linux podcast video post by @​castrojo in #1541
  • Revise title and add introduction to blog post by @​castrojo in #1542
  • fix(images): remove LTS card from images page by @​castrojo in #1534
  • fix(docs): remove lts from sidebar by @​castrojo in #1533
  • feat(images): replace the catalog with product cards and version pills by @​castrojo in #1531
  • Remove 't2-mac' from sidebar items by @​castrojo in #1530
  • feat(navigation): restore missing pages and organize into Lore category by @​castrojo in #1528
  • ci(pdf): patch import assertions for Node 24 compatibility by @​mrbobbytables in #1518
  • feat(pages): composite image template with testsuite QA screenshots by @​castrojo in #1527
  • feat(leaderboards): add season week groups, local model highlights, and section anchors by @​castrojo in #1524
  • feat: redesign recent milestones into moments of triumph emblems by @​castrojo in #1523
  • fix(driver-versions): omit Mesa and GNOME cards on Bluefin Server stream by @​castrojo in #1522
  • feat(driver-versions): add Bluefin Server stream and normalize tab shortcuts by @​castrojo in #1521
  • fix: refresh monthly social cards from projectbluefin artwork by @​castrojo in #1520
  • fix(drivers): recover historical snapshots and Mesa for Dakota by @​castrojo in #1519
  • docs: translate remaining Korean (ko) docs by @​kylerankin in #1479
  • Remove common contribution areas from guidelines by @​castrojo in #1513
  • docs(contributing): document issue triage and prow commands by @​castrojo in #1512
  • i18n(nl,zh-Hans): define Alpaca [^1] in translated ai.md by @​dtg01100 in #1496
  • i18n(de): translate administration.md, ai.md, bluefin-dx.md by @​dtg01100 in #1492
  • fix(churn): give Bluefin a discovered stable-daily tag series by @​kylerankin in #1507
  • fix(churn): make compareTagsByDate a strict total order under partial created_at coverage by @​dtg01100 in #1501
  • fix(churn): page build-time lookup until every matched tag is covered by @​dtg01100 in #1499
  • fix(reports): readable monthly report — leaderboard, bots, charts, drop projectbluefin/bluefin by @​castrojo in #1491
  • fix(blog): escape unclosed JSX tags in Stegosaurus report by @​castrojo in #1490
  • docs: translate remaining zh-Hans docs (agentic-contributing, contributors) by @​kylerankin in #1469
  • ci(monthly-reports): drop actions/cache restore for known-contributors.json by @​dtg01100 in #1486
  • i18n(it): translate mission.md and values.md by @​dtg01100 in #1474
  • docs: translate downloads page into Brazilian Portuguese by @​arteeh in #1468
  • docs: translate download and image pages into Korean by @​arteeh in #1467
  • docs: translate the installation guide into Italian by @​arteeh in #1466
  • fix: escape angle brackets in markdown-generator PR titles by @​kylerankin in #1487
  • docs(skills): update shipping-and-verifying branch rules and action_required pattern by @​castrojo in #1465
  • docs: translate download guides and image catalog into Simplified Chinese by @​arteeh in #1459
  • docs: translate code-of-conduct.md into German by @​dtg01100 in #1445
  • docs: translate zh-Hans core pages by @​kylerankin in #1446
  • docs: Dutch (nl) translations for core docs by @​kylerankin in #1443
  • fix(de): "Images" not "Bilder" for the container-image sidebar category by @​kylerankin in #1454
  • docs: translate command-line, supply-chain, dinosaurs and images into German by @​kylerankin in #1452
  • fix(de): use "image-basiert" not "bilderbasiert" for image-based updates by @​dtg01100 in #1457
  • docs: Fix headings in bluefin-dx by @​xordspar0 in #1456
  • Update downloads documentation to remove old content by @​castrojo in #1464
  • Remove outdated warning from downloads documentation by @​castrojo in #1463
  • feat(docs): render server README at build time by @​castrojo in #1462
  • feat(leaderboards): de-duplicate sections and showcase Hive newcomers by @​castrojo in #1458
  • docs(agents): reconcile data-pipeline contract with run-parallel.mjs by @​castrojo in #1328
  • i18n(ko): translate installation, command-line, mission, and values pages by @​mendezr in #1436
  • fix(docs): remove stray backslash in ublue akmods backtick note by @​dtg01100 in #1438
  • docs: add Portuguese (Brazil) i18n translations by @​castrojo in #1427
  • i18n(ja): translate index.md and UI strings for Japanese by @​dtg01100 in #1430
  • i18n(ru): translate index.md and UI strings for Russian by @​mrbobbytables in #1426
  • i18n(it): translate index.md and UI strings by @​dtg01100 in #1432
  • Translate docs: Dutch (nl) by @​kylerankin in #1431
  • docs: translate mission and values pages into German by @​mendezr in #1441
  • ci: pass GITHUB_TOKEN to update-churn compute step by @​kylerankin in #1435
  • ci(iso): reclaim runner disk before builds by @​bketelsen in #69
  • fix(iso): installers built from the stable release now keep machines on stable by @​codebymarshall in #595
  • fix(ci): refresh promotion PR on push to main by @​castrojo in #577
  • fix(validate-flatpaks): isolate flathub remote in FLATPAK_USER_DIR by @​castrojo in #565
  • fix(ci): bound the unit-tests Install bats step against slow apt mirrors by @​dtg01100 in #498
  • fix(validate-flatpaks): pin the Flathub remote descriptor to a fixture by @​kylerankin in #495
  • fix(validate-flatpaks): verify Branch= against the flathub remote by @​dtg01100 in #514
  • fix(promote): make repair-promotion-branch a no-op when there is no branch by @​Danathar in #522
  • docs: keep 60-desktop-swap FROM major in sync with the base image by @​kylerankin in #476
  • fix(promote): set auto_merge false so promotion body matches finpilot's manual merge by @​kylerankin in #456
  • fix(renovate): disable major updates for quay.io/fedora-ostree-desktops/* by @​dtg01100 in #452
  • ci: keep approved auto-merge candidates current without manual updates by @​hanthor in #1055
  • ci: run required checks on merge_group by @​hanthor in #1052
  • fix: validate boot-manager entries for composefs installs by @​kylerankin in #1043
  • fix: re-baseline :testing when its baseline was rewritten out of main by @​kylerankin in #1042
  • ci: verify the new image's SLSA provenance before the e2e gate by @​kylerankin in #1021
  • docs: split the lifecycle harness out of local-testing.md by @​kylerankin in #1005
  • fix(extensions): refresh GNOME-compatible upstream pins by @​hanthor in #998
  • fix(ci): isolate invalid GNOME extension heads by @​hanthor in #1001
  • ci: require exact versions for Python test tools by @​thatguywob in #999
  • fix: include H.264 video decoding and playlist support by @​thatguywob in #994
  • fix(iso): wait for the phone-pairing add-on to finish starting by @​thatguywob in #1000
  • fix(docs): put nmcli --ask before the command object (adopts #980) by @​hanthor in #981
  • docs: stop the front-page test note from warning about failures that did not happen by @​codebymarshall in #977
  • fix(iso): show why a desktop add-on failed to start when the install-and-login test fails by @​codebymarshall in #971
  • chore(deps): update os-minimal digest to 7a1982b and kernel-devel pin to 7.2.11 (adopts #956) by @​hanthor in #959
  • docs: clarify installation test results (adopts #950) by @​hanthor in #960
  • fix: keep Apache httpd disabled and assert it in the desktop contract (adopts #951) by @​hanthor in #958
  • fix(branding): drop the fastfetch count placeholders, now shipped by Common (supersedes #763) by @​hanthor in #957
  • fix: include newly added Bluefin desktop add-ons by @​mendezr in #949
  • chore(deps): update ghcr.io/projectbluefin/common docker digest to ff1d621 (adopts #856) by @​hanthor in #954
  • feat: record what each operating system image was built from by @​thatguywob in #937
  • fix: stop extension updates when compatibility information is unreadable by @​thatguywob in #941
  • feat: ship repair guidance with the Utah desktop by @​thatguywob in #943
  • fix: keep the terminal overview free of missing-command errors by @​thatguywob in #942
  • feat(kernel): enable native AMD and Intel Xe GPU drivers in OGC kernel by @​mrbobbytables in #927
  • ci(release): release :stable weekly on a Monday schedule by @​hanthor in #905
  • fix(contract): assert newly added network daemons stay disabled (#869) by @​kylerankin in #892
  • ci(promote): ratchet :testing over E2E-green commits and gate :stable on per-digest evidence by @​hanthor in #885
  • Revert #874 (SELinux policy-store relocation) until booted-update verification by @​Danathar in #893
  • fix: guard extension dconf defaults against shipped schema paths by @​kylerankin in #889
  • feat(artwork): source wallpapers and branding art from projectbluefin/artwork by @​hanthor in #881
  • feat(packages): consume the second factory publish wave: tmux, sysstat, NFS, hplip, GStreamer, Papers integration (#263) by @​hanthor in #871
  • fix(iso): raise the ISO size guard to 8 GiB (reduction tracked in #875) by @​hanthor in #876
  • fix(e2e): detect the Take Tour welcome dialog by OCR (follow-up to #867) by @​hanthor in #870
  • feat(packages): consume the published VPN, scanning, printing, tool and media parity packages (#263) by @​hanthor in #868
  • feat(packages): consume factory GNOME apps and Help stack (#263) by @​hanthor in #862
  • fix(e2e): skip GNOME Shell's welcome dialog before reading fastfetch by @​hanthor in #867
  • fix(ci): bring the contract job on main back to green by @​Danathar in #858
  • fix(os-release): rename 'Utah' to 'Bluefin' by @​theMimolet in #797
  • fix(test): query GNOME extension state over session D-Bus by @​hanthor in #847
  • fix(iso): compress initramfs with zstd to bring nvidia ISO under budget by @​repires in #750
  • fix(iso): create /var/tmp for OCI flatpak installs in container builds by @​hanthor in #840
  • docs: record Flatpak-first standing policy for overlay requests by @​hanthor in #832
  • chore(baselines): refresh snapshots, drop installed gaps from triage by @​hanthor in #825
  • docs(ci): correct cosign identity pin in kernel-and-build reference by @​hanthor in #799
  • feat(flatpak): preinstall Ghostty from TunaOS OCI remote on first boot by @​hanthor in #788
  • chore(baselines): triage remaining 54 gaps (50 planned under #263, 4 waived) by @​hanthor in #795
  • feat(packages): add Slice 3 parity packages (qt6-qtbase, python3-charset-normalizer, python3-idna) by @​hanthor in #794
  • feat(packages): add Slice 2 parity packages (gnupg2-scdaemon, dnf5daemon, tools) by @​hanthor in #793
  • feat(packages): add Slice 1 parity packages (dbus-daemon, python, m4, tools) by @​hanthor in #792
  • fix: prevent base media packages from replacing factory builds by @​Karibhou in #787
  • ci(e2e): drop the ~@orca exclusion; full suite and release gate by @​hanthor in #782
  • fix(packages): install speech-dispatcher-utils (spd-say) by @​hanthor in #781
  • ci(release): pin the release gate to the testsuite commit post-testing validated by @​hanthor in #779
  • docs: streamline README description and add ISO download link by @​castrojo in #776
  • ci(release): restore the stable release gate, scoped like post-testing-e2e by @​hanthor in #772
  • fix(extensions): make installed extension files readable, not writable by @​hanthor in #770
  • fix(kernel): build zram in the OGC kernel by @​hanthor in #768
  • ci(e2e): bump testsuite test_ref to include power_status and Settings fixes by @​hanthor in #764
  • docs(ci): add testsuite triage runbook reference by @​hanthor in #756
  • ci: override release gate for externally-blocked scenarios by @​hanthor in #758
  • Adopt Dakota first-boot desktop integrations by @​hanthor in #732
  • test(e2e): cover first-boot idempotence by @​hanthor in #715
  • feat(packages): add GNOME rounded blur to parity by @​hanthor in #718
  • feat(countme): enable shared client on Utah by @​hanthor in #720
  • feat(pixmaps): use the accepted Utah wordmark in GDM by @​KiKaraage in #531
  • fix(kernel): require INPUT_UINPUT in the OGC kernel by @​hanthor in #752
  • fix(services): tolerate start bursts on countme ping service by @​hanthor in #746
  • ci: scope testsuite exclusion to @orca until factory ships screen reader by @​hanthor in #745
  • fix(boot): skip bootupctl adoption on systemd-boot layouts by @​hanthor in #744
  • docs(packages): track orca screen-reader stack as unavailable parity debt by @​hanthor in #743
  • fix(kernel): require OGC namespaces and TUN by @​hanthor in #710
  • fix: drop the OGC external-module build tree from gaming images by @​mrbobbytables in #734
  • fix(build): keep the utah-packages.repo flip in the published layer by @​mrbobbytables in #736
  • fix(ci): fail closed on mismatched build refs by @​hanthor in #731
  • fix(ci): pin Prow transfer parser source by @​hanthor in #730
  • docs(ci): correct testing rechunk status by @​hanthor in #719
  • chore(baselines): remove resolved triage entries by @​hanthor in #717
  • docs(skills): clarify extension updater contract by @​mrbobbytables in #683
  • chore(deps): sync Common digest with ChairLift contract by @​hanthor in #716
  • docs(ci): split workflow guide into linked references by @​hanthor in #713
  • fix: skip privileged setup from any GDM session, not just gdm-greeter by @​kylerankin in #692
  • ci: add non-blocking testsuite reporting to post-testing-e2e (#161) by @​castrojo in #631
  • feat: deploy Prow slash command workflow and OWNERS by @​castrojo in #705
  • fix(boot): run bootupctl-adopt transient skips before version-script-check by @​j1mc in #696
  • fix(boot): relabel boot.log so plymouthd can append to it by @​j1mc in #693
  • ci(extensions): automate weekly GNOME extension submodule bumps by @​hanthor in #645
  • docs: correct post-testing-e2e line citations in README by @​kylerankin in #161
  • ci: add a read-only offline ISO test matrix by @​hanthor in #627
  • fix(kernel): deploy and regenerate each flavor’s bootc kernel by @​hanthor in #566
  • feat(extensions): package curated GNOME Shell extensions from Dakota by @​mrbobbytables in #680
  • ci: prove package installs from hermetic Hummingbird snapshots by @​hanthor in #673
  • test(chairlift): pin Control Center runtime invariants for #676 by @​dtg01100 in #679
  • fix(ci): pin sync-dispatched testing build to the pushed SHA by @​hanthor in #663
  • ci(build): run the unit suite alongside manifest validation by @​hanthor in #660
  • fix: enable ChairLift Control Center installation on login by @​hanthor in #668
  • fix(ntp): fall back to the public NTP pool when Hummingbird's is unresolvable by @​hanthor in #664
  • fix: correct utah branding to match Bluefin desktop contract by @​castrojo in #319
  • fix(build): reproducible image layers (forward-port of #314) by @​hanthor in #611
  • fix(services): preserve enabled statistics timers after first boot by @​kylerankin in #485
  • fix(contract): reject sslcacert trust-anchor rewrite by @​hanthor in #659
  • feat(printing): install cups-filters, cups-browsed and ghostscript from the factory by @​hanthor in #665
  • docs(site): update base image reference to os-minimal by @​castrojo in #655
  • feat(boot): install factory-built plymouth and spinner theme by @​hanthor in #666
  • fix(kernel): enable gaming desktop sandboxes and VPN devices by @​hanthor in #628
  • test(e2e): cover resolve-e2e-inputs trust gate refusals and CLI by @​hanthor in #648
  • fix(live): give the dock-pinned installer entry a resolvable icon by @​hanthor in #646
  • packages: consume ffmpegthumbnailer for media codec parity (#383) by @​kylerankin in #647
  • fix(build): switch base from bootc-os to os-minimal by @​hanthor in #644
  • fix(e2e): drop trailing blank line in luks-e2e.sh README heredoc by @​kylerankin in #653
  • fix(iso): share an immutable tacklebox image pin by @​hanthor in #624
  • fix(contract): pin gpgkey= against [repositories.gpgkeys] by @​dtg01100 in #638
  • fix(validation): restore static and pre-commit gates by @​hanthor in #623
  • fix(docs): refresh stale reusable-build.yml digest in ci-workflows skill by @​kylerankin in #635
  • fix(contract): scan dnf5 repo-override dirs on the on-image run (#524) by @​kylerankin in #527
  • ci(parity): schedule pinned Bluefin contract updates by @​Danathar in #194
  • fix(packages): consume published Intel media runtimes by @​arteeh in #397
  • docs(desktop-contract): list all units the [services] contract asserts (#597) by @​dtg01100 in #606
  • fix(tests): freeze the clock in the ago() relative-time test by @​hanthor in #610
  • fix(e2e): copy the Flatpak parser to the installed target over scp by @​hanthor in #607
  • fix(installer): ship an empty /var/home so useradd works pre-boot by @​hanthor in #604
  • test(bootc): assert systemd-boot entries regenerate on upgrade and rollback by @​dtg01100 in #571
  • style: wrap overlong new docstring and comment lines (#600) by @​dtg01100 in #601
  • fix(boot): seed empty crypttab so dracut's crypt generator exits 0 by @​hanthor in #592
  • fix(iso): ship the Flatpak parser the ISO bake calls by @​hanthor in #591
  • fix(scripts): single shared parser for the Brewfile flatpak list (#510) by @​dtg01100 in #511
  • fix: verify lifecycle kernel and initrd files in the guest by @​mendezr in #573
  • fix(selinux): ship HOME=/home so ostree's policy rebuild keeps the home rules by @​Danathar in #576
  • fix: keep build date out of retained package-origin report by @​Danathar in #581
  • fix(contract): inspect global proxy/sslverify in dnf5 [main] by @​kylerankin in #582
  • fix(ujust): honor IMAGE_NAME env fallback in utah-image-repo short-circuit by @​dtg01100 in #584
  • fix(systemd): skip systemd-remount-fs.service on read-only composefs root by @​dtg01100 in #586
  • fix(packages): record nss-mdns .local resolution parity gap as unavailable by @​kylerankin in #569
  • feat(packages): consume 14 resolvable Bluefin parity + firmware packages from the factory by @​dtg01100 in #403
  • fix(contract): require the shipped Firefox preference file on the desktop image by @​dtg01100 in #490
  • docs: reconcile README with docs/utah and add Download/Documentation pointers by @​dtg01100 in #529
  • docs(readme): align on-image allowlist wording with multi-dir scan by @​dtg01100 in #539
  • fix(deps): make the packages digest pin discoverable by Renovate by @​arteeh in #365
  • fix(system): silence the boot and session errors that bury real ones by @​hanthor in #545
  • fix(services): stop unified-storage onboarding from holding up boot by @​hanthor in #548
  • fix(branding): show the Bluefin raptor as the OS logo by @​hanthor in #546
  • fix(contract): derive the on-image reposdir scan list from dnf5 config (#536) by @​dtg01100 in #540
  • fix(services): enable Avahi and switcheroo-control by @​arteeh in #411
  • fix(build): refresh Hummingbird packages daily despite the layer cache by @​hanthor in #542
  • ci(factory-pin): propose the utah-packages rev daily against main by @​hanthor in #541
  • fix(flatpak): install Bazaar on first boot of non-ISO installs, in the background by @​hanthor in #544
  • fix(extensions): load Dash to Dock and GSConnect on GNOME 51 by @​hanthor in #543
  • fix(avahi): let avahi-daemon enter its SELinux domain by @​hanthor in #549
  • fix(packages): ship cracklib-dicts so passwords can be changed by @​hanthor in #547
  • fix(live): keep bootloader-update.service off the live ISO by @​hanthor in #550
  • test(bootc): validate bootc upgrade and rollback lifecycle by @​mrbobbytables in #140
  • fix: mount extension verifier for desktop contract checks by @​arteeh in #522
  • ci: drop stale testsuite note from execute-release pin by @​Danathar in #350
  • docs(skills): scope ci-workflows list back to in-scope workflows (closes #501) by @​dtg01100 in #504
  • docs: replace stale package bind-mount line reference by @​arteeh in #515
  • fix(image-baseline): enumerate /usr/share/ublue-os/firefox-config in EXTRACT by @​dtg01100 in #507
  • fix(hooks): unquote the bluefin prefs glob and bump the flatpaks hook to v2 by @​kylerankin in #493
  • fix(verify): compare hummingbird_baseurl in parity baseline check by @​kylerankin in #481
  • docs: fix stale Containerfile line references in package-contract.md by @​buggtb in #467
  • fix(packages): install the Bluetooth printing backend by @​arteeh in #399
  • fix(ci): sign and verify the utah-kernel-cache base image by @​castrojo in #306
  • fix(libsetup): adopt version-script-commit in Utah hooks by @​kylerankin in #259
  • fix(baselines): strip trailing tabs from generated elements.tsv by @​dtg01100 in #498
  • feat(packages): track nvtop as unavailable pending factory build by @​dtg01100 in #453
  • fix(verify): surface a stale parity baseline on ref or factory-pin bump by @​kylerankin in #477
  • fix(services): pin fwupd-refresh.service to a static user (#385) by @​dtg01100 in #415
  • fix(ujust): route ujust report through utah-image-repo shim (#446) by @​dtg01100 in #448
  • test(ujust): pin override tests to just >= 1.56 by @​dtg01100 in #450
  • fix(selinux): repair mis-keyed active homedirs before relabelling /var/home by @​buggtb in #475
  • fix(packages): track the fish exclusion under #419 by @​dtg01100 in #482
  • fix(ghostty): read ~/.config/ghostty and follow system light/dark by @​hanthor in #483
  • fix(ujust): resolve changelogs to projectbluefin/utah not bluefin by @​kylerankin in #484
  • fix(audit): docstring claim, baseline, dynamic fedora_v, and hummingbird checksum (#424) by @​dtg01100 in #429
  • fix: unblock :stable signing, GDM logo, installer art, re-land zram (#404) by @​hanthor in #442
  • fix: verify /etc/os-release in the desktop contract check by @​Danathar in #342
  • test: executed coverage for install-packages.py install path by @​mrbobbytables in #197
  • fix(just): forward audit parity flags through the shebang recipe by @​mendezr in #432
  • docs: align Wi-Fi comments with the installed package contract by @​mendezr in #430
  • fix(docs): correct parity-audit docstring claim about just check by @​kylerankin in #439
  • fix(services): stop enabling grub-boot-success.timer by @​hanthor in #366
  • feat(scripts): re-runnable Bluefin-vs-Utah image parity audit (#402) by @​dtg01100 in #417
  • fix(branding): keep Hummingbird base os-release ID, VERSION_ID and CPE_NAME for CVE scanners by @​kylerankin in #380
  • fix(boot): maintain the ESP boot manager on systemd-boot systems by @​hanthor in #370
  • test(bootc): assert systemd-boot entries regenerate on upgrade and rollback by @​dtg01100 in #369
  • ci: land factory-pin rev tool and weekly proposal workflow by @​hanthor in #367
  • docs(packages): index [services] in packages/utah.toml header by @​dtg01100 in #416
  • fix(logrotate): create the state directory at boot by @​arteeh in #413
  • fix(ujust): handle missing Utah runtime dependencies by @​arteeh in #414
  • fix(branding): swap fedora-logos for generic-logos, Bluefin-LTS style by @​hanthor in #400
  • feat(contract): fail CI on stale [unavailable] entries by @​hanthor in #418
  • fix(desktop): replace Fedora wordmark with Bluefin at GDM greeter (#378) by @​dtg01100 in #379
  • fix(baselines): point zram-generator triage at #384 by @​dtg01100 in #409
  • fix(packages): wire up zram-generator for bare-metal swap by @​kylerankin in #404
  • fix: prevent concurrent fork Canary cleanup from blocking proof refresh by @​hanthor in #865
  • ci: run required checks on merge_group by @​hanthor in #859
  • ci: land built bumps and refresh armed PRs without manual intervention by @​hanthor in #863
  • fix: stop committing derived inventory counts and backlog totals by @​hanthor in #858
  • fix: keep the source lock sorted by package name by @​hanthor in #857
  • fix(sources): use official download sites for three packages by @​mrbobbytables in #840
  • import: Rawhide libotf, libXaw, gd and anthy-unicode (m17n-lib blockers) by @​mrbobbytables in #788
  • feat: add Qt 6 graphics, Wayland, and translation packages by @​thatguywob in #652
  • feat: add the virtual machine file-sharing service by @​thatguywob in #761
  • feat: add a tesseract family recipe (tesseract + tesseract-tessdata) by @​kylerankin in #836
  • feat: add a library for FireWire media streaming by @​Karibhou in #801
  • feat: add YubiKey management tool by @​mrbobbytables in #839
  • fix: restore factory validation baseline by @​hanthor in #850
  • fix(rygel): install user-unit post scriptlet by @​hanthor in #851
  • feat: import imath and rygel recipes for the gnome-apps batch (#484) by @​kylerankin in #823
  • feat: add build instructions for the Microsoft CAB archive library by @​Karibhou in #846
  • feat: add instructions to build the event loop library by @​thatguywob in #844
  • feat: prepare libraries for audio plugin discovery by @​mendezr in #831
  • feat: prepare tools for Apple HFS+ disks by @​thatguywob in #837
  • feat: prepare tools for speeding up disk access by @​mendezr in #833
  • fix: record published versions of eight requested system tools by @​mendezr in #832
  • feat: prepare container networking without administrator access by @​mendezr in #830
  • feat: add build support for VPN and smart-card authentication tools by @​kylerankin in #825
  • feat: prepare the iwd Wi-Fi service for Utah by @​hanthor in #827
  • feat: add build recipes for the VM networking and streaming-video libraries by @​Danathar in #789
  • fix: keep Fedora package files from changing between builds by @​mrbobbytables in #795
  • feat: add a tool to extract Broadcom wireless firmware by @​mendezr in #813
  • feat: add a recipe for a data format library by @​Karibhou in #773
  • feat: add tools for joining Windows domains by @​Karibhou in #774
  • feat: add a library for security key files by @​Karibhou in #775
  • feat: prepare security key sign-in packages by @​Karibhou in #776
  • feat: add the Chinese pinyin typing library recipe by @​Karibhou in #796
  • feat: add jaraco context, classes and functools recipes by @​kylerankin in #808
  • runtime-contract: un-excite crun-krun now that libkrun and libkrunfw publish by @​kylerankin in #797
  • feat: add an image processing library by @​Karibhou in #772
  • feat: add a library for reading compressed images by @​Karibhou in #817
  • reconcile codecs-media FFmpeg family in build backlog (#474) by @​kylerankin in #815
  • feat: prepare the missing media artwork library for building by @​mendezr in #816
  • feat: add the window-list library that the screen reader suggests by @​Danathar in #786
  • feat: add the Perl add-on that standardizes accented text by @​Danathar in #783
  • feat: add build recipe for ImageMagick image tools by @​mrbobbytables in #787
  • fix: honor the decision to omit the legacy service command by @​mendezr in #811
  • feat: add the service that creates home folders on first login by @​Danathar in #784
  • feat: add a firewall address group management package by @​Karibhou in #809
  • feat: import NetworkManager-ssh VPN plugin into the factory (Refs #499) by @​kylerankin in #770
  • feat: add the Kyoto Cabinet database library recipe by @​mendezr in #767
  • feat: add a Python library for querying JSON data by @​codebymarshall in #798
  • feat: add ibus-chewing and libchewing recipes by @​kylerankin in #790
  • import: add disk and desktop tools xfsprogs, udftools, uresourced by @​mrbobbytables in #782
  • fix: record approved exclusion of USB network sharing by @​mendezr in #800
  • docs: identify the source of a missing wireless library by @​mrbobbytables in #785
  • docs: remove repeated package guide instructions by @​Karibhou in #792
  • docs: align build instructions with the containers in use by @​mendezr in #799
  • feat: add support for FireWire cameras by @​Karibhou in #794
  • feat: add a library for command-line tools by @​mrbobbytables in #781
  • fix: adopt published package accounting from #768 by @​hanthor in #780
  • fix: record five packages already available to users by @​mendezr in #768
  • feat: adopt python-h11 recipe on current main by @​hanthor in #778
  • fix: recognize published libraries in the missing-package list by @​mendezr in #766
  • fix: adopt published-library accounting from #766 by @​hanthor in #779
  • feat: add support for reading compressed NTFS files by @​Karibhou in #771
  • feat: add missing desktop collection library by @​thatguywob in #760
  • fix: record seven published desktop support packages by @​mendezr in #765
  • feat: add build recipes for the RabbitMQ client and Windows drawing-file libraries by @​codebymarshall in #756
  • feat: adopt #756 onto current main by @​hanthor in #758
  • fix(validate): make sure recipe folder matches provenance name by @​mrbobbytables in #753
  • fix: adopt #750 Utah#629 logo source by @​hanthor in #754
  • feat: add the strace debugging tool to the package factory by @​codebymarshall in #749
  • feat: adopt strace recipe from PR #749 by @​hanthor in #755
  • fix(wayland): let the Wayland documentation package install without two declined fonts by @​codebymarshall in #751
  • feat: add PortAudio and PyAudio build recipes (adopts #748) by @​hanthor in #752
  • feat: reconcile published terminal and desktop programs by @​mrbobbytables in #747
  • chore: adopt libultrahdr and svt-vp9 from #626 by @​hanthor in #746
  • chore: adopt zinnia and zix from #630 by @​hanthor in #745
  • chore: adopt libkrun recipes from #639 by @​hanthor in #744
  • chore: adopt qpdf recipe from #640 by @​hanthor in #743
  • feat: add build recipes for the liburing and lrzsz system tools by @​codebymarshall in #742
  • feat: add safe input-method data packages (adopts #731) by @​hanthor in #741
  • feat: adopt #655 developer and hardware tools by @​hanthor in #740
  • fix: add the missing update-history line to 15 packages updated before the history fix (adopts #734) by @​hanthor in #739
  • fix: download 151 package sources directly from their projects (adopts #708) by @​hanthor in #738
  • feat: add language and keyboard defaults for desktop tools (adopts #700) by @​hanthor in #737
  • feat: prepare text encoding detection for Utah by @​thatguywob in #729
  • fix: record published packages already available to users by @​mrbobbytables in #732
  • feat: add a customizable shell prompt and its test tools (adopts #699) by @​hanthor in #728
  • fix: record boot screen packages already available to users (adopts #698) by @​hanthor in #727
  • feat: prepare cursor support without adding unwanted tools (adopts #620) by @​hanthor in #726
  • feat: add tools for accessing removable-drive disk images (adopts #659) by @​hanthor in #725
  • feat: prepare graphics tools needed for video playback (adopts #707) by @​hanthor in #724
  • feat: prepare access to files on Apple devices (adopts #703) by @​hanthor in #723
  • feat: add instructions to build WebDAV access tools (adopts #696) by @​hanthor in #722
  • feat: add instructions to build the SPICE VM integration agent (adopts #679) by @​hanthor in #721
  • feat: add instructions to build FireWire device communication libraries (adopts #681) by @​hanthor in #720
  • feat: add instructions to build the S-Lang terminal library (adopts #710) by @​hanthor in #719
  • feat: add instructions to build the YubiKey sign-in module (adopts #706) by @​hanthor in #718
  • feat: add instructions to build smart card Python bindings (adopts #704) by @​hanthor in #717
  • feat: add instructions to build NILFS filesystem utilities (adopts #702) by @​hanthor in #715
  • feat: add instructions to build the firewall connection monitor (adopts #697) by @​hanthor in #714
  • feat: add instructions to build the libdeflate compression library (adopts #695) by @​hanthor in #713
  • fix: allow the braille converter build to find its manual tools (adopts #705) by @​hanthor in #712
  • feat: add Python libraries for terminal automation by @​j1mc in #684
  • feat: mark the text-conversion and touchscreen libraries as published by @​Karibhou in #709
  • feat: record that the printer fonts for documents are built and published by @​Karibhou in #711
  • docs: keep package backlog guidance current by @​j1mc in #680
  • feat: add a library for recognizing audio recordings by @​j1mc in #692
  • fix: record published GNOME packages and approved exclusions (adopts #662) by @​hanthor in #694
  • feat: add libraries for reading Blu-ray discs (adopts #658) by @​hanthor in #693
  • feat: add a Markdown reader for terminal release notes (adopts #650) by @​hanthor in #691
  • feat: add the X11 display resource query library (adopts #646) by @​hanthor in #690
  • feat: add Flex for building text scanners (adopts #654) by @​hanthor in #689
  • fix: honor the decision against bulk font additions (adopts #651) by @​hanthor in #688
  • fix: stop listing two published libraries as missing (adopts #649) by @​hanthor in #687
  • feat: add a tool to measure filesystem compression savings (adopts #648) by @​hanthor in #686
  • feat: add smart-card and security-key helper packages (adopts #647) by @​hanthor in #685
  • fix: record already published smart-card packages (adopts #645) by @​hanthor in #683
  • fix: record the existing GPU monitor recipe (adopts #653) by @​hanthor in #682
  • feat(long-tail): import 6 source packages, resolve hyperv subpackages (#500) (adopts #607) by @​hanthor in #671
  • feat: add Bison for building language parsers (adopts #615) by @​hanthor in #667
  • feat: add the remaining braille document converters (adopts #616) by @​hanthor in #672
  • feat: add Python libraries for dates and older software (adopts #613) by @​hanthor in #665
  • feat: add missing compatibility libraries for development tools (adopts #614) by @​hanthor in #668
  • fix: keep package update history current (adopts #601) by @​hanthor in #677
  • feat: add support for camera RAW image files (adopts #618) by @​hanthor in #666
  • feat: add a tool for automated remote logins (adopts #611) by @​hanthor in #670
  • fix: record Utah’s choice to skip eleven optional fonts (adopts #660) by @​hanthor in #678
  • feat: add password strength checking packages (adopts #644) by @​hanthor in #676
  • feat: add the touchscreen input library recipe by @​thatguywob in #643
  • fix: honor the decision against bulk font additions (adopts #610) by @​hanthor in #669
  • fix(canary): a pull request that only adds recipes and inventory passes Canary at once (#369) by @​hanthor in #663
  • docs: confirm screen reader and speech packages are available by @​arteeh in #657
  • fix(canary): make the fork proof lookup runnable; reopen on a current merge commit (#369) by @​hanthor in #635
  • fix(canary): refresh the fork PR's Canary from the button workflow (#369) by @​hanthor in #632
  • fix(canary): make a fork PR's own Canary pass on a maintainer-run proof (#369) by @​hanthor in #628
  • ci(canary): let a maintainer run Canary on a reviewed fork pull request (#369) by @​hanthor in #619
  • fix(hplip): verify HP's signature before hp-plugin-download runs the plugin by @​Danathar in #599
  • Import media runtime providers: libsrtp, gtksourceview5, djvulibre, a52dec, libmpeg2 by @​hanthor in #594
  • feat: import tuned runtime providers and powertop libs (utah#388) by @​hanthor in #595
  • feat: import printing runtime providers for hplip and system-config-printer by @​hanthor in #596
  • feat: import libutempter, libhandy, gssproxy, quota, ding-libs; sysstat without PCP by @​hanthor in #597
  • import: Rawhide foo2zjs, argyllcms, lcms, libXScrnSaver by @​hanthor in #588
  • import: Rawhide sane-backends, sane-airscan, ipp-usb, gutenprint, libieee1284, printer driver tail by @​hanthor in #586
  • import: Rawhide openconnect, NetworkManager-openconnect, vpnc, vpnc-script, stoken, pkcs11-helper, oath-toolkit, libuser, usermode by @​hanthor in #585
  • import: Rawhide gstreamer1-plugin-libav by @​hanthor in #584
  • import: Rawhide dev-tools (bc bolt borgbackup dnsmasq ethtool exfatprogs f2fs-tools gamemode hdparm lshw lsof man-pages mtr nvme-cli pinfo smartmontools tcpdump traceroute tree words) by @​hanthor in #587
  • fix(sources): move sso-mib to 0.10.2, keep libjwt at 1.12.1 by @​hanthor in #583
  • fix(ci): pin every factory-image load to the ref that signed its tag by @​hanthor in #582
  • docs(skills): triage a stalled Hummingbird CDN during the lock step by @​hanthor in #578
  • import: Rawhide sso-mib, libjwt by @​hanthor in #574
  • import: Rawhide libvncserver, mozilla-filesystem, redhat-menus, mod_dnssd by @​hanthor in #573
  • feat: import powertop and fpaste from Rawhide by @​hanthor in #572
  • fix(git): re-import from Rawhide for curl 8.23 credential handling by @​hanthor in #569
  • fix(gtk4): move to 4.24.1 for nautilus 51.1 by @​hanthor in #571
  • fix(libsecret): re-import from Rawhide for the dbus-run-session BuildRequires by @​hanthor in #570
  • feat: add GNOME System Monitor package by @​hanthor in #542
  • feat: import GNOME color manager and user share by @​hanthor in #556
  • feat: add GNOME C++ binding recipes by @​hanthor in #544
  • feat: add glibmm2.68 recipe by @​hanthor in #543
  • import: Rawhide libsigc++30 by @​hanthor in #560
  • import: Rawhide freerdp by @​hanthor in #559
  • feat: import papers (retry after libspelling publish) by @​hanthor in #532
  • docs: add repo-inspection and lane-validation skills by @​hanthor in #533
  • feat: import printing core wave (system-config-printer, hplip) by @​hanthor in #525
  • feat: import thumbnailers and Disks wave by @​hanthor in #523
  • feat: import H.264 and bad-free closure wave by @​hanthor in #526
  • feat: import netfs and pinentry starters wave by @​hanthor in #524
  • feat: import laptop-power and VPN recipe wave by @​hanthor in #522
  • feat: import libvarlink, sysstat, pv closure wave by @​hanthor in #519
  • fix(canary): account for buildroot shifts between canary passes by @​hanthor in #516
  • ci(bump): regenerate and commit multimedia closure report on upstream bump by @​hanthor in #515
  • feat: import dev-tools essentials: xdg-utils, rsync, nano, tmux, htop by @​hanthor in #514
  • fix(screen-reader): build liblouis and brltty without Fedora's ICU 77 by @​hanthor in #470
  • feat: import the GNOME screen-reader stack (orca, speech-dispatcher) by @​hanthor in #466
  • fix(import): let the isolated lock step write its output by @​hanthor in #456
  • ci(sources): let the scheduled source verification finish by @​hanthor in #453
  • fix(sources): move pagure-hosted locks off releases.pagure.org by @​hanthor in #452
  • feat(site): shareable package links in the catalog by @​hanthor in #451
  • fix(flatpak): drop Fedora flatpak repository setup by @​hanthor in #454
  • feat: publish an interactive package catalog on GitHub Pages by @​hanthor in #450
  • feat: add gnome-rounded-blur recipe with Dakota mutter-51 port by @​hanthor in #440
  • fix(pcsc-lite-ccid): do not disable pcscd.service in %preun by @​kylerankin in #431
  • docs: defer architecture.md packit digest to its owning workflow by @​kylerankin in #427
  • docs: clarify bot validation merge requirements by @​hanthor in #420
  • feat(multimedia): measure recipe closure and honor indexed metadata by @​hanthor in #414
  • fix(ci): validate bot PR heads without exposing write credentials by @​hanthor in #408
  • fix(ci): make Canary perturbations unique per retry by @​hanthor in #418
  • feat(terminal): import Ptyxis with its VTE and simdutf dependencies by @​hanthor in #413
  • fix(sources): fetch 40 verified GNOME archives upstream by @​hanthor in #417
  • fix(measure): refresh backlog after recipe imports by @​hanthor in #416
  • feat(measure): preserve the identity of the factory audit backlog by @​hanthor in #412
  • feat(factory): add source-locked nvtop recipe by @​hanthor in #410
  • fix(sources): enforce SHA-512 manifests for live recipes by @​hanthor in #407
  • fix(rawhide): guard Release and restore libnma provenance by @​hanthor in #409
  • ci: measure queue wait using non-skipped job starts by @​hanthor in #411
  • fix(validation): restore factory hooks and inventory guidance by @​hanthor in #406
  • fix(publish): keep libcdio at 2.3.0 and bump pipewire to 1.6.9 by @​hanthor in #381
  • fix(import): workflow writes the source lock, Packit block, and counts by @​hanthor in #398
  • fix(tools): allow md5 verification on FIPS-mode OpenSSL by @​hanthor in #397
  • fix(gate): wait on approved Canary run IDs, not the check-runs API by @​hanthor in #396
  • docs: fix contributing.md gpm sources pin description by @​kylerankin in #391
  • fix(pcsc-lite-ccid): correct unit-name typo in %preun scriptlet by @​mrbobbytables in #368
  • feat(factory): build tpm2-tools, pcsc-lite and pcsc-lite-ccid by @​hanthor in #364
  • chore(libayatana-appindicator): re-pin provenance to rawhide ce72ea5 by @​hanthor in #358
  • fix(gate): approve parked pull_request runs on the gated commit by @​hanthor in #355
  • fix(bump): give a dispatched relock its own PR branch by @​dtg01100 in #346
  • fix: preserve auxiliary source pins during upstream bumps by @​j1mc in #326
  • fix(bump): commit the empty holds file the bump PR adds by @​hanthor in #348
  • fix(bump): read forge releases before tags, compare suffixed locks by prefix by @​hanthor in #347
  • feat(bump): hold bumped packages that fail the gate, merge the rest by @​hanthor in #332
  • fix(libgphoto2): update to 2.5.34 and drop the upstreamed music-players patch by @​hanthor in #337
  • feat(sources): upstream feeds for the lookaside-locked recipes by @​hanthor in #342
  • fix(libayatana-appindicator): update to 0.6.0 with Fedora mono metadata fix by @​hanthor in #339
  • fix(libmtp): update to 1.1.23 and drop both upstreamed patches by @​hanthor in #338
  • fix(libheif): update to 1.23.5 and drop the upstreamed no-hevc-tests patch by @​hanthor in #336
  • fix(libqmi): update to 1.38.0 and build docs with gi-docgen by @​hanthor in #334
  • fix(libqrtr-glib): update to 1.4.0 and build docs with gi-docgen by @​hanthor in #335
  • fix(ddcutil): update to 2.2.7 and BuildRequire libacl by @​hanthor in #333
  • fix(bump): keep bundled sources when moving a primary tarball pin by @​hanthor in #331
  • feat(rawhide): re-import safe Rawhide recipe moves in one gated daily PR by @​hanthor in #329
  • ci(bump): merge the daily upstream bump when its packages build by @​hanthor in #327
  • fix(bump): commit only the lock and recipes in the bump PR by @​hanthor in #324
  • ci: measure subprocess tool coverage and enforce an 80% floor by @​arteeh in #317
  • fix(bump): fetch forge updates from their own URL, skip one failed download by @​hanthor in #321
  • fix(plymouth): lock the source, add the Packit block, and count the recipe by @​hanthor in #320
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...

Sources​

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

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 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.

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

Jovial July 2026

· 47 min read
Project Bluefin
Automation & Factory
Completed work
126
19 planned • 107 opportunistic
Contributors
11
0 first-time contributors

Activity

Completed work across the configured factory portfolio.

Daily merged pull requests

553merged pull requests
Source: GitHub GraphQL · July 2026 UTC (2026-07-01 to 2026-07-31)
Show the numbers
Daily merged pull requests data for July 2026 UTC (2026-07-01 to 2026-07-31)
LabelMerged pull requests
2026-07-0126
2026-07-0213
2026-07-0312
2026-07-049
2026-07-058
2026-07-0614
2026-07-077
2026-07-0813
2026-07-098
2026-07-106
2026-07-1114
2026-07-129
2026-07-137
2026-07-1410
2026-07-154
2026-07-167
2026-07-176
2026-07-187
2026-07-1931
2026-07-2087
2026-07-2134
2026-07-2214
2026-07-2317
2026-07-2412
2026-07-2524
2026-07-2615
2026-07-2717
2026-07-2840
2026-07-2948
2026-07-3020
2026-07-3114

Merged pull requests by repository

553merged pull requests
Source: GitHub GraphQL · July 2026 UTC (2026-07-01 to 2026-07-31)
Show the numbers
Merged pull requests by repository data for July 2026 UTC (2026-07-01 to 2026-07-31)
LabelMerged pull requests
projectbluefin/actions38
projectbluefin/bluefin166
projectbluefin/bluefin-lts52
projectbluefin/common39
projectbluefin/dakota71
projectbluefin/documentation18
projectbluefin/finpilot72
projectbluefin/iso2
projectbluefin/server3
projectbluefin/testsuite92

Merged pull requests by label

525label assignments
Source: GitHub GraphQL · July 2026 UTC (2026-07-01 to 2026-07-31)
Show the numbers
Merged pull requests by label data for July 2026 UTC (2026-07-01 to 2026-07-31)
LabelLabel assignments
4-review471
agent/contributor1
automerge6
chore/deps6
cli/copilot1
contributor/castrojo1
kde3
pr/needs-review11
release/ready10
runner3
size:XS12

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
△ 87%
13Passed
2Failed
44mMedian Run

Pending runs: 4

Run History
19Passed
11Failed
23mMedian Run

Pending runs: 6

Run History
14Passed
8Failed
61mMedian Run

Pending runs: 15

Run History

Publishing-lane cadence

92publish runs
Source: GitHub Actions · July 2026 UTC (2026-07-01 to 2026-07-31)
Show the numbers
Publishing-lane cadence data for July 2026 UTC (2026-07-01 to 2026-07-31)
LabelBluefin TestingBluefin LTSDakota
2026-07-01000
2026-07-02000
2026-07-03000
2026-07-04000
2026-07-05000
2026-07-06000
2026-07-07000
2026-07-08000
2026-07-09000
2026-07-10000
2026-07-11000
2026-07-12000
2026-07-13000
2026-07-14000
2026-07-15000
2026-07-16000
2026-07-17000
2026-07-18000
2026-07-19000
2026-07-20000
2026-07-21000
2026-07-22000
2026-07-23000
2026-07-24000
2026-07-25000
2026-07-260180
2026-07-27030
2026-07-28100
2026-07-2913616
2026-07-303612
2026-07-31239

Release events

50release events
Source: GitHub Releases API · July 2026 UTC (2026-07-01 to 2026-07-31)
Show the numbers
Release events data for July 2026 UTC (2026-07-01 to 2026-07-31)
LabelRelease events
2026-07-201
2026-07-191
2026-07-181
2026-07-171
2026-07-161
2026-07-151
2026-07-141
2026-07-131
2026-07-121
2026-07-111
2026-07-101
2026-07-091
2026-07-081
2026-07-071
2026-07-061
2026-07-051
2026-07-041
2026-07-031
2026-07-021
2026-07-011
2026-07-311
2026-07-301
2026-07-291
2026-07-281
2026-07-271
2026-07-261
2026-07-251
2026-07-241
2026-07-231
2026-07-221
2026-07-211
2026-07-201
2026-07-191
2026-07-181
2026-07-171
2026-07-161
2026-07-151
2026-07-141
2026-07-131
2026-07-121
2026-07-111
2026-07-101
2026-07-091
2026-07-081
2026-07-071
2026-07-061
2026-07-311
2026-07-111
2026-07-201
2026-07-111

Participation

Human and automated contributions with current contributors.

Human and automation activity

553pull requests
Source: GitHub GraphQL · July 2026 UTC (2026-07-01 to 2026-07-31)
Show the numbers
Human and automation activity data for July 2026 UTC (2026-07-01 to 2026-07-31)
LabelHumanAutomation
Report period126427

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

3package additions
Source: Homebrew taps · July 2026 UTC (2026-07-01 to 2026-07-31)
Show the numbers
Homebrew tap additions data for July 2026 UTC (2026-07-01 to 2026-07-31)
LabelAdditions
Production tap1
Experimental tap2
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...

Sources​

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

Juravenator June 2026

· 165 min read
Project Bluefin
Automation & Factory
Total Items849 (152 planned, 697 opportunistic)
Automation39.4% (551 bot PRs out of 1400 total PRs)
Contributors16 total, 0 new

Desktop​

area/gnome area/aurora area/bling

GNOME desktop environment, Aurora variant (KDE), and terminal enhancements

Planned Work​

  • fix(motd): build umotd from source, move to shared layer, remove legacy ublue-motd by @​castrojo in #744
  • fix(ux): toggle-user-motd exits 0 when user declines and fix fall-through by @​castrojo in #662
  • fix(ujust,gnome): fix changelog repos + LTS support + BT auto-switch by @​castrojo in #543
  • fix(gnome): open documentation link as local PDF with browser fallback by @​castrojo in #637
  • test(bling): add bats coverage for bling.sh by @​castrojo in #629
  • test(scripts): add bats coverage for ublue-motd and profile.d scripts by @​castrojo in #628
  • chore: simplification audit — remove dead weight, harden edge cases by @​castrojo in #569
  • feat(ghostty): add GNOME profile for new users by @​castrojo in #548
  • feat(fonts): set Adwaita Mono as default monospace, move opendyslexic to Homebrew by @​castrojo in #547
  • feat: replace logomenu with custom-command-menu extension by @​castrojo in #514
  • fix: add help: URI handler to redirect to GNOME help website by @​castrojo in #509
  • fix(bling): skip brew bundle when bluefin-cli disables bling by @​hanthor in #362
  • feat: replace old MOTD with umotd by @​castrojo in #489
  • fix(#266): drop monospace-font-name override — use GNOME default (Adwaita Mono) by @​hanthor in #348
  • fix: remove Readymade installer from dock favorite-apps by @​hanthor in #353
  • feat: switch to ublue-os/aurorafin-shared by @​renner0e in #395

Opportunistic Work​

  • feat(brew): move CLI tools to brew-preinstall, remove starship image binary by @​castrojo in #554
  • fix(ci): remove stale che/nerd-fonts COPR check by @​castrojo in #502
  • feat(fonts): remove font RPMs and nerd-fonts COPR from OCI image by @​castrojo in #476
  • fix: migrate custom-command-menu dconf to command1..N tuple format by @​castrojo in #348
  • feat(build): add extension-builder stage to avoid build deps in final image by @​castrojo in #333
  • security: verify starship binary checksum before extraction (CWE-494) by @​castrojo in #173
  • fix(e2e): pin testsuite test_ref and restore shell defaults by @​castrojo in #337
  • feat(fonts): remove jetbrains-mono-fonts-all from OCI image by @​castrojo in #144
  • fix(packages): remove che:nerd-fonts COPR install by @​castrojo in #79
  • fix: migrate custom-command-menu dconf from entryrow* to command1..N tuples by @​castrojo in #76
  • fix(ci): use epel-10 chroot for jreilly1821/c10s-gnome-50 COPR URL by @​castrojo in #55
  • fix(hive): hero font rendering + more sparklines by @​castrojo in #919
Dakota (GNOME OS Prototype)​
  • feat(fonts): remove jetbrains-mono from image, manage via Homebrew by @​castrojo in #763
  • fix(gnome-ponytail-daemon): use systemd.bst for systemd.pc pkgconfig by @​castrojo in #725
  • feat: add gnome-ponytail-daemon to image by @​castrojo in #618

Development​

area/dx

Development tools and IDE integrations

Planned Work​

  • feat(dx): add tuna-os/Tavern flatpak to DX mode by @​castrojo in #792
  • feat(bluefinctl): wire ujust recipes to bctl + move caffeinate to profile.d by @​castrojo in #730
  • feat: rewrite toggle-devmode to be standalone DX mode by @​castrojo in #545
  • fix(dx): move vscode extension installs to Brewfile by @​castrojo in #635

Opportunistic Work​

Homebrew​

Package Updates​

Production Tap Experimental Tap

36 automated updates this month via GitHub Actions. Homebrew tap version bumps ensure Bluefin users always have access to the latest stable releases.

Quick Summary​
TapUpdates
production-tap30
experimental-tap6
View all production-tap updates (30)
PackageVersionsPR
lm-studio-linux0.4.16 → 0.4.18 (4 updates)#474
visual-studio-code-linux1.122.1 → 1.125.0 (4 updates)#465
antigravity-cli-linux1.0.4 → 1.0.9 (4 updates)#462
goose-linux1.37.0 → 1.39.0 (3 updates)#471
1password-gui-linux8.12.22 → 8.12.24 (2 updates)#461
rog-control-center-linux6.3.8#438
asusctl-linux6.3.8#436
framework-tool0.6.4#425
jetbrains-toolbox-linux3.5.0.84344#426
antigravity-linux2.0.6#429
antigravity-ide-linux2.0.4#432
View all experimental-tap updates (6)
PackageVersionsPR
zed-linux1.5.3 → 1.7.2 (4 updates)#452
emdash-linux1.1.27#434
craft-agents-linux0.10.1#437

Ecosystem​

area/brew area/bluespeed area/flatpak

Homebrew packages, AI/ML tools (Bluespeed), and Flatpak applications

Planned Work​

  • fix(nvidia): update system flatpaks when rebooting into new nvidia image by @​castrojo in #769
  • fix(flatpak): refresh appstream on every boot instead of firstboot only by @​castrojo in #767
  • feat(oem): add Framework brew hook for framework_tool and wallpapers by @​castrojo in #753
  • fix(brew): move bluefinctl.Brewfile to shared so all variants get bctl by @​castrojo in #750
  • feat(bazaar): add Collabora + Spelling Bee + Whisp, refresh curation by @​KiKaraage in #731
  • fix(brew): fix Homebrew 6.0 breakage across brew lifecycle by @​castrojo in #728
  • chore(brew): remove bbrew, bluefinctl replaces it by @​castrojo in #729
  • fix(brew): remove aichat + whisper-cpp, update agy + kimi-code by @​KiKaraage in #715
  • fix(brew): Unblock system-cli & CNCF brewfiles validation by @​KiKaraage in #721
  • feat(oem): move Framework/Ampere hardware hooks and icons to common by @​castrojo in #672
  • fix(brew): trust ublue-os taps for Homebrew 6.0 compatibility by @​castrojo in #695
  • feat(oem): add ASUS hardware auto-install hooks by @​castrojo in #692
  • test(brew): add brew-preinstall bats tests, codecov, and sync test recipe by @​castrojo in #693
  • feat(brew): add brew-preinstall service and system-cli.Brewfile by @​castrojo in #664
  • feat(just): add ujust install-asus for ASUS laptop tools by @​castrojo in #503

Opportunistic Work​

  • chore(oem): remove Framework brew hook now in common by @​castrojo in #670
  • feat(brew): move CLI tools to brew-preinstall by @​castrojo in #205
  • fix(cask): vsc-insiders versioning and vscodium linting by @​nklowns in #450
  • fix(casks): revert arch-conditional sha256 in on_linux block, as breaks brew bump by @​nikodunk in #424
Dakota (GNOME OS Prototype)​

System Services & Policies​

area/services area/policy

Systemd services and system-level policies

Planned Work​

Opportunistic Work​

  • fix(countme): replace broken rpm-ostree-countme with dnf5-based service by @​castrojo in #326
  • fix(services): enable rechunker-group-fix.service to prevent boot failure by @​castrojo in #133
Dakota (GNOME OS Prototype)​
  • feat(bluefin): add Incus daemon, systemd integration, and ujust recipes (2/2) by @​bketelsen in #1126
  • fix: wire firstboot-services.bst into deps.bst (#603) by @​hanthor in #608

Hardware​

area/hardware area/nvidia aarch64

Hardware support, drivers, NVIDIA GPU, and ARM64 architecture

Planned Work​

  • fix(framework): migrate hid_sensor_hub karg to bootc toml by @​castrojo in #793
  • test: add unit tests for check-oci-refs, bazaar-hook, hardware hooks, and nvidia-flatpak-sync by @​castrojo in #785
  • feat(oem): add WirePlumber hardware profiles for Framework Desktop AMD Ryzen AI Max 300 by @​castrojo in #760

Opportunistic Work​

  • fix(akmods): add --tmpdir /boot to dracut call to fix EXDEV on nvidia builds by @​castrojo in #586
  • feat(nvidia): install nvidia-container-toolkit-base and configure CDI by @​castrojo in #559
  • test(build): add BATS unit tests for 04-install-kernel-akmods.sh by @​castrojo in #548
  • fix(ci): rename nvidia-open flavor to nvidia by @​castrojo in #434
  • feat(build): conditional initramfs rebuild — skip dracut when kernel unchanged by @​castrojo in #362
  • fix(ci): gate nvidia-open promotion on e2e smoke test by @​castrojo in #296
  • feat: release notes redesign — variants table, dual kernel, richer components by @​castrojo in #376
  • feat(ci): rename bluefin-lts-nvidia → bluefin-lts-hwe-nvidia by @​castrojo in #293
  • fix(kernel-swap): run depmod after noscripts install to fix dracut modules.dep error by @​castrojo in #268
  • fix(kernel-swap): use tsflags=noscripts + explicit dracut to fix EXDEV by @​castrojo in #263
  • fix(kernel-swap): sync ENABLE_GDX → ENABLE_NVIDIA to unblock squash promotion by @​castrojo in #249
  • fix(kernel-swap): use dracut.conf.d instead of DRACUT_TMPDIR to fix HWE EXDEV by @​castrojo in #248
  • feat: rename bluefin-gdx to bluefin-lts-nvidia, add :stable alias by @​castrojo in #225
  • feat(nvidia): wire CDI configuration for rootless Podman GPU passthrough (GDX) by @​castrojo in #209
  • fix(build): re-add DRACUT_TMPDIR=/boot workaround for kernel-swap by @​castrojo in #174
  • fix(gdx): remove libnvidia-ml from explicit install by @​castrojo in #32
  • fix(driver-versions): guard against null pins in hweKernel pinned tooltip by @​castrojo in #933
  • feat(sparklines): shared Sparkline component + version trend sparklines on driver versions page by @​castrojo in #969
Dakota (GNOME OS Prototype)​
  • fix(nvidia): add OpenCL, VDPAU, and suspend/hibernate support by @​castrojo in #837
  • feat(nvidia): Upgrade drivers to 610.43.02 and ship nvidia-settings by @​dylanmtaylor in #643

Infrastructure​

area/iso area/upstream area/buildstream area/finpilot area/just area/testing

ISO images, upstream integration, build systems, and testing frameworks

Planned Work​

  • fix: changelog reads repo from image-info.json and add tests by @​castrojo in #791
  • fix(ci): remove continue-on-error incompatible with uses: in e2e.yml by @​castrojo in #787
  • ci(renovate): use --auto merge for merge queue on main by @​castrojo in #782
  • fix(bonedigger): persist local report copies before cleanup by @​castrojo in #748
  • ci: bump testsuite pin to 8d9ca0b (fix common E2E failures) by @​castrojo in #752
  • fix(ci): revert to secrets.MERGERAPTOR_APP_ID matching track-common.yml by @​castrojo in #741
  • fix(ci): mark notify-downstream continue-on-error by @​castrojo in #740
  • fix(ci): use vars.MERGERAPTOR_APP_ID and client-id in notify-downstream by @​castrojo in #739
  • fix(ci): remove owner+repositories from create-github-app-token in notify-downstream by @​castrojo in #738
  • fix(ci): use workflow_dispatch for bluefin/bluefin-lts common tracking by @​castrojo in #735
  • fix(ci): add continue-on-error to dispatch steps by @​castrojo in #734
  • fix(ci): dispatch common-updated to dakota after manifest publish by @​castrojo in #733
  • ci: bump testsuite pin for custom-command-list checks by @​castrojo in #719
  • chore: ponytail shrink — dedup Justfile loops, extract OCI ref check, combine test deps install by @​castrojo in #725
  • fix(ci): remove unnecessary mergeraptor token from renovate-automerge; fix vars/secrets inconsistency by @​castrojo in #709
  • fix(ci): make downstream dispatch non-blocking by @​castrojo in #698
  • fix(ci): login to GHCR before cosign signing in manifest job by @​castrojo in #697
  • fix(ci): promote rootless buildah image to root storage before push by @​castrojo in #696
  • fix(ci): pass mergeraptor token to reusable automerge workflow by @​castrojo in #694
  • fix(keybinding): restore Super+E to open Files (Nautilus) by @​castrojo in #690
  • fix(ci): update create-github-app-token to v3 in build.yml by @​castrojo in #688
  • feat(report): add crash detection, PII scrubbing, and journal.txt to ujust report by @​castrojo in #684
  • fix(tests): remove orphaned uutils.sh tests from test_profile_d.bats by @​castrojo in #674
  • fix(update): detect layered rpm-ostree packages and block with guidance by @​castrojo in #663
  • fix(ci): restore btrfs storage backend so push-image can find built image by @​castrojo in #661
  • fix(ci): skip CVE scan in merge queue to fix SARIF upload ref error by @​castrojo in #660
  • test: add unit tests for profile.d scripts, dynamic-wallpaper, and geoclue-latitude by @​castrojo in #648
  • test(scripts): add bats coverage for ublue-image-info.sh by @​castrojo in #640
  • fix(ci): modernize build pipeline, restore Dakota E2E, event-driven releases by @​castrojo in #598
  • ci(tests): upload pytest coverage report as workflow artifact by @​castrojo in #630
  • test(just): add bats coverage for update.just and toggle-updates recipes by @​castrojo in #626
  • ci(factory): notify downstream repos when common publishes by @​castrojo in #632
  • fix(build): P0 — export image to tar before scan-image, non-blocking by @​castrojo in #625
  • feat(ci): supply chain hardening — keyless cosign, Trivy CVE gate, SBOM, SLSA L2 (Phase 6) by @​castrojo in #595
  • chore(renovate): group projectbluefin/actions ref updates by @​castrojo in #593
  • ci: add git-cliff + e2e gate to monthly release workflow by @​castrojo in #592
  • test(quality): add bats coverage for ublue-fastfetch, wire into CI by @​castrojo in #579
  • test(quality): bats tests for rechunker-group-fix, ublue-bling-fastfetch, changelog.just + coverage gate by @​castrojo in #573
  • fix(ujust): route lts/lts-hwe tags to projectbluefin/bluefin-lts in changelogs by @​castrojo in #582
  • fix(ci): bump lifecycle-caller SHA to 3025b5d3 (matches bluefin-lts) by @​castrojo in #581
  • chore(lifecycle): move lifecycle.yml to projectbluefin/actions by @​castrojo in #574
  • feat(testing): expand shellcheck + add bats by @​castrojo in #568
  • fix(ci): expand shellcheck to all shell scripts in system_files/ by @​castrojo in #554
  • feat: setup VMs for people by @​castrojo in #544
  • fix(just): remove rebase-helper and ublue-rollback-helper by @​castrojo in #567
  • feat(ci): auto-merge on lgtm label via merge queue by @​castrojo in #555
  • feat(ujust): add toggle-testing command by @​castrojo in #535
  • feat(testing): add unit tests for hooks.py and shell scripts by @​castrojo in #540
  • fix(ci): remove emoji from promotion-candidate E2E failure issue title by @​castrojo in #539
  • docs: add upstream-contributions tracking document by @​castrojo in #527
  • feat(ci): add AI commit attribution trailer check to validate.yml by @​castrojo in #515
  • fix(ci): use client-id and fail fast on missing mergeraptor secrets by @​castrojo in #510
  • ci: bump testsuite SHA to e2b36dc (all env + ptyxis quarantine + screenshot fixes) by @​castrojo in #506
  • Update curated.yaml: added Ecosia browser in the browser section by @​k3nsh0 in #466
  • chore: add Renovate automerge rule for digest/pin/patch/minor updates by @​castrojo in #495
  • feat(just): add caffeinate recipe to prevent system sleep by @​hanthor in #351
  • fix(ci): close factory determinism gaps in pipeline workflows by @​castrojo in #500
  • fix(ci): switch e2e to projectbluefin images, re-enable pr-e2e gate by @​castrojo in #496
  • fix(just): return to ujust menu after bbrew and cncf submenus by @​hanthor in #357
  • fix(ci): add bonedigger lifecycle workflow by @​castrojo in #490
  • fix(ci): add missing RUN for umotd curl and fix pre-commit violations by @​castrojo in #492
  • fix: bug batch may23 — toggle-devmode tag, branding update by @​castrojo in #488
  • feat(just): ship ujust report via common with Renovate tracking by @​hanthor in #382
  • docs(qa): define hardware canary program for post-promotion testing by @​hanthor in #447
  • feat(qa): formalize hardware testing into factory loop — template, labels, policy by @​castrojo in #486
  • fix(deps): add Renovate config for GHA version tracking by @​castrojo in #485
  • feat(ujust): wire flutter devcontainer recipe import by @​castrojo in #356
  • feat(just): add check-sb-key recipe for Secure Boot status by @​hanthor in #370
  • docs(skills): add frontmatter and Trail of Bits CI integration by @​hanthor in #444
  • docs(skills): add frontmatter and Trail of Bits skill-improver CI by @​castrojo in #461
  • feat(ci): add common factory guardrails by @​castrojo in #480
  • fix(ci): add skill-drift.yml to detect stale agent skills by @​castrojo in #463
  • fix(deps): track OCI image digests in Containerfile with Renovate by @​castrojo in #479
  • fix(security): pin curl fetches in Containerfile to verified hashes by @​castrojo in #455
  • fix(ci): add bonedigger lifecycle workflow by @​castrojo in #453
  • fix(docs): add aurorafin-shared and bluefin-branding submodules to AGENTS.md layout by @​castrojo in #454
  • docs(skills): update e2e-ci, governance for P0 session 2026-06-03 by @​castrojo in #452
  • fix(ci): add hive-progress-sync workflow by @​castrojo in #450
  • feat(ci): add pre-merge e2e composition gate for PRs by @​castrojo in #451
  • fix(scripts): Check for rpm-ostreed.conf existence before grep by @​dylanmtaylor in #387

Opportunistic Work​

  • fix: use generate_sbom_inline for release notes to avoid testing build SBOM OOM by @​castrojo in #740
  • fix(ci): pass explicit credentials to reusable-pkg-cadence by @​castrojo in #737
  • fix(sbom): add --parallelism 1 to gen-sbom Syft invocation by @​castrojo in #736
  • fix(release): use build-time SBOM artifact instead of inline scan by @​castrojo in #730
  • fix(ci): exclude main-targeting PRs from remaining pull_request triggers by @​castrojo in #718
  • fix(ci): remove pull_request:main triggers that block merge queue by @​castrojo in #717
  • fix(release): pass fast_forward_sha to reusable promotion by @​castrojo in #713
  • ci(sync): remove BLUEFINBOT dependency from sync-main-to-testing by @​castrojo in #704
  • ci(promote): post validate status to unblock merge queue enqueue by @​castrojo in #703
  • ci: move to daily releases, remove approval gate by @​castrojo in #702
  • feat: release notes redesign — richer key components by @​castrojo in #701
  • feat(ci): enable E2E release gate for bluefin by @​castrojo in #693
  • fix(ci): correct execute-release commit message trigger pattern by @​castrojo in #686
  • fix(ci): add guard against undeclared gitlinks in PR validation by @​castrojo in #685
  • fix(agents): revert bluefin-lts branch target to testing by @​castrojo in #673
  • test(hooks): add edge-case coverage for setup hook scripts by @​castrojo in #669
  • fix(ci): revert to generate_sbom_inline for release notes by @​castrojo in #667
  • ci: align testsuite with lts; remove pr-smoke; restore libratbag by @​castrojo in #666
  • ci: remove post-testing E2E and issue spam; simplify gate by @​castrojo in #661
  • fix(ci): add variants table and mesa to release notes by @​castrojo in #657
  • chore(ci): pin testsuite e2e.yml to @v1 by @​castrojo in #654
  • ci(promote): weekly Tuesday 04:00 UTC release with conditional auto-merge by @​castrojo in #652
  • chore: remove OEM hooks/icons, drop opendyslexic, fix sync token, remove noisy e2e reporter by @​castrojo in #637
  • test: add BATS coverage for runtime hook scripts and TAP artifact upload by @​castrojo in #639
  • chore: remove OEM hooks now in common, drop opendyslexic RPM, fix sync token by @​castrojo in #614
  • fix(ci): switch testsuite ref to @main managed tag by @​castrojo in #629
  • fix(ci): add event-driven common digest tracking by @​castrojo in #619
  • fix(ci): trigger promote on PR review for zero-touch merge queue enqueue by @​castrojo in #612
  • fix(ci): disable e2e gate in promote workflow, fix post-testing-e2e branches filter by @​castrojo in #611
  • fix(ci): remove invalid timeout-minutes from post-testing-e2e run-e2e job by @​castrojo in #597
  • fix(ci): use inline cosign_identity_regexp to avoid startup_failure by @​castrojo in #596
  • fix(ci): fix execute-release trigger and remove unknown reusable inputs by @​castrojo in #594
  • ci: kick post-testing-e2e after push-image fix by @​castrojo in #591
  • fix(ci): switch bonedigger caller to @main — eliminate SHA drift by @​castrojo in #582
  • revert: remove invalid workflows permission scope by @​castrojo in #581
  • fix(ci): add workflows write permission to promote caller by @​castrojo in #580
  • fix(ci): enable merge queue enqueue for promote PR by @​castrojo in #579
  • fix(ci): remove cosign pre-check for common/brew; bump cosign to v3.1.1; fix Renovate SHA pins by @​castrojo in #575
  • fix(tests): sync unit tests with removed packages and scripts by @​castrojo in #573
  • chore: remove niche/redundant packages and COPR bloat from base image by @​castrojo in #558
  • fix(ci): use @v1 managed tag for all projectbluefin/actions refs by @​castrojo in #552
  • fix(verify): switch common image verification to keyless Sigstore OIDC by @​castrojo in #561
  • refactor(build): extract package arrays to TOML manifest by @​castrojo in #539
  • feat(cadence): add pkg-interval cadence tracking by @​castrojo in #537
  • chore(ci): use reusable-vulnerability-scan from actions by @​castrojo in #534
  • chore(ci): use reusable validate-renovate workflow from actions by @​castrojo in #533
  • chore(ci): remove dead lifecycle-caller.yml by @​castrojo in #532
  • test: add unit tests for 03-packages.sh and 05-override-install.sh by @​castrojo in #515
  • ci: trigger build — v1 tag fixed at 549249ef by @​castrojo in #529
  • ci: retrigger Testing Images after v1 tag fix by @​castrojo in #528
  • chore(ci): bump actions SHA pin to 549249e (scan-image severity_rank fix) by @​castrojo in #526
  • fix(ci): bump actions SHA pin to v1 (6c2278ad) — drop broken 355f162b by @​castrojo in #523
  • fix(ci): replace artifact-metadata with issues:write in Testing Images by @​castrojo in #514
  • fix(test): run all BATS unit tests in just test-unit by @​castrojo in #509
  • fix(ci): enable shellcheck coverage for system_files scripts by @​castrojo in #510
  • ci: consumer validation — Design C promotion PR + release notes overflow fix (actions 9e4ba16) by @​castrojo in #508
  • fix(ci): auto-close stale e2e failure issues on success by @​castrojo in #504
  • test(bats): add 00-image-info.sh unit tests by @​castrojo in #503
  • fix(ci): expand promote-testing-to-main permissions for reusable workflow by @​castrojo in #500
  • fix(ci): remove duplicate lifecycle caller, fix validate-renovate paths by @​castrojo in #490
  • chore(ci): remove per-repo cleanup workflows (centralized in actions) by @​castrojo in #499
  • feat(ci): add cliff.toml for structured changelog generation by @​castrojo in #498
  • fix(factory): pin @main floating refs to SHA and adopt thin-caller promote by @​castrojo in #496
  • ci(promote): replace 343-line promote workflow with thin caller — no more merge friction by @​castrojo in #486
  • fix(security): remove dead SCORECARD_TOKEN PAT comment by @​castrojo in #485
  • ci(consistency): pin @main reusable-workflow refs to SHA by @​castrojo in #484
  • chore(ci): bump projectbluefin/actions SHA pins to 3025b5d31f34 by @​castrojo in #483
  • chore(lifecycle): call lifecycle.yml from projectbluefin/actions by @​castrojo in #481
  • fix(ci): promotion gate never stalls — e2e fires on testing builds + feedback trigger by @​castrojo in #480
  • fix: port several fixes from ublue-os/bluefin by @​castrojo in #475
  • feat(build): remove rpm-ostree rechunk, centralize through actions chunka by @​castrojo in #473
  • fix(ci): add projectbluefin/ exemption to no-floating-action-tags; remove dead generate-release.yml by @​castrojo in #472
  • feat(ci): replace weekly-testing-promotion with PR-based release gate by @​castrojo in #470
  • chore: promote testing to main by @​castrojo in #468
  • fix(renovate): enable automerge + add image-versions.yml manager for common by @​castrojo in #467
  • chore: remove stable branch build workflow by @​castrojo in #461
  • chore: remove :latest, :stable-daily, and :gts streams by @​castrojo in #460
  • fix(ci): remove environment: production from generate-release by @​castrojo in #454
  • fix(ci): restore local generate-release.yml with inline SBOM support by @​castrojo in #451
  • fix(ci): bump reusable-release to d290241 — remove secrets: inherit by @​castrojo in #448
  • fix(ci): bump reusable-release to beb89cf — add empty secrets block by @​castrojo in #445
  • fix(ci): bump reusable-release SHA — drop reserved github_token secret by @​castrojo in #442
  • chore: remove rechunker-group-fix duplicate — now in common by @​castrojo in #439
  • ci: centralise Renovate and release workflows via projectbluefin/actions reusables by @​castrojo in #438
  • ci: remove duplicate scheduled-stable-release workflow by @​castrojo in #436
  • ci: add environment:production gate to weekly stable promotion by @​castrojo in #432
  • fix(ci): generate SBOM inline with Syft in generate-release by @​castrojo in #431
  • fix(ci): tolerate runner preemption and add skopeo fallback in vulnerability-scan by @​castrojo in #430
  • fix(ci): bump reusable-release SHA pin and add mergeability poll loop by @​castrojo in #429
  • ci: handle missing SBOM in generate-release gracefully by @​castrojo in #425
  • ci: use sigstore/cosign-installer in promotion instead of curl by @​castrojo in #422
  • ci: fix cosign cert identity regexp in promotion verify by @​castrojo in #417
  • ci: fix cosign cert identity regexp in promotion verify by @​castrojo in #414
  • ci: remove software suite from weekly promotion e2e by @​castrojo in #410
  • chore: promote testing to main by @​castrojo in #409
  • fix(ci): unblock stable release — disable lifecycle gate and fix vuln scan by @​castrojo in #406
  • fix(ci): allow auto/promote-testing-to-main through base-branch check by @​castrojo in #405
  • fix(ci): squash testing commits into single branch for clean promotion PRs by @​castrojo in #402
  • fix(ci): correct vulnerability-scan artifact pattern and bonedigger workflow ref by @​castrojo in #399
  • fix(ci): disable SBOM in sign-and-publish for testing stream by @​castrojo in #395
  • fix(ci): skip SBOM generation for testing stream to unblock builds by @​castrojo in #393
  • feat(ci): add sync-main-to-testing workflow by @​castrojo in #389
  • fix: centralize scheduled stable release workflow by @​castrojo in #387
  • fix(ci): clean up promotion workflows — fix artifact name, stop comment spam, auto-close issues by @​castrojo in #385
  • fix(ci): update COPR health monitor to check uupd instead of ublue-update by @​castrojo in #381
  • ci: align all reusable-build pins to actions v1 (trivy oci-archive fix) by @​castrojo in #377
  • test: pin build-image-testing to actions fix/trivy-oci-archive-scan SHA by @​castrojo in #374
  • fix: retain default tag in tag-images so vulnerability scan can find the image by @​castrojo in #372
  • feat: add weekly gated stable release on Tuesday by @​castrojo in #371
  • feat: migrate generate-release to bootc-build/create-release by @​castrojo in #370
  • test(build): add bats unit tests for 17-cleanup.sh and 18-workarounds.sh by @​castrojo in #365
  • chore: remove stale 60-custom.just report recipe by @​castrojo in #367
  • ci: gate :testing tag behind post-build e2e (#518) by @​castrojo in #369
  • test(build): add bats unit tests for clean-stage.sh by @​castrojo in #361
  • test(build): add bats unit tests for disable-repos.sh by @​castrojo in #360
  • fix(ci): handle FORBIDDEN gracefully in promote-testing-to-main enqueue step by @​castrojo in #358
  • fix(ci): replace auto-merge with enqueuePullRequest for main merge queue by @​castrojo in #355
  • fix(ci): use GITHUB_TOKEN directly in promote-testing-to-main — remove GitHub App token by @​castrojo in #338
  • fix(ci): pin reusable-build to @v1 SHA — retire @fix/sha-skew validation ref by @​castrojo in #353
  • chore(ci): validate actions reusable-build SHA normalization by @​castrojo in #342
  • feat(ci): enforce PR base branch — require testing, block PRs targeting main by @​castrojo in #349
  • ci: validate shared generate-release-notes action by @​castrojo in #344
  • test(ci): validate actions pre-commit pinning by @​castrojo in #345
  • chore(ci): validate actions timeout pin by @​castrojo in #341
  • test(ci): run all bats unit tests in PR validation by @​castrojo in #350
  • chore(labels): retire type/* labels in issue templates by @​castrojo in #347
  • chore: promote testing to main by @​castrojo in #337
  • fix: add promotion conflict reporting and main PR builds by @​castrojo in #334
  • chore: switch lifecycle automation to common-owned workflow by @​castrojo in #332
  • ci: bump testsuite SHA to e2b36dc (all env + ptyxis quarantine + screenshot fixes) by @​castrojo in #315
  • test(build): add bats unit tests for validate-repos.sh and copr-helpers.sh by @​castrojo in #318
  • fix(ci): update COPR health monitor for new API response format by @​castrojo in #316
  • fix: use app token for promotion PRs by @​castrojo in #328
  • ci: add local Renovate runner by @​castrojo in #324
  • feat: generate GitHub release after weekly testing promotion by @​castrojo in #325
  • ci: automate testing→main branch promotion by @​castrojo in #326
  • feat(quality): add bats unit tests for package-lib.sh by @​castrojo in #298
  • fix(release): handle bootstrap case when no previous release tag exists [backport #264] by @​castrojo in #265
  • fix(ci): handle new GHCR repos in skopeo list-tags version probe by @​castrojo in #281
  • fix(ci): scope workflow permissions to job level, drop secrets:inherit by @​castrojo in #297
  • fix(ci): harden weekly testing promotion by @​castrojo in #294
  • fix(just): stop bootstrapping cosign from unverified container by @​castrojo in #295
  • fix(ci): centralize testsuite pin in pr-validation + pin pre-commit version by @​castrojo in #292
  • chore: automerge Renovate digest/pin/patch/minor updates when CI passes by @​castrojo in #286
  • fix(ci): resolve TOCTOU vuln scan, PR image namespace, testsuite SHA drift by @​castrojo in #250
  • fix(ci): centralize testsuite SHA pin through run-testsuite.yml by @​castrojo in #262
  • fix(ci): scope weekly-promotion permissions and drop secrets:inherit from build callers by @​castrojo in #255
  • fix(release): handle bootstrap case when no previous release tag exists by @​castrojo in #264
  • ci: remove E2E smoke test from PR validation by @​castrojo in #285
  • fix(security): make base image cosign verify fatal on failure by @​castrojo in #280
  • fix(ci): add hive-progress-sync workflow by @​castrojo in #279
  • chore: bump upgrade-test.yml SHA to 0527fe28 by @​castrojo in #276
  • feat(ci): wire lifecycle upgrade-test into post-build e2e gate by @​castrojo in #275
  • fix(ci): replace inline pr-validation steps with validate-pr composite action by @​castrojo in #271
  • fix(security): make base image cosign verification fatal in CI by @​castrojo in #244
  • ci(hive): add hive-progress-sync workflow by @​castrojo in #243
  • feat(ci): add skill-drift wrapper workflow by @​castrojo in #239
  • feat: add production environment gate to promotion workflow by @​castrojo in #237
  • chore: update centralized actions ref to @v1 by @​castrojo in #234
  • feat: port to centralized projectbluefin/actions reusable workflow by @​castrojo in #232
  • feat(ci): remove bluefin-dx image variant (retiring) by @​castrojo in #208
  • feat(build): split monolithic RUN into cacheable stages for build efficiency by @​castrojo in #198
  • feat(ci): enable previous-build delta for rechunking by @​castrojo in #195
  • security: pin base image by digest to prevent TOCTOU (CWE-494) by @​castrojo in #191
  • fix(build): remove version tag from cache-from/cache-to refs (Podman 5.x compat) by @​castrojo in #196
  • feat(ci): auto-file e2e test failures as GitHub issues by @​castrojo in #192
  • feat(build): tag large unpackaged assets with user.component for rechunking by @​castrojo in #190
  • feat(ci): add preflight job and rechunk metadata verification by @​castrojo in #189
  • feat(build): switch SBOM generation from podman-export to oci-dir scan by @​castrojo in #188
  • feat(ci): add Grype vulnerability scanning with SARIF upload by @​castrojo in #179
  • refactor(ci): extract reusable run-testsuite.yml wrapper workflow by @​castrojo in #185
  • refactor(ci): extract composite action for checkout+just bootstrap by @​castrojo in #184
  • feat(ci): add PR smoke test gate and Renovate risk-tier automerge by @​castrojo in #187
  • feat(ci): implement registry-side layer cache with --cache-from/--cache-to by @​castrojo in #183
  • feat(ci): add COPR repository health monitoring by @​castrojo in #182
  • security: vendor cosign public keys instead of fetching from mutable URLs by @​castrojo in #180
  • chore: remove dead rpm-ostreed.conf and migrate kargs to grubby by @​castrojo in #178
  • fix(ci): prevent /e2e dispatch from overwriting canonical :testing tags by @​castrojo in #177
  • refactor: read common/brew image refs from image-versions.yml at build time by @​castrojo in #176
  • fix(ci): retag tested digest instead of rebuilding for weekly promotion by @​castrojo in #175
  • fix(ci): upload SBOM as GitHub Actions artifact for release workflow by @​castrojo in #174
  • security: restrict GITHUB_TOKEN to GitHub-owned hosts in ghcurl (CWE-201) by @​castrojo in #172
  • fix(ci): pass explicit credentials to reusable-pkg-cadence by @​castrojo in #387
  • fix(release): use build-time SBOM artifact instead of inline scan by @​castrojo in #385
  • fix(ci): add statuses:write permission to promote workflow by @​castrojo in #384
  • fix(release): pass fast_forward_sha to reusable promotion by @​castrojo in #381
  • fix(ci): guard post-release-variants against duplicate prepend by @​castrojo in #379
  • ci: move to daily releases (04:00 UTC) by @​castrojo in #377
  • feat(ci): add E2E gate to post-merge workflow, enable run_e2e for lts by @​castrojo in #369
  • fix(ci): pin bonedigger lifecycle.yml SHA instead of floating @v1 tag by @​castrojo in #365
  • fix(ci): use build-time SBOM artifact to avoid 2GB inline extraction limit by @​castrojo in #363
  • fix(ci): update pkg-cadence comment :lts→:stable by @​castrojo in #353
  • fix(ci): guard publish_stream_tag on PR builds; drop main from pr-testsuite by @​castrojo in #352
  • ci: align testing-first branch model and drop :lts for :stable by @​castrojo in #351
  • ci: remove post-merge E2E gate — promote :testing on successful build by @​castrojo in #342
  • fix(ci): restore bonedigger @v1 — tag now exists in projectbluefin/bonedigger by @​castrojo in #341
  • fix(ci): revert bonedigger ref to @main — @v1 tag does not exist yet by @​castrojo in #340
  • ci(e2e): fix trailing blank line in post-merge-e2e.yml by @​castrojo in #339
  • ci(e2e): remove auto-issue-filing on E2E failure by @​castrojo in #338
  • chore(renovate): exclude projectbluefin/testsuite from SHA pinning by @​castrojo in #336
  • ci(promote): fully automate weekly lts release — no human approval required by @​castrojo in #330
  • ci(testsuite): switch run-testsuite.yml from SHA pin to @v1 managed tag by @​castrojo in #328
  • ci(pre-commit): exempt projectbluefin/testsuite from floating-tag check by @​castrojo in #327
  • chore(ci): pin testsuite e2e.yml to @v1 by @​castrojo in #322
  • ci(promote): weekly Thursday 04:00 UTC release with conditional auto-merge by @​castrojo in #320
  • fix(ci): exempt projectbluefin/testsuite from floating-tag hook by @​castrojo in #312
  • fix(ci): switch testsuite ref to @main managed tag; bonedigger @main → @v1 by @​castrojo in #311
  • fix(ci): add event-driven common digest tracking by @​castrojo in #301
  • fix(ci): revert bonedigger ref to @main — @v1 tag does not exist by @​castrojo in #295
  • feat(ci): add bonedigger lifecycle workflow by @​castrojo in #243
  • chore(oem): remove Framework hooks now shipped by common by @​castrojo in #220
  • revert: remove invalid workflows permission scope by @​castrojo in #238
  • fix(ci): add workflows write permission to promote caller by @​castrojo in #237
  • test: add pytest coverage for changelogs.py by @​castrojo in #222
  • test: add bats unit tests for build scripts by @​castrojo in #221
  • fix(ci): remove racing push trigger, fix stale squash-merge rules by @​castrojo in #236
  • fix(ci): align renovate and promote workflows with factory pattern by @​castrojo in #218
  • fix(ci): pass base_branch: main to renovate-automerge reusable by @​castrojo in #216
  • fix(ci): disable Renovate SHA-pinning for projectbluefin/ actions by @​castrojo in #215
  • fix(ci): replace stale testsuite SHA pin with @main by @​castrojo in #211
  • fix(ci): use @v1 managed tag for all projectbluefin/actions refs by @​castrojo in #204
  • fix(ci): bump actions SHA to e6aaccdf (fix sed title-case in render step) by @​castrojo in #200
  • fix(ci): bump actions SHA to 26a4fb2 (squash -X theirs, no conflict issues) by @​castrojo in #198
  • fix(ci): use printf to build variants table in execute-release by @​castrojo in #194
  • fix(ci): report correct image (bluefin-lts-hwe:testing) in e2e failure issues by @​castrojo in #193
  • fix(ci): add missing end-of-file newline to pkg JSON files by @​castrojo in #196
  • chore(ci): use reusable-vulnerability-scan from actions by @​castrojo in #179
  • chore(ci): use reusable validate-renovate workflow from actions by @​castrojo in #178
  • chore(ci): pin floating @v1 tags to SHA in renovate-automerge and release-reminder by @​castrojo in #177
  • refactor(build): extract package arrays to TOML manifest by @​castrojo in #182
  • feat(cadence): add pkg-interval cadence tracking by @​castrojo in #181
  • fix(ci): bump actions SHA pins to @v1 and skip rhc postun in container build by @​castrojo in #173
  • fix(ci): fix dead workflow_run triggers on promote-testing-to-main by @​castrojo in #169
  • fix(ci): normalize action SHAs, add renovate, remove vestigial workflows by @​castrojo in #164
  • feat(ci): add weekly standalone vulnerability scan by @​castrojo in #168
  • feat(ci): add cliff.toml for structured changelog generation by @​castrojo in #167
  • fix(ci): trigger post-merge-e2e on HWE build, not regular build by @​castrojo in #163
  • fix(ci): expand caller permissions to fix promote startup_failure by @​castrojo in #162
  • ci(promote): replace 354-line promote workflow with thin caller — no more merge friction by @​castrojo in #161
  • ci(consistency): pin @main reusable-workflow refs to SHA by @​castrojo in #159
  • fix(ci): set Renovate baseBranchPatterns to testing by @​castrojo in #158
  • chore(ci): bump projectbluefin/actions SHA pins to 3025b5d31f34 by @​castrojo in #157
  • chore(lifecycle): call lifecycle.yml from projectbluefin/actions by @​castrojo in #156
  • fix(ci): promotion gate never stalls — e2e fires on testing builds + feedback trigger by @​castrojo in #155
  • fix(ci): remove COPY of nonexistent system_files_overrides/base/ by @​castrojo in #154
  • fix(ci): bump testsuite SHA to include udev-settle mask (PR #419) by @​castrojo in #148
  • fix(ci): add actions: read to release-notes job to unblock startup_failure by @​castrojo in #141
  • fix(ci): add check-trigger regular job before reusable workflow calls by @​castrojo in #140
  • fix(ci): grant id-token at workflow level to unblock startup_failure by @​castrojo in #139
  • fix(ci): fix YAML syntax error in execute-release if condition by @​castrojo in #138
  • fix(ci): change execute-release trigger from pull_request to push by @​castrojo in #137
  • feat(build): remove vendored Containerfile.splitter, centralize through actions chunka by @​castrojo in #132
  • fix(ci): add mergeability poll loop and close-failure-issue job to promote workflow by @​castrojo in #129
  • feat(ci): replace scheduled-lts-release with PR-based release gate by @​castrojo in #128
  • fix(deps): bump common + fix Renovate tracking for critical fixes by @​castrojo in #123
  • fix(ci): bump projectbluefin/actions SHA to fcd2a6b — fix build failure by @​castrojo in #120
  • ci: centralise Renovate and release workflows via projectbluefin/actions reusables by @​castrojo in #118
  • ci: fix branch sync direction, Renovate flow, and promotion pipeline by @​castrojo in #117
  • ci: scope PR E2E smoke to image content changes only by @​castrojo in #115
  • ci: add environment:production gate and fix renovate automerge by @​castrojo in #114
  • fix(ci): restore blocking sign-and-publish, unblock Renovate auto-merge, add pre-merge e2e gate by @​castrojo in #111
  • fix(ci): skip lts fast-forward when sync-main-to-lts already merged it by @​castrojo in #107
  • fix(ci): use always() && needs.X.result on post-promote jobs by @​castrojo in #106
  • fix(ci): add explicit if conditions to update-lts-branch and generate-release by @​castrojo in #104
  • fix(ci): use lts repo main SHA for promote guard and branch update by @​castrojo in #103
  • fix(ci): make upgrade-test non-blocking until testsuite registry check fixed by @​castrojo in #102
  • fix(ci): use cosign v3 installer in verify-signatures job by @​castrojo in #101
  • fix(ci): broaden cosign cert-identity-regexp to include actions repo by @​castrojo in #100
  • feat(ci): replace scheduled rebuild with digest promotion + 7-day floor by @​castrojo in #92
  • fix(ci): use PACKAGES_TOKEN for GHCR login in verify-signatures by @​castrojo in #98
  • ci: restore sync-main-to-lts workflow by @​castrojo in #97
  • chore: promote main → lts (2026-06-06) by @​castrojo in #95
  • fix(ci): bump actions SHA — sign-and-publish non-blocking by @​castrojo in #91
  • fix: chown sbom_out after sudo gen-sbom so sign-and-publish can write by @​castrojo in #90
  • fix(hwe,gdx): dynamically follow Fedora CoreOS stable instead of pinned F43 by @​castrojo in #89
  • fix(ci): bump actions SHA — sudo podman inspect fix by @​castrojo in #88
  • fix(ci): bump actions SHA — PACKAGES_TOKEN + localhost image refs by @​castrojo in #86
  • fix(ci): bump actions SHA — disable Trivy scan blocking release by @​castrojo in #85
  • feat(ci): add sync-main-to-testing workflow by @​castrojo in #84
  • fix(ci): bump actions SHA — docker format for Trivy archive scan by @​castrojo in #83
  • fix(ci): bump projectbluefin/actions SHA to fix Trivy OCI scan by @​castrojo in #82
  • fix(justfile): use oci-dir export for SBOM generation by @​castrojo in #81
  • fix(ci): remove stale bonedigger.yml duplicate by @​castrojo in #78
  • ci: migrate to shared reusable-build.yml; rename images to bluefin-lts/bluefin-gdx by @​castrojo in #73
  • fix: add LTS release failure guards by @​castrojo in #70
  • feat: parallelize LTS build watching (~5h → ~90min) by @​castrojo in #71
  • chore: switch lifecycle automation to common-owned workflow by @​castrojo in #69
  • chore: add explicit renovate.json extending org config by @​castrojo in #67
  • ci: bump testsuite SHA to e2b36dc (all env + ptyxis quarantine + screenshot fixes) by @​castrojo in #63
  • fix: add failure issue auto-filing to LTS post-merge e2e by @​castrojo in #66
  • fix: wait for HWE builds and verify cosign signatures in scheduled LTS release by @​castrojo in #65
  • fix: remove trailing whitespace from Containerfile by @​castrojo in #59
  • chore(ci): add bonedigger.yml lifecycle workflow by @​hanthor in #40
  • feat(ci): upgrade podman via resolute, double-push, --compression-level 3, bootc unified storage by @​castrojo in #19
  • feat(qa): add post-merge E2E for bluefin-lts by @​hanthor in #41
  • feat(ci): migrate to shared projectbluefin/actions by @​castrojo in #46
  • fix(ci): add hive-progress-sync workflow by @​castrojo in #44
  • feat(ci): adopt validate-pr and detect-changes from projectbluefin/actions by @​castrojo in #37
  • ci(hive): add hive-progress-sync workflow by @​castrojo in #28
  • feat: migrate reusable-build-image.yml to projectbluefin/actions shared actions by @​castrojo in #23
  • chore(lockdown): add CODEOWNERS per-path entries and mandatory gates (Track C-2) by @​castrojo in #26
  • feat(ci): production environment gate on LTS release workflow (Track C-1) by @​castrojo in #25
  • feat(ci): add skill-drift wrapper workflow by @​castrojo in #24
  • Add formula and cask builder by @​jumpyvi in #459
  • ci: fix fw-fanctrl python 3.14 bundle by @​ahmedadan in #461
  • fix(hive): bypass CORS by fetching registry data at build time by @​castrojo in #956
  • feat(hive): fetch all GitHub Search data at build time using GITHUB_TOKEN by @​castrojo in #958
  • feat(dakota): add Alpha 3 ISO to downloads testing page by @​castrojo in #931
  • feat(hive): org-wide contributor wall + history trends pipeline by @​castrojo in #923
  • ci: remove Playwright E2E tests entirely by @​castrojo in #914
  • Revert "feat: Bluefin bootc-ISO builder (bootcDirect + containers-storage, 8 GB)" by @​hanthor in #66
  • feat: Bluefin bootc-ISO builder (bootcDirect + containers-storage, 8 GB) by @​hanthor in #61
  • chore: add CODEOWNERS by @​castrojo in #60
  • refactor: modernize template to projectbluefin/actions composite workflow pattern by @​Siddhj2206 in #94
  • fix(ci): cosign digest only by @​scrocquesel in #58
Dakota (GNOME OS Prototype)​
  • feat(bluefin): add Incus native library elements (1/2) by @​bketelsen in #1125
  • fix(bluefin-cli): correct sysupdate path, tar import, and mount masking by @​castrojo in #1108
  • Add snapd by @​valentindavid in #1117
  • fix(ci): trigger renovate automerge from validate by @​castrojo in #1122
  • chore(deps): batch common + sudo-rs updates by @​castrojo in #1116
  • ci(build-aarch64): remove push trigger (next) by @​castrojo in #1107
  • ci(build-aarch64): remove push trigger — workflow_run and dispatch only by @​castrojo in #1106
  • ci(next): sync CI fixes from testing — push config, exclude merge_group, aarch64 paths by @​castrojo in #1104
  • ci(build-aarch64): exclude .github/actions/** from push trigger by @​castrojo in #1103
  • fix(ci): generate push config so bst artifact push actually warms CAS by @​castrojo in #1102
  • ci(build): switch to strict daily build model, drop push triggers by @​castrojo in #1099
  • ci(build): disable CAS push/remote-exec — server still unstable by @​castrojo in #1098
  • fix(ci): remove undeclared build_run_id input causing execute-release startup_failure by @​castrojo in #1096
  • ci(build): disable remote execution to fix CAS workaround by @​castrojo in #1093
  • ci(build): disable remote CAS push to unblock builds by @​castrojo in #1092
  • fix(ci): remove ${{ }} wrapper from post-release-verify if condition by @​castrojo in #1091
  • fix(ci): replace !inputs.dry_run with inputs.dry_run != true to avoid startup_failure by @​castrojo in #1089
  • fix(release): harden OCI-native promotion (supply chain + ARM signing + post-release cleanup + rollback) by @​castrojo in #1086
  • fix(build-aarch64): resolve correct SHA in workflow_run context by @​castrojo in #1084
  • fix(publish): only move stream tags from trunk builds, not merge queue by @​castrojo in #1085
  • fix(release): pin promotion to immutable SHA; guard testing SHA drift by @​castrojo in #1083
  • ci(build): add daily 13:00 schedule; trigger ARM from publish by @​castrojo in #1079
  • ci: delete workflows obsoleted by OCI-native promotion by @​castrojo in #1078
  • chore(ci): delete release-reminder workflow by @​castrojo in #1075
  • ci(release): adopt OCI-native daily promotion in execute-release by @​castrojo in #1077
  • ci(next): skip nightly dispatch if next build already running by @​castrojo in #1076
  • ci: retarget workflows from main to testing by @​castrojo in #1080
  • feat(audio): add lsp-plugins-lv2 for PipeWire DSP filter-chain by @​castrojo in #974
  • fix(ci): add statuses:write permission to promote caller by @​castrojo in #1070
  • fix(ci): guard count-elements step against bst show failures by @​castrojo in #1069
  • ci(build): enforce serial BST builds — max-parallel: 1 by @​castrojo in #1068
  • feat: add .github/release.yml for release notes categorization by @​castrojo in #1065
  • fix(ci): add workflows permission to renovate-automerge by @​castrojo in #1054
  • fix(ci): run validate job on merge_group events by @​castrojo in #1052
  • ci(aarch64): standalone build workflow, decoupled from x86_64 release by @​castrojo in #1051
  • fix(bst-progress): correct action priority dedup and count step exit handling by @​castrojo in #1049
  • ci(build): live BST progress monitor with cache hit/miss stats by @​castrojo in #1048
  • ci(aarch64): standalone build workflow, decoupled from x86_64 release by @​castrojo in #1045
  • chore(just): remove just-overrides, use common recipes directly by @​castrojo in #1035
  • fix(ci): pin bonedigger lifecycle.yml SHA instead of floating @v1 tag by @​castrojo in #1037
  • ci(cache-warm): add parallel aarch64 warm-cache job by @​castrojo in #1036
  • fix(ci): restore next branch workflows after main merge by @​castrojo in #1032
  • fix(ci): remove dangling .workflow-scripts submodule, add PR guard by @​castrojo in #1030
  • fix(ci): remove validate from testing branch protection to unblock sync by @​castrojo in #1014
  • ci(triage): merge on maintainer ack — no more stuck approved PRs by @​castrojo in #1011
  • ci: use @v1 for all projectbluefin/actions refs, stop renovate managing org actions by @​castrojo in #1010
  • feat(countme): report to Fedora countme infrastructure by @​castrojo in #1003
  • feat(deps): add flatpak-builder by @​castrojo in #993
  • fix(ci): allow all testing-targeted PRs in pr-triage gate by @​castrojo in #1009
  • fix(ci): renovate automerge base_branch testing (testing-first model) by @​castrojo in #1008
  • fix(ci): restore :testing publishing — independent branch, paths-ignore by @​castrojo in #1004
  • fix(ci): use BST SBOM for release notes, add variants table by @​castrojo in #998
  • ci(build): drop push-to-testing trigger — eliminates redundant 5h build by @​castrojo in #997
  • chore(ci): pin testsuite e2e.yml to @v1 by @​castrojo in #994
  • ci(promote): weekly Tuesday 04:00 UTC release with conditional auto-merge by @​castrojo in #991
  • fix(motd): add missing env.sh, remove duplicate umotd.sh profile hook by @​castrojo in #992
  • fix(ci): remove persist-credentials: false from sync workflow by @​castrojo in #990
  • ci: add sync-next-from-main workflow to main branch by @​castrojo in #987
  • fix(ci): fix automerge and auto-update for mergeraptor dep PRs by @​castrojo in #989
  • chore(next): sync from main — bring next up to date with all main changes by @​castrojo in #986
  • feat(next): update bootc to v1.16.1 matching main branch by @​castrojo in #983
  • fix(ci): exclude promotion PR from pr-autoupdate by @​castrojo in #971
  • fix(ci): exempt projectbluefin/testsuite from floating-tag hook by @​castrojo in #959
  • fix(ci): switch testsuite ref to @main managed tag; bonedigger @main → @v1 by @​castrojo in #958
  • fix(ci): make common tracking event-driven, CI-gated via testing by @​castrojo in #942
  • fix(ci): align execute-release trigger with actual promotion commit format by @​castrojo in #932
  • fix(ci): guard squash branch deletion when promotion PR is open by @​castrojo in #931
  • feat(ci): nightly next branch build at 03:00 UTC by @​castrojo in #926
  • fix(ci): enable auto-merge silently on maintainer approval by @​castrojo in #927
  • fix(ci): drop GitHub App token from sync-main-to-testing by @​castrojo in #922
  • fix(ci): wait for multi-user.target before health check by @​castrojo in #919
  • fix(ci): check gdm not-failed instead of is-active in headless QEMU by @​castrojo in #918
  • fix(ci): find OSTREE_PATH from boot.1 tree instead of BLS entries by @​castrojo in #915
  • fix(ci): add --bootloader none and --ipc=host to boot-check by @​castrojo in #912
  • fix(ci): use ext4 for boot-check; add xfsprogs to bootc runtime deps by @​castrojo in #909
  • fix(ci): unblock dakota publish pipeline by @​castrojo in #908
  • fix(ci): unstick dakota publish pipeline by @​castrojo in #899
  • fix(ci): pre-partition disk before bootc to avoid udev race on node creation by @​castrojo in #889
  • fix(ci): use losetup -P (PARTSCAN) so bootc can find partition nodes by @​castrojo in #883
  • fix(ci): also exempt projectbluefin/bonedigger from floating-tag hook by @​castrojo in #878
  • fix(ci): switch bonedigger caller to @main — eliminate SHA drift by @​castrojo in #875
  • fix(ci): add workflows write permission; unpin reusable SHA to @v1 by @​castrojo in #871
  • revert: remove invalid workflows permission scope by @​castrojo in #872
  • fix(ci): pre-create host loop device for boot-check; drop --via-loopback by @​castrojo in #864
  • ci(pr): enable auto-merge after approval; add pr-autoupdate workflow by @​castrojo in #858
  • fix(bootc): require xfs root filesystem in install config by @​castrojo in #859
  • fix(ci): read OSTREE_PATH from BLS entry; detach loop device by @​castrojo in #852
  • ci(publish): make smoke gate observational, not a promote blocker by @​castrojo in #849
  • fix(sbom): mkdir -p pip cache dir before podman bind-mount by @​castrojo in #848
  • fix(export): revert buildah mount+commit to podman build --squash-all by @​castrojo in #846
  • chore: remove standalone report recipe and OTel config duplicate by @​castrojo in #845
  • ci(publish): speed up pipeline — skopeo promote, job split, buildah export, pip cache by @​castrojo in #832
  • fix(ci): use @v1 managed tag for all projectbluefin/actions refs by @​castrojo in #830
  • fix(ci): bump reusable-renovate-automerge SHA — drop --auto by @​castrojo in #829
  • ci: restore testing→main promotion pipeline — parity with bluefin by @​castrojo in #822
  • chore(deps): update projectbluefin/actions SHA pins to c4e9e551 by @​castrojo in #823
  • fix(ci): use direct merge for auto-merge group — bypass not honoured by --auto by @​castrojo in #820
  • fix(ci): revert promote SHA to 6c2278 — release-gate@5f8abb not found by @​castrojo in #819
  • fix(ci): add missing packages: read and actions: read to promote workflow by @​castrojo in #817
  • chore(ci): use reusable-vulnerability-scan from actions by @​castrojo in #813
  • chore(ci): use reusable validate-renovate workflow from actions by @​castrojo in #812
  • chore(ci): migrate promote-testing-to-main to reusable-promote-squash by @​castrojo in #811
  • feat(ci): add cache-warm scheduled workflow by @​castrojo in #782
  • chore(ci): allow common.bst updates to automerge without review by @​castrojo in #807
  • ci: consumer validation — Design C promotion PR + release notes overflow fix (actions 9e4ba16) by @​castrojo in #805
  • feat(umotd): add umotd element by @​castrojo in #762
  • fix(ci): switch execute-release to push trigger + commit-msg gate by @​castrojo in #800
  • fix(ci): add workflow_dispatch to execute-release; fix if guard by @​castrojo in #799
  • fix(ci): grant required permissions to execute-release caller by @​castrojo in #798
  • ci: promote testing images to stable (96dec33c80b7b4e3) by @​castrojo in #797
  • fix: use @projectbluefin/maintainers team in CODEOWNERS by @​castrojo in #796
  • chore(ci): remove per-repo GHCR cleanup (centralized in actions) by @​castrojo in #795
  • feat(ci): add weekly standalone vulnerability scan by @​castrojo in #794
  • feat(ci): add cliff.toml for structured changelog generation by @​castrojo in #793
  • fix(ci): fix lifecycle wiring, remove duplicate GHCR cleanup by @​castrojo in #789
  • chore(lifecycle): call lifecycle.yml from projectbluefin/actions by @​castrojo in #780
  • fix(ci): bump projectbluefin/actions SHA to 2a09e72e9be1 — fix 65% publish failure by @​castrojo in #792
  • fix(renovate): align config with org standard — extend shared config, automerge digests by @​castrojo in #790
  • ci(C1): thin caller for reusable-promote workflow by @​castrojo in #788
  • ci: add scheduled cache-warm workflow for BST remote cache by @​castrojo in #787
  • fix(ci): pin reusable-workflow @main refs to SHA by @​castrojo in #786
  • chore(ci): bump projectbluefin/actions SHA pins to 3025b5d31f34 by @​castrojo in #781
  • fix(ci): gh pr create has no --json flag — capture URL instead by @​castrojo in #778
  • fix(ci): fire build on main push; auto-merge PRs target main; force-sync testing mirror by @​castrojo in #777
  • feat(ci): use centralized bootc-build/chunka action; remove dead code by @​castrojo in #773
  • fix(ci): track-bst-sources: use --squash for auto-merge, not --merge by @​castrojo in #767
  • fix(ci): publish :testing on every testing merge; fix track-bst branch base by @​castrojo in #766
  • chore(build): upgrade chunkah v0.5.0 to v0.6.0 by @​castrojo in #761
  • fix(ci): point Renovate at main, exempt bonedigger from pinning by @​castrojo in #741
  • fix(ci): remove dead release.yml, add daily promote schedule, fix project_name casing by @​castrojo in #760
  • feat(ci): add PR-based release gate; replace weekly-testing-promotion by @​castrojo in #757
  • fix(ci): skip storage-service in export/publish jobs by @​castrojo in #756
  • ci(next): wire next branch into main CI pipeline by @​castrojo in #751
  • fix(sbom): use runc runtime to bypass crun 1.21 GHA runner failures by @​castrojo in #749
  • fix(sbom): add seccomp=unconfined to just sbom podman invocations by @​castrojo in #747
  • fix(sbom): drop --privileged from bst show / buildstream-sbom runs by @​castrojo in #745
  • ci(e2e): remove pull_request trigger from e2e workflow by @​castrojo in #740
  • revert(uutils-coreutils): remove ghost-specific LTO override by @​castrojo in #737
  • ci: centralise Renovate runner via projectbluefin/actions reusable by @​castrojo in #735
  • ci: fix Renovate to target testing branch and add runner workflow by @​castrojo in #734
  • ci: relax TOCTOU guards from exact-equality to ancestor check by @​castrojo in #732
  • ci: replace inline cosign curl install with sigstore/cosign-installer by @​castrojo in #730
  • ci: ship :testing on every merge, drop nightly schedule and e2e gate by @​castrojo in #731
  • ci: harden release.yml and publish.yml pipeline by @​castrojo in #729
  • ci: harden promotion pipeline and fix lifecycle workflow by @​castrojo in #728
  • fix(uutils-coreutils): override LTO to thin to fix SIGABRT on ghost by @​castrojo in #726
  • feat: switch to weekly gated release on Tuesday by @​castrojo in #720
  • feat: migrate release.yml to bootc-build/create-release by @​castrojo in #719
  • ci: align weekly promotion pipeline to spec (#520 #521 #522 #524) by @​castrojo in #718
  • chore: switch lifecycle automation to common-owned workflow by @​castrojo in #717
  • ci: bump testsuite SHA to e2b36dc (all env + ptyxis quarantine + screenshot fixes) by @​castrojo in #714
  • chore(ci): clarify bonedigger @main is intentional managed tag by @​castrojo in #715
  • fix(deps): add Renovate config for GHA version tracking by @​castrojo in #707
  • fix(ci): block floating GitHub Action tags in pre-commit by @​castrojo in #702
  • feat(justfile): push-local recipe + zstd + SC2129 lint fix by @​castrojo in #642
  • fix: improve gh gist upload guidance in report recipe by @​dylanmtaylor in #646
  • feat(just): add debug-session recipe with serial capture and journal logging (#558) by @​hanthor in #600
  • fix(ujust): read actual booted image from bootc status for toggle-devmode by @​hanthor in #599
  • build: parallelize validate and consolidate CI BST config by @​castrojo in #602
  • feat: add weekly GHCR cleanup workflow by @​castrojo in #672
  • feat: add bluefin-countme weekly user count ping by @​castrojo in #616
  • fix: remove bootc installer flatpak on first boot by @​castrojo in #656
  • feat(justfile): feedback loop tooling — preflight, serial log, boot-test expansion, OTLP hint by @​castrojo in #561
  • ci: switch to projectbluefin/[email protected] by @​castrojo in #641
  • ci: fix reporting-triage-review-verification loop by @​castrojo in #583
  • chore(agents): remove PR rate limit — gate is human now by @​castrojo in #669
  • chore(ci): add .pre-commit-config.yaml by @​hanthor in #682
  • chore(ci): add renovate.json5 configuration by @​hanthor in #683
  • chore(ci): add bonedigger.yml lifecycle workflow by @​hanthor in #684
  • fix(publish): remove job-level permissions from e2e-gate reusable workflow call by @​castrojo in #699
  • fix(publish): remove invalid artifact-metadata permission causing startup_failure by @​castrojo in #698
  • fix(publish): replace read-all with explicit permissions by @​castrojo in #697
  • fix(publish): add packages:write to e2e-gate, pin testsuite SHA by @​castrojo in #696
  • chore(deps): land testing dep updates into main by @​castrojo in #695
  • fix(ci): count hive p1 in status sync by @​castrojo in #691
  • fix(ci): use hive labels in status sync by @​castrojo in #690
  • fix(shellcheck): rework writes to GitHub output by @​dylanmtaylor in #647
  • ci(e2e): always report status — skip for non-image PRs by @​castrojo in #666
  • fix(ci): group consecutive GITHUB_OUTPUT redirects (SC2129) by @​hanthor in #663
  • ci(hive): migrate to org board and hive/* labels in hive-status-sync by @​castrojo in #662
  • chore(lockdown): add CODEOWNERS per-path entries and mandatory gates (Track C-2) by @​castrojo in #661
  • feat(ci): add skill-drift wrapper workflow by @​castrojo in #660
  • feat: add production environment gate to promotion workflow by @​castrojo in #659
  • chore(ci): run weekly testing promotion on Sundays by @​castrojo in #658

Documentation​

kind/documentation

Documentation improvements and additions

Planned Work​

  • docs(agents): staging audit rule, duplicate PR check, lts branch target, copilot setup by @​castrojo in #757
  • docs(factory): align bluefin-lts to completed testing-first migration by @​castrojo in #754
  • fix(ci): exclude docs/factory and specs from ublue-os ref check by @​castrojo in #749
  • docs(release-promotion): fix e2e gate model — run_e2e is false for bluefin and dakota by @​castrojo in #724
  • chore(docs): drop completed audits and stale planning docs by @​castrojo in #642
  • docs(factory): deprecate housekeeping repo — actions is canonical home by @​castrojo in #636
  • ci: delete docs-quality workflow by @​castrojo in #556
  • chore(ci): remove hive-progress-sync workflow and PROJECT_TOKEN dependency by @​castrojo in #529
  • feat(labels): add hardware/* labels to labels.json by @​castrojo in #512
  • fix(governance): add knuckle to sync-codeowners matrix by @​castrojo in #491
  • docs(ci): CI lifecycle bot consolidation strategy by @​hanthor in #443
  • docs: establish common as org brain — factory docs, skills hub, migration status by @​castrojo in #426
  • docs(agents): add missing workflows to AGENTS.md inventory by @​castrojo in #462
  • docs(skills): add lifecycle automation table and common workflow inventory by @​castrojo in #456
  • docs(skills): add all OS factory skills to common by @​castrojo in #427

Opportunistic Work​

  • docs(release): rewrite release.md with correct build-time SBOM pattern by @​castrojo in #731
  • docs: replace skills/README.md with redirect to SKILL.md by @​castrojo in #728
  • docs: add merge queue operational failure modes to AGENTS.md by @​castrojo in #726
  • docs(ci): document merge queue AWAITING_CHECKS and locked branch failure modes by @​castrojo in #724
  • chore: remove orphaned gif; fix README stable promotion cadence by @​castrojo in #723
  • docs(ci): remove pr-release-gate.yml from pipeline diagram by @​castrojo in #722
  • docs: fix remaining stale references from full docs audit by @​castrojo in #720
  • docs: brutal accuracy pass — kill stale facts and broken links by @​castrojo in #719
  • docs: final audit — fix remaining stale references by @​castrojo in #711
  • docs: require Context7 tool lookup before any tool or library use by @​castrojo in #694
  • docs(ci): add failure modes for SBOM OOM, merge queue dequeue, statuses 403 by @​castrojo in #707
  • docs: brutal audit — delete stale files, align to daily automated factory by @​castrojo in #708
  • docs(agents): add CI verification command and done-means-verified rule by @​castrojo in #684
  • docs(agents): fix lts branch target, add staging audit and pr dedup check by @​castrojo in #671
  • docs: onboard factory skill-improvement mandate; fix CI docs by @​castrojo in #668
  • docs(skills): add dracut EXDEV nvidia failure mode to build.md by @​castrojo in #587
  • fix(ci): pin testsuite SHA, fix stale known-bug docs, narrow hook exemptions by @​castrojo in #583
  • docs: update AGENTS.md — fix promotion model, remove deleted workflow refs by @​castrojo in #578
  • docs(ci): record testing branch recovery learnings by @​castrojo in #531
  • docs(skills): update ci.md for expanded shellcheck and full bats inventory by @​castrojo in #513
  • docs: quality follow-up — fix missing entries and stale notes by @​castrojo in #512
  • docs: link copr-security.md from SKILL.md router by @​castrojo in #511
  • docs: install-hooks step, remote trap warning, 2-human gate, skill-drift CI docs, iso.md fix by @​castrojo in #479
  • docs: update all docs/skills to reflect two-stream model (testing + stable) by @​castrojo in #464
  • docs(ci): document cosign installer rule and SBOM promotion gap by @​castrojo in #426
  • docs(ci): document SBOM dual-scan runner timeout pattern by @​castrojo in #397
  • docs(ci): document stable branch's local reusable-build.yml exception by @​castrojo in #392
  • docs(agents): add analysis-vs-implementation, cross-repo, and issue comment rules by @​castrojo in #384
  • docs(ci): update promotion pipeline docs for org-wide consistency by @​castrojo in #382
  • docs: update AGENTS.md and workflow.md with current patterns by @​castrojo in #366
  • docs: extend comment policy to cover issues, add close+comment anti-pattern by @​castrojo in #363
  • docs: remove stale ublue-os/bluefin origin remote references by @​castrojo in #352
  • docs(skills): update ci.md and AGENTS.md for main merge queue and branch sync by @​castrojo in #331
  • docs(skills): update ci and build skills for current state by @​castrojo in #320
  • docs(ci): clarify shared workflow boundaries by @​castrojo in #303
  • docs(agents): document floating-tag pre-commit guard by @​castrojo in #302
  • docs: update workflow and renovate skill with current process by @​castrojo in #288
  • docs: update CI/PR workflow docs for validate-only PRs and automerge by @​castrojo in #287
  • docs(workflow): document agent label checklist when opening a PR by @​castrojo in #245
  • docs(skills): integrate session learnings into ci and release skills by @​castrojo in #268
  • docs: restructure README with consistent structure and release cards by @​castrojo in #269
  • docs(workflow): document stuck-PR patterns and bulk-merge flow by @​castrojo in #261
  • docs(ci): document shared CI architecture; add CI-fix-first workflow for agents by @​castrojo in #256
  • docs(workflow): add hive/p0 and hive/p1 to label reference by @​castrojo in #242
  • docs(THEPATTERN): add user/developer impact section, fix stale facts by @​castrojo in #238
  • docs: add SECURITY.md and fix stale ublue-os references by @​castrojo in #171
  • docs: require Context7 tool lookup before any tool or library use by @​castrojo in #370
  • docs(agents): add CI verification command and done-means-verified rule by @​castrojo in #362
  • docs(factory): onboard to factory self-improvement model by @​castrojo in #297
  • docs: add ublue-os/bluefin-lts migration plan and skill by @​castrojo in #321
  • docs(skills): fix stale testsuite SHA-pin policy and README image name by @​castrojo in #294
  • fix(ci): pin testsuite SHA, fix stale docs, narrow hook exemptions by @​castrojo in #245
  • docs: update AGENTS.md — branch model alignment, remove outdated references by @​castrojo in #228
  • docs(skills): update factory state after 2026-06-14 session by @​castrojo in #217
  • docs(skills): add image verification and bootc /boot notes to release.md by @​castrojo in #195
  • fix(docs): fix stale ublue-os image refs, NVIDIA :latest→:lts, add SECURITY.md and expanded CONTRIBUTING by @​castrojo in #152
  • docs(skills): update ci-cd runbooks from 2026-06-10 session by @​castrojo in #149
  • docs(skills): rewrite skills as runbooks, remove session-log artifacts by @​castrojo in #145
  • docs(skills): document execute-release startup_failure root cause and fix by @​castrojo in #142
  • fix(ci): resolve post-merge E2E #135 — mask systemd-udev-settle + skill doc by @​castrojo in #136
  • docs(skills): document rechunker-group-fix pattern and emergency promotion runbook by @​castrojo in #134
  • docs(skills): remove testlab skill by @​castrojo in #113
  • docs(agents,skills): align with org-wide pattern; audit and fix skill files by @​castrojo in #112
  • docs(skills): update release pipeline and pitfalls by @​castrojo in #110
  • docs(skills): clarify COPR chroot naming and add bonedigger to workflow map by @​castrojo in #56
  • docs(agents): document floating-tag pre-commit guard by @​castrojo in #52
  • docs: consolidate doc updates from PRs 29, 49, 50 by @​castrojo in #54
  • docs: fix stale image refs and flesh out CONTRIBUTING.md by @​castrojo in #45
  • docs(ci): clarify lts workflow overrides by @​castrojo in #53
  • docs: update skills for shared-actions migration (PR #46) by @​castrojo in #47
  • docs(skills): document projectbluefin/actions adoption by @​castrojo in #38
  • docs: restructure README with consistent structure and release cards by @​castrojo in #36
  • docs(music): move Children of Jensen to Origins, Requiem to Kettle by @​castrojo in #994
  • docs(music): update top section title and playlist order by @​castrojo in #993
  • feat(music): add 'The War of Generations' soundtracks by @​castrojo in #992
  • fix: correct YAML syntax in refresh-sbom-seed.yml by @​castrojo in #990
  • chore: add workflow to refresh SBOM seed files via PR by @​castrojo in #989
  • revert: remove SBOM seed commit step (branch protection blocks push) by @​castrojo in #988
  • chore: auto-commit SBOM seed files from nightly workflow by @​castrojo in #987
  • fix: add search-insights as explicit dep to sync package-lock by @​castrojo in #986
  • chore: migrate ublue-os image repos to projectbluefin org by @​castrojo in #985
  • chore: remove gaming stub page by @​castrojo in #982
  • fix(sparklines): fix trend guard and Sparkline default fill by @​castrojo in #974
  • fix(hive): switch snapshot from broken HTML URL to /api/status by @​castrojo in #952
  • fix(hive): move Guardians/Ghosts to main fetch batch to avoid search rate limit by @​castrojo in #957
  • feat(nav): restructure sidebar — promote Platform section to top by @​castrojo in #976
  • feat(hive): wire public registry API for live governor and frame data by @​castrojo in #955
  • feat(nav+analytics): add Hive to navbar, replace analytics page with LFX widgets by @​castrojo in #977
  • feat(hive): ops center layout — factory floor hero, 3-col intelligence zone, fixed stats grid by @​castrojo in #954
  • feat(hive): governor meter to top, accurate marker, new stats strip cards by @​castrojo in #951
  • feat(hive): remove commit-centric panels, rank contributors by project breadth by @​castrojo in #953
  • feat(docs): show last-update timestamps, hide edit on data pages, fix stale content by @​castrojo in #978
  • feat(projects): add CNCF and OpenSSF section to projects page by @​castrojo in #968
  • docs(agents): add Sparkline component docs, CNCF section policy, update worktrees by @​castrojo in #975
  • chore: remove GTS announcement banner by @​castrojo in #967
  • chore(docs): brutal audit — fix ublue-os refs, update outdated commands by @​castrojo in #980
  • chore(docs): factory audit — delete stale docs, fix supply chain, update agentic guide by @​castrojo in #981
  • docs: add supply-chain security page by @​castrojo in #979
  • fix(hive): 2-column Guardians/Ghosts, full-width Recently Merged by @​castrojo in #959
  • fix(deps): add glob as direct dependency, fix fetch-github-profiles token guard by @​castrojo in #949
  • feat(hive): source from hosted instance + community showcase overhaul by @​castrojo in #930
  • docs(agentic-contributing): update for current projectbluefin state (June 2026) by @​castrojo in #929
  • Replaced Dev Containers guide with last archive version by @​liachra in #928
  • docs: document Hive Factory Dashboard in AGENTS.md by @​castrojo in #925
  • feat(hive): contributor leaderboard with weekly/monthly milestones by @​castrojo in #924
  • feat(hive): expand dashboard with timeline, budget, nous, full merged grid by @​castrojo in #922
  • fix: add missing [email protected] to package-lock.json by @​castrojo in #921
  • fix(hive): drop "The" from title, add factory tagline by @​castrojo in #920
  • feat(hive): The Bluefin Operating System Factory by @​castrojo in #917
  • docs(agentic): add queue dashboard and review-guide pointers by @​castrojo in #912
  • docs: add agentic contributor guide for projectbluefin org by @​castrojo in #910
  • refactor: overhaul agent UX — skill-based docs, slim AGENTS.md by @​Siddhj2206 in #100
Dakota (GNOME OS Prototype)​
  • docs: clean house — align with OCI-native daily factory, delete stale content by @​castrojo in #1090
  • docs(skills): record statuses:write startup_failure pattern by @​castrojo in #1071
  • docs(skills): update ci.md — merge_group excluded from build, new lessons learned by @​castrojo in #1105
  • docs: sweep and remove all stale references to push-driven CI and old PR flow by @​castrojo in #1100
  • docs(skills): move CI failure patterns to correct skill files by @​castrojo in #1095
  • docs(ci): document execute-release startup_failure and CAS mid-build drop patterns by @​castrojo in #1094
  • docs: update CI/promotion docs for OCI-native daily promotion by @​castrojo in #1081
  • docs: require Context7 tool lookup before any tool or library use by @​castrojo in #1050
  • docs(agents): add CI verification command and done-means-verified rule by @​castrojo in #1031
  • docs(skills): fix workflow-map — testing-first is the model by @​castrojo in #1029
  • docs(agents): align trailer rule with org standard, add staging audit by @​castrojo in #1013
  • docs: factory compliance audit and cleanup by @​castrojo in #1012
  • docs(skills): fix code fence label in ci.md by @​castrojo in #1005
  • docs(skills): document next-branch-specific patches by @​castrojo in #988
  • docs(skills): onboard factory self-improvement infrastructure by @​castrojo in #982
  • docs(skills): split CI knowledge into focused skills by @​castrojo in #900
  • docs(ci): document run_e2e=false design, narrow hook exemptions to actions only by @​castrojo in #876
  • docs: update AGENTS.md — fix repo map, remove deleted workflow reference by @​castrojo in #869
  • docs(skills): ci — lessons from 2026-06-12 session by @​castrojo in #816
  • docs(skills): ci — release pipeline lessons from 2026-06-11 session by @​castrojo in #802
  • docs(skills): ci + pr-review — lessons from 2026-06-10 session by @​castrojo in #774
  • docs: expand CONTRIBUTING.md with BST build context and AGENTS.md reference by @​castrojo in #776
  • docs(skills): add live build diagnosis and gnome-build-meta nightly delta patterns by @​castrojo in #742
  • docs: document :next/:btw stream, export CAS fix, and next branch ops by @​castrojo in #758
  • docs(skills): add ci.md lessons from PR 751 by @​castrojo in #752
  • docs: add image streams section to README by @​castrojo in #736
  • docs(skills): fix stale CI references and add rubber duck review pattern by @​castrojo in #733
  • docs(skills): 2026-06-07 lessons — CAS outage, ghost LTO, meson systemd dep by @​castrojo in #727
  • docs: complete skill audit — frontmatter, correctness fixes, real lessons by @​castrojo in #724
  • docs(agents): document floating-tag pre-commit guard by @​castrojo in #703
  • docs: reinforce dakota build boundaries by @​castrojo in #704
  • fix(docs): update overview.md gap table — fwupd and uupd are present by @​castrojo in #679
  • docs(skills): add merge-queue skill — retarget, rebase, and fleet patterns by @​castrojo in #668
  • docs(skills): add lab:fail PR reset policy — update in place, no comment spam by @​castrojo in #601
  • docs: clarify push-to-upstream rule — dep-update PRs are same-repo by @​castrojo in #619
  • docs: document publish pipeline, stream model, and factory restart by @​castrojo in #701
  • docs(skills): document publish.yml startup_failure root causes by @​castrojo in #700
  • docs(skills): add merge-queue skill — dep-update PR retarget/cherry-pick/merge flow by @​castrojo in #692
  • docs: restructure README with consistent structure and release cards by @​castrojo in #671

Tech Debt​

kind/tech-debt kind/parity

Maintenance work and feature parity between variants

Planned Work​

  • chore(ci): remove fragile cross-repo workflows by @​castrojo in #786
  • ci(renovate): use platformAutomerge, remove redundant automerge workflow by @​castrojo in #783
  • refactor(system): move ujust helpers into libexec by @​castrojo in #720
  • ci: exempt internal projectbluefin/ refs from floating-tag hook by @​castrojo in #716
  • fix(ci): drop dead downstream dispatch and sync-labels by @​castrojo in #701
  • revert(ai): remove nvidia/amd AI stacks erroneously merged in #684 by @​castrojo in #687
  • chore(assets): remove unreferenced fedora SVG icons (−2.4MB) by @​castrojo in #650
  • fix(ci): update lifecycle-caller SHA — fixes all PR branch failures by @​castrojo in #638
  • chore(ci): validate release-state.yaml against JSON schema by @​castrojo in #634

Opportunistic Work​


Automation​

kind/automation kind/github-action kind/renovate

CI/CD pipelines, GitHub Actions, and automated dependency updates

Planned Work​

Opportunistic Work​

Status: ChillOps


Localization​

kind/translation

Translation and internationalization work

Status: ChillOps


Bot Activity​

Automation Percentage: 39.4% (551 bot PRs out of 1400 total PRs)

RepositoryBot PRs% of Total
dakota15611.1%
bluefin1399.9%
bluefin-lts1238.8%
common493.5%
finpilot392.8%
documentation70.5%
artwork20.1%
View bot activity details

Contributors​

Wayfinders​

"Define yourself by your actions."

—Lord Saladin

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

Want to see the latest OS releases? Check out the Changelogs. For announcements and deep dives, read our Blog.

This report was automatically generated from todo.projectbluefin.io.


Generated on 2026-07-02
View Project Board | Report an Issue

Megalosaurus May 2026

· 75 min read
Project Bluefin
Automation & Factory
Total Items290 (33 planned, 257 opportunistic)
Automation53.4% (332 bot PRs out of 622 total PRs)
Contributors37 total, 17 new

Desktop​

area/gnome area/aurora area/bling

GNOME desktop environment, Aurora variant (KDE), and terminal enhancements

Planned Work​

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Development​

area/dx

Development tools and IDE integrations

Planned Work​

Opportunistic Work​

Dakota (GNOME OS Prototype)​
  • fix(ujust): dx-group — guard PKEXEC_UID, offer reboot by @​castrojo in #597

Homebrew​

New Applications​

The following applications were added to our Homebrew taps this month:

ApplicationDescriptionStatus
antigravity-cli-linuxTerminal interface for Antigravity agentsStable
antigravity-ide-linuxAI Coding Agent IDEStable
antigravity-ide-linuxNo description availableExperimental
antigravity-linuxNo description availableExperimental
antigravity-sdkPython SDK for building with Google AntigravityExperimental
vmbuddyQEMU wrapper with sensible defaultsExperimental

Use ujust bbrew to browse and install these packages. Follow the tap instructions if you want to do it by hand.

Package Updates​

Production Tap Experimental Tap

90 automated updates this month via GitHub Actions. Homebrew tap version bumps ensure Bluefin users always have access to the latest stable releases.

Quick Summary​
TapUpdates
production-tap23
experimental-tap67
View all production-tap updates (23)
PackageVersionsPR
goose-linux1.34.0 → 1.36.0 (4 updates)#421
lm-studio-linux0.4.13 → 0.4.15 (3 updates)#422
framework-tool0.6.3#386
visual-studio-code-linux1.119.0#388
View all experimental-tap updates (67)
PackageVersionsPR
zed-linux1.0.1 → 1.4.4 (12 updates)#432
opencode-desktop-linux1.14.30 → 1.15.11 (11 updates)#430
cursor-linux3.2.21 → 3.5.38 (9 updates)#428
craft-agents-linux0.8.13 → 0.10.0 (8 updates)#427
emdash-linux1.1.16 → 1.1.25 (4 updates)#429
dockerd-linux29.4.2 → 29.5.2 (3 updates)#411
dataspell-linux2026.1.1 → 2026.1.2 (2 updates)#422
rustrover-linux2026.1.2 → 2026.1.2 (2 updates)#415
phpstorm-linux2026.1.2 → 2026.1.2 (2 updates)#414
clion-linux2026.1.2#395
rider-linux2026.1.2#407
goland-linux2026.1.2#386
intellij-idea-linux2026.1.2#387
pycharm-linux2026.1.2#388
rubymine-linux2026.1.2#389
webstorm-linux2026.1.2#390
datagrip-linux2026.1.3#360

Ecosystem​

area/brew area/bluespeed area/flatpak

Homebrew packages, AI/ML tools (Bluespeed), and Flatpak applications

Planned Work​

  • fix(ujust): only run brew bundle when enabling bluefin-cli by @​hanthor in #358
  • Hooks for bazaar by @​jumpyvi in #254
  • spec: Add Bluespeed architecture spec (v0.1) for local-first AI on Bluefin by @​lazypower in #236
  • Removal of Sound Recorder in favor of Decibels by @​pfanzola in #325
  • feat(bazaar): add Rclone Manager and Tube Converter to curated apps by @​repires in #332
  • chore(apps): add gitte (git gui) flatpak to curated apps in Bazaar by @​Ilan-Sperber in #319
  • chore(bazaar): update curated jellyfin to org.jellyfin.JellyfinDesktop by @​coxde in #322

Opportunistic Work​

Dakota (GNOME OS Prototype)​
  • fix(systemd): guard flatpak-preinstall.service against missing subcommand by @​castrojo in #588

System Services & Policies​

area/services area/policy

Systemd services and system-level policies

Planned Work​

Opportunistic Work​

  • Revert "fix: ensure xdg-desktop-portal starts after gnome-keyring-dae… by @​coxde in #4685
Dakota (GNOME OS Prototype)​
  • fix(fdsdk): squash pipewire ref bump and separate policy flags by @​castrojo in #587
  • fix: Remove passwordless sudo policy by @​coxde in #374

Hardware​

area/hardware area/nvidia aarch64

Hardware support, drivers, NVIDIA GPU, and ARM64 architecture

Planned Work​

Status: ChillOps

Opportunistic Work​

  • chore(hwe): bump kernel to 6.19.12-200.fc43 and coreos stable to 43 by @​castrojo in #1334
  • chore(hwe): bump kernel pin to 6.19.12-100.fc42 by @​castrojo in #1333
  • fix(sbom): store cacheKey as tag so nvidia overlay matches correctly by @​castrojo in #840
  • fix(changelogs): fall back to most-recent nvidia SBOM entry for Dakota by @​castrojo in #815
  • fix(changelogs): populate LTS HWE Kernel from lts-hwe SBOM stream by @​castrojo in #779
  • fix(driver-versions): detect kernel and mesa patch-level version bumps by @​castrojo in #776
  • fix(driver-versions): populate LTS HWE kernel from lts-hwe SBOM stream by @​castrojo in #778
  • fix: add dakota-nvidia SBOM stream and BST nvidia-driver extraction by @​castrojo in #808
  • fix: install oras in pages.yml so Dakotaraptor driver versions populate by @​castrojo in #807
  • fix: add bluefin-nvidia-open-stable SBOM stream for stable nvidia driver versions by @​castrojo in #806
  • data(sbom): update sbom-attestations.json seed with GDX nvidia versions by @​castrojo in #805
  • fix: extract nvidia-driver from GDX SBOM, remove release-notes fallback by @​castrojo in #804
Dakota (GNOME OS Prototype)​

Infrastructure​

area/iso area/upstream area/buildstream area/finpilot area/just area/testing

ISO images, upstream integration, build systems, and testing frameworks

Planned Work​

  • chore: update codeowners and add pull request template by @​inffy in #354
  • fix(just): make validation recipe properly fail on errors and fix syntax errors by @​hanthor in #384
  • ci: add e2e PR gate for Bluefin LTS, Stable, and Dakota by @​castrojo in #366
  • fix(just): add volume preview before pruning in clean-system by @​hanthor in #363
  • fix: ignore commented LockLayering setting by @​joshyorko in #300
  • feat(just): add overlay command for sysext testing by @​tulilirockz in #158
  • fix(opentabletdriver): fix opentabletdriver recipe by @​inffy in #343
  • fix(ujust): typo in toggle-user-motd disable message by @​sebjag in #329
  • fix(apps): remove duplicate VideoTrimmer from productivity section by @​EsmeAioli in #320
  • chore: Bump game-devices-udev. Restore the priority prefixes. by @​fardragon in #331
  • chore: bump game-devices-udev by @​renner0e in #330
  • docs: mention LUKS in toggle-tpm2 comment for better ujust --choose discoverability by @​L0g0ff in #299

Opportunistic Work​

Dakota (GNOME OS Prototype)​
  • feat(ci): add testing/latest/stable stream layout by @​castrojo in #636
  • fix(ci): grant packages:write so testsuite can push desktop screenshot by @​castrojo in #617
  • feat(report): add boot error log and per-unit journal to ujust report by @​castrojo in #589
  • fix(renovate): use stable PyPI URL format for plugins junctions by @​castrojo in #482
  • feat(ujust): add flutter devcontainer scaffold recipe by @​castrojo in #594
  • fix(ujust): show issue URL with template in not-signed-in path of ujust report by @​castrojo in #586
  • feat(actionadon): 5-stage pipeline with you-are-here widget by @​castrojo in #590
  • fix(publish): call just chunkify after export to restore 120-layer output by @​castrojo in #585
  • ci: fix 10 audit issues — SHA resolution, cosign bump, retry, pins, e… by @​castrojo in #390
  • feat(ujust): add probe recipe for AI-assisted diagnostics by @​castrojo in #559
  • ci(hive-status-sync): update project title with live queue stats by @​castrojo in #567
  • ci(hive-status-sync): also trigger on push to main by @​castrojo in #566
  • fix(hive-status-sync): use correct GraphQL field for project status by @​castrojo in #565
  • fix(hive-status-sync): skip posting when PROJECT_TOKEN is not set by @​castrojo in #564
  • ci: hourly Hive status sync to project board by @​castrojo in #563
  • feat(agents): add in-repo skills knowledge base at .github/skills/ by @​castrojo in #543
  • Add contributor discovery table to AGENTS.md by @​castrojo in #545
  • Human-first issue templates — specificity drives velocity by @​castrojo in #550
  • fix: remove emojis from issue templates by @​castrojo in #542
  • fix: ghost copy wording + streamlined issue templates by @​castrojo in #541
  • feat: opt-in AI report stash + Dakota-specific MOTD with gum polish by @​castrojo in #540
  • fix: batch papercut fixes (#304, #352, #456, #465) by @​castrojo in #486
  • feat(just): add ujust report — system information donation by @​castrojo in #494
  • fix(firstboot-date): mkdir -p wants/ before symlink by @​castrojo in #500
  • ci: disable aarch64 build temporarily by @​castrojo in #499
  • ci: re-enable aarch64 build on cron/dispatch only by @​castrojo in #495
  • fix(ci): use app token for checkout in track jobs by @​castrojo in #481
  • fix(release): add full SBOM diff tables to release notes by @​castrojo in #455
  • ci: automated GitHub releases with SBOM-diffed release card by @​castrojo in #443
  • ci: filter publish workflow_run trigger to main and merge queue branches by @​castrojo in #442
  • ci: use mergeraptor app token for PR creation in tracking workflows by @​castrojo in #440
  • ci: fix timeout ceiling, cancel-on-push, redundant step guard by @​castrojo in #438
  • ci: add validate job, move full build off PRs, drop Blacksmith by @​castrojo in #437
  • fix(ci): atomic junction tracking + block Renovate from pinning dakot… by @​castrojo in #425
  • fix(ujust): generate ujust completions by @​coxde in #364
  • refactor(tealdeer): use inline arch dispatcher pattern by @​ahmedadan in #413
  • feat: add document thumbnailers by @​coxde in #409
  • fix(chunkah): bump to v0.5.0 and fix Renovate tracking by @​castrojo in #408
  • fix(renovate): rename managerFilePatterns to fileMatch by @​castrojo in #405
  • feat(deps): add tealdeer (tldr) v1.8.1 by @​axel-kaliff in #116
  • chore: remove Saturn and its exclusive dependencies by @​castrojo in #395
  • ci: serialize PR builds to avoid buildbox contention by @​castrojo in #397
  • fix(ci): update scorecard-action to verified commit SHA by @​castrojo in #393
  • feat(security): OpenSSF Scorecard, CodeQL SAST, SECURITY.md, hardened token permissions by @​castrojo in #391
  • ci: fix oras attach digest capture for SBOM signing by @​castrojo in #389
  • ci: inline export in publish with correct BST_FLAGS by @​castrojo in #388
  • ci: fix BST_FLAGS key mismatch in export and add explicit artifact push by @​castrojo in #387
  • ci: move export to separate job to fix BST artifact checkout by @​castrojo in #386
  • ci: pull BST artifact to local cache before export by @​castrojo in #385
  • ci: move export/chunkify/sbom to build, publish loads artifact by @​castrojo in #384
  • ci: add docker login so cosign can authenticate to GHCR by @​castrojo in #383
  • project.conf: Add x86_64_v3 option and enable it by default by @​alatiera in #91
  • fix(ci): per-SHA concurrency for merge_queue publishes by @​castrojo in #380
  • fix(ci): use --merge instead of --squash for merge queue compatibility by @​castrojo in #379
  • fix(ci): move Blacksmith to publish only, schedule on standard runners by @​castrojo in #378
  • feat(ci): split build/publish workflows, add SBOM+signing by @​castrojo in #377

Documentation​

kind/documentation

Documentation improvements and additions

Planned Work​

Status: ChillOps

Opportunistic Work​

Dakota (GNOME OS Prototype)​
  • docs: add actionable fix notes (fixes #180 #501 #503 #524 #527 #536 #603 #606) by @​hanthor in #607
  • docs(agents): define /lab slash commands, restrict to maintainers/wranglers by @​castrojo in #604
  • docs: add 20 community skills to .github/skills/, slim AGENTS.md to pointer file by @​castrojo in #572
  • docs: trim AGENTS.md by 51%, tighten skills for token efficiency by @​castrojo in #570
  • docs(readme,motd): rewrite readme around feedback loop, overhaul motd by @​castrojo in #560
  • feat: built-in feedback loop — boot-test, actionadon commands, architecture doc by @​castrojo in #534
  • docs(AGENTS.md): fix content gaps from gap analysis by @​castrojo in #508
  • docs: add AGENTS.md for contributor and agent guidance by @​castrojo in #507

Tech Debt​

kind/tech-debt kind/parity

Maintenance work and feature parity between variants

Planned Work​

Opportunistic Work​


Automation​

kind/automation kind/github-action kind/renovate

CI/CD pipelines, GitHub Actions, and automated dependency updates

Planned Work​

Status: ChillOps

Opportunistic Work​


Localization​

kind/translation

Translation and internationalization work

Planned Work​

Status: ChillOps

Opportunistic Work​


Bot Activity​

Automation Percentage: 53.4% (332 bot PRs out of 622 total PRs)

RepositoryBot PRs% of Total
bluefin8714.0%
bluefin-lts7512.1%
dakota579.2%
common71.1%
documentation71.1%
finpilot50.8%
artwork30.5%
iso10.2%
View bot activity details

Build Health​

Raptor Race​

Keep Bluefin healthy with green builds. Wranglers apply within!

ImageSuccess RateSuccessesFailuresMonthly Change
bluefin:stable76%19060-19.7%
bluefin:latest84.3%20438-9.5%
bluefin:lts46.3%119138-50.3%
bluefin:lts-hwe45.4%118142-51.8%
bluefin-dx:lts45.9%118139-50.7%
bluefin-gdx:lts46.1%119139-48.8%
bluefin-dx:lts-hwe46.3%120139-50.5%

This Month's Highlights​

MetricValue
📊 Total Builds1783 builds across all images
🏆 Most Activebluefin:lts-hwe (260 builds)
💯 100% ClubNone. Vegeta is displeased.
⏱️ Avg Build Time17 minutes across all variants

Contributors​

New Lights​

We welcome our newest Guardians to the project.

"I do not know what the future holds. But I know this: with you at our side, there is nothing we cannot face."

—Commander Zavala

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

Wayfinders​

"Define yourself by your actions."

—Lord Saladin

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

Want to see the latest OS releases? Check out the Changelogs. For announcements and deep dives, read our Blog.

This report was automatically generated from todo.projectbluefin.io.


Generated on 2026-06-01
View Project Board | Report an Issue

Allosaurus April 2026

· 59 min read
Project Bluefin
Automation & Factory
Total Items186 (12 planned, 174 opportunistic)
Automation62.3% (308 bot PRs out of 494 total PRs)
Contributors22 total, 11 new

Desktop​

area/gnome area/aurora area/bling

GNOME desktop environment, Aurora variant (KDE), and terminal enhancements

Planned Work​

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Development​

area/dx

Development tools and IDE integrations

Planned Work​

Status: ChillOps

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Homebrew​

New Applications​

The following applications were added to our Homebrew taps this month:

ApplicationDescriptionStatus
asusctl-linuxASUS laptop control CLI and immutable-friendly system daemon payloadStable
fw-fanctrl-linuxFramework laptop fan controller daemon and CLIExperimental
rocm-smi-libAMD ROCm System Management Interface library (provides librocm_smi64.so)Experimental
rog-control-center-linuxASUS ROG Control Center GUI and user daemon with XDG-first installationStable
visual-studio-code-linux@insidersOpen-source code editor (Insiders build)Stable
zed-linuxHigh-performance, multiplayer code editorExperimental
zed-linux@previewHigh-performance, multiplayer code editor (preview build)Experimental

Use ujust bbrew to browse and install these packages. Follow the tap instructions if you want to do it by hand.

Package Updates​

Production Tap Experimental Tap

103 automated updates this month via GitHub Actions. Homebrew tap version bumps ensure Bluefin users always have access to the latest stable releases.

Quick Summary​
TapUpdates
production-tap45
experimental-tap58
View all production-tap updates (45)
PackageVersionsPR
goose-linux1.29.0 → 1.33.1 (7 updates)#375
visual-studio-code-linux1.114.0 → 1.118.1 (5 updates)#377
lm-studio-linux0.4.9 → 0.4.12 (4 updates)#359
1password-gui-linux8.12.10 → 8.12.12 (2 updates)#363
antigravity-linux1.22.2 → 1.23.2 (2 updates)#357
linux-mcp-server1.4.0 → 1.4.1 (2 updates)#345
vscodium-linux1.116.02821#370
jetbrains-toolbox-linux3.4.3.81140#356
pmbootstrap3.10.1#330
framework-tool0.6.2#321
View all experimental-tap updates (58)
PackageVersionsPR
opencode-desktop-linux1.3.13 → 1.14.29 (15 updates)#340
craft-agents-linux0.8.2 → 0.8.12 (8 updates)#328
cursor-linux3.0.13 → 3.2.16 (5 updates)#339
emdash-linux0.4.47 → 0.4.50 (3 updates)#316
zed-linux0.233.10 → 1.0.0 (2 updates)#347
rider-linux2026.1.0.1 → 2026.1.1 (2 updates)#338
dockerd-linux29.4.0 → 29.4.1 (2 updates)#303
datagrip-linux2026.1.1 → 2026.1.2 (2 updates)#280
pycharm-linux2026.1.1#341
webstorm-linux2026.1.1#332
phpstorm-linux2026.1.1#331
clion-linux2026.1.1#320
goland-linux2026.1.1#321
intellij-idea-linux2026.1.1#322
rubymine-linux2026.1.1#324
rustrover-linux2026.1.1#325

Ecosystem​

area/brew area/bluespeed area/flatpak

Homebrew packages, AI/ML tools (Bluespeed), and Flatpak applications

Planned Work​

  • feat(bazaar): add SpeedOfSound to AI and Machine Learning section by @​repires in #286

Opportunistic Work​

Dakota (GNOME OS Prototype)​

System Services & Policies​

area/services area/policy

Systemd services and system-level policies

Planned Work​

  • fix(custom-command-menu): add menu icon settings to dconf distro database by @​dylanmtaylor in #274
  • feat(nvidia): add service to sync Flatpak driver version by @​ledif in #257

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Hardware​

area/hardware area/nvidia aarch64

Hardware support, drivers, NVIDIA GPU, and ARM64 architecture

Planned Work​

  • Remove carriage returns in ublue-nvidia-flatpak-runtime-sync script that cause it to fail by @​akeeton in #279

Opportunistic Work​

  • fix(cards): restore foil prevVersion and LTS HWE kernel carry-forward by @​castrojo in #761
  • fix(ci): always re-fetch driver versions data on every build by @​castrojo in #701
  • fix(driver-versions): make shimmer visible in light mode by @​castrojo in #700
Dakota (GNOME OS Prototype)​

Infrastructure​

area/iso area/upstream area/buildstream area/finpilot area/just area/testing

ISO images, upstream integration, build systems, and testing frameworks

Planned Work​

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Documentation​

kind/documentation

Documentation improvements and additions

Planned Work​

Status: ChillOps

Opportunistic Work​

  • docs: remove GTS badges from README by @​repires in #4474
  • fix(readme): use picture element for dark/light mode card embed by @​castrojo in #4466
  • chore: delete docs directory by @​hanthor in #1250
  • blog: add video embed to Dakota Alpha 1 post by @​castrojo in #766
  • Update 2026-04-19-dakota-alpha-1.md by @​castrojo in #764
  • fix: use object-fit cover on playlist thumbnails to eliminate letterboxing by @​castrojo in #763
  • feat(music): add Syrens of Metal playlist as first in Legendary Adventures by @​castrojo in #762
  • fix(lts): parse new lts.YYYYMMDD release format by @​castrojo in #759
  • fix(sbom): fix GHCR tag pagination regex — \b fails after closing quote by @​castrojo in #757
  • fix(sbom): parse SPDX JSON format for LTS changelog card version chips by @​castrojo in #756
  • fix(artwork): remove duplicate Duality (Ultrawide) entry by @​castrojo in #754
  • feat(changelogs): rolling 12-month window for updates stream by @​castrojo in #750
  • feat(changelogs): show all apps by default; click header to expand card by @​castrojo in #749
  • feat(changelogs): collapse app cards by default in updates stream by @​castrojo in #748
  • fix(embed): use picture element for dark/light mode card snippet by @​castrojo in #747
  • fix(lint): remove unused chipName destructuring in loadStableDailyEve… by @​castrojo in #746
  • fix(changelogs): SBOM null-fallback, GHCR tag enumeration, cache key … by @​castrojo in #743
  • fix(sbom): SBOM-primary chips + resolve amd64 digest for oras discover by @​castrojo in #742
  • feat(changelogs): add embeddable PNG cards with dark/light themes and… by @​castrojo in #741
  • fix(images): make downloads optional to prevent crash when field abse… by @​castrojo in #740
  • feat(changelogs,ui): SBOM-driven chips, Dakota placeholder, pipewire/… by @​castrojo in #739
  • feat(changelogs,ui): SBOM-driven chips, Dakota placeholder, pipewire/… by @​castrojo in #738
  • feat(changelogs): SBOM-driven OS card chips — Dakota placeholder + pi… by @​castrojo in #737
  • feat(changelogs): unified OS releases stream with stable-daily, LTS, … by @​castrojo in #736
  • bugfix(docs): preserve homepage hero aspect ratio by @​castrojo in #735
  • fix(docs): replace hero PNGs with WebP, add trailingSlash, add perf t… by @​castrojo in #733
  • Feature/artwork gallery page by @​castrojo in #732
  • Feature/artwork gallery page by @​castrojo in #731
  • feat(docs): add Artwork gallery page with wallpapers, lightbox, and a… by @​castrojo in #728
  • fix(images): remove Metadata cache chip from images page by @​castrojo in #724
  • feat: add link to upstream docs about MOK enrollment by @​sebjag in #720
  • fix(reports): replace history query with GHA cache for new contributo… by @​castrojo in #723
  • feat: quick update by @​castrojo in #719
  • fix(eslint): remove unused FlatTimelineEvent import by @​castrojo in #717
  • feat(changelogs): OS release card design polish by @​castrojo in #716
  • feat(changelogs): add prominent OS release cards interleaved in timeline by @​castrojo in #715
  • fix(sbom): enforce sbom-only version sources across docs site by @​castrojo in #712
  • fix(sbom): enforce sbom-only version sources across docs surfaces by @​castrojo in #711
  • fix(firehose): seed firehose-apps.json with empty data; atomic write … by @​castrojo in #709
  • fix(audit): quick-win fixes from site-wide audit by @​castrojo in #708
  • feat(changelogs): add Firehose page with per-release package diffs by @​castrojo in #707
  • fix(changelogs): flatten firehose feed into per-release event stream … by @​castrojo in #706
  • feat(changelogs): add hero section with dinosaur and Firehose title by @​castrojo in #704
  • feat(changelogs): port Bluefin Firehose to /changelogs page by @​castrojo in #702
  • fix: remove a bunch of dead code by @​castrojo in #699
Dakota (GNOME OS Prototype)​

Tech Debt​

kind/tech-debt kind/parity

Maintenance work and feature parity between variants

Status: ChillOps


Automation​

kind/automation kind/github-action kind/renovate

CI/CD pipelines, GitHub Actions, and automated dependency updates

Planned Work​

Opportunistic Work​


Localization​

kind/translation

Translation and internationalization work

Status: ChillOps


Bot Activity​

Automation Percentage: 62.3% (308 bot PRs out of 494 total PRs)

RepositoryBot PRs% of Total
bluefin9318.8%
bluefin-lts6012.1%
dakota316.3%
common122.4%
documentation91.8%
View bot activity details

Build Health​

Raptor Race​

Keep Bluefin healthy with green builds. Wranglers apply within!

ImageSuccess RateSuccessesFailuresMonthly Change
bluefin:stable91.3%21120+10.7%
bluefin:latest89.8%20323+7%
bluefin:lts93.1%18814+18.4%
bluefin:lts-hwe94.1%19012+23%
bluefin-dx:lts93.1%18814+23%
bluefin-gdx:lts90%18120+136.8%
bluefin-dx:lts-hwe93.5%18813+20.2%

This Month's Highlights​

MetricValue
📊 Total Builds1465 builds across all images
🏆 Most Activebluefin:stable (231 builds)
💯 100% ClubNone. Vegeta is displeased.
⏱️ Avg Build Time20 minutes across all variants

Contributors​

New Lights​

We welcome our newest Guardians to the project.

"I do not know what the future holds. But I know this: with you at our side, there is nothing we cannot face."

—Commander Zavala

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

Wayfinders​

"Define yourself by your actions."

—Lord Saladin

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

Want to see the latest OS releases? Check out the Changelogs. For announcements and deep dives, read our Blog.

This report was automatically generated from todo.projectbluefin.io.


Generated on 2026-05-01
View Project Board | Report an Issue

Mesozoic March 2026

· 47 min read
Project Bluefin
Automation & Factory
Total Items118 (8 planned, 110 opportunistic)
Automation68.6% (258 bot PRs out of 376 total PRs)
Contributors17 total, 4 new

Desktop​

area/gnome area/aurora area/bling

GNOME desktop environment, Aurora variant (KDE), and terminal enhancements

Planned Work​

Opportunistic Work​

  • fix: upgrade selinux-policy to 43.x for GNOME 49 to resolve GDM failure by @​hanthor in #1242
  • feat: add Bazaar Companion extension by @​castrojo in #1243
  • fix(build): resolve dracut EXDEV and libjxl conflict in gnome-50 builds by @​hanthor in #1240
  • fix: install jxl-pixbuf-loader for JPEG-XL desktop backgrounds by @​hanthor in #1230
  • feat: add GNOME 50 full build pipeline with GNOME_VERSION build arg by @​hanthor in #1218
  • feat: add GNOME 50 testing builds (lts-testing-50, lts-hwe-testing-50) by @​hanthor in #1209
  • feat: switch from GNOME 48 to GNOME 49 by @​hanthor in #1207
  • Revert "feat(GNOME) : gnome 49 backport" by @​hanthor in #1192
  • feat(GNOME) : gnome 49 backport by @​hanthor in #1187
  • feat(driver-versions): add foil effects, Mesa/GNOME cards, CodeBlock refactor by @​castrojo in #694
Dakota (GNOME OS Prototype)​

Development​

area/dx

Development tools and IDE integrations

Planned Work​

Status: ChillOps

Opportunistic Work​

Homebrew​

Package Updates​

Production Tap Experimental Tap

78 automated updates this month via GitHub Actions. Homebrew tap version bumps ensure Bluefin users always have access to the latest stable releases.

Quick Summary​
TapUpdates
production-tap34
experimental-tap44
View all production-tap updates (34)
PackageVersionsPR
antigravity-linux1.20.3 → 1.21.9 (6 updates)#317
visual-studio-code-linux1.110.0 → 1.113.0 (5 updates)#311
vscodium-linux1.110.01571 → 1.112.01907 (4 updates)#309
goose-linux1.27.0 → 1.28.0 (4 updates)#304
jetbrains-toolbox-linux3.3.1.75249 → 3.4.1.78303 (3 updates)#310
lm-studio-linux0.4.7 → 0.4.8 (2 updates)#314
1password-gui-linux8.12.6 → 8.12.8 (2 updates)#302
framework-tool0.6.1#292
View all experimental-tap updates (44)
PackageVersionsPR
opencode-desktop-linux1.3.2 → 1.3.9 (5 updates)#253
emdash-linux0.4.41 → 0.4.45 (4 updates)#250
rider-linux2025.3.3 → 2026.1 (3 updates)#255
rustrover-linux2025.3.5 → 2026.1 (2 updates)#256
pycharm-linux2025.3.4 → 2026.1 (2 updates)#254
cursor-linux2.6.21 → 2.6.22 (2 updates)#240
craft-agents-linux0.8.0 → 0.8.1 (2 updates)#239
clion-linux2025.3.4 → 2026.1 (2 updates)#238
goland-linux2025.3.4 → 2026.1 (2 updates)#243
phpstorm-linux2025.3.4 → 2026.1 (2 updates)#245
rubymine-linux2025.3.4 → 2026.1 (2 updates)#247
dataspell-linux2026.1#252
datagrip-linux2026.1#241
dockerd-linux29.3.1#225
intellij-idea-linux2026.1#228
webstorm-linux2026.1#235

Ecosystem​

area/brew area/bluespeed area/flatpak

Homebrew packages, AI/ML tools (Bluespeed), and Flatpak applications

Planned Work​

Opportunistic Work​

  • feat: add Bazaar Companion extension by @​coxde in #4089
  • fix: turn off bazaar.service by @​renner0e in #4264
  • fix(antigravity): URL scheme handling, user guidance, and added path by @​hanthor in #290
  • chore: bump craft-agents-linux 0.6.0 by @​KiKaraage in #196
  • fix(emacs-app-linux): avoid on_arch_conditional errors and improve WM_CLASS handling by @​dtg01100 in #189
  • fix: use experimental tap path throughout bottle workflow by @​hanthor in #201
  • fix: fully-qualify bluefin-cli tap in bottle workflow by @​hanthor in #199
  • fix: use supported macOS x86 runner for bluefin-cli bottles by @​hanthor in #198
  • chore: switch bluefin-cli to Homebrew Go formula + bottles by @​hanthor in #197
  • Update Homebrew installation command for bluefin-cli by @​hanthor in #672
  • feat(reports): add 'New Applications' section for Homebrew additions by @​castrojo in #653
  • chore(deps): pin homebrew/actions action to 8f52032 by @​mergeraptor in #42

System Services & Policies​

area/services area/policy

Systemd services and system-level policies

Planned Work​

Status: ChillOps

Opportunistic Work​


Hardware​

area/hardware area/nvidia aarch64

Hardware support, drivers, NVIDIA GPU, and ARM64 architecture

Planned Work​

Status: ChillOps

Opportunistic Work​

  • fix(ci): replace cosign attest with oras attach and use RPM-bundled nvidia-install.sh by @​buggerman in #4274
  • fix:DRACUT_TMPDIR export for kernel swap by @​hanthor in #1251
  • fix(gdx): guard nvidia-modeset.conf copy for arm64 by @​hanthor in #1232
  • fix(gdx): remove stale kernel-pin, follow coreos-stable akmods by @​hanthor in #1231
  • feat(driver-versions): rebuild page as timeline with per-release reba… by @​castrojo in #684
  • Feat/driver versions redesign by @​castrojo in #665

Infrastructure​

area/iso area/upstream area/buildstream area/finpilot area/just area/testing

ISO images, upstream integration, build systems, and testing frameworks

Planned Work​

Status: ChillOps

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Documentation​

kind/documentation

Documentation improvements and additions

Planned Work​

Status: ChillOps

Opportunistic Work​

  • chore(renovate): group eslint and @typescript-eslint in one PR by @​castrojo in #698
  • chore(deps): update step-security/harden-runner action to v2.16.1 by @​mergeraptor in #689
  • docs(downloads): add weekly lts-hwe testing download table by @​castrojo in #695
  • fix(images): address issue #20 reviewer feedback — cert identity, par… by @​castrojo in #690
  • fix(images): wire fetch-github-images into fetch-data chain by @​castrojo in #686
  • docs(downloads,driver-versions): fix links and remove backup ISO section by @​castrojo in #685
  • feat(images): add images catalog page by @​castrojo in #683
  • feat(changelogs): prototype changelog card UI with supply chain and c… by @​castrojo in #682
  • docs: Docs/lts hwe testing download links by @​castrojo in #681
  • doc: include podman settings in devcontainers doc resolves #661 by @​NahsiN in #673
  • fix(reports): correct workflow ID and add PR pagination by @​castrojo in #679
  • Remove 'mods' from AI tools documentation by @​mmartinortiz in #659
  • fix(docs): correct Goose and OpenCode MCP config for dosu by @​castrojo in #669
  • blog: add hanthor profile card to bluefin-cli announcement by @​castrojo in #667
  • blog: announce bluefin-cli for Mac and Windows (WSL) by @​castrojo in #666
  • feat(changelogs): redesign changelog page with combined feed and commit view by @​castrojo in #664
  • docs: remove retired GTS references from active documentation by @​castrojo in #663
  • Update installation instructions for Lenovo ThinkPad users by @​jfmongrain in #656
  • Document early alpha bluefin-cli for cross-platform use by @​hanthor in #662
  • feat: goobye Bluefin GTS by @​castrojo in #654
  • docs(agents): rewrite AGENTS.md and remove stale planning artifacts by @​castrojo in #38

Tech Debt​

kind/tech-debt kind/parity

Maintenance work and feature parity between variants

Planned Work​

Opportunistic Work​

  • fix(packages): add autofs and restrict ROCm to non-nvidia dx by @​castrojo in #4370

Automation​

kind/automation kind/github-action kind/renovate

CI/CD pipelines, GitHub Actions, and automated dependency updates

Planned Work​

Opportunistic Work​


Localization​

kind/translation

Translation and internationalization work

Planned Work​

Opportunistic Work​

Status: ChillOps


Other​


Bot Activity​

Automation Percentage: 68.6% (258 bot PRs out of 376 total PRs)

RepositoryBot PRs% of Total
bluefin8422.3%
bluefin-lts7319.4%
dakota133.5%
documentation92.4%
common10.3%
View bot activity details

Build Health​

Raptor Race​

Keep Bluefin healthy with green builds. Wranglers apply within!

ImageSuccess RateSuccessesFailuresMonthly Change
bluefin:stable82.1%18440+23.6%
bluefin:latest83.5%18236+6.5%
bluefin:lts78.6%27274+15.2%
bluefin:lts-hwe76.5%26080+5.8%
bluefin-dx:lts75.7%25682+26.4%
bluefin-gdx:lts38%128209-25.9%
bluefin-dx:lts-hwe77.8%26375+30.8%

This Month's Highlights​

MetricValue
📊 Total Builds2141 builds across all images
🏆 Most Activebluefin:lts (346 builds)
💯 100% ClubNone. Vegeta is displeased.
⏱️ Avg Build Time17 minutes across all variants

Contributors​

New Lights​

We welcome our newest Guardians to the project.

"I do not know what the future holds. But I know this: with you at our side, there is nothing we cannot face."

—Commander Zavala

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

Wayfinders​

"Define yourself by your actions."

—Lord Saladin

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

Want to see the latest OS releases? Check out the Changelogs. For announcements and deep dives, read our Blog.

This report was automatically generated from todo.projectbluefin.io.


Generated on 2026-04-02
View Project Board | Report an Issue

Fossil February 2026

· 31 min read
Project Bluefin
Automation & Factory
Total Items71 (9 planned, 62 opportunistic)
Automation70.2% (167 bot PRs out of 238 total PRs)
Contributors17 total, 7 new

Desktop​

area/gnome area/aurora area/bling

GNOME desktop environment, Aurora variant (KDE), and terminal enhancements

Planned Work​

Status: ChillOps

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Development​

area/dx

Development tools and IDE integrations

Planned Work​

Status: ChillOps

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Homebrew​

New Applications​

The following applications were added to our Homebrew taps this month:

ApplicationDescriptionStatus
craft-agents-linuxWork with most powerful agents in the world, with the UX they deserveExperimental
emdash-linuxAgentic development environment for running multiple coding agents in parallelExperimental

Use ujust bbrew to browse and install these packages. Follow the tap instructions if you want to do it by hand.

Package Updates​

Production Tap Experimental Tap

58 automated updates this month via GitHub Actions. Homebrew tap version bumps ensure Bluefin users always have access to the latest stable releases.

Quick Summary​
TapUpdates
production-tap42
experimental-tap16
View all production-tap updates (42)
PackageVersionsPR
goose-linux1.22.2 → 1.26.1 (9 updates)#276
antigravity-linux1.16.5 → 1.19.6 (6 updates)#274
vscodium-linux1.108.20787 → 1.109.51242 (6 updates)#261
lm-studio-linux0.4.2 → 0.4.6 (5 updates)#277
visual-studio-code-linux1.109.0 → 1.109.5 (5 updates)#259
1password-gui-linux8.12.2 → 8.12.5 (3 updates)#273
linux-mcp-server1.3.0 → 1.3.2 (3 updates)#257
jetbrains-toolbox-linux3.3.0.74186#271
View all experimental-tap updates (16)
PackageVersionsPR
opencode-desktop-linux1.1.48 → 1.1.53 (5 updates)#182
cursor-linux2.4.28 → 2.4.30 (2 updates)#184
datagrip-linux2025.3.4 → 2025.3.5 (2 updates)#181
pycharm-linux2025.3.2.1#176
webstorm-linux2025.3.2#160
rubymine-linux2025.3.2#159
phpstorm-linux2025.3.2#158
intellij-idea-linux2025.3.2#156
clion-linux2025.3.2#153

Ecosystem​

area/brew area/bluespeed area/flatpak

Homebrew packages, AI/ML tools (Bluespeed), and Flatpak applications

Planned Work​

Opportunistic Work​


System Services & Policies​

area/services area/policy

Systemd services and system-level policies

Planned Work​

Opportunistic Work​

Status: ChillOps


Hardware​

area/hardware area/nvidia aarch64

Hardware support, drivers, NVIDIA GPU, and ARM64 architecture

Planned Work​

Status: ChillOps

Opportunistic Work​


Infrastructure​

area/iso area/upstream area/buildstream area/finpilot area/just area/testing

ISO images, upstream integration, build systems, and testing frameworks

Planned Work​

Opportunistic Work​

Dakota (GNOME OS Prototype)​

Documentation​

kind/documentation

Documentation improvements and additions

Planned Work​

Status: ChillOps

Opportunistic Work​


Tech Debt​

kind/tech-debt kind/parity

Maintenance work and feature parity between variants

Planned Work​

Status: ChillOps

Opportunistic Work​


Automation​

kind/automation kind/github-action kind/renovate

CI/CD pipelines, GitHub Actions, and automated dependency updates

Planned Work​

Status: ChillOps

Opportunistic Work​

  • feat: migrate changelog generation to external action by @​hanthor in #1125
  • feat: fix changelog generation and add HWE kernel comparison table by @​castrojo in #1116
  • chore(renovate): enable automerge for additional container digests by @​castrojo in #1106

Localization​

kind/translation

Translation and internationalization work

Planned Work​

Opportunistic Work​

Status: ChillOps


Other​


Bot Activity​

Automation Percentage: 70.2% (167 bot PRs out of 238 total PRs)

RepositoryBot PRs% of Total
bluefin5021.0%
bluefin-lts3615.1%
documentation166.7%
dakota72.9%
View bot activity details

Build Health​

Raptor Race​

Keep Bluefin healthy with green builds. Wranglers apply within!

ImageSuccess RateSuccessesFailuresMonthly Change
bluefin:stable54.7%8772-37.2%
bluefin:gts53.8%5648-33.8%
bluefin:latest64.1%9855-26.8%
bluefin:lts68.2%10750+14%
bluefin:lts-hwe72.3%11544+22.3%
bluefin-dx:lts59.9%9463+0.8%
bluefin-gdx:lts51.3%8177+60.8%
bluefin-dx:lts-hwe0%00+0%

This Month's Highlights​

MetricValue
📊 Total Builds1047 builds across all images
🏆 Most Activebluefin:stable (159 builds)
💯 100% ClubNone. Vegeta is displeased.
⏱️ Avg Build Time18 minutes across all variants

Contributors​

New Lights​

We welcome our newest Guardians to the project.

"I do not know what the future holds. But I know this: with you at our side, there is nothing we cannot face."

—Commander Zavala

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

Wayfinders​

"Define yourself by your actions."

—Lord Saladin

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

Want to see the latest OS releases? Check out the Changelogs. For announcements and deep dives, read our Blog.

This report was automatically generated from todo.projectbluefin.io.


Generated on 2026-03-01
View Project Board | Report an Issue