Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.30.0 · метрики 2.3.1 · 2026-08-03 18:41 UTC

svenjacobs / reveal

Reveal effect (coach mark) for Compose Multiplatform targeting Android, iOS, Desktop and Web

KotlinMIT★ 612 зірок⑂ 16 форківз лист. 2022 р.Переглянути на GitHub ↗
ТипМобільний застосунокяк це визначено

svenjacobs/reveal має індекс здоров’я 71 зі 100, що відповідає смузі «Добрий». Найвищий показник — Vitality (87/100), найнижчий — Sustainability & Governance (50/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

71
загалом / 100
Добрий

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє зважене середнє, відкаліброване за розподілом публічного реєстру, тож діапазони мають перцентильний зміст; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 34 («У зоні ризику»).

71
Винятковий93-100Верхній щабель реєстру (≈ топ-5%); відповідає практично всім перевіреним критеріям
Відмінний80-92Сильний за всіма напрямами; незначні прогалини
Добрий65-79Здоровий; прогалини обмежені та керовані
Помірний50-64Прийнятний, але з помітними прогалинами; рекомендовано перевірку
Слабкий35-49Суттєві недоліки в кількох сферах
У зоні ризику20-34Суттєві слабкі місця; впровадження потребує обережності
Критичний1-19Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Зважений загальний бал 63 калібровано до 71 за шкалою опублікованого індексу (калібрування реєстру 2026-08-02).

Власність

Sven JacobsОсобистий обліковий запис
189 підписників17 публічних репозиторіївз квіт. 2010 р.@rewe-digital

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

87Відмінний · 21% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
20.1/36Ритм комітів — 29/52 тижнів із комітами
18/18Обсяг комітів — 103 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year103
human_commit_share0,16
days_since_last_push0
active_weeks_last_year29
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 47 релізів
36/36Свіжість релізів — останній реліз 5 дн. тому
19.8/27Ритм релізів — реліз кожні ~55,5 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count47
latest_release_tagv5.0.0
releases_from_tagsні
days_since_latest_release5
mean_days_between_releases55,5
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

53Помірний · 17% загального індексу
Як обчислюється оцінка
45.2/60Зірки — 612 зірок
9.8/25Форки — 16 форків
0/15Спостерігачі — 2 спостерігачів
Використані вхідні дані
forks16
stars612
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
readme_badges6
has_contributingні
has_issue_templateні
has_code_of_conductні
readme_badge_servicesshields.io
has_pull_request_templateні

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

50Помірний · 23% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0.7/22.5Розподіл комітів — головний контриб’ютор — автор 97% комітів
4.1/13.5Широта контриб’юторів — 3 контриб’юторів
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Використані вхідні дані
bus_factor1
contributors_sampled3
top_contributor_share0,968
Як обчислюється оцінка
39.9/42Вирішення issue — закрито 95% issue
26.7/30Прийняття PR — злито 286/321 вирішених PR
0/13Newcomer PR acceptance — за 30 дн. не вирішено жодного PR від новачка
0/15OpenSSF Scorecard: Code-Review — Found 0/5 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs286
open_issues2
closed_issues37
prs_merged_7d2
prs_decided_7d2
prs_merged_30d4
prs_decided_30d4
issue_closed_ratio0,949
closed_unmerged_prs35
first_time_authors_30d0
first_time_prs_merged_30d0
first_time_prs_decided_30d0
Виключено з оцінювання (немає даних або не застосовно): newcomer_pr_acceptance. Залишкові ваги перенормовано.
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
16.4/25Охоплення власника — 189 підписників у svenjacobs
21.1/25Послужний список — 17 публічних репозиторіїв, вік облікового запису ~16 р.
Використані вхідні дані
followers189
owner_typeUser
is_verified
owner_loginsvenjacobs
public_repos17
account_age_days5 941
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Інженерна якість

Чи наявні базові інженерні практики та документація?

64Помірний · 19% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 2 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigтак
has_linter_configні
has_precommit_configні

Документація

50Помірний
Як обчислюється оцінка
30/30README
0/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
10/10Теми — 20 тем
0/10Wiki
Використані вхідні дані
topicsandroid, coach-marks, compose, jetpack-compose, onboarding, reveal, tutorial, walkthrough, tour, user-onboarding, coach-mark, coach-mark-android, coachmarks, showcase, tap-target, compose-multiplatform, ios, kmp, kotlin, kotlin-multiplatform
has_wikiні
homepage
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

56Помірний · 16% загального індексу

Стан безпеки

56Помірний
Як обчислюється оцінка
6/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — немає даних
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/5 approved changesets -- score normalized to 0
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
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 — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate5,6
Виключено з оцінювання (немає даних або не застосовно): branch_protection, signed_releases. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Має свідомо малу вагу (4%): агентний інструментарій — реальний сигнал супроводу, але репозиторій без нього все одно може отримати 100/100.

74Добрий · 4% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — .github/copilot-instructions.md, AGENTS.md, CLAUDE.md
0/15Машиночитана документація (llms.txt)
0/40Читабельна історія комітів — немає даних
Використані вхідні дані
has_llms_txtні
legible_history_share
agent_instruction_files.github/copilot-instructions.md, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes5 890
Виключено з оцінювання (немає даних або не застосовно): Читабельна історія комітів. Залишкові ваги перенормовано.
Як обчислюється оцінка
12.6/18Розгортання однією командою — android-tests/build.gradle.kts, build.gradle.kts, convention-plugins/build.gradle.kts (домовленість інструментарію, без раннера задач)
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
11/11Статична перевірка типів — Kotlin (статично типізована)
0/10Відтворюване середовище
10/10Підтверджена практика роботи з агентами — 10 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 84 з останніх 100 комітів — автоматичні оновлення залежностей
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfiles
has_dockerfileні
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0,1
toolchain_manifestsandroid-tests/build.gradle.kts, build.gradle.kts, convention-plugins/build.gradle.kts, demo-app/androidApp/build.gradle.kts, demo-app/build.gradle.kts, demo-app/desktopApp/build.gradle.kts, demo-app/shared/build.gradle.kts, reveal-common/build.gradle.kts, reveal-core/build.gradle.kts, reveal-shapes/build.gradle.kts
dependency_bot_commit_share0,84
Як обчислюється оцінка
45/45Типізований код — Kotlin (статично типізована)
55/55Керовані розміри файлів — 0/47 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageKotlin
largest_source_bytes16 691
source_files_sampled47
oversized_source_files0

Ключові факти

612зірок GitHub
3контриб'юторів
103комітів за останні 12 місяців
0днів від останнього пушу
47релізів
1бас-фактор
2відкритих issue
Mavenпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Докладніше

Історія зірок і форків 0 ★ / 16 ⇿
0Зірки
16Форки
42Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

03581013151512022-122024-082026-04
Мажорні 4Мінорні 7Патчі 31

Кожна точка охоплює 4 днів.

OpenSSF Scorecard 5.6 / 10
5.6сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-08-03 18:41 UTC

8Binary-Artifactsbinaries present in source code
н/дBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/5 approved changesets -- score normalized to 0
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow 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
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Усі залежності 0

Повний розв'язаний набір залежностей із графа залежностей GitHub: 0 прямих і 0 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
Сповіщення про залежності не оцінено

Звірка сповіщень не відбулася для цього звіту: No resolved dependencies to assess

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "android",
        "coach-marks",
        "compose",
        "jetpack-compose",
        "onboarding",
        "reveal",
        "tutorial",
        "walkthrough",
        "tour",
        "user-onboarding",
        "coach-mark",
        "coach-mark-android",
        "coachmarks",
        "showcase",
        "tap-target",
        "compose-multiplatform",
        "ios",
        "kmp",
        "kotlin",
        "kotlin-multiplatform"
      ],
      "is_fork": false,
      "size_kb": 3145,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "Swift": 588,
        "Kotlin": 148423
      },
      "pushed_at": "2026-08-03T15:32:40Z",
      "created_at": "2022-11-21T11:38:46Z",
      "owner_type": "User",
      "updated_at": "2026-08-03T14:40:03Z",
      "description": "Reveal effect (coach mark) for Compose Multiplatform targeting Android, iOS, Desktop and Web",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Kotlin",
      "significant_languages": [
        "Kotlin"
      ]
    },
    "owner": {
      "blog": "svenjacobs.com",
      "name": "Sven Jacobs",
      "type": "User",
      "login": "svenjacobs",
      "company": "@rewe-digital ",
      "location": "Germany",
      "followers": 189,
      "avatar_url": "https://avatars.githubusercontent.com/u/255313?v=4",
      "created_at": "2010-04-28T07:25:32Z",
      "is_verified": null,
      "public_repos": 17,
      "account_age_days": 5941
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2026-07-29T08:57:26Z"
        },
        {
          "tag": "v4.4.0",
          "kind": "minor",
          "published_at": "2026-07-26T10:58:40Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2026-06-16T05:54:43Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2026-04-26T12:32:00Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2026-02-16T12:07:34Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2025-08-27T17:11:33Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2025-07-02T13:30:45Z"
        },
        {
          "tag": "v3.2.3",
          "kind": "patch",
          "published_at": "2025-06-14T12:06:00Z"
        },
        {
          "tag": "v3.2.2",
          "kind": "patch",
          "published_at": "2025-06-02T12:34:35Z"
        },
        {
          "tag": "v3.2.1",
          "kind": "patch",
          "published_at": "2025-03-16T13:05:03Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2025-01-19T15:32:51Z"
        },
        {
          "tag": "v3.1.1",
          "kind": "patch",
          "published_at": "2024-10-24T16:50:16Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2024-10-17T07:34:04Z"
        },
        {
          "tag": "v3.0.8",
          "kind": "patch",
          "published_at": "2024-09-23T13:55:41Z"
        },
        {
          "tag": "v3.0.7",
          "kind": "patch",
          "published_at": "2024-05-24T20:23:57Z"
        },
        {
          "tag": "v3.0.6",
          "kind": "patch",
          "published_at": "2024-05-23T07:00:44Z"
        },
        {
          "tag": "v3.0.5",
          "kind": "patch",
          "published_at": "2024-03-08T15:16:39Z"
        },
        {
          "tag": "v3.0.4",
          "kind": "patch",
          "published_at": "2024-03-03T11:19:58Z"
        },
        {
          "tag": "v3.0.3",
          "kind": "patch",
          "published_at": "2024-01-21T12:52:24Z"
        },
        {
          "tag": "v3.0.2",
          "kind": "patch",
          "published_at": "2023-11-05T13:42:39Z"
        },
        {
          "tag": "v3.0.1",
          "kind": "patch",
          "published_at": "2023-10-03T11:57:57Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2023-09-18T13:33:26Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2023-08-21T15:13:08Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2023-08-18T07:32:57Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2023-07-25T12:46:17Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2023-07-17T09:56:20Z"
        },
        {
          "tag": "v1.0.3",
          "kind": "patch",
          "published_at": "2023-05-17T14:49:17Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2023-04-18T10:29:20Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2023-03-30T09:18:08Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2023-03-12T14:28:28Z"
        },
        {
          "tag": "v0.0.17",
          "kind": "patch",
          "published_at": "2023-03-10T07:31:56Z"
        },
        {
          "tag": "v0.0.16",
          "kind": "patch",
          "published_at": "2023-03-08T14:32:53Z"
        },
        {
          "tag": "v0.0.15",
          "kind": "patch",
          "published_at": "2023-02-24T06:55:55Z"
        },
        {
          "tag": "v0.0.14",
          "kind": "patch",
          "published_at": "2023-01-05T16:17:49Z"
        },
        {
          "tag": "v0.0.13",
          "kind": "patch",
          "published_at": "2023-01-05T06:32:58Z"
        },
        {
          "tag": "v0.0.12",
          "kind": "patch",
          "published_at": "2023-01-04T07:58:28Z"
        },
        {
          "tag": "v0.0.11",
          "kind": "patch",
          "published_at": "2023-01-03T16:24:32Z"
        },
        {
          "tag": "v0.0.10",
          "kind": "patch",
          "published_at": "2023-01-03T11:21:21Z"
        },
        {
          "tag": "v0.0.9",
          "kind": "patch",
          "published_at": "2023-01-03T09:09:58Z"
        },
        {
          "tag": "v0.0.8",
          "kind": "patch",
          "published_at": "2023-01-02T10:25:01Z"
        },
        {
          "tag": "v0.0.7",
          "kind": "patch",
          "published_at": "2022-12-31T11:24:33Z"
        },
        {
          "tag": "v0.0.6",
          "kind": "patch",
          "published_at": "2022-12-29T14:07:15Z"
        },
        {
          "tag": "v0.0.5",
          "kind": "patch",
          "published_at": "2022-12-28T11:44:42Z"
        },
        {
          "tag": "v0.0.4",
          "kind": "patch",
          "published_at": "2022-12-27T14:47:38Z"
        },
        {
          "tag": "v0.0.3",
          "kind": "patch",
          "published_at": "2022-12-27T11:17:53Z"
        },
        {
          "tag": "v0.0.2",
          "kind": "patch",
          "published_at": "2022-12-20T07:18:20Z"
        },
        {
          "tag": "v0.0.1",
          "kind": "patch",
          "published_at": "2022-11-24T19:32:07Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "b516ec7d02bd93df2d8790644587f527ad5be360",
          "body": "* chore(deps): Bump gradle/actions from 5 to 6.2.0\n\nBumps [gradle/actions](https://github.com/gradle/actions) from 5 to 6.2.0.\n- [Release notes](https://github.com/gradle/actions/releases)\n- [Commits](https://github.com/gradle/actions/compare/v5...v6.2.0)\n\n---\nupdated-dependencies:\n- dependency-name\n[…]\n\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle/actions from 5 to 6 (#363)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-08-03T14:38:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99fc129ae1d85794d9c397a5bd7cdd4548ae687b",
          "body": "Bumps com.github.ben-manes.versions from 0.54.0 to 0.58.0.\n\n---\nupdated-dependencies:\n- dependency-name: com.github.ben-manes.versions\n  dependency-version: 0.58.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump com.github.ben-manes.versions in /demo-app (#365)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-08-03T14:08:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f19ba27bd8956eea25767e850ee67c77e4002993",
          "body": "Bumps `reveal` from 4.4.0 to 5.0.0.\n\nUpdates `com.svenjacobs.reveal:reveal-core` from 4.4.0 to 5.0.0\n- [Release notes](https://github.com/svenjacobs/reveal/releases)\n- [Commits](https://github.com/svenjacobs/reveal/compare/v4.4.0...v5.0.0)\n\nUpdates `com.svenjacobs.reveal:reveal-shapes` from 4.4.0 to\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump reveal from 4.4.0 to 5.0.0 in /demo-app (#364)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-08-03T14:08:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "808ea6f1b7a5b0cff64b1c903b67a8fbbf119d60",
          "body": "… (#362)\n\nBumps com.github.ben-manes.versions from 0.54.0 to 0.58.0.\n\n---\nupdated-dependencies:\n- dependency-name: com.github.ben-manes.versions\n  dependency-version: 0.58.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump com.github.ben-manes.versions from 0.54.0 to 0.58.0…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-08-03T14:06:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ff2ab7210bec951a1129ba61d46cea9a670d880",
          "body": "Bumps `jetbrains-compose` from 1.11.0 to 1.11.1.\n\nUpdates `org.jetbrains.compose.runtime:runtime` from 1.11.0 to 1.11.1\n- [Release notes](https://github.com/JetBrains/compose-multiplatform/releases)\n- [Changelog](https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md)\n- [Commits\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump jetbrains-compose from 1.11.0 to 1.11.1 (#361)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-08-03T14:06:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a962f8a52d30b9983d0cbda3c3bb689837ccdc7c",
          "body": "* fix!: draw reveal effect above ModalBottomSheet and Dialog (#100)\n\nReveal now renders its overlay in a full screen Popup created from\ninside its own composition, instead of hoisting it to a separate\nRevealCanvas placed at the top of the Compose hierarchy. A Popup always\nattaches to the window it i\n[…]\nrrors; changes to the mapping still\nwarrant a look at an actual desktop window.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix!: draw reveal effect above ModalBottomSheet and Dialog (#354)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-07-29T08:53:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4ba1b034c1642f767a63e25cb0a126c6919db31e",
          "body": "* chore: remove deprecated Gradle delegated properties\n\n* fix: pin Robolectric to SDK 36 and clear build warnings\n\ntargetSdk was bumped to 37, but Robolectric 4.16.1 supports SDK 36 at\nmost, so every screenshot test failed at initialization with\n\\\"Package targetSdkVersion=37 > maxSdkVersion=36\\\". Pi\n[…]\ning what RevealOverlayBoundsTest\nand RevealOverlayAccessibilityTest already do.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: remove deprecated Gradle delegated properties (#358)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-07-28T14:55:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "74fa9da076060314fce43364511bcd6ee7e024ee",
          "body": "Bumps `reveal` from 4.3.0 to 4.4.0.\n\nUpdates `com.svenjacobs.reveal:reveal-core` from 4.3.0 to 4.4.0\n- [Release notes](https://github.com/svenjacobs/reveal/releases)\n- [Commits](https://github.com/svenjacobs/reveal/compare/v4.3.0...v4.4.0)\n\nUpdates `com.svenjacobs.reveal:reveal-shapes` from 4.3.0 to\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump reveal from 4.3.0 to 4.4.0 in /demo-app (#356)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T06:40:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8ffe8cdad34262a9682569ac90d41700eab88bd",
          "body": "…app (#357)\n\nBumps `android-gradle-plugin` from 9.3.0 to 9.3.1.\n\nUpdates `com.android.application` from 9.3.0 to 9.3.1\n\nUpdates `com.android.library` from 9.3.0 to 9.3.1\n\nUpdates `com.android.kotlin.multiplatform.library` from 9.3.0 to 9.3.1\n\n---\nupdated-dependencies:\n- dependency-name: com.android.\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 9.3.0 to 9.3.1 in /demo-…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T06:40:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb71389246146296a8e16c540d2cfde53eb3cef1",
          "body": "Replaces the Gradle Nexus Publish plugin and hand-rolled maven-publish/\nsigning setup with com.vanniktech.maven.publish, which talks to the\nMaven Central Portal natively and handles Kotlin Multiplatform/Android\npublishing and signing without the previous KMP signing workaround.\nJavadoc jars are now generated by Dokka (HTML format) instead of being\nempty stubs.\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: migrate publishing to com.vanniktech.maven.publish (#355)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-07-26T10:58:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a25e7a8ab25bae7428451a3cf85641787192ba3c",
          "body": "…(#353)\n\nRevealOverlayScope.align() used Modifier.layout {} to report the full\noverlay size as its own layout bounds while drawing the child at an\ninner offset. Any semantics (testTag, clickable, etc.) attached\noutside that layout modifier therefore inherited full-screen\naccessibility bounds, making\n[…]\nh\nchild at its real, drawn coordinates instead of lying about layout\nbounds. This makes the fix correct regardless of modifier order.\n\nFixes #338\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: report real drawn bounds for RevealOverlayScope.align() content …",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-07-25T18:45:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "265f3b5067c8cc5eb92477ff858ab9c4080e11f1",
          "body": "Bumps `roborazzi` from 1.68.0 to 1.70.0.\n\nUpdates `io.github.takahirom.roborazzi:roborazzi` from 1.68.0 to 1.70.0\n- [Release notes](https://github.com/takahirom/roborazzi/releases)\n- [Commits](https://github.com/takahirom/roborazzi/compare/1.68.0...1.70.0)\n\nUpdates `io.github.takahirom.roborazzi:rob\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump roborazzi from 1.68.0 to 1.70.0 (#352)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T17:39:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e5039697d8a180d5474152ff1bc1b3b710e15597",
          "body": "Bumps `android-gradle-plugin` from 9.2.1 to 9.3.1.\n\nUpdates `com.android.application` from 9.2.1 to 9.3.1\n\nUpdates `com.android.library` from 9.2.1 to 9.3.1\n\nUpdates `com.android.kotlin.multiplatform.library` from 9.2.1 to 9.3.1\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n \n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 9.2.1 to 9.3.1 (#351)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T17:39:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1b308c9af91a0b5c72294ce21ce2d8e975c086e",
          "body": "…(#349)\n\nBumps the kotlin group with 2 updates in the /demo-app directory: [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.4.0 to 2.4.10\n- [\n[…]\nype: version-update:semver-patch\n  dependency-group: kotlin\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group across 1 directory with 2 updates …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T14:00:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4a10a0e2afd3e9e7b9d138eabf90558e47ec7170",
          "body": "Bumps the kotlin group with 2 updates: [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.4.0 to 2.4.10\n- [Release notes](https://github.com/Je\n[…]\n kotlin\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group with 2 updates (#348)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T12:04:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "963277292f395f73a8ae86484f9ce2e9abb9b27b",
          "body": "Bumps androidx.compose:compose-bom from 2026.05.01 to 2026.06.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.06.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#344)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T12:04:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8299fb3e652da7caf540cdbb2318d2fb87578ae1",
          "body": "…app (#350)\n\nBumps `android-gradle-plugin` from 9.2.1 to 9.3.0.\n\nUpdates `com.android.application` from 9.2.1 to 9.3.0\n\nUpdates `com.android.library` from 9.2.1 to 9.3.0\n\nUpdates `com.android.kotlin.multiplatform.library` from 9.2.1 to 9.3.0\n\n---\nupdated-dependencies:\n- dependency-name: com.android.\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 9.2.1 to 9.3.0 in /demo-…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:28:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a021356e8d0072b07bb7f0961a5e8bf595be84f3",
          "body": "Bumps [com.slack.lint.compose:compose-lint-checks](https://github.com/slackhq/compose-lints) from 1.5.2 to 1.5.3.\n- [Release notes](https://github.com/slackhq/compose-lints/releases)\n- [Changelog](https://github.com/slackhq/compose-lints/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/slackhq\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump com.slack.lint.compose:compose-lint-checks (#347)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:27:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aa0e832f813070a6f3e7983fa4b3baf5ffa51adb",
          "body": "Bumps `roborazzi` from 1.66.0 to 1.68.0.\n\nUpdates `io.github.takahirom.roborazzi:roborazzi` from 1.66.0 to 1.68.0\n- [Release notes](https://github.com/takahirom/roborazzi/releases)\n- [Commits](https://github.com/takahirom/roborazzi/compare/1.66.0...1.68.0)\n\nUpdates `io.github.takahirom.roborazzi:rob\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump roborazzi from 1.66.0 to 1.68.0 (#346)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:26:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5b3c3fb4ca27926e9f7086b02901420437ecf8a2",
          "body": "Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.1 to 9.6.1.\n- [Release notes](https://github.com/gradle/gradle/releases)\n- [Commits](https://github.com/gradle/gradle/compare/v9.5.1...v9.6.1)\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.6.1\n  \n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 9.5.1 to 9.6.1 in /demo-app (#341)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:26:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c8cded17669721adb63acb79ce7ec0613e572541",
          "body": "Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.1 to 9.6.1.\n- [Release notes](https://github.com/gradle/gradle/releases)\n- [Commits](https://github.com/gradle/gradle/compare/v9.5.1...v9.6.1)\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.6.1\n  \n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 9.5.1 to 9.6.1 (#340)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:26:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "83f1efc645ed005142030c9f18032579b6edf597",
          "body": "Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v5...v6)\n\n---\nupdated-dependencies:\n- dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump actions/cache from 5 to 6 (#339)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:26:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4b4627fd803ceec7a6bea3d9458c1a60cc8446c2",
          "body": "Bumps `reveal` from 4.2.0 to 4.3.0.\n\nUpdates `com.svenjacobs.reveal:reveal-core` from 4.2.0 to 4.3.0\n- [Release notes](https://github.com/svenjacobs/reveal/releases)\n- [Commits](https://github.com/svenjacobs/reveal/compare/v4.2.0...v4.3.0)\n\nUpdates `com.svenjacobs.reveal:reveal-shapes` from 4.2.0 to\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump reveal from 4.2.0 to 4.3.0 in /demo-app (#336)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:25:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "122e1974caae3743f37d2a504d508bde1683db41",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump actions/checkout from 6 to 7 (#332)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T11:25:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af17715e2f295108dfb15f74f33b5a35a9f99587",
          "body": "Bumps org.jmailen.kotlinter from 5.5.0 to 5.6.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.jmailen.kotlinter\n  dependency-version: 5.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump org.jmailen.kotlinter from 5.5.0 to 5.6.0 (#343)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T07:06:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1533f60f0c6e3001aa08d9dc9ed55d009610dfc3",
          "body": "Bumps androidx.compose:compose-bom from 2026.05.01 to 2026.06.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.06.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom in /demo-app (#345)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T07:05:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68e3ed926134810be4a6f526a27d1cc82a633d85",
          "body": "Bumps `roborazzi` from 1.64.0 to 1.66.0.\n\nUpdates `io.github.takahirom.roborazzi:roborazzi` from 1.64.0 to 1.66.0\n- [Release notes](https://github.com/takahirom/roborazzi/releases)\n- [Commits](https://github.com/takahirom/roborazzi/compare/1.64.0...1.66.0)\n\nUpdates `io.github.takahirom.roborazzi:rob\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump roborazzi from 1.64.0 to 1.66.0 (#342)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T07:04:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7235039dadb2fb60e3f3bdc452dcb676bd1d53ab",
          "body": "…ompose fixes (#331)\n\n* chore: switch indentation to spaces and add AGENTS.md\n\nStandardize on 4-space indentation across all Gradle/Kotlin files\ninstead of tabs, and document project conventions for AI coding\nagents in AGENTS.md, symlinked as CLAUDE.md and\n.github/copilot-instructions.md.\n\nCo-Author\n[…]\ness ComposeCompositionLocalUsage lint for LocalRevealOverlayArrowAnchor\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: switch indentation to spaces, add AGENTS.md, minor stability/C…",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-06-16T07:14:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d7730bb9ea4506234e4e700860fa6b95763dca3e",
          "body": "Bumps androidx.compose:compose-bom from 2026.04.01 to 2026.05.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.05.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom in /demo-app (#329)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T21:54:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1adb382cbd301fb7b1fd498673dcaa26645c00f4",
          "body": "Bumps androidx.core:core-ktx from 1.18.0 to 1.19.0.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.core:core-ktx\n  dependency-version: 1.19.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.core:core-ktx in /demo-app (#330)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T21:44:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3ff053f85644af85f7ecbf148e0a1dd2747e6f1",
          "body": "Bumps `reveal` from 4.1.0 to 4.2.0.\n\nUpdates `com.svenjacobs.reveal:reveal-core` from 4.1.0 to 4.2.0\n- [Release notes](https://github.com/svenjacobs/reveal/releases)\n- [Commits](https://github.com/svenjacobs/reveal/compare/v4.1.0...v4.2.0)\n\nUpdates `com.svenjacobs.reveal:reveal-shapes` from 4.1.0 to\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump reveal from 4.1.0 to 4.2.0 in /demo-app (#328)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T21:43:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1937c6ffd5955c57a5a40ab4deb26b57122a4d14",
          "body": "…p (#327)\n\nBumps `jetbrains-compose` from 1.10.3 to 1.11.1.\n\nUpdates `org.jetbrains.compose.runtime:runtime` from 1.10.3 to 1.11.1\n- [Release notes](https://github.com/JetBrains/compose-multiplatform/releases)\n- [Changelog](https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md)\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump jetbrains-compose from 1.10.3 to 1.11.1 in /demo-ap…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T21:43:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ca7bda4871144fd1db080a0994b2bf982678bb5f",
          "body": "demo-app is a separate Gradle project (own settings.gradle.kts) and was\nnot scanned by the existing root-directory entry.\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: add Dependabot Gradle coverage for demo-app (#326)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-06-15T20:37:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4ada575f97fc3efba14cdb2987c9431b1e8cd932",
          "body": "* chore(deps): Bump the kotlin group across 1 directory with 2 updates\n\nBumps the kotlin group with 2 updates in the / directory: [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\nUpdates `org.je\n[…]\nb.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump Kotlin to 2.4.0 (#323)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T20:36:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "db10d1f0224514a8bd2228e77349806f62356cc3",
          "body": "…positioning (#325)\n\n* fix: keep overlay content within screen bounds (#194)\n\nOverlay content aligned next to a reveal area that sits close to a screen\nedge could be placed partially off screen. The placement offset is now\nclamped to the available space and the content is constrained to the\nscreen i\n[…]\nRevealOverlayEffect\nimplementations to manage their own anchor instances.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: keep overlay content within screen bounds and add dynamic arrow …",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-06-15T20:06:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ad32934a992e4b8543cfaed8529fb7ca1a504a83",
          "body": "Bumps [com.slack.lint.compose:compose-lint-checks](https://github.com/slackhq/compose-lints) from 1.4.3 to 1.5.2.\n- [Release notes](https://github.com/slackhq/compose-lints/releases)\n- [Changelog](https://github.com/slackhq/compose-lints/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/slackhq\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump com.slack.lint.compose:compose-lint-checks (#324)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-08T07:30:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "55cf1ecfdf8336729465dc717bad33d1cb4f7168",
          "body": "Bumps androidx.compose:compose-bom from 2026.05.00 to 2026.05.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.05.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#320)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-08T07:29:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb7f9e25aabf15a3fb2e083d1654d406b858ceb3",
          "body": "* chore(deps): Bump jetbrains-compose from 1.10.3 to 1.11.0\n\nBumps `jetbrains-compose` from 1.10.3 to 1.11.0.\n\nUpdates `org.jetbrains.compose.runtime:runtime` from 1.10.3 to 1.11.0\n- [Release notes](https://github.com/JetBrains/compose-multiplatform/releases)\n- [Changelog](https://github.com/JetBrai\n[…]\n33+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: svenjacobs <255313+svenjacobs@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump jetbrains-compose from 1.10.3 to 1.11.0 (#319)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-08T06:08:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "27366742a0ef33e1046e8672e9858daf38e3ef9e",
          "body": "Bumps org.jmailen.kotlinter from 5.4.2 to 5.5.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.jmailen.kotlinter\n  dependency-version: 5.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump org.jmailen.kotlinter from 5.4.2 to 5.5.0 (#318)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-18T12:55:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4f9232c51268fecfb3b7a534ae364813dabd5fe",
          "body": "Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.0 to 9.5.1.\n- [Release notes](https://github.com/gradle/gradle/releases)\n- [Commits](https://github.com/gradle/gradle/compare/v9.5.0...v9.5.1)\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.5.1\n  \n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 9.5.0 to 9.5.1 (#317)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-18T12:55:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f222e5ca49eed0266542ee3b293995d470b4605",
          "body": "Bumps `android-gradle-plugin` from 9.2.0 to 9.2.1.\n\nUpdates `com.android.application` from 9.2.0 to 9.2.1\n\nUpdates `com.android.library` from 9.2.0 to 9.2.1\n\nUpdates `com.android.kotlin.multiplatform.library` from 9.2.0 to 9.2.1\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n \n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 9.2.0 to 9.2.1 (#314)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-11T22:33:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e2d622bd835694220fe5568f95a5f05ff4a6206",
          "body": "Bumps androidx.compose:compose-bom from 2026.04.01 to 2026.05.00.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.05.00\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#315)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-11T22:32:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "257d9c6419cbdcf77ed695e2d0448cf4a1528b75",
          "body": "Bumps [com.slack.lint.compose:compose-lint-checks](https://github.com/slackhq/compose-lints) from 1.4.2 to 1.4.3.\n- [Release notes](https://github.com/slackhq/compose-lints/releases)\n- [Changelog](https://github.com/slackhq/compose-lints/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/slackhq\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump com.slack.lint.compose:compose-lint-checks (#316)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-11T22:32:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05abb0a08354b75b7102a0a4ce55f227a5cc9dbd",
          "body": "Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.4.1 to 9.5.0.\n- [Release notes](https://github.com/gradle/gradle/releases)\n- [Commits](https://github.com/gradle/gradle/compare/v9.4.1...v9.5.0)\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.5.0\n  \n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 9.4.1 to 9.5.0 (#313)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-04T06:51:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "734fdc0bc8f83192f5c329fde024e52ed031f364",
          "body": null,
          "is_bot": false,
          "headline": "chore: update dependencies (#312)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-04-26T12:28:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f200619e90fc47bb2cd40673e9223fc196ec103",
          "body": "Bumps androidx.compose:compose-bom from 2026.03.01 to 2026.04.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.04.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#311)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-25T17:33:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ae427dc61696f67935fd4d75f23942926fd4e65",
          "body": "Bumps `android-gradle-plugin` from 9.1.1 to 9.2.0.\n\nUpdates `com.android.application` from 9.1.1 to 9.2.0\n\nUpdates `com.android.library` from 9.1.1 to 9.2.0\n\nUpdates `com.android.kotlin.multiplatform.library` from 9.1.1 to 9.2.0\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n \n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 9.1.1 to 9.2.0 (#310)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-25T17:27:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5b3d278408024606e02d40a4eb54c76e7af79d0a",
          "body": "Bumps the kotlin group with 2 updates: [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.3.20 to 2.3.21\n- [Release notes](https://github.com/J\n[…]\nype: version-update:semver-patch\n  dependency-group: kotlin\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group with 2 updates (#309)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-25T17:27:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c14f2256a409bc08e767a2fa9b1aa3085b774044",
          "body": "… (#308)\n\nBumps com.github.ben-manes.versions from 0.53.0 to 0.54.0.\n\n---\nupdated-dependencies:\n- dependency-name: com.github.ben-manes.versions\n  dependency-version: 0.54.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump com.github.ben-manes.versions from 0.53.0 to 0.54.0…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-23T16:34:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1db2e1b302823a6304314e9c79f367820eecf2a7",
          "body": "Bumps `android-gradle-plugin` from 9.1.0 to 9.1.1.\n\nUpdates `com.android.application` from 9.1.0 to 9.1.1\n\nUpdates `com.android.library` from 9.1.0 to 9.1.1\n\nUpdates `com.android.kotlin.multiplatform.library` from 9.1.0 to 9.1.1\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n \n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 9.1.0 to 9.1.1 (#307)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-23T16:34:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5d3c9f42a0831ab89e5e7b76873c6efe05f7303b",
          "body": "Bumps androidx.compose:compose-bom from 2026.02.01 to 2026.03.00.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.03.00\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#301)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-29T08:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e01e5550d76b79b7699ae1c88a959d7fd4b016c",
          "body": "Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.4.0 to 9.4.1.\n- [Release notes](https://github.com/gradle/gradle/releases)\n- [Commits](https://github.com/gradle/gradle/compare/v9.4.0...v9.4.1)\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.4.1\n  \n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 9.4.0 to 9.4.1 (#305)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-29T07:11:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec2dcc264f21e47b11454fe6174faf5f1f9d47e3",
          "body": "Bumps the kotlin group with 2 updates: [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.3.10 to 2.3.20\n- [Release notes](https://github.com/J\n[…]\nype: version-update:semver-patch\n  dependency-group: kotlin\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group with 2 updates (#303)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-29T07:09:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3e4178592f4e9a84c76e2fed00084ecb40fef9e",
          "body": "Bumps `androidx-activity` from 1.12.4 to 1.13.0.\n\nUpdates `androidx.activity:activity` from 1.12.4 to 1.13.0\n\nUpdates `androidx.activity:activity-compose` from 1.12.4 to 1.13.0\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activity:activity\n  dependency-version: 1.13.0\n  dependency-type: di\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.12.4 to 1.13.0 (#300)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-29T07:09:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f557c37261025f67b3312d9204572eaeb5f54a0",
          "body": "* Initial plan\n\n* Add FUNDING.yml referencing GitHub user svenjacobs\n\nCo-authored-by: svenjacobs <255313+svenjacobs@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/svenjacobs/reveal/sessions/854593e5-34a8-4985-8da0-d7e2fea05c69\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: svenjacobs <255313+svenjacobs@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add FUNDING.yml to enable GitHub Sponsors button (#302)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-22T11:44:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "40b03044885a625a32b6c5924d0d3eb4d6a72dad",
          "body": "Bumps `jetbrains-compose` from 1.10.1 to 1.10.2.\n\nUpdates `org.jetbrains.compose.runtime:runtime` from 1.10.1 to 1.10.2\n- [Release notes](https://github.com/JetBrains/compose-multiplatform/releases)\n- [Changelog](https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md)\n- [Commits\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump jetbrains-compose from 1.10.1 to 1.10.2 (#299)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-09T07:13:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2b8785d21d0a4b6eeaf25e0ac4b8f2ee8e0662e",
          "body": "Bumps gradle-wrapper from 9.3.1 to 9.4.0.\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 9.3.1 to 9.4.0 (#298)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-09T07:13:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db1c10578c7971466ef4c1888eafe0a8ba783907",
          "body": "Bumps `android-gradle-plugin` from 9.0.1 to 9.1.0.\n\nUpdates `com.android.application` from 9.0.1 to 9.1.0\n\nUpdates `com.android.library` from 9.0.1 to 9.1.0\n\nUpdates `com.android.kotlin.multiplatform.library` from 9.0.1 to 9.1.0\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n \n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 9.0.1 to 9.1.0 (#297)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-09T07:13:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ac9de348f7b7491f7570aad2dc80235c5e712552",
          "body": "Bumps androidx.compose:compose-bom from 2026.02.00 to 2026.02.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.02.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#296)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-02T22:24:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "550ff34337d166e452234bb9d96b8e677e7cde9d",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependencies of demo app (#295)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2026-02-14T19:46:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0842d8d8c0be130efc65590e4d2f5a4f9d7c7fa4",
          "body": "Bumps `androidx-activity` from 1.12.3 to 1.12.4.\n\nUpdates `androidx.activity:activity` from 1.12.3 to 1.12.4\n\nUpdates `androidx.activity:activity-compose` from 1.12.3 to 1.12.4\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activity:activity\n  dependency-version: 1.12.4\n  dependency-type: di\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.12.3 to 1.12.4 (#294)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-14T15:24:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0c0d2c985d9b992ecf662f85f002ae62f5476183",
          "body": "Bumps org.jmailen.kotlinter from 5.3.0 to 5.4.2.\n\n---\nupdated-dependencies:\n- dependency-name: org.jmailen.kotlinter\n  dependency-version: 5.4.2\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump org.jmailen.kotlinter from 5.3.0 to 5.4.2 (#293)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-14T15:20:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "008692188089d3d66a730c75c68e18926bb4867d",
          "body": "Bumps androidx.compose:compose-bom from 2026.01.01 to 2026.02.00.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.02.00\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#292)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-14T15:20:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e82527da03922a4bdb74a3b9e35536febd7784f8",
          "body": "…(#291)\n\nBumps the kotlin group with 2 updates in the / directory: [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\n\nUpdates `org.jetbrains.kotlin.multiplatform` from 2.3.0 to 2.3.10\n- [Release \n[…]\nype: version-update:semver-patch\n  dependency-group: kotlin\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group across 1 directory with 2 updates …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-14T15:20:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dc7063c60da5280d88ada52735a30867a55a1b15",
          "body": "* chore(deps): Bump android-gradle-plugin from 8.13.2 to 9.0.0\n\nBumps `android-gradle-plugin` from 8.13.2 to 9.0.0.\n\nUpdates `com.android.application` from 8.13.2 to 9.0.0\n\nUpdates `com.android.library` from 8.13.2 to 9.0.0\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n  depe\n[…]\n\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 8.13.2 to 9.0.0 (#282)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-14T14:56:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "36166c1af451135c6c76a8aa4f83be45589d41a4",
          "body": "Bumps gradle-wrapper from 9.3.0 to 9.3.1.\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 9.3.0 to 9.3.1 (#289)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-03T04:51:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "666dc3b57f5b20d7b689efc3145f9941546f3f27",
          "body": "Bumps androidx.compose:compose-bom from 2026.01.00 to 2026.01.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.01.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#288)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-02T14:24:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a457d3a6328e8f40db95bd1ebf665d2a790df32",
          "body": "Bumps `androidx-activity` from 1.12.2 to 1.12.3.\n\nUpdates `androidx.activity:activity` from 1.12.2 to 1.12.3\n\nUpdates `androidx.activity:activity-compose` from 1.12.2 to 1.12.3\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activity:activity\n  dependency-version: 1.12.3\n  dependency-type: di\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.12.2 to 1.12.3 (#287)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-02T07:44:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d82cdc9da8ac35d7a339c9a9f8c7ce3aad3b01de",
          "body": "Bumps gradle-wrapper from 8.14.3 to 9.3.0.\n\n---\nupdated-dependencies:\n- dependency-name: gradle-wrapper\n  dependency-version: 9.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle-wrapper from 8.14.3 to 9.3.0 (#286)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-28T07:51:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c60e1102b237bdeaedb5f1213a421a23ef60f884",
          "body": "Bumps androidx.compose:compose-bom from 2025.12.00 to 2026.01.00.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2026.01.00\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#284)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-19T07:03:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "401ad885b133ff6df0ce04367e8a06d955680661",
          "body": "Bumps `androidx-activity` from 1.12.1 to 1.12.2.\n\nUpdates `androidx.activity:activity` from 1.12.1 to 1.12.2\n\nUpdates `androidx.activity:activity-compose` from 1.12.1 to 1.12.2\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activity:activity\n  dependency-version: 1.12.2\n  dependency-type: di\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.12.1 to 1.12.2 (#283)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-16T15:47:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8766c807ce40d21b00d35c0cacdbbab662e65ed6",
          "body": "…5.12.00 (#277)\n\n* chore(deps): Bump androidx.compose:compose-bom\n\nBumps androidx.compose:compose-bom from 2025.11.01 to 2025.12.00.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2025.12.00\n  dependency-type: direct:production\n  update-type: version\n[…]\n\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom from 2025.11.01 to 202…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-16T13:45:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c24fdae30274dd12fe5b5dce2e05c9c3ea98a475",
          "body": "Bumps `android-gradle-plugin` from 8.13.1 to 8.13.2.\n\nUpdates `com.android.application` from 8.13.1 to 8.13.2\n\nUpdates `com.android.library` from 8.13.1 to 8.13.2\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n  dependency-version: 8.13.2\n  dependency-type: direct:production\n \n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 8.13.1 to 8.13.2 (#278)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-16T13:05:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d2dc13f0392d54032942595f0858696952dc4b4",
          "body": "Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump actions/cache from 4 to 5 (#279)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-16T13:05:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e8c361b452b19dc309291029551f17f989ee8ac",
          "body": "Bumps `androidx-activity` from 1.12.1 to 1.12.2.\n\nUpdates `androidx.activity:activity` from 1.12.1 to 1.12.2\n\nUpdates `androidx.activity:activity-compose` from 1.12.1 to 1.12.2\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activity:activity\n  dependency-version: 1.12.2\n  dependency-type: di\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.12.1 to 1.12.2 (#281)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-22T08:32:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "201a7c0f7c1a71bf1d49e382d2472188c5cefd5f",
          "body": "Bumps the kotlin group with 3 updates: [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin), [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\n\nUpdates `org.jetbrains.kotlin.androi\n[…]\nype: version-update:semver-minor\n  dependency-group: kotlin\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group with 3 updates (#280)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-22T08:32:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a51e68b034c5164f965ecd64255ea7e8f14379bc",
          "body": "Bumps `androidx-activity` from 1.12.0 to 1.12.1.\n\nUpdates `androidx.activity:activity` from 1.12.0 to 1.12.1\n\nUpdates `androidx.activity:activity-compose` from 1.12.0 to 1.12.1\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activity:activity\n  dependency-version: 1.12.1\n  dependency-type: di\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.12.0 to 1.12.1 (#276)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-06T16:17:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bc011dc9bebb8f7651b2617baa977a987ba8b84d",
          "body": "* chore(deps): Bump androidx-activity from 1.11.0 to 1.12.0\n\nBumps `androidx-activity` from 1.11.0 to 1.12.0.\n\nUpdates `androidx.activity:activity` from 1.11.0 to 1.12.0\n\nUpdates `androidx.activity:activity-compose` from 1.11.0 to 1.12.0\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activit\n[…]\np\n\n* fix: increase API level of instrumentation test\n\n---------\n\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.11.0 to 1.12.0 (#271)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-04T11:40:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd21347eb25886403393257d84dfb03db5cdf1cb",
          "body": null,
          "is_bot": false,
          "headline": "chore: update demo app dependencies (#275)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2025-12-04T11:14:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85638ab47f3ceb79250f4b64fb66d4d83a95cbaa",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v5...v6)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump actions/checkout from 5 to 6 (#270)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-03T14:34:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3aaaeb67eea71f2906b31d57ea64c01b2bdb7ba7",
          "body": "Bumps org.jmailen.kotlinter from 5.2.0 to 5.3.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.jmailen.kotlinter\n  dependency-version: 5.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump org.jmailen.kotlinter from 5.2.0 to 5.3.0 (#272)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-24T09:54:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "179b72198acc5959d6e8470470896b4082280841",
          "body": "Bumps androidx.compose:compose-bom from 2025.11.00 to 2025.11.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2025.11.01\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#273)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-24T09:54:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16153821ad375e177ae74b690a8bd33c55ea00bf",
          "body": "Bumps `android-gradle-plugin` from 8.13.0 to 8.13.1.\n\nUpdates `com.android.application` from 8.13.0 to 8.13.1\n\nUpdates `com.android.library` from 8.13.0 to 8.13.1\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n  dependency-version: 8.13.1\n  dependency-type: direct:production\n \n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 8.13.0 to 8.13.1 (#274)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-24T09:53:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba95ab1be0239744ed2b402051ca90739fc3c569",
          "body": "Bumps androidx.compose:compose-bom from 2025.10.01 to 2025.11.00.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2025.11.00\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#269)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-11T07:55:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f292be2857a5941c5be146db052bb6b8af4bbfc",
          "body": "Bumps the kotlin group with 3 updates: [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin), [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin).\n\n\nUpdates `org.jetbrains.kotlin.androi\n[…]\nype: version-update:semver-patch\n  dependency-group: kotlin\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group with 3 updates (#268)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-01T22:26:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e9e0d1a720e82cc7e86f39b2e873273150c21b71",
          "body": "* chore(deps): Bump androidx-activity from 1.10.1 to 1.11.0\n\nBumps `androidx-activity` from 1.10.1 to 1.11.0.\n\nUpdates `androidx.activity:activity` from 1.10.1 to 1.11.0\n\nUpdates `androidx.activity:activity-compose` from 1.10.1 to 1.11.0\n\n---\nupdated-dependencies:\n- dependency-name: androidx.activit\n[…]\n\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx-activity from 1.10.1 to 1.11.0 (#260)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-01T21:44:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "113f76b4f73a7e6066d706371195531fc9dad3d5",
          "body": "* chore(deps): Bump the kotlin group with 3 updates\n\nBumps the kotlin group with 3 updates: [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin), [org.jetbrains.kotlin.multiplatform](https://github.com/JetBrains/kotlin) and [org.jetbrains.kotlin.plugin.compose](https://github.com/JetB\n[…]\n\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kotlin group with 3 updates (#259)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-01T19:41:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8cff7f2f272fb2a7822172e772ee82f2ed3b693d",
          "body": null,
          "is_bot": false,
          "headline": "chore: update macOS runner (#265)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2025-11-01T19:40:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "824c99007bae70ef4e5559d2131d5305fb9c907e",
          "body": "…5.10.01 (#266)\n\n* chore(deps): Bump androidx.compose:compose-bom\n\nBumps androidx.compose:compose-bom from 2025.09.00 to 2025.10.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2025.10.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: de\n[…]\n\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom from 2025.09.00 to 202…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-01T18:53:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "278efa55867d068d738a4f7738073e06b8cbb8b6",
          "body": null,
          "is_bot": false,
          "headline": "chore: add foojay resolver plugin to demo project (#267)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2025-11-01T18:01:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab8655895f5ff5e1290e915e6bbd93ba3e893043",
          "body": "Bumps [gradle/actions](https://github.com/gradle/actions) from 4 to 5.\n- [Release notes](https://github.com/gradle/actions/releases)\n- [Commits](https://github.com/gradle/actions/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: gradle/actions\n  dependency-version: '5'\n  dependency-type\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump gradle/actions from 4 to 5 (#263)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-10-06T08:07:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce88071a1bebce6a849b86d977a11ed62055ab2f",
          "body": "… (#261)\n\nBumps com.github.ben-manes.versions from 0.52.0 to 0.53.0.\n\n---\nupdated-dependencies:\n- dependency-name: com.github.ben-manes.versions\n  dependency-version: 0.53.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump com.github.ben-manes.versions from 0.52.0 to 0.53.0…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-09-29T08:57:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8508b00808b2d062961925b9307ea1365ab7bf60",
          "body": "Bumps androidx.compose:compose-bom from 2025.08.01 to 2025.09.00.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2025.09.00\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#258)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-09-15T06:53:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30d1bbd93330b822a4441eb9d118129703f5462d",
          "body": "Bumps androidx.compose:compose-bom from 2025.08.00 to 2025.08.01.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.compose:compose-bom\n  dependency-version: 2025.08.01\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump androidx.compose:compose-bom (#257)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-09-08T06:24:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6964d4e3a307d47096da290d5faee2bf4c068858",
          "body": "Bumps `android-gradle-plugin` from 8.12.1 to 8.13.0.\n\nUpdates `com.android.application` from 8.12.1 to 8.13.0\n\nUpdates `com.android.library` from 8.12.1 to 8.13.0\n\n---\nupdated-dependencies:\n- dependency-name: com.android.application\n  dependency-version: 8.13.0\n  dependency-type: direct:production\n \n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump android-gradle-plugin from 8.12.1 to 8.13.0 (#256)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-09-08T06:24:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c43f0fc4437bfdcfd911a569bd4291509390fca",
          "body": "…#253)\n\n* feat(wip): allow passthrough of touch events on revealable items\n\n* fix: test\n\n* fix: update API dump\n\n* fix: passthrough issue (#252)\n\n* fixed passthrough issue\n\n* fixed hide revealable on touch outside in passthrough mode\n\n---------\n\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>\n\n*\n[…]\nx: revert demo app\n\n* chore: update doc\n\n* fix: also consume down event\n\n* fix: ui tests (#255)\n\n* fix: handling of down event\n\n---------\n\nCo-authored-by: Oleksandr Semenov <asemenovboyarka@gmail.com>",
          "is_bot": false,
          "headline": "feat(BREAKING): allow click passthrough to underlying UI components (…",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2025-08-27T16:59:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "043ab5672839781083158395cab725cab7bb1054",
          "body": "Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: '\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump actions/setup-java from 4 to 5 (#254)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-08-25T12:47:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0f52c3017f3f918880bf40d08c2cc6461fbbcdec",
          "body": null,
          "is_bot": false,
          "headline": "chore: update dependencies of demo app (#251)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2025-08-19T18:01:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "955f179f3e58937268082b58f50f62356acddd93",
          "body": null,
          "is_bot": false,
          "headline": "chore: disable Kotlin native warning (#250)",
          "author_name": "Sven Jacobs",
          "author_login": "svenjacobs",
          "committed_at": "2025-08-19T17:06:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9e72d43986c9fb47e0e6eebe20763f474f62293",
          "body": "* chore(deps): Bump org.jmailen.kotlinter from 5.1.1 to 5.2.0\n\nBumps org.jmailen.kotlinter from 5.1.1 to 5.2.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.jmailen.kotlinter\n  dependency-version: 5.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-\n[…]\n\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Sven Jacobs <github@svenjacobs.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump org.jmailen.kotlinter from 5.1.1 to 5.2.0 (#240)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-08-19T17:06:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 47,
      "commits_last_year": 103,
      "latest_release_at": "2026-07-29T08:57:26Z",
      "latest_release_tag": "v5.0.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 29,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 55.5
    },
    "artifacts": {
      "collected": true,
      "structure": [
        "tree.android_manifest",
        "tree.apple_bundle"
      ],
      "declarations": []
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "readme_badges": {
        "hosts": [
          "shields.io"
        ],
        "total": 6,
        "header": 6,
        "collected": true,
        "has_inspect_badge": false
      },
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 16,
      "stars": 612,
      "watchers": 2,
      "fork_history": {
        "days": [
          {
            "date": "2022-12-15",
            "count": 1
          },
          {
            "date": "2023-02-04",
            "count": 1
          },
          {
            "date": "2023-04-18",
            "count": 1
          },
          {
            "date": "2023-07-26",
            "count": 1
          },
          {
            "date": "2024-03-13",
            "count": 1
          },
          {
            "date": "2024-05-04",
            "count": 1
          },
          {
            "date": "2024-07-16",
            "count": 1
          },
          {
            "date": "2024-10-26",
            "count": 1
          },
          {
            "date": "2025-01-18",
            "count": 1
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-30",
            "count": 1
          },
          {
            "date": "2025-06-17",
            "count": 1
          },
          {
            "date": "2025-07-22",
            "count": 1
          },
          {
            "date": "2026-04-29",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 15,
        "total_forks": 16
      },
      "star_history": null,
      "open_issues_and_prs": 3
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "android-tests/build.gradle.kts",
        "build.gradle.kts",
        "convention-plugins/build.gradle.kts",
        "demo-app/androidApp/build.gradle.kts",
        "demo-app/build.gradle.kts",
        "demo-app/desktopApp/build.gradle.kts",
        "demo-app/shared/build.gradle.kts",
        "reveal-common/build.gradle.kts",
        "reveal-core/build.gradle.kts",
        "reveal-shapes/build.gradle.kts"
      ],
      "largest_source_bytes": 16691,
      "source_files_sampled": 47,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        ".github/copilot-instructions.md",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 5890
    },
    "dependencies": {
      "manifests": [
        "android-tests/build.gradle.kts",
        "build.gradle.kts",
        "convention-plugins/build.gradle.kts",
        "demo-app/build.gradle.kts",
        "reveal-common/build.gradle.kts",
        "reveal-core/build.gradle.kts",
        "reveal-shapes/build.gradle.kts"
      ],
      "advisories": {
        "error": "No resolved dependencies to assess",
        "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": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "maven"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [],
        "collected": true,
        "truncated": false,
        "total_count": 0,
        "direct_count": 0,
        "indirect_count": 0
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 286,
        "open_issues": 2,
        "closed_ratio": 0.949,
        "closed_issues": 37,
        "closed_unmerged_prs": 35
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "svenjacobs",
          "commits": 120,
          "avatar_url": "https://avatars.githubusercontent.com/u/255313?v=4"
        },
        {
          "type": "User",
          "login": "Goooler",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/10363352?v=4"
        },
        {
          "type": "User",
          "login": "Rafael2616",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/93414086?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.968
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "deploy-release.yml",
        "verify-pr.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "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": 0,
            "reason": "Found 0/5 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "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": 10,
            "reason": "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 7 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": 10,
            "reason": "packaging workflow 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": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "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": "b516ec7d02bd93df2d8790644587f527ad5be360",
        "ran_at": "2026-08-03T18:41:27Z",
        "aggregate_score": 5.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "recent_prs": {
        "merged_7d": 2,
        "decided_7d": 2,
        "merged_30d": 4,
        "authors_30d": 1,
        "decided_30d": 4,
        "sample_size": 60,
        "window_days": 30,
        "sample_exhausted": false,
        "authors_probed_30d": 1,
        "newcomer_merged_30d": 0,
        "bot_prs_excluded_30d": 25,
        "newcomer_authors_30d": 0,
        "newcomer_decided_30d": 0
      },
      "ci_last_run_at": null,
      "oldest_open_prs": [
        {
          "number": 366,
          "created_at": "2026-08-03T15:39:14Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-08-03T14:38:41Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 105,
          "created_at": "2024-03-01T10:37:55Z",
          "last_comment_at": "2024-03-01T12:26:09Z",
          "last_comment_author": "svenjacobs"
        },
        {
          "number": 360,
          "created_at": "2026-07-31T16:28:50Z",
          "last_comment_at": "2026-08-03T15:50:05Z",
          "last_comment_author": "aartiPl"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/svenjacobs/reveal",
    "host": "github.com",
    "name": "reveal",
    "owner": "svenjacobs"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": "The weighted overall 63 is calibrated to 71 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 63,
            "calibrated": 71,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 71,
      "inputs": {
        "security": 56,
        "vitality": 87,
        "community": 53,
        "governance": 50,
        "calibration": "2026-08-02",
        "engineering": 64,
        "ai_readiness": 74,
        "weighted_overall_raw": 63
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 87,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "commits_last_year": 103,
              "human_commit_share": 0.16,
              "days_since_last_push": 0,
              "active_weeks_last_year": 29
            },
            "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": "29/52 weeks with commits",
                "points": 20.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 29
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "103 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 103
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "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": 92,
            "inputs": {
              "releases_count": 47,
              "latest_release_tag": "v5.0.0",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 55.5
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "47 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 47
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~55.5 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 55.5
                    }
                  }
                ],
                "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": "exceptional",
            "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": 5,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 5 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 53,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "forks": 16,
              "stars": 612,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "612 stars",
                "points": 45.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 612
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "16 forks",
                "points": 9.8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": 6,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [
                "shields.io"
              ],
              "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
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 50,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.968
            },
            "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 97% of commits",
                "points": 0.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 77,
            "inputs": {
              "merged_prs": 286,
              "open_issues": 2,
              "closed_issues": 37,
              "prs_merged_7d": 2,
              "prs_decided_7d": 2,
              "prs_merged_30d": 4,
              "prs_decided_30d": 4,
              "issue_closed_ratio": 0.949,
              "closed_unmerged_prs": 35,
              "first_time_authors_30d": 0,
              "first_time_prs_merged_30d": 0,
              "first_time_prs_decided_30d": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "95% of issues closed",
                "points": 39.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 95
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "286/321 decided PRs merged",
                "points": 26.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 286,
                      "decided": 321
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/5 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "followers": 189,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "svenjacobs",
              "public_repos": 17,
              "account_age_days": 5941
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "189 followers of svenjacobs",
                "points": 16.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 189,
                      "login": "svenjacobs"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "17 public repos, account ~16 yr old",
                "points": 21.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 17
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 16
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 64,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [
                "android",
                "coach-marks",
                "compose",
                "jetpack-compose",
                "onboarding",
                "reveal",
                "tutorial",
                "walkthrough",
                "tour",
                "user-onboarding",
                "coach-mark",
                "coach-mark-android",
                "coachmarks",
                "showcase",
                "tap-target",
                "compose-multiplatform",
                "ios",
                "kmp",
                "kotlin",
                "kotlin-multiplatform"
              ],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "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": "20 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "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": 56,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 56,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 5.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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 0/5 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "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 7 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "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": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "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": "exceptional",
            "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"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 8
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 74,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": "Excluded from scoring (no data or not applicable): Legible commit history. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "legible_commit_history"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 75,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": null,
              "agent_instruction_files": [
                ".github/copilot-instructions.md",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 5890
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.md, AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "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": "no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 64,
            "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.1,
              "toolchain_manifests": [
                "android-tests/build.gradle.kts",
                "build.gradle.kts",
                "convention-plugins/build.gradle.kts",
                "demo-app/androidApp/build.gradle.kts",
                "demo-app/build.gradle.kts",
                "demo-app/desktopApp/build.gradle.kts",
                "demo-app/shared/build.gradle.kts",
                "reveal-common/build.gradle.kts",
                "reveal-core/build.gradle.kts",
                "reveal-shapes/build.gradle.kts"
              ],
              "dependency_bot_commit_share": 0.84
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "android-tests/build.gradle.kts, build.gradle.kts, convention-plugins/build.gradle.kts (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "android-tests/build.gradle.kts, build.gradle.kts, convention-plugins/build.gradle.kts"
                    }
                  }
                ],
                "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": "Kotlin (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Kotlin"
                    }
                  }
                ],
                "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": "10 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 10,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "84 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 84,
                      "sampled": 100
                    }
                  }
                ],
                "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": "exceptional",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Kotlin",
              "largest_source_bytes": 16691,
              "source_files_sampled": 47,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Kotlin (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Kotlin"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/47 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 47,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "mobile-app"
      ],
      "scores": {
        "mobile-app": 6
      },
      "primary": "mobile-app",
      "evidence": [
        {
          "tier": "structure",
          "label": "mobile-app",
          "source": "tree.android_manifest",
          "weight": 6
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": false
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-03T18:41:46.401774Z",
  "schema_version": "0.30.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/svenjacobs/reveal.svg",
  "full_name": "svenjacobs/reveal",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v2.3.1, схема v0.30.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистика.