Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-23 15:01 UTC

Smithay / wayland-rs

Rust implementation of the wayland protocol (client and server).

RustMIT★ 1.401 Sterne⑂ 171 Forksseit Apr. 2015Auf GitHub ansehen ↗

Smithay/wayland-rs erreicht einen Gesundheitsindex von 68 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (73/100) ab, am schwächsten bei AI Readiness (51/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

68
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

68
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

SmithayOrganisation
186 Follower19 öffentliche Reposseit Juni 2017

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
crates.iowayland-egl0.32.11114.55863vor 114 Tagenclientwaylandapi-bindingsgui
crates.iowayland-sys0.31.114.909.282152vor 114 Tagenexternal-ffi-bindings
crates.iowayland-client0.31.154.290.052178vor 0 Tagenclientwaylandapi-bindingsgui
crates.iowayland-cursor0.31.142.955.95664vor 114 Tagenclientwaylandapi-bindingsgui
crates.iowayland-server0.31.14201.459149vor 0 Tagenserverwaylandcompositorapi-bindingsgui
crates.iowayland-backend0.3.163.580.48347vor 0 Tagenwaylandapi-bindingsgui
crates.iowayland-scanner0.31.114.304.556153vor 0 Tagenwaylandcodegenapi-bindingsgui

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

73Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
22.8/36Commit-Rhythmus — 33/52 Wochen mit Commits
18/18Commit-Volumen — 165 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year165
human_commit_share1
days_since_last_push0
active_weeks_last_year33
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 3 Releases veröffentlicht
0/36Release-Aktualität — letztes Release vor 2.504 Tagen
19.8/27Release-Rhythmus — ein Release etwa alle 112,8 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count3
latest_release_tagv0.24.0
releases_from_tagsnein
days_since_latest_release2.504
mean_days_between_releases112,8
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

73Gut · 18 % des Gesamtindex
Wie die Bewertung erfolgt
51/60Stars — 1.401 Stars
18.6/25Forks — 171 Forks
6.8/15Watcher — 18 Watcher
Verwendete Eingangsdaten
forks171
stars1.401
watchers18
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
80/80Downloads pro Monat — 20.356.346 Downloads/Monat über crates
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packageswayland-egl, wayland-sys, wayland-client, wayland-cursor, wayland-server, wayland-backend, wayland-scanner
dependents
ecosystemscrates
total_downloads252.819.788
monthly_downloads20.356.346
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

68Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
8.9/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 61 % der Commits
13.5/13.5Breite der Beitragenden — 91 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 29 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled91
top_contributor_share0,606
Wie die Bewertung erfolgt
37.7/46.8Issue-Lösungsquote — 81 % der Issues geschlossen
34.2/38.3PR-Annahme — 562/629 entschiedene PRs gemergt
4.5/15OpenSSF Scorecard: Code-Review — Found 6/19 approved changesets -- score normalized to 3
Verwendete Eingangsdaten
merged_prs562
open_issues58
closed_issues242
issue_closed_ratio0,807
closed_unmerged_prs67
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
16.3/25Reichweite des Inhabers — 186 Follower von Smithay
21.5/25Kontohistorie — 19 öffentliche Repos, Kontoalter ca. 9 Jahre
Verwendete Eingangsdaten
followers186
owner_typeOrganization
is_verified
owner_loginSmithay
public_repos19
account_age_days3.339

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 7 Paket(e) auf crates
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 0 Tagen
20/20Versionshistorie — 178 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packageswayland-egl, wayland-sys, wayland-client, wayland-cursor, wayland-server, wayland-backend, wayland-scanner
ecosystemscrates
any_deprecatednein
min_days_since_publish0

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

68Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 1 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
16/20OpenSSF Scorecard: CI-Tests — 13 out of 16 merged PRs checked by a CI test -- score normalized to 8
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
10/10Topics — 2 Topics
0/10Wiki
Verwendete Eingangsdaten
topicswayland, rust
has_wikinein
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

53Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2/2.5CI-Tests — 13 out of 16 merged PRs checked by a CI test -- score normalized to 8
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
2.2/7.5Code-Review — Found 6/19 approved changesets -- score normalized to 3
2.5/2.5Contributors — project has 29 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate5,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

51Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 80 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,8
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — Cargo.toml, wayland-backend/Cargo.toml, wayland-client/Cargo.toml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — Rust (statisch typisiert)
0/10Reproduzierbare Umgebung
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifestsCargo.toml, wayland-backend/Cargo.toml, wayland-client/Cargo.toml, wayland-cursor/Cargo.toml, wayland-egl/Cargo.toml, wayland-protocols-experimental/Cargo.toml, wayland-protocols-misc/Cargo.toml, wayland-protocols-plasma/Cargo.toml, wayland-protocols-wlr/Cargo.toml, wayland-protocols/Cargo.toml, wayland-scanner/Cargo.toml, wayland-server/Cargo.toml, wayland-sys/Cargo.toml, wayland-tests/Cargo.toml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Rust (statisch typisiert)
54/55Handhabbare Dateigrößen — 2/110 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageRust
largest_source_bytes71.943
source_files_sampled110
oversized_source_files2
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

1.401GitHub-Sterne
91Mitwirkende
165Commits, letzte 12 Monate
0Tage seit letztem Push
3Releases
1Bus-Faktor
58offene Issues
crates.ioPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'wayland-tests' from its registry
  • No resolved dependencies carried a version and a supported ecosystem

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 171 ⇿
0Sterne
171Forks
3Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

0408012016020017042015-112021-032026-07
Major 0Minor 3Patch 0

Jeder Punkt umfasst 10 Tage.

OpenSSF Scorecard 5.3 / 10
5.3Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-23 15:01 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
8CI-Tests13 out of 16 merged PRs checked by a CI test -- score normalized to 8
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
3Code-ReviewFound 6/19 approved changesets -- score normalized to 3
10Contributorsproject has 29 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 59
RegistryPaketVersionsvorgabeManifest
crates.iowayland-sys0.31.11wayland-backend/Cargo.toml
crates.iolog0.4wayland-backend/Cargo.toml
crates.ioscoped-tls1.0wayland-backend/Cargo.toml
crates.iorwh_060.6.0wayland-backend/Cargo.toml
crates.iosmallvec1.9wayland-backend/Cargo.toml
crates.iorustix1.0.2wayland-backend/Cargo.toml
crates.iowayland-backend0.3.15wayland-client/Cargo.toml
crates.iowayland-scanner0.31.10wayland-client/Cargo.toml
crates.iobitflags2wayland-client/Cargo.toml
crates.iorustix1.0.2wayland-client/Cargo.toml
crates.iolog0.4wayland-client/Cargo.toml
crates.iowayland-client0.31.14wayland-cursor/Cargo.toml
crates.ioxcursor0.3.1wayland-cursor/Cargo.toml
crates.iorustix1.0.2wayland-cursor/Cargo.toml
crates.iowayland-backend0.3.15wayland-egl/Cargo.toml
crates.iowayland-sys0.31.11wayland-egl/Cargo.toml
crates.iowayland-scanner0.31.10wayland-protocols-experimental/Cargo.toml
crates.iowayland-backend0.3.15wayland-protocols-experimental/Cargo.toml
crates.iowayland-client0.31.14wayland-protocols-experimental/Cargo.toml
crates.iowayland-server0.31.13wayland-protocols-experimental/Cargo.toml
crates.iowayland-protocols0.32.12wayland-protocols-experimental/Cargo.toml
crates.iobitflags2wayland-protocols-experimental/Cargo.toml
crates.iowayland-scanner0.31.10wayland-protocols-misc/Cargo.toml
crates.iowayland-backend0.3.15wayland-protocols-misc/Cargo.toml
crates.iowayland-client0.31.14wayland-protocols-misc/Cargo.toml
crates.iowayland-server0.31.13wayland-protocols-misc/Cargo.toml
crates.iowayland-protocols0.32.12wayland-protocols-misc/Cargo.toml
crates.iobitflags2wayland-protocols-misc/Cargo.toml
crates.iowayland-scanner0.31.10wayland-protocols-plasma/Cargo.toml
crates.iowayland-backend0.3.15wayland-protocols-plasma/Cargo.toml
crates.iowayland-client0.31.14wayland-protocols-plasma/Cargo.toml
crates.iowayland-server0.31.13wayland-protocols-plasma/Cargo.toml
crates.iowayland-protocols0.32.12wayland-protocols-plasma/Cargo.toml
crates.iobitflags2wayland-protocols-plasma/Cargo.toml
crates.iowayland-scanner0.31.10wayland-protocols-wlr/Cargo.toml
crates.iowayland-backend0.3.15wayland-protocols-wlr/Cargo.toml
crates.iowayland-client0.31.14wayland-protocols-wlr/Cargo.toml
crates.iowayland-server0.31.13wayland-protocols-wlr/Cargo.toml
crates.iowayland-protocols0.32.12wayland-protocols-wlr/Cargo.toml
crates.iobitflags2wayland-protocols-wlr/Cargo.toml
crates.iowayland-scanner0.31.10wayland-protocols/Cargo.toml
crates.iowayland-backend0.3.15wayland-protocols/Cargo.toml
crates.iowayland-client0.31.14wayland-protocols/Cargo.toml
crates.iowayland-server0.31.13wayland-protocols/Cargo.toml
crates.iobitflags2wayland-protocols/Cargo.toml
crates.ioproc-macro21.0.11wayland-scanner/Cargo.toml
crates.ioquote1.0wayland-scanner/Cargo.toml
crates.ioquick-xml0.41wayland-scanner/Cargo.toml
crates.iowayland-backend0.3.15wayland-server/Cargo.toml
crates.iowayland-scanner0.31.10wayland-server/Cargo.toml
crates.iobitflags2wayland-server/Cargo.toml
crates.iolog0.4wayland-server/Cargo.toml
crates.iorustix1.0.2wayland-server/Cargo.toml
crates.iodlib0.5.3wayland-sys/Cargo.toml
crates.iolibc0.2wayland-sys/Cargo.toml
crates.ioonce_cell1.0wayland-sys/Cargo.toml
crates.iolog0.4wayland-sys/Cargo.toml
crates.iowayland-clientwayland-tests/Cargo.toml
crates.iowayland-serverwayland-tests/Cargo.toml
Alle Abhängigkeiten 27

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 18 direkte und 9 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
crates.iobitflagsdirekt
crates.iodlibdirekt
crates.iolibcdirekt
crates.iologdirekt
crates.ioonce_celldirekt
crates.ioproc-macro2direkt
crates.ioquick-xmldirekt
crates.ioquotedirekt
crates.iorustixdirekt
crates.ioscoped-tlsdirekt
crates.iosmallvecdirekt
crates.iowayland-backenddirekt
crates.iowayland-clientdirekt
crates.iowayland-protocolsdirekt
crates.iowayland-scannerdirekt
crates.iowayland-serverdirekt
crates.iowayland-sysdirekt
crates.ioxcursordirekt
crates.ioccindirekt
crates.ioconcat-identsindirekt
crates.ioenv_loggerindirekt
crates.iofutures-channelindirekt
crates.iofutures-utilindirekt
crates.iopkg-configindirekt
crates.ioraw-window-handleindirekt
crates.iosimilarindirekt
crates.iotempfileindirekt
Abhängigkeits-Advisories nicht bewertet

Der Advisory-Abgleich konnte für diesen Bericht nicht ausgeführt werden: No resolved dependencies carried a version and a supported ecosystem

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "wayland",
        "rust"
      ],
      "is_fork": false,
      "size_kb": 4390,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "C": 1098,
        "Rust": 1025709,
        "Shell": 62
      },
      "pushed_at": "2026-07-22T20:35:16Z",
      "created_at": "2015-04-17T09:01:16Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T16:19:33Z",
      "description": "Rust implementation of the wayland protocol (client and server).",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Smithay",
      "type": "Organization",
      "login": "Smithay",
      "company": null,
      "location": null,
      "followers": 186,
      "avatar_url": "https://avatars.githubusercontent.com/u/29117271?v=4",
      "created_at": "2017-06-01T08:10:46Z",
      "is_verified": null,
      "public_repos": 19,
      "account_age_days": 3339
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2019-09-14T14:02:38Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2019-02-17T15:20:53Z"
        },
        {
          "tag": "v0.22.0",
          "kind": "minor",
          "published_at": "2019-01-31T21:53:06Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "a55c54b4e138e29181d63908ece06fd2a13550a0",
          "body": "This new mechanism of deploying Github Pages does not require pushing to\na branch.",
          "is_bot": false,
          "headline": "ci: Deply docs using `deploy-pages` action",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-16T20:28:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c93116963f87a9162b1d2a39278727bf9275372",
          "body": null,
          "is_bot": false,
          "headline": "client,server: Update wayland core protocol to 1.26",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-16T16:10:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "249f35c8ce18c8a8000c627ffe04ac235bc0764f",
          "body": null,
          "is_bot": false,
          "headline": "egl: Return `NonNull` instead of `*const`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-13T15:59:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b14a5029c8df5d20557d2260c5c117a1af7e508",
          "body": null,
          "is_bot": false,
          "headline": "egl: Add `dlopen` feature",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-13T15:59:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1b3f5b18d326739ce7c2f02be05ac4e4e9ba318",
          "body": null,
          "is_bot": false,
          "headline": "Fix `clippy` lint",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-13T15:13:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "956f18356b27f61ee50a858b8b25a972152a3c44",
          "body": "It's not clear what is best for public APIs in general, but if we want\nto return `Result<NonNull<c_void>, _>` from certain functions, it makes\nsense to be consistent and use `NonNull` elsewhere.\n\nIt's nice to replace null checks with checks on the return value of\n`NonNull::new`, then be able to assume non-null.\n\nWe should store the pointers internally as `NonNull`, but that requires\nsome refactoring: https://github.com/Smithay/wayland-rs/issues/925",
          "is_bot": false,
          "headline": "backend: Consistently use `NonNull` in public API",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-13T15:13:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "640c8251d43692bb0728cbe58bb53135f7455bd1",
          "body": "This, combined with the change previously made in\nhttps://github.com/Smithay/wayland-rs/pull/901, should make wayland-sys\na private dependency of wayland-backend.",
          "is_bot": false,
          "headline": "backend, egl: Use `c_void` in public API",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-13T15:13:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "672e7cb994883f6d77617308f82a16289f70b9d4",
          "body": "Can use `new_from_raw` without that, so it may as well be optional.",
          "is_bot": false,
          "headline": "egl: Make `wayland-backend` a default optional features",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-07-08T20:19:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b78b16d2bfda5570676aa4d3fc0a8f1143330a5",
          "body": "This is useful particularly with sockets that don't have names.  The\nabsolute socket path can be used for the value of WAYLAND_DISPLAY.",
          "is_bot": false,
          "headline": "server: implement ListeningSocket::socket_path",
          "author_name": "Alyssa Ross",
          "author_login": "alyssais",
          "committed_at": "2026-07-08T19:58:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "324724e341a921fcee5644a7616a8c94501f3fdd",
          "body": "`memoffset::offset_of!` was stabilised as `core::mem::offset_of!` in\nrust 1.77",
          "is_bot": false,
          "headline": "sys: Remove dependency on `memoffset`",
          "author_name": "Sybrand Aarnoutse",
          "author_login": "syberant",
          "committed_at": "2026-07-08T19:50:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "994f59b63d030cc8eed866417c294ed5b238719b",
          "body": null,
          "is_bot": false,
          "headline": "server: fix typo",
          "author_name": "Alyssa Ross",
          "author_login": "alyssais",
          "committed_at": "2026-07-08T19:35:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d07c4f91f28b42e5a485823ffd9d8d5a210b1053",
          "body": "Two vulnerabilities were just issued for `quick-xml`:\n\nhttps://rustsec.org/advisories/RUSTSEC-2026-0194.html\nhttps://rustsec.org/advisories/RUSTSEC-2026-0195.html\n\nThese were both addressed in the `0.41` release, with no new code\nincompatibilities in `wayland-scanner`.",
          "is_bot": false,
          "headline": "wayland-scanner: Bump `quick-xml` dependency to `0.41`",
          "author_name": "Marijn Suijten",
          "author_login": "MarijnS95",
          "committed_at": "2026-07-08T19:19:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41d6f7ffb0b39f2479eaa3f8c2826371e951f3d2",
          "body": "Probably technically a breaking change, but this will be released in a\nmajor version anyway.",
          "is_bot": false,
          "headline": "Use `expr` instead of `expr_2021` in macros",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-22T17:29:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3ba5911f0a685b1faed543ec6e304d01a9bdbf4",
          "body": null,
          "is_bot": false,
          "headline": "scanner: Update test",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-20T03:44:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93b435f998e0375f6287081faf36352557027035",
          "body": "This was necessary with `enum`s, but isn't applicable here.",
          "is_bot": false,
          "headline": "scanner: Don't mark tuple struct as `#[non_exhaustive]`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-19T17:19:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "661cf141f5de4ec83559125b3d8bb1c79f25116b",
          "body": "The `master` branch has API breaking changes, but `wayland-protocols`\ndoes not. So we can release this crate individually without a backport\nbranch, as long as it's released manually rather than through CI.",
          "is_bot": false,
          "headline": "protocols: Bump version to release this crate",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-19T15:31:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e055b69894c3caae7f8f47f117020399caca22d",
          "body": null,
          "is_bot": false,
          "headline": "protocols: Update changelog for 1.49 bump",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-19T15:06:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ba07e1cb2ae14d3993dfe2fc690ec6c93306f58",
          "body": null,
          "is_bot": false,
          "headline": "Update `wayland-protocols` to 1.49",
          "author_name": "HigherOrderLogic",
          "author_login": "HigherOrderLogic",
          "committed_at": "2026-06-18T17:57:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad3f3dbc936ed6fe77e0469c6ee6599a6501f550",
          "body": "… display\n\nThe display object is the root of a Wayland connection and should\nnot be destroyable through the public destroy_object API:\n\n- client_sys: The display proxy has no ProxyUserData, so wl_proxy_get_user_data\n  returns NULL, causing a segfault (or panic with the null check).\n- client_rs: The \n[…]\nthe display will\nreturn Err(InvalidId).\n\nAlso un-comments and updates the test_thread_destroy_display test to verify\nthat destroy_object correctly returns InvalidId for the display object.\n\nFixes #924",
          "is_bot": false,
          "headline": "fix(backend): prevent SEGV/panic when destroy_object is called on the…",
          "author_name": "majiuping",
          "author_login": "tianming-1996",
          "committed_at": "2026-06-11T17:42:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ac3568200655ae5a3f1078f6fd1705d62465625b",
          "body": null,
          "is_bot": false,
          "headline": "client/globals: Split of shared code as `bind_inner`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T23:12:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca0595c5ee3c34d9c6646d2ebcb6de56e63bef27",
          "body": null,
          "is_bot": false,
          "headline": "client/globals: Add `GlobalList::bind_specific`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T23:12:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "601fc3302536800da699168fe9d4c20e1e70e091",
          "body": "This is probably clearer when this method should only be used with\nsingleton globals.",
          "is_bot": false,
          "headline": "client/globals: Rename `GlobalList::bind` to `bind_singleton`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T23:12:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1145174e71e253cd4baa33f11c33ef2faf0bd0da",
          "body": "This seems neater than three separate arguments.",
          "is_bot": false,
          "headline": "client/globals: Use `&Global` in arguments to `GlobalListHandler`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T23:12:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "314bee39c47475d3b80c2f17d6553ef6950ceb50",
          "body": "Since we can provide a generic `Dispatch` implementation, we can do this\ninstead of having consumers of the library implement `Dispatch` for\n`GlobalListContents`.\n\n`GlobalList` is taken as an argument, which makes it easy to actually\nbind the global. Though this probably means not implementing\nhttps\n[…]\nqueueing\ninstead of immediately in `ObjectData`. But this is probably either more\nexpected, or doesn't matter. It should match how `RegistryState` in sctk\nworked.\n\nThis is meant to help simplify sctk.",
          "is_bot": false,
          "headline": "client: Update `GlobalList` to use a `GlobalListHandler` trait",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T21:20:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d97f70696a81ee535101b8ab3d2fbdb359ae9d83",
          "body": "If this is a simple wrapper around a `WlRegistry`, it can be `Clone`.",
          "is_bot": false,
          "headline": "client: Implement `Clone` for `GlobalList`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T21:20:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "498f54bb9717ba2ee493dbd7e36fc4753f81bdce",
          "body": "We don't need a manual `ObjectData` here now that we can have generic\nimplementations of `Dispatch`.",
          "is_bot": false,
          "headline": "client: Use `Noop` dispatch for `wl_fixes`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T21:20:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe98c725f02dce56545d9c2e82ff5159e031a9d8",
          "body": "This allows the `Arc` to be removed, and will make `GlobalList` possible\nto construct from just the proxy.\n\nI don't see any issue with this given `GlobalListContents` isn't\nconstructable from outside the library, etc.",
          "is_bot": false,
          "headline": "client/globals: Store `WlFixes` in `GlobalListContents`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-05T21:20:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aab3ff6dc40b12ef4f3fab39ab5d7c682f5a1011",
          "body": "This is needed to address the segfault in\nhttps://github.com/Smithay/wayland-rs/issues/885.\n\nA lock here allows us to make sure getting and setting udata is atomic.\nFiner grained locks likely unhelpful since `libwayland` uses a global\ndisplay mutex for most things that aren't just getters or setters\n[…]\nual proxy because\n`dispatcher_func` needs a way to access it from the proxy pointer.\nBecause libwayland uses ref-counting we should be able to assume proxy\npointer is valid, but not that udata is set.",
          "is_bot": false,
          "headline": "backend/client/sys: Guard udata get/set behind state lock",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-03T18:39:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b65692e28f5d7eaf45166be83382f7dba75e294b",
          "body": "This seems better than dereferencing a null pointer, which is a panic on\ndebug builds and a segfault / undefined behavior on release builds.\n\nWe should also have fixes to make sure this can not happen, even with\nracing threads. But this does not panic on anything that wasn't already\na panic or UB.",
          "is_bot": false,
          "headline": "backend/client/sys: Explicit panic if proxy udata is `NULL`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-03T18:39:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d18febe35f9118141a4f901deffbb8254ff3bff2",
          "body": null,
          "is_bot": false,
          "headline": "backend/client/sys: Use `destroy_object_inner` in `dispatcher_func`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-03T18:39:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a4f39af6d48f762bab5f7e5d54f6ad0fd27884a",
          "body": "Based on reproduction from\nhttps://github.com/Smithay/wayland-rs/issues/885#issuecomment-4588357627\nby @idleyoungman using Claude Code. With changes, and addition of two\nrelated tests.\n\n`test_thread_destroys` seems to be inconsistent. It works with an\nunbounded loop, but that's not so useful on CI. (Maybe iterating for a\ncertain period of time would be best for CI.)",
          "is_bot": false,
          "headline": "Add tests for SEGV / null dereference issues",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-03T18:39:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46b7d0fa67427c0a8f1e6f6e94736df95508b06f",
          "body": "It should be valid to use `Backend` here, even if that's unlikely. If\nnot absolutely necessarily, it is best not to hold any locks when\ninvoking user code.\n\nMoving `known_proxies.remove` is should be fine here, since only managed\nproxies will be in that list.",
          "is_bot": false,
          "headline": "backend/client/sys: Fix deadlock in `ObjectData::destroyed`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-01T21:10:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9011a8e1617e6b8b5ec33e3ac7c6e79f30df3b8c",
          "body": "Probably shouldn't deadlock here...",
          "is_bot": false,
          "headline": "tests: Reproduce deadlock if `ObjectData::destroyed()` uses backend",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-01T21:10:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fe2cdcb3d53d555137d0015f80cec1ba58696d2",
          "body": null,
          "is_bot": false,
          "headline": "tests: Add test asserting behavior of `ObjectData::destroyed`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-06-01T21:10:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acdf4a2f66cda65f6a9d5047a106538abc867fb4",
          "body": null,
          "is_bot": false,
          "headline": "Support XML entities and CDATA in <description> elements",
          "author_name": "Brian J. Tarricone",
          "author_login": "kelnos",
          "committed_at": "2026-05-30T04:59:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e56cd0efb5be86b197949554603f6e6dfa94d88",
          "body": null,
          "is_bot": false,
          "headline": "scanner: Add changelog entry for `available_since`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-30T04:49:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27937f7a4b5dfd956e3616c2250e6db21c6285de",
          "body": null,
          "is_bot": false,
          "headline": "scanner: Add `available_since` for bitflags too",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-30T04:49:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d60984d8aadb8fa172f593dc18ac374595d39351",
          "body": "May want to provide for bitflags too.\n\nWhere or not this is `Some` indicates if enum variant is recognized, as\nof version used for binding generation.",
          "is_bot": false,
          "headline": "scanner: Add `available_since()` variant to enums",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-30T03:31:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec2d932855593d48aa83c76820f3efbcfea86d39",
          "body": null,
          "is_bot": false,
          "headline": "scanner: Update `quick-xml` and `similar`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T18:05:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "429a1bc200a0a2d73d89902a6f3499dcb19e5490",
          "body": null,
          "is_bot": false,
          "headline": "server: Remove unused `downcast-rs` dependency",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T18:05:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab2f6d68170a963ced466391db01465dff04a1b9",
          "body": "This should no long be needed.\n\nThis is a breaking change.",
          "is_bot": false,
          "headline": "backend: Remove deprecated `raw-window-handle` 0.5 support",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T17:43:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34f6cfe7be1a1edfd1ffa9de505f27f89aa9c806",
          "body": "In principle `'static` bound is a breaking change, but only\n`wayland-scanner` implements this, and it isn't an issue.",
          "is_bot": false,
          "headline": "server: Provide implementation for `Resource::data`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T17:15:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "97cf76d988f6046a56c5183bc095b352b8c61c05",
          "body": "Technically breaking (and affects wayland-server), though user code usually\nshouldn't be affected.",
          "is_bot": false,
          "headline": "backend: Changelog entry for `downcast_rs`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T16:39:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7851e5f55f8b19721e7bf1138bc7a390c9f6cee8",
          "body": "It seems we still need a workaround with a seperate trait for this, even\non Rust 1.86+. But for just this, we might as well implement it here\ninstead of pulling in a crate.\n\nBy defining the trait ourselves, we can also make it a private part of\nthe API instead of publicly exposed.",
          "is_bot": false,
          "headline": "backend/client: Replace last use of `downcast-rs` crate",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T16:39:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e73c154beccb55093cb7f5fc644a86d1b6bb0b65",
          "body": null,
          "is_bot": false,
          "headline": "backend/server: Use `Any + Send + Sync` instead of `downcast_rs`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T16:39:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32820b65295030a3d31a605cdfc2e74b62939378",
          "body": "The only place this is actually used seems to be replaceable with an\nupcast in Rust 1.86+.",
          "is_bot": false,
          "headline": "Remove calls to `downcast_rs::impl_downcast!`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T16:39:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4255f3f1ddd898cbb1c6662b7693cb16f98854b0",
          "body": "Also remove explict casts where not needed.",
          "is_bot": false,
          "headline": "Use Rust 1.86 casts instead of `into_any_arc()`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-27T16:39:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7ff10dfac82c7fb0cbe79a56088516083e698d7",
          "body": "https://github.com/Smithay/wayland-rs/issues/791. Fixes\nhttps://github.com/Smithay/wayland-rs/issues/764.\n\nThis also changes the API for non-bitflag enums, to just generate a\ntuple struct wrapping a `u32`. This can be matched the same way, but\nwithout `WEnum`, using just the struct name as a catch-all.\n\nSince we can't in general have exhaustive enum matching, this seems\noverall better.",
          "is_bot": false,
          "headline": "client,server,scanner: Eliminate `WEnum`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T23:42:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9a57f0b3884bc9bdfcee9b674ce431b0d26aa82",
          "body": "When `BindError` is returned (and bubbled up by callers) it is no longer\nclear what interface or version was requested (nor what is the highest\nthis server might be able to provide), leaving users to wonder what the\ncontext for the error is.\n\nAdd this information to the object to elaborate in error messages and\nallow callers to read the values after the fact.",
          "is_bot": false,
          "headline": "client: Include version info and interface name in `BindError`",
          "author_name": "Marijn Suijten",
          "author_login": "MarijnS95",
          "committed_at": "2026-05-19T22:43:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bffad05cf4728e7798d565a5a35f5593e7256855",
          "body": "This a breaking change.",
          "is_bot": false,
          "headline": "backend,egl: Return `Result` of `NonNull` in `as_ptr`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T22:31:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec2354f33fa605919bba1dd3232f453d00b1a918",
          "body": null,
          "is_bot": false,
          "headline": "backend: Depend on `wayland-sys` only with `*_system` feature",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T22:31:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6da55382d222fc4d3552449ec6ee601ae99f470",
          "body": "We could extract the shared types into yet another crate, or maybe make\nthe re-exports `#[doc(hidden)]`, only to be used by wayland-scanner. Or\njust copy the definitions here.\n\nBut adding `#[repr(transparent)]` wrapper types seems to work, so we may\nas well do that.\n\nIdeally it would be good to reduce some of the duplication between this\nand `Interface`/`MessageDesc`. Not sure how much that can be done.",
          "is_bot": false,
          "headline": "backend: Wrap `wl_interface` to make `wayland-sys` a private dep",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T22:31:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3db1925ab2f415d613740fbcb69b7dd499338f53",
          "body": null,
          "is_bot": false,
          "headline": "backend: Add changelog entry for `BorrowedFd` change",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T22:31:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d69129501be5c5d0aad1421cfc33df0f3e48a115",
          "body": "This is a breaking change to `wayland-backend`, but not to\n`wayland-client` or `wayland-server`. I believe that should be fine.\n\nThis avoids an unsafe conversion in the `rs` backend.",
          "is_bot": false,
          "headline": "backend: Use `Message<_, BorrowedFd>` rather than `RawFd`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T22:18:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "696935984817356bc15f25d5429f9579a4618733",
          "body": "These methods use locking internally, on cloneable types, so `&mut` is\nunnecessarily, and may be confusing because of that. It is also\ninconsistent with other methods and `client_api.rs`.\n\nThis is probably a breaking change? At least in the strictest sense...",
          "is_bot": false,
          "headline": "backend/server: Use `&self` instead of `&mut self`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T22:17:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e892d93e6436d0240c880e7e865b6c48e51cb189",
          "body": "By defining these traits as implemented by the user-data type, as long\nas `smithay` and `smithay-client-toolkit` define their own user data\ntype, they can simply provide generic implementations, without dispatch\nmacros.\n\n`delegate_dispatch!` and `delegate_global_dispatch!` are removed.\n`delegate_noo\n[…]\nf that's\nbetter, but this seems like a good way of doing things).\n\nThis has basic changelog entries, but we may want a more thorough\nmigration guide for this release.\n\nThis is a major breaking change.",
          "is_bot": false,
          "headline": "client,server: `Dispatch`/`GlobalDispatch` API simplification",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-05-19T22:04:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "11ba1a463428386d08de8b9c6061f0b6fb68d5b4",
          "body": null,
          "is_bot": false,
          "headline": "scanner: Parse enum relative name at parse time, not generation",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T23:13:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67164cdc27c751ce5e38b7eb985be1b6ffe2a73d",
          "body": null,
          "is_bot": false,
          "headline": "Run `cargo fmt`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T19:53:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1962b3bbaa0b11082cdc05278f2b918d067fa601",
          "body": null,
          "is_bot": false,
          "headline": "Revert changes to `if let` make by `cargo fix --edition`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T19:53:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "449dcc9e0f7790493cee4c04483075fe5eb9c40b",
          "body": "Updated with `cargo fix --edition --all-features`.\n\nWe probably shouldn't use set_var() in tests since they run in threads...",
          "is_bot": false,
          "headline": "Use Rust 2024 edition",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T19:53:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "121a8fbc72a38c1f8b004c9c60577ebe661ffade",
          "body": null,
          "is_bot": false,
          "headline": "Remove unneeded use of `ref`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T19:53:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8023f27dcdf2da410dfc62fb53678ce9053a2465",
          "body": null,
          "is_bot": false,
          "headline": "cursor: Use c-string literal",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T18:20:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d31aacb7501a5434e3060cf94e670e3eef9acda9",
          "body": null,
          "is_bot": false,
          "headline": "Bump Rust MSRV to 1.86.0",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T18:20:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47c067aa7f6480e28320b36b8ad85f3d3b751ed9",
          "body": "This doesn't actually simplify anything here.\n\nThis is not an API break since `ErasedState` is not public.",
          "is_bot": false,
          "headline": "backend: Don't use `downcast_rs` for `ErasedState`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-30T18:20:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bf350c4eb9231950e2477e6562a3549cf7ae710",
          "body": "A couple methods here can be trivially implemented in terms of other\nmethods, so we don't need codegen to generate the same code for each of\nthem.\n\nAdding a default impl of the trait is not a breaking change. I guess\nthis could technically be a breaking change if `wayland-scanner` was\nupdated without updating `wayland-client`/`wayland-backend`? As a proc\nmacro crate, it doesn't specify what version of the runtime dependency\nit requires...\n\nThat's probably fine though.",
          "is_bot": false,
          "headline": "client,server,scanner: Use default impls in `Proxy`/`Resource`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-28T17:32:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2560726e9ff18d1c1cb8a81d75aa768d2faf6c2",
          "body": "A bit awkward, but don't want to add a development-only `bin` to a crate\nthat's published, and things would have to be moved around.",
          "is_bot": false,
          "headline": "scanner: Add env var to update tests",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-28T17:32:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2150dd0150f1badd4f5d1ea4cfee29ab7e81231",
          "body": null,
          "is_bot": false,
          "headline": "protocols: Add changelog entry for wayland-protocols bump",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-28T16:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a86d91e2284237b9e9ac5c62400d9ec26584329b",
          "body": null,
          "is_bot": false,
          "headline": "Update `wayland-protocols` to 1.48",
          "author_name": "HigherOrderLogic",
          "author_login": "HigherOrderLogic",
          "committed_at": "2026-04-28T16:34:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "006b508ee49669fc42031a150ea9b316297e9cf8",
          "body": "Adding an extra helper function here seems neater than the existing\nversion, or `clippy`'s suggestion.",
          "is_bot": false,
          "headline": "Fix `clippy` lints",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-24T19:10:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fc4fda452c79b111cff4d1119848292aad829fd",
          "body": null,
          "is_bot": false,
          "headline": "tests: Use `delegate_noop` to implement `client_ignore_impl`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-01T21:50:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb4b13142bc5689864b80b1039816be0ad0027a3",
          "body": "It isn't really a problem is `skel` is built as a tests (good to have CI\ncheck that it compiles). So with any modules that aren't tests moved to\nthe library, this only needs to list tests with custom options.",
          "is_bot": false,
          "headline": "tests: Use `autotests`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-01T21:50:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6db30b96af060ac87fe349322e18d56c22795fad",
          "body": null,
          "is_bot": false,
          "headline": "tests: Supress clippy lint",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-01T21:50:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75fc7f3f40e617d673e1987a62a026fa2cc5b4a9",
          "body": null,
          "is_bot": false,
          "headline": "tests: Don't use `extern crate`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-01T21:50:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f43a581ad6e2f383669ab662568fbcd8e56abf6a",
          "body": null,
          "is_bot": false,
          "headline": "tests: Don't use `#[macro_use]`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-01T21:50:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6a0af738aba66d6e5f0c419cc1a0f63e2e086c3",
          "body": "Having this as a library should make it easier to experiment with the\nhelpers here to investigate specific interactions between server and\nclient logic.\n\nThis may also make compilation faster (instead of including same module\nin each test) though that isn't really a concern.",
          "is_bot": false,
          "headline": "tests: Move helpers into library, instead of module of `tests/`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-04-01T21:50:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3d7927d87799b2955bf491b51c7c2a3a82da661",
          "body": "`cargo release --no-publish --no-tag --no-push --execute patch`",
          "is_bot": false,
          "headline": "chore: Release",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-31T02:15:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "356d86eec9a025a706c80251e59cbe1b5e1092ff",
          "body": "The version matching here was kind of backwards from how it should work.",
          "is_bot": false,
          "headline": "tests: Fix version matching in `GlobalList::bind`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-30T23:26:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44d96b740845f46d8dc87652c138fcfecbbaf1b6",
          "body": null,
          "is_bot": false,
          "headline": "tests: Use `RangeInclusive` in `GlobalList::bind`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-30T23:26:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f8a6514233ce3b1720966258eec1bf55fa2d7b8",
          "body": "Matches behavior on `sys` backend, and avoids protocol error from\ncompositor.\n\nhttps://github.com/Smithay/wayland-rs/issues/801",
          "is_bot": false,
          "headline": "backend/rs/client: `InvalidId` on using `client_destroyed` object in arg",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-30T23:26:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d8197b2df265878ee8f618412f9d7752772905b",
          "body": null,
          "is_bot": false,
          "headline": "tests: Add test for destroyed object in request argument",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-30T23:26:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd6d94c93681af01655f57a6369dd61e29aa8db9",
          "body": "Null object has empty interface, so we need to return before trying to\nread `id.interface.requests`, or that will panic.\n\nFixes https://github.com/Smithay/wayland-rs/issues/890.",
          "is_bot": false,
          "headline": "backend/client/sys: Return early for null object in `send_request`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-27T22:01:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5458cab47aab0b1a540197f863b25b6e159e885c",
          "body": "https://github.com/Smithay/wayland-rs/issues/890\n\nWe want consistent behavior between backends; current this panics on\n`sys` but returns an error on `rs`.",
          "is_bot": false,
          "headline": "backend/client: Add test for request on null object",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-27T22:01:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1343a03071ea6b901b3c82cfaa2d12aa122e7f1",
          "body": "If the lock is held while the udata is freed, this deadlocks if the\nudata drop also tries to lock the backend.\n\nIt's easy enough to make sure the drop happens outside the lock.",
          "is_bot": false,
          "headline": "backend/server/rs: Fix potential deadlock freeing global udata",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-27T18:10:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "225963abee919c7f3aa0888092385f66f5c681b2",
          "body": null,
          "is_bot": false,
          "headline": "Update wayland core protocol to 1.25",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-27T17:39:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d588f07c09b1ea2235ebb8e2f868f276d3178153",
          "body": null,
          "is_bot": false,
          "headline": "client: Changelog entry for `GlobalList::destroy`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-27T04:01:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b9772b928243599b5b07bdfe7e1b51827d344ca",
          "body": null,
          "is_bot": false,
          "headline": "client: Support destroying `GlobalList` through `wl_fixes`",
          "author_name": "Victoria Brekenfeld",
          "author_login": "Drakulix",
          "committed_at": "2026-03-27T01:22:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69f0a4bb75211a86823063b0f41ad100233a0885",
          "body": null,
          "is_bot": false,
          "headline": "sys,backend: Update changelog and bump version",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T21:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90bc1d9830a6aaa4a9bcd7adc25b7835b88ca3df",
          "body": "Fix for https://github.com/Smithay/wayland-rs/issues/882.",
          "is_bot": false,
          "headline": "sys,backend: `wl_proxy_get_display` should be behind version feature",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T21:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "509ed6c518b68c617d02a4ee40639e0e2dc43e96",
          "body": "This is meant to create a test failure on older versions of libwayland,\nto check that we have the version restriction right.\n\nhttps://github.com/Smithay/wayland-rs/issues/882",
          "is_bot": false,
          "headline": "tests: Add simple test for `ObjectId::display_ptr`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T21:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76cc9eb936b3a32cb983fcb30674de12a87b3b10",
          "body": "`cargo release --no-publish --no-tag --no-push --execute patch`.",
          "is_bot": false,
          "headline": "chore: Release",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T02:38:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab61111de122cd87d3e4169b90c7da0db0d35710",
          "body": null,
          "is_bot": false,
          "headline": "server: Add `Client::global_name` wrapping backend method",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T02:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "abde650f6e2e05c5c385264bb0a75c0e76eca06b",
          "body": "It makes sense to have wrappers here, as there are for othen functions.\nThen it is clearer how to use these functions.",
          "is_bot": false,
          "headline": "client,server: Add wrappers for max buffer size functions",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T02:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "940751f208dc984e8950a2c6057b2e6fd5f4e567",
          "body": null,
          "is_bot": false,
          "headline": "backend/rs: Round max buffer size in shared socket code",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T02:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cac05da718daa6ea9e7f535779aa69b91934e6e1",
          "body": "Most methods are defined there, so this is probably clearest. Though\nlikely an application will only call this once at start.",
          "is_bot": false,
          "headline": "backend: Move `set_default_max_buffer_size` to `Handle`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T02:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb98a54448398d58d639ac1eff4c7bf882dcab12",
          "body": "Since this is a method on `Handle`, not on `Client`, this name is\nprobably clearer.",
          "is_bot": false,
          "headline": "backend: Call function `set_client_max_buffer_size`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T02:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8a156139776059ffc7b4e26ec941ce00cb3d20a",
          "body": "See https://github.com/Smithay/wayland-rs/pull/877 for other methods.",
          "is_bot": false,
          "headline": "backend: Use `&self` instead of `&mut self` for max buffer size",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T02:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b65a9f0a2afa7ccc937002b22dcd5f5e179a325a",
          "body": null,
          "is_bot": false,
          "headline": "backend: Add changelog entries for buffer size APIs",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T00:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7b2c5989dc9fcc6da06d20956cf22c10d1560c7",
          "body": "This is in addition to the `set_default_max_buffer_size()` previously\nadded to the server API.",
          "is_bot": false,
          "headline": "backend: Add `set_max_buffer_size()` for server and client API",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T00:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73a807a8f26e0930f3047c0bc414454246e7366c",
          "body": null,
          "is_bot": false,
          "headline": "sys: Add bindings for `*_set_max_buffer_size()`",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T00:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e3bb1aba5a4eff1e87d8068fd7c7e07e1beef53",
          "body": null,
          "is_bot": false,
          "headline": "backend(rs): Support default max buffer size",
          "author_name": "Ian Douglas Scott",
          "author_login": "ids1024",
          "committed_at": "2026-03-05T00:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 3,
      "commits_last_year": 165,
      "latest_release_at": "2019-09-14T14:02:38Z",
      "latest_release_tag": "v0.24.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 33,
      "days_since_latest_release": 2504,
      "mean_days_between_releases": 112.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "wayland-egl",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "client",
            "wayland",
            "api-bindings",
            "gui"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/wayland-egl",
          "is_deprecated": false,
          "latest_version": "0.32.11",
          "repository_url": "https://github.com/smithay/wayland-rs",
          "versions_count": 63,
          "total_downloads": 3576840,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 114558,
          "first_published_at": "2019-09-14T09:01:34.799222Z",
          "latest_published_at": "2026-03-31T02:22:07.837784Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 114
        },
        {
          "name": "wayland-sys",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "external-ffi-bindings"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/wayland-sys",
          "is_deprecated": false,
          "latest_version": "0.31.11",
          "repository_url": "https://github.com/smithay/wayland-rs",
          "versions_count": 152,
          "total_downloads": 61571684,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 4909282,
          "first_published_at": "2015-10-03T11:08:21.431559Z",
          "latest_published_at": "2026-03-31T02:20:48.724050Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 114
        },
        {
          "name": "wayland-client",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "client",
            "wayland",
            "api-bindings",
            "gui"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/wayland-client",
          "is_deprecated": false,
          "latest_version": "0.31.15",
          "repository_url": "https://github.com/smithay/wayland-rs",
          "versions_count": 178,
          "total_downloads": 55172266,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 4290052,
          "first_published_at": "2015-04-29T13:20:18.971707Z",
          "latest_published_at": "2026-07-22T20:35:54.669482Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "wayland-cursor",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "client",
            "wayland",
            "api-bindings",
            "gui"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/wayland-cursor",
          "is_deprecated": false,
          "latest_version": "0.31.14",
          "repository_url": "https://github.com/smithay/wayland-rs",
          "versions_count": 64,
          "total_downloads": 39084318,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2955956,
          "first_published_at": "2019-09-14T09:01:06.634283Z",
          "latest_published_at": "2026-03-31T02:22:00.214711Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 114
        },
        {
          "name": "wayland-server",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "server",
            "wayland",
            "compositor",
            "api-bindings",
            "gui"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/wayland-server",
          "is_deprecated": false,
          "latest_version": "0.31.14",
          "repository_url": "https://github.com/smithay/wayland-rs",
          "versions_count": 149,
          "total_downloads": 1910990,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 201459,
          "first_published_at": "2016-09-27T16:35:21.136013Z",
          "latest_published_at": "2026-07-22T20:36:02.088715Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "wayland-backend",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "wayland",
            "api-bindings",
            "gui"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/wayland-backend",
          "is_deprecated": false,
          "latest_version": "0.3.16",
          "repository_url": "https://github.com/smithay/wayland-rs",
          "versions_count": 47,
          "total_downloads": 36163932,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 3580483,
          "first_published_at": "2022-01-01T13:22:51.954355Z",
          "latest_published_at": "2026-07-22T20:35:46.091021Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "wayland-scanner",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "wayland",
            "codegen",
            "api-bindings",
            "gui"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/wayland-scanner",
          "is_deprecated": false,
          "latest_version": "0.31.11",
          "repository_url": "https://github.com/smithay/wayland-rs",
          "versions_count": 153,
          "total_downloads": 55339758,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 4304556,
          "first_published_at": "2015-10-03T11:08:46.131292Z",
          "latest_published_at": "2026-07-22T20:35:37.798276Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 171,
      "stars": 1401,
      "watchers": 18,
      "fork_history": {
        "days": [
          {
            "date": "2015-11-19",
            "count": 1
          },
          {
            "date": "2015-12-01",
            "count": 1
          },
          {
            "date": "2016-04-07",
            "count": 1
          },
          {
            "date": "2016-04-29",
            "count": 1
          },
          {
            "date": "2016-05-15",
            "count": 1
          },
          {
            "date": "2016-07-30",
            "count": 1
          },
          {
            "date": "2016-08-31",
            "count": 1
          },
          {
            "date": "2016-10-05",
            "count": 1
          },
          {
            "date": "2017-01-09",
            "count": 1
          },
          {
            "date": "2017-03-27",
            "count": 1
          },
          {
            "date": "2017-06-20",
            "count": 1
          },
          {
            "date": "2017-08-02",
            "count": 1
          },
          {
            "date": "2017-08-06",
            "count": 1
          },
          {
            "date": "2017-08-18",
            "count": 1
          },
          {
            "date": "2017-09-02",
            "count": 1
          },
          {
            "date": "2017-09-08",
            "count": 1
          },
          {
            "date": "2017-11-24",
            "count": 1
          },
          {
            "date": "2018-01-04",
            "count": 1
          },
          {
            "date": "2018-01-30",
            "count": 1
          },
          {
            "date": "2018-05-08",
            "count": 1
          },
          {
            "date": "2018-07-05",
            "count": 1
          },
          {
            "date": "2018-07-19",
            "count": 1
          },
          {
            "date": "2018-08-05",
            "count": 1
          },
          {
            "date": "2018-09-12",
            "count": 1
          },
          {
            "date": "2018-11-09",
            "count": 1
          },
          {
            "date": "2018-12-27",
            "count": 1
          },
          {
            "date": "2019-01-18",
            "count": 1
          },
          {
            "date": "2019-02-01",
            "count": 1
          },
          {
            "date": "2019-03-03",
            "count": 1
          },
          {
            "date": "2019-03-22",
            "count": 1
          },
          {
            "date": "2019-06-13",
            "count": 1
          },
          {
            "date": "2019-06-25",
            "count": 1
          },
          {
            "date": "2019-09-08",
            "count": 1
          },
          {
            "date": "2019-10-04",
            "count": 1
          },
          {
            "date": "2019-10-18",
            "count": 1
          },
          {
            "date": "2019-11-15",
            "count": 1
          },
          {
            "date": "2020-03-13",
            "count": 1
          },
          {
            "date": "2020-05-01",
            "count": 1
          },
          {
            "date": "2020-05-08",
            "count": 1
          },
          {
            "date": "2020-05-21",
            "count": 1
          },
          {
            "date": "2020-05-23",
            "count": 2
          },
          {
            "date": "2020-06-11",
            "count": 1
          },
          {
            "date": "2020-06-12",
            "count": 1
          },
          {
            "date": "2020-06-14",
            "count": 1
          },
          {
            "date": "2020-09-01",
            "count": 1
          },
          {
            "date": "2020-11-03",
            "count": 1
          },
          {
            "date": "2020-11-11",
            "count": 1
          },
          {
            "date": "2020-12-30",
            "count": 1
          },
          {
            "date": "2021-01-16",
            "count": 1
          },
          {
            "date": "2021-02-12",
            "count": 1
          },
          {
            "date": "2021-03-12",
            "count": 1
          },
          {
            "date": "2021-03-28",
            "count": 1
          },
          {
            "date": "2021-05-01",
            "count": 1
          },
          {
            "date": "2021-06-03",
            "count": 1
          },
          {
            "date": "2021-06-06",
            "count": 1
          },
          {
            "date": "2021-06-08",
            "count": 1
          },
          {
            "date": "2021-07-15",
            "count": 1
          },
          {
            "date": "2021-08-02",
            "count": 1
          },
          {
            "date": "2021-08-10",
            "count": 1
          },
          {
            "date": "2021-08-31",
            "count": 1
          },
          {
            "date": "2021-10-01",
            "count": 1
          },
          {
            "date": "2021-10-09",
            "count": 1
          },
          {
            "date": "2021-11-06",
            "count": 1
          },
          {
            "date": "2022-01-06",
            "count": 1
          },
          {
            "date": "2022-01-14",
            "count": 1
          },
          {
            "date": "2022-01-27",
            "count": 1
          },
          {
            "date": "2022-01-30",
            "count": 1
          },
          {
            "date": "2022-06-17",
            "count": 1
          },
          {
            "date": "2022-07-11",
            "count": 1
          },
          {
            "date": "2022-08-01",
            "count": 1
          },
          {
            "date": "2022-08-10",
            "count": 1
          },
          {
            "date": "2022-08-25",
            "count": 1
          },
          {
            "date": "2022-11-25",
            "count": 1
          },
          {
            "date": "2022-12-04",
            "count": 1
          },
          {
            "date": "2022-12-05",
            "count": 1
          },
          {
            "date": "2022-12-12",
            "count": 1
          },
          {
            "date": "2022-12-17",
            "count": 1
          },
          {
            "date": "2022-12-19",
            "count": 1
          },
          {
            "date": "2023-01-04",
            "count": 1
          },
          {
            "date": "2023-01-31",
            "count": 1
          },
          {
            "date": "2023-03-23",
            "count": 1
          },
          {
            "date": "2023-04-03",
            "count": 1
          },
          {
            "date": "2023-04-13",
            "count": 1
          },
          {
            "date": "2023-04-24",
            "count": 1
          },
          {
            "date": "2023-04-27",
            "count": 1
          },
          {
            "date": "2023-05-16",
            "count": 1
          },
          {
            "date": "2023-05-20",
            "count": 1
          },
          {
            "date": "2023-07-07",
            "count": 1
          },
          {
            "date": "2023-07-12",
            "count": 1
          },
          {
            "date": "2023-07-22",
            "count": 1
          },
          {
            "date": "2023-08-13",
            "count": 1
          },
          {
            "date": "2023-08-17",
            "count": 1
          },
          {
            "date": "2023-08-30",
            "count": 1
          },
          {
            "date": "2023-10-02",
            "count": 1
          },
          {
            "date": "2023-10-19",
            "count": 1
          },
          {
            "date": "2023-11-01",
            "count": 1
          },
          {
            "date": "2023-11-02",
            "count": 1
          },
          {
            "date": "2023-11-25",
            "count": 1
          },
          {
            "date": "2023-12-17",
            "count": 1
          },
          {
            "date": "2023-12-19",
            "count": 1
          },
          {
            "date": "2024-01-07",
            "count": 1
          },
          {
            "date": "2024-01-25",
            "count": 1
          },
          {
            "date": "2024-02-22",
            "count": 1
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-04-04",
            "count": 1
          },
          {
            "date": "2024-04-10",
            "count": 1
          },
          {
            "date": "2024-04-16",
            "count": 1
          },
          {
            "date": "2024-04-17",
            "count": 1
          },
          {
            "date": "2024-04-21",
            "count": 1
          },
          {
            "date": "2024-06-01",
            "count": 1
          },
          {
            "date": "2024-06-18",
            "count": 1
          },
          {
            "date": "2024-08-10",
            "count": 1
          },
          {
            "date": "2024-10-29",
            "count": 1
          },
          {
            "date": "2024-11-01",
            "count": 1
          },
          {
            "date": "2024-11-27",
            "count": 1
          },
          {
            "date": "2025-02-03",
            "count": 1
          },
          {
            "date": "2025-02-07",
            "count": 2
          },
          {
            "date": "2025-02-16",
            "count": 1
          },
          {
            "date": "2025-03-11",
            "count": 1
          },
          {
            "date": "2025-03-26",
            "count": 1
          },
          {
            "date": "2025-04-15",
            "count": 1
          },
          {
            "date": "2025-04-20",
            "count": 1
          },
          {
            "date": "2025-04-29",
            "count": 2
          },
          {
            "date": "2025-05-03",
            "count": 1
          },
          {
            "date": "2025-05-09",
            "count": 1
          },
          {
            "date": "2025-05-30",
            "count": 1
          },
          {
            "date": "2025-06-03",
            "count": 1
          },
          {
            "date": "2025-06-08",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-12",
            "count": 1
          },
          {
            "date": "2025-06-20",
            "count": 1
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-08-01",
            "count": 1
          },
          {
            "date": "2025-09-24",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-05",
            "count": 1
          },
          {
            "date": "2025-11-07",
            "count": 1
          },
          {
            "date": "2025-11-09",
            "count": 1
          },
          {
            "date": "2025-11-11",
            "count": 1
          },
          {
            "date": "2025-11-14",
            "count": 1
          },
          {
            "date": "2025-11-23",
            "count": 1
          },
          {
            "date": "2025-11-27",
            "count": 1
          },
          {
            "date": "2026-01-07",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-30",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 2
          },
          {
            "date": "2026-05-30",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 3
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-04",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 2
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 170,
        "total_forks": 171
      },
      "star_history": null,
      "open_issues_and_prs": 76
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "Cargo.toml",
        "wayland-backend/Cargo.toml",
        "wayland-client/Cargo.toml",
        "wayland-cursor/Cargo.toml",
        "wayland-egl/Cargo.toml",
        "wayland-protocols-experimental/Cargo.toml",
        "wayland-protocols-misc/Cargo.toml",
        "wayland-protocols-plasma/Cargo.toml",
        "wayland-protocols-wlr/Cargo.toml",
        "wayland-protocols/Cargo.toml",
        "wayland-scanner/Cargo.toml",
        "wayland-server/Cargo.toml",
        "wayland-sys/Cargo.toml",
        "wayland-tests/Cargo.toml"
      ],
      "largest_source_bytes": 71943,
      "source_files_sampled": 110,
      "oversized_source_files": 2,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml",
        "wayland-backend/Cargo.toml",
        "wayland-client/Cargo.toml",
        "wayland-cursor/Cargo.toml",
        "wayland-egl/Cargo.toml",
        "wayland-protocols-experimental/Cargo.toml",
        "wayland-protocols-misc/Cargo.toml",
        "wayland-protocols-plasma/Cargo.toml",
        "wayland-protocols-wlr/Cargo.toml",
        "wayland-protocols/Cargo.toml",
        "wayland-scanner/Cargo.toml",
        "wayland-server/Cargo.toml",
        "wayland-sys/Cargo.toml",
        "wayland-tests/Cargo.toml"
      ],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 27,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates"
      ],
      "dependencies": [
        {
          "name": "wayland-sys",
          "manifest": "wayland-backend/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.11"
        },
        {
          "name": "log",
          "manifest": "wayland-backend/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "scoped-tls",
          "manifest": "wayland-backend/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "rwh_06",
          "manifest": "wayland-backend/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.6.0"
        },
        {
          "name": "smallvec",
          "manifest": "wayland-backend/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.9"
        },
        {
          "name": "rustix",
          "manifest": "wayland-backend/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.2"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-scanner",
          "manifest": "wayland-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.10"
        },
        {
          "name": "bitflags",
          "manifest": "wayland-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "rustix",
          "manifest": "wayland-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.2"
        },
        {
          "name": "log",
          "manifest": "wayland-client/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "wayland-client",
          "manifest": "wayland-cursor/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.14"
        },
        {
          "name": "xcursor",
          "manifest": "wayland-cursor/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.1"
        },
        {
          "name": "rustix",
          "manifest": "wayland-cursor/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.2"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-egl/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-sys",
          "manifest": "wayland-egl/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.11"
        },
        {
          "name": "wayland-scanner",
          "manifest": "wayland-protocols-experimental/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.10"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-protocols-experimental/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-client",
          "manifest": "wayland-protocols-experimental/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.14"
        },
        {
          "name": "wayland-server",
          "manifest": "wayland-protocols-experimental/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.13"
        },
        {
          "name": "wayland-protocols",
          "manifest": "wayland-protocols-experimental/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.32.12"
        },
        {
          "name": "bitflags",
          "manifest": "wayland-protocols-experimental/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "wayland-scanner",
          "manifest": "wayland-protocols-misc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.10"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-protocols-misc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-client",
          "manifest": "wayland-protocols-misc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.14"
        },
        {
          "name": "wayland-server",
          "manifest": "wayland-protocols-misc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.13"
        },
        {
          "name": "wayland-protocols",
          "manifest": "wayland-protocols-misc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.32.12"
        },
        {
          "name": "bitflags",
          "manifest": "wayland-protocols-misc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "wayland-scanner",
          "manifest": "wayland-protocols-plasma/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.10"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-protocols-plasma/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-client",
          "manifest": "wayland-protocols-plasma/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.14"
        },
        {
          "name": "wayland-server",
          "manifest": "wayland-protocols-plasma/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.13"
        },
        {
          "name": "wayland-protocols",
          "manifest": "wayland-protocols-plasma/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.32.12"
        },
        {
          "name": "bitflags",
          "manifest": "wayland-protocols-plasma/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "wayland-scanner",
          "manifest": "wayland-protocols-wlr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.10"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-protocols-wlr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-client",
          "manifest": "wayland-protocols-wlr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.14"
        },
        {
          "name": "wayland-server",
          "manifest": "wayland-protocols-wlr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.13"
        },
        {
          "name": "wayland-protocols",
          "manifest": "wayland-protocols-wlr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.32.12"
        },
        {
          "name": "bitflags",
          "manifest": "wayland-protocols-wlr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "wayland-scanner",
          "manifest": "wayland-protocols/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.10"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-protocols/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-client",
          "manifest": "wayland-protocols/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.14"
        },
        {
          "name": "wayland-server",
          "manifest": "wayland-protocols/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.13"
        },
        {
          "name": "bitflags",
          "manifest": "wayland-protocols/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "proc-macro2",
          "manifest": "wayland-scanner/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.11"
        },
        {
          "name": "quote",
          "manifest": "wayland-scanner/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "quick-xml",
          "manifest": "wayland-scanner/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.41"
        },
        {
          "name": "wayland-backend",
          "manifest": "wayland-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.15"
        },
        {
          "name": "wayland-scanner",
          "manifest": "wayland-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.31.10"
        },
        {
          "name": "bitflags",
          "manifest": "wayland-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "log",
          "manifest": "wayland-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "rustix",
          "manifest": "wayland-server/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.2"
        },
        {
          "name": "dlib",
          "manifest": "wayland-sys/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.5.3"
        },
        {
          "name": "libc",
          "manifest": "wayland-sys/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "once_cell",
          "manifest": "wayland-sys/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "log",
          "manifest": "wayland-sys/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "wayland-client",
          "manifest": "wayland-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wayland-server",
          "manifest": "wayland-tests/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "bitflags",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "dlib",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "quick-xml",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "scoped-tls",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "smallvec",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wayland-backend",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wayland-client",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wayland-protocols",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wayland-scanner",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wayland-server",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wayland-sys",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "xcursor",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "cc",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "concat-idents",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "env_logger",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "futures-channel",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "futures-util",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "pkg-config",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "raw-window-handle",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "similar",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tempfile",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 27,
        "direct_count": 18,
        "indirect_count": 9
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 18,
        "merged_prs": 562,
        "open_issues": 58,
        "closed_ratio": 0.807,
        "closed_issues": 242,
        "closed_unmerged_prs": 67
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "elinorbgr",
          "commits": 972,
          "avatar_url": "https://avatars.githubusercontent.com/u/3009227?v=4"
        },
        {
          "type": "User",
          "login": "ids1024",
          "commits": 230,
          "avatar_url": "https://avatars.githubusercontent.com/u/2263150?v=4"
        },
        {
          "type": "User",
          "login": "vberger",
          "commits": 62,
          "avatar_url": "https://avatars.githubusercontent.com/u/150674001?v=4"
        },
        {
          "type": "User",
          "login": "i509VCB",
          "commits": 56,
          "avatar_url": "https://avatars.githubusercontent.com/u/30619168?v=4"
        },
        {
          "type": "User",
          "login": "kchibisov",
          "commits": 24,
          "avatar_url": "https://avatars.githubusercontent.com/u/27620401?v=4"
        },
        {
          "type": "User",
          "login": "YaLTeR",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/1794388?v=4"
        },
        {
          "type": "User",
          "login": "cmeissl",
          "commits": 20,
          "avatar_url": "https://avatars.githubusercontent.com/u/4582663?v=4"
        },
        {
          "type": "User",
          "login": "danieldg",
          "commits": 17,
          "avatar_url": "https://avatars.githubusercontent.com/u/55450?v=4"
        },
        {
          "type": "User",
          "login": "MarijnS95",
          "commits": 17,
          "avatar_url": "https://avatars.githubusercontent.com/u/2325264?v=4"
        },
        {
          "type": "User",
          "login": "chrisduerr",
          "commits": 13,
          "avatar_url": "https://avatars.githubusercontent.com/u/8886672?v=4"
        }
      ],
      "contributors_sampled": 91,
      "top_contributor_share": 0.606
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 8,
            "reason": "13 out of 16 merged PRs checked by a CI test -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 3,
            "reason": "Found 6/19 approved changesets -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 29 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "a55c54b4e138e29181d63908ece06fd2a13550a0",
        "ran_at": "2026-07-23T15:01:24Z",
        "aggregate_score": 5.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-16T20:31:07Z",
      "oldest_open_prs": [
        {
          "number": 572,
          "created_at": "2022-10-05T02:29:03Z",
          "last_comment_at": "2024-09-07T18:45:46Z",
          "last_comment_author": "secext2022"
        },
        {
          "number": 595,
          "created_at": "2023-01-04T13:58:08Z",
          "last_comment_at": "2023-01-05T12:48:41Z",
          "last_comment_author": "technobaboo"
        },
        {
          "number": 619,
          "created_at": "2023-04-27T14:43:18Z",
          "last_comment_at": "2024-10-24T21:06:22Z",
          "last_comment_author": "Eclextic"
        },
        {
          "number": 647,
          "created_at": "2023-08-10T17:13:41Z",
          "last_comment_at": "2023-09-04T10:44:26Z",
          "last_comment_author": "elinorbgr"
        },
        {
          "number": 679,
          "created_at": "2023-11-29T09:06:44Z",
          "last_comment_at": "2023-12-04T15:35:36Z",
          "last_comment_author": "Decodetalkers"
        },
        {
          "number": 763,
          "created_at": "2024-10-18T16:09:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 771,
          "created_at": "2024-12-14T07:32:32Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 784,
          "created_at": "2025-02-07T16:58:19Z",
          "last_comment_at": "2025-02-07T21:30:04Z",
          "last_comment_author": "bbb651"
        },
        {
          "number": 792,
          "created_at": "2025-02-27T19:28:19Z",
          "last_comment_at": "2025-04-25T17:00:55Z",
          "last_comment_author": "ids1024"
        },
        {
          "number": 799,
          "created_at": "2025-03-26T07:22:47Z",
          "last_comment_at": "2025-04-12T18:04:34Z",
          "last_comment_author": "orowith2os"
        },
        {
          "number": 861,
          "created_at": "2026-01-07T14:30:17Z",
          "last_comment_at": "2026-01-08T08:30:30Z",
          "last_comment_author": "SwishSwushPow"
        },
        {
          "number": 897,
          "created_at": "2026-04-07T03:08:55Z",
          "last_comment_at": "2026-04-07T03:11:36Z",
          "last_comment_author": "ids1024"
        },
        {
          "number": 898,
          "created_at": "2026-04-19T13:01:00Z",
          "last_comment_at": "2026-04-28T20:02:32Z",
          "last_comment_author": "Leo-Tinkeam"
        },
        {
          "number": 919,
          "created_at": "2026-05-30T11:21:42Z",
          "last_comment_at": "2026-06-08T13:27:49Z",
          "last_comment_author": "rano-oss"
        },
        {
          "number": 933,
          "created_at": "2026-06-22T17:47:00Z",
          "last_comment_at": "2026-07-13T15:15:41Z",
          "last_comment_author": "ids1024"
        },
        {
          "number": 934,
          "created_at": "2026-06-22T20:48:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 944,
          "created_at": "2026-07-16T16:17:02Z",
          "last_comment_at": "2026-07-22T20:59:44Z",
          "last_comment_author": "ids1024"
        },
        {
          "number": 946,
          "created_at": "2026-07-17T00:26:00Z",
          "last_comment_at": "2026-07-22T19:58:56Z",
          "last_comment_author": "ids1024"
        }
      ],
      "last_merged_pr_at": "2026-07-22T20:35:12Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 275,
          "created_at": "2019-09-18T07:13:44Z",
          "last_comment_at": "2019-09-18T07:21:19Z",
          "last_comment_author": "elinorbgr"
        },
        {
          "number": 310,
          "created_at": "2020-05-02T09:46:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 316,
          "created_at": "2020-05-12T22:09:16Z",
          "last_comment_at": "2021-12-16T17:25:44Z",
          "last_comment_author": "WhyNotHugo"
        },
        {
          "number": 482,
          "created_at": "2022-05-10T08:23:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 570,
          "created_at": "2022-09-30T19:07:44Z",
          "last_comment_at": "2025-12-20T22:34:11Z",
          "last_comment_author": "Ciantic"
        },
        {
          "number": 596,
          "created_at": "2023-01-04T20:10:30Z",
          "last_comment_at": "2024-12-08T19:58:56Z",
          "last_comment_author": "SUPERCILEX"
        },
        {
          "number": 601,
          "created_at": "2023-02-13T04:48:34Z",
          "last_comment_at": "2023-03-01T13:47:24Z",
          "last_comment_author": "i509VCB"
        },
        {
          "number": 613,
          "created_at": "2023-04-11T17:05:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 618,
          "created_at": "2023-04-23T22:18:13Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 621,
          "created_at": "2023-05-03T14:03:50Z",
          "last_comment_at": "2023-05-04T07:07:29Z",
          "last_comment_author": "kchibisov"
        },
        {
          "number": 623,
          "created_at": "2023-05-18T03:16:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 625,
          "created_at": "2023-05-20T16:50:32Z",
          "last_comment_at": "2023-05-22T08:16:03Z",
          "last_comment_author": "elinorbgr"
        },
        {
          "number": 633,
          "created_at": "2023-06-27T21:44:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 634,
          "created_at": "2023-06-30T23:20:35Z",
          "last_comment_at": "2023-07-03T09:53:03Z",
          "last_comment_author": "elinorbgr"
        },
        {
          "number": 646,
          "created_at": "2023-08-09T20:36:23Z",
          "last_comment_at": "2023-08-26T08:43:29Z",
          "last_comment_author": "elinorbgr"
        },
        {
          "number": 688,
          "created_at": "2024-01-16T16:43:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 690,
          "created_at": "2024-01-18T22:59:55Z",
          "last_comment_at": "2024-01-25T19:13:50Z",
          "last_comment_author": "ids1024"
        },
        {
          "number": 704,
          "created_at": "2024-03-03T22:26:18Z",
          "last_comment_at": "2024-03-04T08:01:49Z",
          "last_comment_author": "elinorbgr"
        },
        {
          "number": 705,
          "created_at": "2024-03-05T03:36:28Z",
          "last_comment_at": "2024-04-02T08:30:41Z",
          "last_comment_author": "elinorbgr"
        },
        {
          "number": 721,
          "created_at": "2024-05-07T11:58:51Z",
          "last_comment_at": "2024-09-24T21:12:44Z",
          "last_comment_author": "gkgoat1"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Smithay/wayland-rs",
    "host": "github.com",
    "name": "wayland-rs",
    "owner": "Smithay"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 68,
      "inputs": {
        "security": 53,
        "vitality": 73,
        "community": 73,
        "governance": 68,
        "engineering": 68
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 73,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "commits_last_year": 165,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 33
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "33/52 weeks with commits",
                "points": 22.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 33
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "165 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 165
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "moderate",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 52,
            "inputs": {
              "releases_count": 3,
              "latest_release_tag": "v0.24.0",
              "releases_from_tags": false,
              "days_since_latest_release": 2504,
              "mean_days_between_releases": 112.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "3 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 2504 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 2504
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~112.8 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 112.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 6,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 6 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 73,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "forks": 171,
              "stars": 1401,
              "watchers": 18,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,401 stars",
                "points": 51,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1401
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "171 forks",
                "points": 18.6,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 171
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "18 watchers",
                "points": 6.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "packages": [
                "wayland-egl",
                "wayland-sys",
                "wayland-client",
                "wayland-cursor",
                "wayland-server",
                "wayland-backend",
                "wayland-scanner"
              ],
              "dependents": null,
              "ecosystems": "crates",
              "total_downloads": 252819788,
              "monthly_downloads": 20356346
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "20,356,346 downloads/month across crates",
                "points": 80,
                "status": "met",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 20356346,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 68,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 41,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 91,
              "top_contributor_share": 0.606
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 61% of commits",
                "points": 8.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 61
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "91 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 91
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 29 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "merged_prs": 562,
              "open_issues": 58,
              "closed_issues": 242,
              "issue_closed_ratio": 0.807,
              "closed_unmerged_prs": 67
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "81% of issues closed",
                "points": 37.7,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 81
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "562/629 decided PRs merged",
                "points": 34.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 562,
                      "decided": 629
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 6/19 approved changesets -- score normalized to 3",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "followers": 186,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "Smithay",
              "public_repos": 19,
              "account_age_days": 3339
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "186 followers of Smithay",
                "points": 16.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 186,
                      "login": "Smithay"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "19 public repos, account ~9 yr old",
                "points": 21.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 19
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "wayland-egl",
                "wayland-sys",
                "wayland-client",
                "wayland-cursor",
                "wayland-server",
                "wayland-backend",
                "wayland-scanner"
              ],
              "ecosystems": "crates",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "7 package(s) on crates",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 7,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "178 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 178
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 68,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "13 out of 16 merged PRs checked by a CI test -- score normalized to 8",
                "points": 16,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "wayland",
                "rust"
              ],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "2 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 53,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 53,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 5.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "13 out of 16 merged PRs checked by a CI test -- score normalized to 8",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 6/19 approved changesets -- score normalized to 3",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 29 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 6
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 51,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.8,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "80 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 80,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 46,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "Cargo.toml",
                "wayland-backend/Cargo.toml",
                "wayland-client/Cargo.toml",
                "wayland-cursor/Cargo.toml",
                "wayland-egl/Cargo.toml",
                "wayland-protocols-experimental/Cargo.toml",
                "wayland-protocols-misc/Cargo.toml",
                "wayland-protocols-plasma/Cargo.toml",
                "wayland-protocols-wlr/Cargo.toml",
                "wayland-protocols/Cargo.toml",
                "wayland-scanner/Cargo.toml",
                "wayland-server/Cargo.toml",
                "wayland-sys/Cargo.toml",
                "wayland-tests/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, wayland-backend/Cargo.toml, wayland-client/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, wayland-backend/Cargo.toml, wayland-client/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 71943,
              "source_files_sampled": 110,
              "oversized_source_files": 2
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "2/110 source files over 60KB",
                "points": 54,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 110,
                      "oversized": 2
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch crates package 'wayland-tests' from its registry",
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T15:01:54.214365Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/Smithay/wayland-rs.svg",
  "full_name": "Smithay/wayland-rs",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikencrates.io.