Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-23 19:59 UTC

vava-nessa / free-coding-models

Find, benchmark and install in CLI 170+ FREE coding LLM models across 15+ providers in real time

HTML · JavaScriptВласна ліцензія★ 2 186 зірок⑂ 238 форківз лют. 2026 р.Переглянути на GitHub ↗

vava-nessa/free-coding-models має індекс здоров’я 71 зі 100, що відповідає смузі «Добрий». Найвищий показник — Vitality (87/100), найнижчий — Security (58/100). Останнє оновлення було 3 дні тому. Більшість нещодавньої роботи виконує один учасник.

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

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

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

71
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

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

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

Власність

Vanessa DeprauteОсобистий обліковий запис
123 підписники10 публічних репозиторіївз вер. 2013 р.Freelancer

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

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmfree-coding-models0.5.505 3442145 днів томуnvidianimllmcliaimodelsbenchmarklatencyavailabilitydeepseekqwenllamamistralglmkimigptchatgptopenaiapi

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

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

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

87Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 3 дн. тому
14.5/36Ритм комітів — 21/52 тижнів із комітами
18/18Обсяг комітів — 599 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 13 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year599
human_commit_share0,92
days_since_last_push3
active_weeks_last_year21
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 100 релізів
36/36Свіжість релізів — останній реліз 5 дн. тому
27/27Ритм релізів — реліз кожні ~1,2 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count100
latest_release_tagv0.5.50
releases_from_tagsні
days_since_latest_release5
mean_days_between_releases1,2
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

63Помірний · 18% загального індексу
Як обчислюється оцінка
54.2/60Зірки — 2 186 зірок
19.8/25Форки — 238 форків
6.8/15Спостерігачі — 18 спостерігачів
Використані вхідні дані
forks238
stars2 186
watchers18
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

Здоров'я спільноти

44У зоні ризику
Як обчислюється оцінка
22.5/22.5README
16.9/22.5Ліцензія — файл ліцензії наявний, не є визнаною ліцензією
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні
Як обчислюється оцінка
49.7/80Щомісячні завантаження — 5 344 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesfree-coding-models
dependents
ecosystemsnpm
total_downloads
monthly_downloads5 344
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

59Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
2/22.5Розподіл комітів — головний контриб’ютор — автор 91% комітів
13.5/13.5Широта контриб’юторів — 10 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Використані вхідні дані
bus_factor1
contributors_sampled10
top_contributor_share0,913
Як обчислюється оцінка
33.5/46.8Вирішення issue — закрито 72% issue
23.6/38.3Прийняття PR — злито 42/68 вирішених PR
1.5/15OpenSSF Scorecard: Code-Review — Found 3/30 approved changesets -- score normalized to 1
Використані вхідні дані
merged_prs42
open_issues17
closed_issues43
issue_closed_ratio0,717
closed_unmerged_prs26
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
15.1/25Охоплення власника — 123 підписників у vava-nessa
19.6/25Послужний список — 10 публічних репозиторіїв, вік облікового запису ~12 р.
Використані вхідні дані
followers123
owner_typeUser
is_verified
owner_loginvava-nessa
public_repos10
account_age_days4 693
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 5 дн. тому
20/20Історія версій — 214 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesfree-coding-models
ecosystemsnpm
any_deprecatedні
min_days_since_publish5

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

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

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

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

90Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://freecodingmodels.vercel.app
10/10Опис репозиторію
10/10Теми — 15 тем
0/10Wiki
Використані вхідні дані
topicsai, deepseek, free, free-ai, freeai, gpt, gptoss, kimi, nim, nvidia, nvidia-nim, nvidia-nim-api, nvidia-nims, openclaw, opencode
has_wikiні
homepagehttps://freecodingmodels.vercel.app
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

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

Стан безпеки

48У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 3 out of 3 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.8/7.5Code-Review — Found 3/30 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 3 contributing companies or organizations -- score normalized to 10
0/10Dangerous-Workflow — dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 13 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
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
6/7.5Vulnerabilities — 2 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,8
Виключено з оцінювання (немає даних або не застосовно): signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories2
affected_packages2
assessed_packages393
unassessed_packages22
affected_by_severityhigh 2
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень, Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено 393 резолвлених залежностей із OSV. 22 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза межами звітованого переліку пакетів. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

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

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

68Помірний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md, CLAUDE.md
0/15Машиночитана документація (llms.txt)
23.8/40Читабельна історія комітів — намір зазначено у 41 з 92 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,446
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes14 156
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — biome.json
11/11Статична перевірка типів — website/tsconfig.json
10/10Відтворюване середовище — Dockerfile, lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
8/8Автоматизоване супроводження — 8 з останніх 100 комітів — автоматичні оновлення залежностей
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilespackage-lock.json, pnpm-lock.yaml
has_dockerfileтак
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configswebsite/tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0,08
Як обчислюється оцінка
27/45Типізований код — HTML з конфігурацією перевірки типів (website/tsconfig.json)
53.4/55Керовані розміри файлів — 5/171 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageHTML
largest_source_bytes279 662
source_files_sampled171
oversized_source_files5

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

2 186зірок GitHub
10контриб'юторів
599комітів за останні 12 місяців
3днів від останнього пушу
100релізів
1бас-фактор
17відкритих issue
npmпакетних екосистем

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'fcm-pi' from its registry
  • Could not fetch npm package 'fcm-opencode' from its registry
  • deps.dev does not index npm:free-coding-models@0.5.50; advisories assessed against the repository dependency graph instead

Докладніше

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

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

04080120160200240238252026-022026-052026-07
Мажорні 0Мінорні 2Патчі 98
OpenSSF Scorecard 4.8 / 10
4.8сукупно

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests3 out of 3 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 3/30 approved changesets -- score normalized to 1
10Contributorsproject has 3 contributing companies or organizations -- score normalized to 10
0Dangerous-Workflowdangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 13 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
10Security-Policysecurity policy file detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
8Vulnerabilities2 existing vulnerabilities detected
Прямі залежності 22
РеєстрПакетОбмеження версіїМаніфест
npm@tabler/icons-react^3.44.0package.json
npm@tanstack/react-table^8.21.3package.json
npmchalk^5.6.2package.json
npmkandown^0.8.0package.json
npmsocket.io^4.8.3package.json
npmsocket.io-client^4.8.3package.json
npm@tanstack/react-virtual^3.14.2package.json
npm@fontsource-variable/geist^5.2.9website/package.json
npm@fontsource-variable/geist-mono^5.2.8website/package.json
npm@tailwindcss/vite^4.1.18website/package.json
npm@tanstack/react-devtoolslatestwebsite/package.json
npm@tanstack/react-routerlatestwebsite/package.json
npm@tanstack/react-router-devtoolslatestwebsite/package.json
npm@tanstack/react-router-ssr-querylatestwebsite/package.json
npm@tanstack/react-startlatestwebsite/package.json
npm@tanstack/router-plugin^1.132.0website/package.json
npmclsx^2.1.1website/package.json
npmlucide-react^0.545.0website/package.json
npmreact^19.2.0website/package.json
npmreact-dom^19.2.0website/package.json
npmtailwind-merge^3.6.0website/package.json
npmtailwindcss^4.1.18website/package.json
Усі залежності 415

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

РеєстрПакетВерсіяЗв'язок
npm@fontsource-variable/geist^5.2.9пряма
npm@fontsource-variable/geist-mono^5.2.8пряма
npm@tabler/icons-react3.44.0пряма
npm@tailwindcss/vite^4.1.18пряма
npm@tanstack/react-devtoolslatestпряма
npm@tanstack/react-routerlatestпряма
npm@tanstack/react-router-devtoolslatestпряма
npm@tanstack/react-router-ssr-querylatestпряма
npm@tanstack/react-startlatestпряма
npm@tanstack/react-table8.21.3пряма
npm@tanstack/react-virtual3.14.3пряма
npm@tanstack/router-plugin^1.132.0пряма
npmchalk5.6.2пряма
npmchalk^4.1.2пряма
npmclsx2.1.1пряма
npmclsx^2.1.1пряма
npmkandown0.4.0пряма
npmkandown0.8.0пряма
npmlucide-react1.8.0пряма
npmlucide-react^0.545.0пряма
npmreact19.2.7пряма
npmreact^19.2.0пряма
npmreact-dom19.2.7пряма
npmreact-dom^19.2.0пряма
npmsocket.io4.8.3пряма
npmsocket.io-client4.8.3пряма
npmtailwind-merge3.5.0пряма
npmtailwind-merge^3.6.0пряма
npmtailwindcss^4.1.18пряма
npm@babel/runtime7.29.7непряма
npm@biomejs/biome2.4.5непряма
npm@blocknote/code-block0.49.0непряма
npm@blocknote/core0.49.0непряма
npm@blocknote/mantine0.49.0непряма
npm@blocknote/react0.49.0непряма
npm@emnapi/core1.10.0непряма
npm@emnapi/runtime1.10.0непряма
npm@emnapi/wasi-threads1.2.1непряма
npm@emoji-mart/data1.2.1непряма
npm@floating-ui/core1.7.5непряма
npm@floating-ui/dom1.7.6непряма
npm@floating-ui/react0.27.19непряма
npm@floating-ui/react-dom2.1.8непряма
npm@floating-ui/utils0.2.11непряма
npm@handlewithcare/prosemirror-inputrules0.1.4непряма
npm@mantine/core8.3.18непряма
npm@mantine/hooks8.3.18непряма
npm@mantine/utils6.0.22непряма
npm@napi-rs/wasm-runtime1.1.4непряма
npm@oxc-project/runtime0.133.0непряма
npm@oxc-project/types0.133.0непряма
npm@oxfmt/binding-android-arm-eabi0.52.0непряма
npm@oxfmt/binding-android-arm640.52.0непряма
npm@oxfmt/binding-darwin-arm640.52.0непряма
npm@oxfmt/binding-darwin-x640.52.0непряма
npm@oxfmt/binding-freebsd-x640.52.0непряма
npm@oxfmt/binding-linux-arm-gnueabihf0.52.0непряма
npm@oxfmt/binding-linux-arm-musleabihf0.52.0непряма
npm@oxfmt/binding-linux-arm64-gnu0.52.0непряма
npm@oxfmt/binding-linux-arm64-musl0.52.0непряма
npm@oxfmt/binding-linux-ppc64-gnu0.52.0непряма
npm@oxfmt/binding-linux-riscv64-gnu0.52.0непряма
npm@oxfmt/binding-linux-riscv64-musl0.52.0непряма
npm@oxfmt/binding-linux-s390x-gnu0.52.0непряма
npm@oxfmt/binding-linux-x64-gnu0.52.0непряма
npm@oxfmt/binding-linux-x64-musl0.52.0непряма
npm@oxfmt/binding-openharmony-arm640.52.0непряма
npm@oxfmt/binding-win32-arm64-msvc0.52.0непряма
npm@oxfmt/binding-win32-ia32-msvc0.52.0непряма
npm@oxfmt/binding-win32-x64-msvc0.52.0непряма
npm@oxlint-tsgolint/darwin-arm640.23.0непряма
npm@oxlint-tsgolint/darwin-x640.23.0непряма
npm@oxlint-tsgolint/linux-arm640.23.0непряма
npm@oxlint-tsgolint/linux-x640.23.0непряма
npm@oxlint-tsgolint/win32-arm640.23.0непряма
npm@oxlint-tsgolint/win32-x640.23.0непряма
npm@oxlint/binding-android-arm-eabi1.67.0непряма
npm@oxlint/binding-android-arm641.67.0непряма
npm@oxlint/binding-darwin-arm641.67.0непряма
npm@oxlint/binding-darwin-x641.67.0непряма
npm@oxlint/binding-freebsd-x641.67.0непряма
npm@oxlint/binding-linux-arm-gnueabihf1.67.0непряма
npm@oxlint/binding-linux-arm-musleabihf1.67.0непряма
npm@oxlint/binding-linux-arm64-gnu1.67.0непряма
npm@oxlint/binding-linux-arm64-musl1.67.0непряма
npm@oxlint/binding-linux-ppc64-gnu1.67.0непряма
npm@oxlint/binding-linux-riscv64-gnu1.67.0непряма
npm@oxlint/binding-linux-riscv64-musl1.67.0непряма
npm@oxlint/binding-linux-s390x-gnu1.67.0непряма
npm@oxlint/binding-linux-x64-gnu1.67.0непряма
npm@oxlint/binding-linux-x64-musl1.67.0непряма
npm@oxlint/binding-openharmony-arm641.67.0непряма
npm@oxlint/binding-win32-arm64-msvc1.67.0непряма
npm@oxlint/binding-win32-ia32-msvc1.67.0непряма
npm@oxlint/binding-win32-x64-msvc1.67.0непряма
npm@oxlint/plugins1.61.0непряма
npm@polka/url1.0.0-next.29непряма
npm@radix-ui/react-compose-refs1.1.2непряма
npm@radix-ui/react-slot1.2.4непряма
npm@rolldown/binding-android-arm641.0.3непряма
npm@rolldown/binding-darwin-arm641.0.3непряма
npm@rolldown/binding-darwin-x641.0.3непряма
npm@rolldown/binding-freebsd-x641.0.3непряма
npm@rolldown/binding-linux-arm-gnueabihf1.0.3непряма
npm@rolldown/binding-linux-arm64-gnu1.0.3непряма
npm@rolldown/binding-linux-arm64-musl1.0.3непряма
npm@rolldown/binding-linux-ppc64-gnu1.0.3непряма
npm@rolldown/binding-linux-s390x-gnu1.0.3непряма
npm@rolldown/binding-linux-x64-gnu1.0.3непряма
npm@rolldown/binding-linux-x64-musl1.0.3непряма
npm@rolldown/binding-openharmony-arm641.0.3непряма
npm@rolldown/binding-wasm32-wasi1.0.3непряма
npm@rolldown/binding-win32-arm64-msvc1.0.3непряма
npm@rolldown/binding-win32-x64-msvc1.0.3непряма
npm@rolldown/pluginutils1.0.1непряма
npm@shikijs/core4.2.0непряма
npm@shikijs/engine-javascript4.2.0непряма
npm@shikijs/langs-precompiled4.2.0непряма
npm@shikijs/primitive4.2.0непряма
npm@shikijs/themes4.2.0непряма
npm@shikijs/types4.2.0непряма
npm@shikijs/vscode-textmate10.0.2непряма
npm@socket.io/component-emitter3.1.2непряма
npm@standard-schema/spec1.1.0непряма
npm@tabler/icons3.44.0непряма
npm@tailwindcss/typography^0.5.16непряма
npm@tanstack/devtools-vitelatestнепряма
npm@tanstack/react-store0.7.7непряма
npm@tanstack/store0.7.7непряма
npm@tanstack/table-core8.21.3непряма
npm@tanstack/virtual-core3.17.1непряма
npm@testing-library/dom^10.4.1непряма
npm@testing-library/react^16.3.0непряма
npm@tiptap/core3.25.0непряма
npm@tiptap/core3.26.0непряма
npm@tiptap/extension-bold3.25.0непряма
npm@tiptap/extension-bold3.26.0непряма
npm@tiptap/extension-bubble-menu3.25.0непряма
npm@tiptap/extension-bubble-menu3.26.0непряма
npm@tiptap/extension-code3.25.0непряма
npm@tiptap/extension-code3.26.0непряма
npm@tiptap/extension-floating-menu3.25.0непряма
npm@tiptap/extension-floating-menu3.26.0непряма
npm@tiptap/extension-horizontal-rule3.25.0непряма
npm@tiptap/extension-horizontal-rule3.26.0непряма
npm@tiptap/extension-italic3.25.0непряма
npm@tiptap/extension-italic3.26.0непряма
npm@tiptap/extension-paragraph3.25.0непряма
npm@tiptap/extension-paragraph3.26.0непряма
npm@tiptap/extension-strike3.25.0непряма
npm@tiptap/extension-strike3.26.0непряма
npm@tiptap/extension-text3.25.0непряма
npm@tiptap/extension-text3.26.0непряма
npm@tiptap/extension-underline3.25.0непряма
npm@tiptap/extension-underline3.26.0непряма
npm@tiptap/extensions3.25.0непряма
npm@tiptap/extensions3.26.0непряма
npm@tiptap/pm3.25.0непряма
npm@tiptap/pm3.26.0непряма
npm@tiptap/react3.25.0непряма
npm@tiptap/react3.26.0непряма
npm@tybys/wasm-util0.10.2непряма
npm@types/chai5.2.3непряма
npm@types/cors2.8.19непряма
npm@types/debug4.1.13непряма
npm@types/deep-eql4.0.2непряма
npm@types/hast3.0.4непряма
npm@types/mdast4.0.4непряма
npm@types/ms2.1.0непряма
npm@types/node25.9.1непряма
npm@types/node^22.10.2непряма
npm@types/react19.2.16непряма
npm@types/react19.2.17непряма
npm@types/react^19.2.0непряма
npm@types/react-dom19.2.3непряма
npm@types/react-dom^19.2.0непряма
npm@types/unist3.0.3непряма
npm@types/use-sync-external-store0.0.6непряма
npm@types/use-sync-external-store1.5.0непряма
npm@types/ws8.18.1непряма
npm@ungap/structured-clone1.3.1непряма
npm@vitejs/plugin-react6.0.2непряма
npm@vitejs/plugin-react^6.0.1непряма
npm@voidzero-dev/vite-plus-core0.1.24непряма
npm@voidzero-dev/vite-plus-darwin-arm640.1.24непряма
npm@voidzero-dev/vite-plus-darwin-x640.1.24непряма
npm@voidzero-dev/vite-plus-linux-arm64-gnu0.1.24непряма
npm@voidzero-dev/vite-plus-linux-arm64-musl0.1.24непряма
npm@voidzero-dev/vite-plus-linux-x64-gnu0.1.24непряма
npm@voidzero-dev/vite-plus-linux-x64-musl0.1.24непряма
npm@voidzero-dev/vite-plus-test0.1.24непряма
npm@voidzero-dev/vite-plus-win32-arm64-msvc0.1.24непряма
npm@voidzero-dev/vite-plus-win32-x64-msvc0.1.24непряма
npmaccepts1.3.8непряма
npmassertion-error2.0.1непряма
npmbail2.0.2непряма
npmbase64id2.0.0непряма
npmccount2.0.1непряма
npmcharacter-entities2.0.2непряма
npmcharacter-entities-html42.1.0непряма
npmcharacter-entities-legacy3.0.0непряма
npmchokidar4.0.3непряма
npmclass-variance-authority0.7.1непряма
npmcomma-separated-tokens2.0.3непряма
npmcookie0.7.2непряма
npmcors2.8.6непряма
npmcsstype3.2.3непряма
npmdebug4.4.3непряма
npmdecode-named-character-reference1.3.0непряма
npmdequal2.0.3непряма
npmdetect-libc2.1.2непряма
npmdetect-node-es1.1.0непряма
npmdevlop1.1.0непряма
npmemoji-mart5.6.0непряма
npmengine.io6.6.8непряма
npmengine.io-client6.6.5непряма
npmengine.io-parser5.2.3непряма
npmentities6.0.1непряма
npmes-module-lexer1.7.0непряма
npmescape-string-regexp5.0.0непряма
npmextend3.0.2непряма
npmfast-deep-equal3.1.3непряма
npmfast-equals5.4.0непряма
npmfdir6.5.0непряма
npmfsevents2.3.3непряма
npmget-nonce1.0.1непряма
npmhast-util-embedded3.0.0непряма
npmhast-util-format1.1.0непряма
npmhast-util-from-dom5.0.1непряма
npmhast-util-from-html2.0.3непряма
npmhast-util-from-parse58.0.3непряма
npmhast-util-has-property3.0.0непряма
npmhast-util-is-body-ok-link3.0.1непряма
npmhast-util-is-element3.0.0непряма
npmhast-util-minify-whitespace1.0.1непряма
npmhast-util-parse-selector4.0.0непряма
npmhast-util-phrasing3.0.1непряма
npmhast-util-to-html9.0.5непряма
npmhast-util-to-mdast10.1.2непряма
npmhast-util-to-text4.0.2непряма
npmhast-util-whitespace3.0.0непряма
npmhastscript9.0.1непряма
npmhtml-void-elements3.0.0непряма
npmhtml-whitespace-sensitive-tag-names3.0.1непряма
npmis-plain-obj4.1.0непряма
npmisomorphic.js0.2.5непряма
npmjsdom^28.1.0непряма
npmlib00.2.117непряма
npmlightningcss1.32.0непряма
npmlightningcss-android-arm641.32.0непряма
npmlightningcss-darwin-arm641.32.0непряма
npmlightningcss-darwin-x641.32.0непряма
npmlightningcss-freebsd-x641.32.0непряма
npmlightningcss-linux-arm-gnueabihf1.32.0непряма
npmlightningcss-linux-arm64-gnu1.32.0непряма
npmlightningcss-linux-arm64-musl1.32.0непряма
npmlightningcss-linux-x64-gnu1.32.0непряма
npmlightningcss-linux-x64-musl1.32.0непряма
npmlightningcss-win32-arm64-msvc1.32.0непряма
npmlightningcss-win32-x64-msvc1.32.0непряма
npmlodash.merge4.6.2непряма
npmlongest-streak3.1.0непряма
npmmarkdown-table3.0.4непряма
npmmdast-util-find-and-replace3.0.2непряма
npmmdast-util-from-markdown2.0.3непряма
npmmdast-util-gfm3.1.0непряма
npmmdast-util-gfm-autolink-literal2.0.1непряма
npmmdast-util-gfm-footnote2.1.0непряма
npmmdast-util-gfm-strikethrough2.0.0непряма
npmmdast-util-gfm-table2.0.0непряма
npmmdast-util-gfm-task-list-item2.0.0непряма
npmmdast-util-phrasing4.1.0непряма
npmmdast-util-to-hast13.2.1непряма
npmmdast-util-to-markdown2.1.2непряма
npmmdast-util-to-string4.0.0непряма
npmmicromark4.0.2непряма
npmmicromark-core-commonmark2.0.3непряма
npmmicromark-extension-gfm3.0.0непряма
npmmicromark-extension-gfm-autolink-literal2.1.0непряма
npmmicromark-extension-gfm-footnote2.1.0непряма
npmmicromark-extension-gfm-strikethrough2.1.0непряма
npmmicromark-extension-gfm-table2.1.1непряма
npmmicromark-extension-gfm-tagfilter2.0.0непряма
npmmicromark-extension-gfm-task-list-item2.1.0непряма
npmmicromark-factory-destination2.0.1непряма
npmmicromark-factory-label2.0.1непряма
npmmicromark-factory-space2.0.1непряма
npmmicromark-factory-title2.0.1непряма
npmmicromark-factory-whitespace2.0.1непряма
npmmicromark-util-character2.1.1непряма
npmmicromark-util-chunked2.0.1непряма
npmmicromark-util-classify-character2.0.1непряма
npmmicromark-util-combine-extensions2.0.1непряма
npmmicromark-util-decode-numeric-character-reference2.0.2непряма
npmmicromark-util-decode-string2.0.1непряма
npmmicromark-util-encode2.0.1непряма
npmmicromark-util-html-tag-name2.0.1непряма
npmmicromark-util-normalize-identifier2.0.1непряма
npmmicromark-util-resolve-all2.0.1непряма
npmmicromark-util-sanitize-uri2.0.1непряма
npmmicromark-util-subtokenize2.1.0непряма
npmmicromark-util-symbol2.0.1непряма
npmmicromark-util-types2.0.2непряма
npmmime-db1.52.0непряма
npmmime-types2.1.35непряма
npmmrmime2.0.1непряма
npmms2.1.3непряма
npmnanoid3.3.12непряма
npmnegotiator0.6.3непряма
npmobject-assign4.1.1непряма
npmobug2.1.1непряма
npmobug2.1.2непряма
npmoniguruma-parser0.12.2непряма
npmoniguruma-to-es4.3.6непряма
npmorderedmap2.1.1непряма
npmoxfmt0.52.0непряма
npmoxlint1.67.0непряма
npmoxlint-tsgolint0.23.0непряма
npmparse57.3.0непряма
npmpicocolors1.1.1непряма
npmpicomatch4.0.4непряма
npmpixelmatch7.2.0непряма
npmpngjs7.0.0непряма
npmpostcss8.5.15непряма
npmproperty-information7.2.0непряма
npmprosemirror-changeset2.4.1непряма
npmprosemirror-commands1.7.1непряма
npmprosemirror-dropcursor1.8.2непряма
npmprosemirror-gapcursor1.4.1непряма
npmprosemirror-highlight0.15.1непряма
npmprosemirror-history1.5.0непряма
npmprosemirror-inputrules1.5.1непряма
npmprosemirror-keymap1.2.3непряма
npmprosemirror-model1.25.7непряма
npmprosemirror-schema-list1.5.1непряма
npmprosemirror-state1.4.4непряма
npmprosemirror-tables1.8.5непряма
npmprosemirror-transform1.12.0непряма
npmprosemirror-view1.41.8непряма
npmreact-devtools-core7.0.1непряма
npmreact-icons5.6.0непряма
npmreact-number-format5.4.5непряма
npmreact-remove-scroll2.7.2непряма
npmreact-remove-scroll-bar2.3.8непряма
npmreact-style-singleton2.2.3непряма
npmreact-textarea-autosize8.5.9непряма
npmreaddirp4.1.2непряма
npmregex6.1.0непряма
npmregex-recursion6.0.2непряма
npmregex-utilities2.3.0непряма
npmrehype-format5.0.1непряма
npmrehype-minify-whitespace6.0.2непряма
npmrehype-parse9.0.1непряма
npmrehype-remark10.0.1непряма
npmrehype-stringify10.0.1непряма
npmremark-gfm4.0.1непряма
npmremark-parse11.0.0непряма
npmremark-rehype11.1.2непряма
npmremark-stringify11.0.0непряма
npmrolldown1.0.3непряма
npmrope-sequence1.3.4непряма
npmscheduler0.27.0непряма
npmshell-quote1.8.4непряма
npmsignal-exit3.0.7непряма
npmsirv3.0.2непряма
npmsocket.io-adapter2.5.7непряма
npmsocket.io-parser4.2.6непряма
npmsource-map-js1.2.1непряма
npmspace-separated-tokens2.0.2непряма
npmstd-env4.1.0непряма
npmstringify-entities4.0.4непряма
npmtabbable6.4.0непряма
npmtinybench2.9.0непряма
npmtinyexec1.2.4непряма
npmtinyglobby0.2.17непряма
npmtinypool2.1.0непряма
npmtotalist3.0.1непряма
npmtrim-lines3.0.1непряма
npmtrim-trailing-lines2.1.0непряма
npmtrough2.2.0непряма
npmtslib2.8.1непряма
npmtype-fest4.41.0непряма
npmtypescript^6.0.2непряма
npmundici-types7.24.6непряма
npmunified11.0.5непряма
npmunist-util-find-after5.0.0непряма
npmunist-util-is6.0.1непряма
npmunist-util-position5.0.0непряма
npmunist-util-stringify-position4.0.0непряма
npmunist-util-visit5.1.0непряма
npmunist-util-visit-parents6.0.2непряма
npmuse-callback-ref1.3.3непряма
npmuse-composed-ref1.4.0непряма
npmuse-isomorphic-layout-effect1.2.1непряма
npmuse-latest1.3.0непряма
npmuse-sidecar1.1.3непряма
npmuse-sync-external-store1.6.0непряма
npmvary1.1.2непряма
npmvfile6.0.3непряма
npmvfile-location5.0.3непряма
npmvfile-message4.0.3непряма
npmvite8.0.16непряма
npmvite^8.0.0непряма
npmvite-plus0.1.24непряма
npmvitest^4.1.5непряма
npmw3c-keyname2.2.8непряма
npmweb-namespaces2.0.1непряма
npmws7.5.11непряма
npmws8.20.1непряма
npmws8.21.0непряма
npmxmlhttprequest-ssl2.1.2непряма
npmy-prosemirror1.3.7непряма
npmy-protocols1.0.7непряма
npmyjs13.6.31непряма
npmzwitch2.0.4непряма
Сповіщення про залежності 2

Цей репозиторій не публікує пакета, який розпізнає індекс, тож оцінено його власний граф залежностей — 393 пакетів, серед яких є й піниї розробки та тестування, що ніколи не постачаються: 2 мають відомі сповіщення, з них 0 прямі. 22 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза наведеним переліком пакетів.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
shell-quote1.8.4непрямависока11.9.0
ws8.20.1непрямависока18.21.0

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "ai",
        "deepseek",
        "free",
        "free-ai",
        "freeai",
        "gpt",
        "gptoss",
        "kimi",
        "nim",
        "nvidia",
        "nvidia-nim",
        "nvidia-nim-api",
        "nvidia-nims",
        "openclaw",
        "opencode"
      ],
      "is_fork": false,
      "size_kb": 73201,
      "has_wiki": false,
      "homepage": "https://freecodingmodels.vercel.app",
      "languages": {
        "CSS": 214919,
        "HTML": 6300058,
        "Shell": 1920,
        "Dockerfile": 808,
        "JavaScript": 2165092,
        "TypeScript": 47528
      },
      "pushed_at": "2026-07-20T04:32:15Z",
      "created_at": "2026-02-20T23:12:50Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T19:54:36Z",
      "description": "Find, benchmark and install in CLI 170+ FREE coding LLM models across 15+ providers in real time",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "HTML",
      "significant_languages": [
        "HTML",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Vanessa Depraute",
      "type": "User",
      "login": "vava-nessa",
      "company": "Freelancer",
      "location": "Paris, France",
      "followers": 123,
      "avatar_url": "https://avatars.githubusercontent.com/u/5466264?v=4",
      "created_at": "2013-09-16T02:05:08Z",
      "is_verified": null,
      "public_repos": 10,
      "account_age_days": 4693
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.5.50",
          "kind": "patch",
          "published_at": "2026-07-18T12:19:24Z"
        },
        {
          "tag": "v0.5.49",
          "kind": "patch",
          "published_at": "2026-07-18T08:08:12Z"
        },
        {
          "tag": "v0.5.47",
          "kind": "patch",
          "published_at": "2026-07-08T12:31:31Z"
        },
        {
          "tag": "v0.5.46",
          "kind": "patch",
          "published_at": "2026-07-08T10:17:43Z"
        },
        {
          "tag": "v0.5.45",
          "kind": "patch",
          "published_at": "2026-07-08T10:07:34Z"
        },
        {
          "tag": "v0.5.44",
          "kind": "patch",
          "published_at": "2026-07-08T09:45:31Z"
        },
        {
          "tag": "v0.5.43",
          "kind": "patch",
          "published_at": "2026-07-07T13:05:52Z"
        },
        {
          "tag": "v0.5.42",
          "kind": "patch",
          "published_at": "2026-07-07T12:56:53Z"
        },
        {
          "tag": "v0.5.41",
          "kind": "patch",
          "published_at": "2026-07-07T12:38:54Z"
        },
        {
          "tag": "v0.5.40",
          "kind": "patch",
          "published_at": "2026-07-07T12:35:17Z"
        },
        {
          "tag": "v0.5.39",
          "kind": "patch",
          "published_at": "2026-06-27T19:58:48Z"
        },
        {
          "tag": "v0.5.38",
          "kind": "patch",
          "published_at": "2026-06-27T15:44:30Z"
        },
        {
          "tag": "v0.5.37",
          "kind": "patch",
          "published_at": "2026-06-20T13:15:24Z"
        },
        {
          "tag": "v0.5.36",
          "kind": "patch",
          "published_at": "2026-06-20T11:15:01Z"
        },
        {
          "tag": "v0.5.35",
          "kind": "patch",
          "published_at": "2026-06-17T11:58:40Z"
        },
        {
          "tag": "v0.5.34",
          "kind": "patch",
          "published_at": "2026-06-17T11:54:19Z"
        },
        {
          "tag": "v0.5.32",
          "kind": "patch",
          "published_at": "2026-06-15T17:05:40Z"
        },
        {
          "tag": "v0.5.31",
          "kind": "patch",
          "published_at": "2026-06-15T16:47:54Z"
        },
        {
          "tag": "v0.5.30",
          "kind": "patch",
          "published_at": "2026-06-15T16:39:14Z"
        },
        {
          "tag": "v0.5.29",
          "kind": "patch",
          "published_at": "2026-06-15T14:31:53Z"
        },
        {
          "tag": "v0.5.28",
          "kind": "patch",
          "published_at": "2026-06-11T12:29:08Z"
        },
        {
          "tag": "v0.5.27",
          "kind": "patch",
          "published_at": "2026-06-11T11:35:02Z"
        },
        {
          "tag": "v0.5.26",
          "kind": "patch",
          "published_at": "2026-06-11T11:04:43Z"
        },
        {
          "tag": "v0.5.25",
          "kind": "patch",
          "published_at": "2026-06-10T19:39:20Z"
        },
        {
          "tag": "v0.5.24",
          "kind": "patch",
          "published_at": "2026-06-10T19:32:05Z"
        },
        {
          "tag": "v0.5.23",
          "kind": "patch",
          "published_at": "2026-06-10T17:47:49Z"
        },
        {
          "tag": "v0.5.22",
          "kind": "patch",
          "published_at": "2026-06-10T17:37:07Z"
        },
        {
          "tag": "v0.5.21",
          "kind": "patch",
          "published_at": "2026-06-10T13:16:02Z"
        },
        {
          "tag": "v0.5.20",
          "kind": "patch",
          "published_at": "2026-06-10T12:00:14Z"
        },
        {
          "tag": "v0.5.19",
          "kind": "patch",
          "published_at": "2026-06-10T10:35:18Z"
        },
        {
          "tag": "v0.5.18",
          "kind": "patch",
          "published_at": "2026-06-09T16:08:00Z"
        },
        {
          "tag": "v0.5.17",
          "kind": "patch",
          "published_at": "2026-06-08T17:46:32Z"
        },
        {
          "tag": "v0.5.16",
          "kind": "patch",
          "published_at": "2026-06-04T18:55:00Z"
        },
        {
          "tag": "v0.5.15",
          "kind": "patch",
          "published_at": "2026-06-04T16:01:33Z"
        },
        {
          "tag": "v0.5.12",
          "kind": "patch",
          "published_at": "2026-06-02T22:20:47Z"
        },
        {
          "tag": "v0.5.11",
          "kind": "patch",
          "published_at": "2026-06-02T19:19:58Z"
        },
        {
          "tag": "v0.5.10",
          "kind": "patch",
          "published_at": "2026-06-02T16:16:20Z"
        },
        {
          "tag": "v0.5.9",
          "kind": "patch",
          "published_at": "2026-06-02T15:52:15Z"
        },
        {
          "tag": "v0.5.8",
          "kind": "patch",
          "published_at": "2026-06-02T15:36:06Z"
        },
        {
          "tag": "v0.5.6",
          "kind": "patch",
          "published_at": "2026-06-01T14:55:11Z"
        },
        {
          "tag": "v0.5.5",
          "kind": "patch",
          "published_at": "2026-06-01T12:06:28Z"
        },
        {
          "tag": "v0.5.4",
          "kind": "patch",
          "published_at": "2026-06-01T11:54:34Z"
        },
        {
          "tag": "v0.5.1",
          "kind": "patch",
          "published_at": "2026-05-31T22:25:21Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-05-31T18:42:11Z"
        },
        {
          "tag": "v0.4.3",
          "kind": "patch",
          "published_at": "2026-05-31T17:18:40Z"
        },
        {
          "tag": "v0.4.2",
          "kind": "patch",
          "published_at": "2026-05-30T13:43:57Z"
        },
        {
          "tag": "v0.4.1",
          "kind": "patch",
          "published_at": "2026-05-30T13:26:01Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-05-30T13:20:20Z"
        },
        {
          "tag": "v0.3.80",
          "kind": "patch",
          "published_at": "2026-05-30T11:12:37Z"
        },
        {
          "tag": "v0.3.79",
          "kind": "patch",
          "published_at": "2026-05-28T22:04:21Z"
        },
        {
          "tag": "v0.3.78",
          "kind": "patch",
          "published_at": "2026-05-28T21:19:05Z"
        },
        {
          "tag": "v0.3.77",
          "kind": "patch",
          "published_at": "2026-05-28T21:00:28Z"
        },
        {
          "tag": "v0.3.76",
          "kind": "patch",
          "published_at": "2026-05-28T19:55:05Z"
        },
        {
          "tag": "v0.3.75",
          "kind": "patch",
          "published_at": "2026-05-28T19:42:21Z"
        },
        {
          "tag": "v0.3.74",
          "kind": "patch",
          "published_at": "2026-05-28T10:22:27Z"
        },
        {
          "tag": "v0.3.73",
          "kind": "patch",
          "published_at": "2026-05-28T09:38:56Z"
        },
        {
          "tag": "v0.3.71",
          "kind": "patch",
          "published_at": "2026-05-27T15:23:59Z"
        },
        {
          "tag": "v0.3.70",
          "kind": "patch",
          "published_at": "2026-05-27T15:17:38Z"
        },
        {
          "tag": "v0.3.69",
          "kind": "patch",
          "published_at": "2026-05-26T16:51:50Z"
        },
        {
          "tag": "v0.3.68",
          "kind": "patch",
          "published_at": "2026-05-26T15:11:09Z"
        },
        {
          "tag": "v0.3.67",
          "kind": "patch",
          "published_at": "2026-05-17T18:21:30Z"
        },
        {
          "tag": "v0.3.66",
          "kind": "patch",
          "published_at": "2026-05-16T13:45:44Z"
        },
        {
          "tag": "v0.3.65",
          "kind": "patch",
          "published_at": "2026-05-06T16:56:53Z"
        },
        {
          "tag": "v0.3.64",
          "kind": "patch",
          "published_at": "2026-05-06T16:45:31Z"
        },
        {
          "tag": "v0.3.63",
          "kind": "patch",
          "published_at": "2026-05-05T20:08:21Z"
        },
        {
          "tag": "v0.3.62",
          "kind": "patch",
          "published_at": "2026-05-04T21:31:39Z"
        },
        {
          "tag": "v0.3.60",
          "kind": "patch",
          "published_at": "2026-05-04T20:40:58Z"
        },
        {
          "tag": "v0.3.59",
          "kind": "patch",
          "published_at": "2026-05-04T20:38:11Z"
        },
        {
          "tag": "v0.3.58",
          "kind": "patch",
          "published_at": "2026-05-04T20:22:24Z"
        },
        {
          "tag": "v0.3.57",
          "kind": "patch",
          "published_at": "2026-05-04T17:45:24Z"
        },
        {
          "tag": "v0.3.56",
          "kind": "patch",
          "published_at": "2026-05-04T13:15:13Z"
        },
        {
          "tag": "v0.3.55",
          "kind": "patch",
          "published_at": "2026-04-18T16:30:57Z"
        },
        {
          "tag": "v0.3.54",
          "kind": "patch",
          "published_at": "2026-04-18T16:28:24Z"
        },
        {
          "tag": "v0.3.52",
          "kind": "patch",
          "published_at": "2026-04-18T16:23:41Z"
        },
        {
          "tag": "v0.3.51",
          "kind": "patch",
          "published_at": "2026-04-11T13:20:03Z"
        },
        {
          "tag": "v0.3.50",
          "kind": "patch",
          "published_at": "2026-04-11T11:06:10Z"
        },
        {
          "tag": "v0.3.49",
          "kind": "patch",
          "published_at": "2026-04-11T10:27:47Z"
        },
        {
          "tag": "v0.3.48",
          "kind": "patch",
          "published_at": "2026-04-11T10:18:27Z"
        },
        {
          "tag": "v0.3.47",
          "kind": "patch",
          "published_at": "2026-04-11T09:59:18Z"
        },
        {
          "tag": "v0.3.46",
          "kind": "patch",
          "published_at": "2026-04-11T09:50:06Z"
        },
        {
          "tag": "v0.3.45",
          "kind": "patch",
          "published_at": "2026-04-11T09:36:44Z"
        },
        {
          "tag": "v0.3.44",
          "kind": "patch",
          "published_at": "2026-04-10T12:58:38Z"
        },
        {
          "tag": "v0.3.43",
          "kind": "patch",
          "published_at": "2026-04-09T15:07:06Z"
        },
        {
          "tag": "v0.3.42",
          "kind": "patch",
          "published_at": "2026-04-09T11:14:24Z"
        },
        {
          "tag": "v0.3.41",
          "kind": "patch",
          "published_at": "2026-04-09T10:15:52Z"
        },
        {
          "tag": "v0.3.40",
          "kind": "patch",
          "published_at": "2026-04-09T09:00:14Z"
        },
        {
          "tag": "v0.3.36",
          "kind": "patch",
          "published_at": "2026-04-07T09:36:47Z"
        },
        {
          "tag": "v0.3.37",
          "kind": "patch",
          "published_at": "2026-04-07T00:12:33Z"
        },
        {
          "tag": "v0.3.35",
          "kind": "patch",
          "published_at": "2026-04-06T23:51:26Z"
        },
        {
          "tag": "v0.3.34",
          "kind": "patch",
          "published_at": "2026-04-06T00:29:50Z"
        },
        {
          "tag": "v0.3.33",
          "kind": "patch",
          "published_at": "2026-04-01T14:18:25Z"
        },
        {
          "tag": "v0.3.32",
          "kind": "patch",
          "published_at": "2026-04-01T14:15:09Z"
        },
        {
          "tag": "v0.3.31",
          "kind": "patch",
          "published_at": "2026-04-01T14:02:28Z"
        },
        {
          "tag": "v0.3.30",
          "kind": "patch",
          "published_at": "2026-03-27T20:55:13Z"
        },
        {
          "tag": "v0.3.29",
          "kind": "patch",
          "published_at": "2026-03-27T20:46:40Z"
        },
        {
          "tag": "v0.3.28",
          "kind": "patch",
          "published_at": "2026-03-27T20:41:41Z"
        },
        {
          "tag": "v0.3.26",
          "kind": "patch",
          "published_at": "2026-03-27T19:50:40Z"
        },
        {
          "tag": "v0.3.25",
          "kind": "patch",
          "published_at": "2026-03-19T19:42:25Z"
        },
        {
          "tag": "v0.3.24",
          "kind": "patch",
          "published_at": "2026-03-19T13:49:39Z"
        },
        {
          "tag": "v0.3.23",
          "kind": "patch",
          "published_at": "2026-03-18T20:22:11Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "fc83df1abee1b8e5e755f5d4b97caeea8d5ef701",
          "body": "kandown v0.20.0 stopped shipping these per-project — kandown work and\nthe TUI agent launcher now both read the rules straight from the\ninstalled CLI package, so a local copy only went stale and had nothing\nleft referencing it. Also dropped the now-false \"read\n.kandown/AGENT_KANDOWN.md if you can't run the CLI\" fallback line from\nAGENTS.md.",
          "is_bot": false,
          "headline": "chore(kandown): drop stale AGENT.md/AGENT_KANDOWN.md copies",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-19T18:31:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "472e6989d2b67df2a6769de18f4c6d049af45e54",
          "body": "- Backfilled .kandown/AGENT_KANDOWN.md, .kandown/README.md, and\n  .kandown/.gitignore, missing since this project's kandown install\n  predates those files. Refreshed kandown.html to the current bundled\n  version.\n- AGENTS.md kandown reference now points at `kandown work` instead of\n  a rules block f\n[…]\nplit-*), but\n  tasks/ already holds PRD-smart-model-router.md, an actively-used\n  product doc unrelated to kandown. Left both as is rather than risk\n  that doc getting picked up as a bogus board card.",
          "is_bot": false,
          "headline": "chore(kandown): repair install, update agent ref",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-19T15:06:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8e0a0fe497ca9026de7f76d7787df95f4332f51e",
          "body": null,
          "is_bot": false,
          "headline": "0.5.50 - 🔍 full model audit (20 providers, auto-deprecation support)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-18T12:18:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be3a9deb08544c21d3f6d5e359a5635aa0a90ce6",
          "body": null,
          "is_bot": false,
          "headline": "0.5.49",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-18T08:02:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "feae2abf813d4607e54f71767047005cba4a20bd",
          "body": null,
          "is_bot": false,
          "headline": "audit: groq – remove deprecated models",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-18T07:51:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1510df65a8ed58336a263cf5bc61d807b5a52600",
          "body": null,
          "is_bot": false,
          "headline": "0.5.47 - 🔌 fcm-opencode plugin (BETA) + silent-by-default FCM-Pi",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-08T12:30:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d8a616cd62c2aaa7b50419d2c4312bf021d0358",
          "body": "… models\n\n- live /v1/models confirms claude-*/gpt-5.* / glm-5.2 / kimi-k2.6 / deepseek-v4-flash / minimax-m2.7 are pro (paid)\n- keep only free turbo: devstral-small-2:24b, codestral-latest (257 -> 247 models)\n- removed 1.05M ctx entries",
          "is_bot": false,
          "headline": "0.5.46 - fix: drop non-free (pro) LLM7 models, keep only 2 free turbo…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-08T10:16:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe402927f05738b5e0f2c9c86f6f737588fca059",
          "body": "…odels\n\n- 68 models scored from '-' to real SWE-bench Verified %\n- tiers recomputed from verified scores across all 20 providers\n- 55 models retain manual tier estimates (no public SWE score: embeddings, vision, edge, routers)",
          "is_bot": false,
          "headline": "0.5.45 - swe: refresh SWE-bench Verified scores + tiers for all 257 m…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-08T10:06:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bac16173f6d1d81f281e14fd877f3cd4921fec28",
          "body": "- nvidia(+7), github-models(+20), openrouter(+10), qwen(+10), ollama-cloud(+10), llm7(+6), scaleway(+4), mistral(+2), cloudflare(+1), cerebras(+1), codestral(+1), zai(+1)\n- removed deprecated: step-3.5-flash, kimi-k2.5, mistral-7b-v0.2, owl-alpha, magistral-1.2, routeway minimax-m2/mistral-nemo, oll\n[…]\nD fixes across cerebras, nvidia, github-models, qwen, novita, zai\n- audit_state.json fingerprints refreshed for all 20 providers\n- test/test.js: updated stale hard-coded model IDs (glm-5.1 -> glm-5.2)",
          "is_bot": false,
          "headline": "0.5.44 - audit: refresh all 20 providers (257 models)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-08T09:44:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "52d7c1a0057bc546d1ca7da1243bbd4ac2d0fff6",
          "body": null,
          "is_bot": false,
          "headline": "docs: clarify FCM-Pi extension is BETA, install via local path only",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-07T13:06:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01c956754ddd7c9a23319baa91fcbe57df942b73",
          "body": null,
          "is_bot": false,
          "headline": "0.5.43 - 📖 Pi extension documentation",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-07T13:05:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "674ada5618a39bdf0029f2db06d13868a652c5ff",
          "body": null,
          "is_bot": false,
          "headline": "0.5.42",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-07T12:56:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "735da7dec417d1af0df60ea531d79555771e5d18",
          "body": null,
          "is_bot": false,
          "headline": "0.5.41",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-07T12:37:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eeecb6cec0c30c59d87e839c20c61409d67eb528",
          "body": null,
          "is_bot": false,
          "headline": "0.5.40",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-07-07T12:34:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "874842d49010591cd28200af9e68c8b365843c67",
          "body": null,
          "is_bot": false,
          "headline": "0.5.39",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-27T19:57:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04b0f130473366020d0ebe360bcce276cbe12de2",
          "body": "- groq: +qwen/qwen3.6-27b (preview, 131k)\n- cloudflare: +glm-5.2 (S+, 262k), +kimi-k2.5 (S+, 256k), fix nemotron-3-120b ctx 32k→128k\n- ovhcloud: +Qwen3-Embedding-8B, +bge-m3, +bge-multilingual-gemma2\n\nCloses #audit-2026-06-27",
          "is_bot": false,
          "headline": "feat: add missing models across 4 providers",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-27T18:49:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43af51897e09382fc1cb968ffa23f50d1596df6e",
          "body": null,
          "is_bot": false,
          "headline": "0.5.38",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-27T15:43:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc9c6cb07ce60347c8b98ede4cc23dafebe503f9",
          "body": "The @tanstack/react-virtual@^3.14.2 dependency was added to package.json in\ncommit 694a258 but pnpm install was never run, so pnpm-lock.yaml was never\nupdated. This caused the Docker CI workflow to fail on every run since\nv0.5.32 — the 'Verify pnpm lockfile sync' step in docker.yml catches this\nand exits with an error.\n\nFixes GHCR Docker image being stuck at v0.5.32 while npm has v0.5.37.\nCloses #122.\n\nCo-authored-by: contributor <contributor@example.com>",
          "is_bot": false,
          "headline": "fix: regenerate pnpm-lock.yaml to include @tanstack/react-virtual (#123)",
          "author_name": "stgreenb",
          "author_login": "stgreenb",
          "committed_at": "2026-06-27T15:34:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f43e166f1dc72a73cd1ce0799dc4f0ebe04516ce",
          "body": "…s (#128)",
          "is_bot": false,
          "headline": "feat(zcode): add full ZCode install-target support across all surface…",
          "author_name": "MoriDan",
          "author_login": "MoriDanWork",
          "committed_at": "2026-06-27T15:17:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bb8556156c23c2661e1cd9ac7a404a2e16dbc88",
          "body": "Bundle the v0.5.36 router priority fix with two regression tests and a\nscoreCandidates refactor that prevents #120 from silently regressing and\nremoves the priority-mixed-into-score footgun for future code.\n\n- scoreCandidates: score is now pure latency+uptime (0.5/0.5 weights,\n  normalized [0,1]); p\n[…]\nut ignored at runtime; will be removed in a future major.\n- Tests: +2 regression tests for issue #120 (HALF_OPEN scenario from the\n  user screenshot + score tiebreaker determinism). 540 → 542 passing.",
          "is_bot": false,
          "headline": "0.5.37 - 🧪 Lock in #120 fix (HALF_OPEN regression) + score split",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-20T13:14:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f0dd3d8d8ab183863ded760bfc95c9e73acb255d",
          "body": "Bundles router priority fix + probe-loop hardening, provider-key-test\nre-exports completing #121, and @MoriDanWork contributor credit.\n\n- Router: sort by explicit priority BEFORE circuit state so a high-priority\n  HALF_OPEN model is no longer skipped for a lower-priority CLOSED one.\n- Probe loop: watchdog cleanup, lastProbeAt tracking, try/catch around cycles.\n- key-handler: re-export shared provider-key-test helpers (finishes #121).\n- Docs: credit @MoriDanWork in README + AGENTS.md.",
          "is_bot": false,
          "headline": "0.5.36 - 🐛 Fix router priority ordering (HALF_OPEN skip)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-20T11:13:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "488bf1605c7318cbad41a445e5f7ee26280d4e9e",
          "body": null,
          "is_bot": false,
          "headline": "fix: ensure pnpm-lock.yaml stays in sync, add CI lockfile verification",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-19T12:10:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbb3c30dd26c747e2b07fe997aab6653ea1ecc60",
          "body": "…(#121)",
          "is_bot": false,
          "headline": "refactor(tui) + fix(web): move provider key testing to shared module …",
          "author_name": "MoriDan",
          "author_login": "MoriDanWork",
          "committed_at": "2026-06-18T13:35:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a0e3f2145e75a0079e62e781dd2520390b615e1",
          "body": "Same code as 0.5.34. Published to close the version gap on npm\n(0.5.32 → 0.5.34, 0.5.33 missing). The 0.5.33 commit (ecf740c)\nand its changelog file remain in git history for reference.\n\nchangelog/v0.5.35.md explains the situation in full.",
          "is_bot": false,
          "headline": "0.5.35 - 📝 Registry note: 0.5.33 was skipped in auto-publish",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-17T11:57:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9edb2ecf09f2fe670ffa8551b56e80d7f7c0cae1",
          "body": "New module src/core/schema-normalizer.js fixes the 400/422 errors\nGLM and Mistral/Codestral throw when ZCode, Claude Code, or Cline\nsend their tool-call flow upstream:\n\n  - strip parallel_tool_calls, n, top_k, logprobs, echo, user,\n    metadata, store (unsupported by these providers, cause 422)\n  - \n[…]\nnow point the\ndesktop IDE at http://localhost:19280/v1 (model: 'fcm', key:\n'fcm-local') without hitting the schema-mismatch wall.\n\ndocs/README_ROUTER.md updated to document the per-provider transform.",
          "is_bot": false,
          "headline": "0.5.34 - 🛠 Per-provider schema normalizer (GLM, Mistral, Codestral)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-17T11:44:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ecf740c6f65410fb3bdc7868d8b9ef2355c7a867",
          "body": "Add ZCode as a first-class supported tool:\n- 🧊 ZCode flag (--zcode) in the TUI Z-hotkey cycle and CLI --help\n- 🧊 Compatible-with column entry\n- Launch on macOS via 'open -a ZCode' (no-op on other platforms)\n- Setup instructions point users at the local FCM Router\n  (http://localhost:19280/v1 / fcm-l\n[…]\n\n- changelog/v0.5.33.md\n\nWhy: requested on Discord by a user hitting GLM/Codestral 422s\nwhen routing through fcm_router into ZCode. Native tool mode makes\nthe router + ZCode combo a one-flag workflow.",
          "is_bot": false,
          "headline": "0.5.33 - 🧊 Add ZCode (z.ai desktop IDE) tool mode",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-17T11:18:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1a8663370ac4b0bcc4157c397589630bd20e247",
          "body": "Replace 7 boolean modal state vars (helpOpen, changelogOpen,\nrecommendOpen, routerOpen, playgroundOpen, installedModelsOpen,\ninstallEndpointsOpen) with one currentView string state.\n\nWhy: simpler navigation, single source of truth, makes PostHog\nview-tracking and active-header highlighting trivial.\n\n[…]\negistered in urlState.constants: playground,\n  install-endpoints, installed-models\n- PostHog 'app_router_start' now fires on view change, not\n  button click\n- All M3/M4 unit tests still pass (524/524)",
          "is_bot": false,
          "headline": "refactor(web): unify M3 modals into single currentView state",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-17T11:07:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f5eba3aeb96030b8bc897105b01373faf614f7f",
          "body": null,
          "is_bot": false,
          "headline": "Update LICENSE",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T09:08:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb19f2f96adcec30bbd8df2672dfbfc3d35fc5c6",
          "body": "- added deepseek-v4-flash + kimi-k2.6 (both S+, free + keyless on llm7 -> valuable no-key fallback)\n4 -> 6 models. live /v1/models verified (9 models total on llm7).",
          "is_bot": false,
          "headline": "audit: llm7 first audit (4/4 confirmed live)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:46:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ff37f40984f99435eece6500eb77223557c9544",
          "body": "Zen free models are ephemeral (rotates often). Current free list (per Zen pricing):\n- replaced nemotron-3-super-free -> nemotron-3-ultra-free (Ultra is now the free Nemotron)\n- removed minimax-m3-free (rotated out of free tier)\n- added north-mini-code-free (new Cohere North Mini Code free model)\n5 -> 5 models",
          "is_bot": false,
          "headline": "audit: opencode-zen free-tier rotation",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:44:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "366e47339d5fc0e82a4f6a1c7c8ea8f223c4045b",
          "body": "- added qwen3.6-35b-a3b (A+/-/256k, new Apr 2026 agentic MoE, Serverless/free-tier)\n10 -> 11 models",
          "is_bot": false,
          "headline": "audit: scaleway verified (10/10 confirmed)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:42:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "632904cc3625e95f4cc11fdff4429b7ae5449253",
          "body": "- added Qwen3.6-27B (A/-/262k, new reasoning model, top of OVH catalog)\n10 -> 11 models",
          "is_bot": false,
          "headline": "audit: ovhcloud verified against live API (10/10 confirmed)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:39:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "694a258e1fea4f5640e2da79ad000f22b369f765",
          "body": "- removed Llama-4-Maverick (not in live /v1/models)\n- removed gemma-3-12b-it (not in live, replaced by gemma-4-31B-it)\n- added gemma-4-31B-it (A/45%/128k, live)\n7 -> 6 models",
          "is_bot": false,
          "headline": "audit: sambanova verified against live API",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:37:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b149d739436696d923ca4aef7ee42b8437d03562",
          "body": "removed 45 dead note lines (// Removed ... / ⚠️ DEPRECATED ...) across all\nproviders. catalog content unchanged (189 models). git history is the archive.",
          "is_bot": false,
          "headline": "chore: strip discontinued-model comments from sources.js",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:35:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3898e57f7d40ce38a50b3d0748231d3bd8f971e",
          "body": "- nvidia: removed qwen3-coder-480b (absent from live NIM /v1/models, dead endpoint), added minimax-m3 (live, free endpoint, S/59%/1M)\n- mistral: annotated devstral-2512 + magistral-medium-2509 deprecations (retire Jul 31 2026, replacements already cataloged)\n- cloudflare: removed 4 phantom models (c\n[…]\nocs, never real models); added kimi-k2.7-code (new flagship) + gpt-oss-120b; annotated deprecated mistral-7b-v0.2\n\nnet: 191 -> 189 models. live API + official docs verified, search backends were down.",
          "is_bot": false,
          "headline": "audit: nvidia/mistral/cloudflare verified",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:31:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "850bc2c1217dbb9f880a7ded62dcee79762dae4e",
          "body": "Rebrand the dashboard to the lime-green (#c0f20c) identity: refreshed\ncolor tokens, larger base font (14->16px), app-shell grid + glow\nbackground, and a search bar wired into the FilterBar.\n\nAdd a cult-ui-inspired Grid Beam canvas overlay that travels along the\nmodel table's REAL borders (ported to \n[…]\non:sticky (the bar\nsits outside the internal scroller, so it is naturally always visible).\n\nCatalog: drop dead qwen3-coder-480b (NVIDIA NIM returns 410), add\nminimax-m3.\n\nbuild OK, 524/524 tests pass.",
          "is_bot": false,
          "headline": "feat(web): green rebrand, grid-beam table overlay, sticky header",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-16T00:15:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8dc36c77e140899e0e3eb358e23bbbf7b2e7800c",
          "body": null,
          "is_bot": false,
          "headline": "0.5.32 - 🔄 Restart outdated daemon automatically on version mismatch",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-15T17:04:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de613313cf70833153dc6cbaa40f672482b2c098",
          "body": null,
          "is_bot": false,
          "headline": "0.5.31 - ✨ Add 'Use favorites' button in Router view",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-15T16:47:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b9605e17450067561c070c30f62052e950d7492",
          "body": null,
          "is_bot": false,
          "headline": "0.5.30 - 🎮 Harmonize playgrounds & add router benchmark",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-15T16:38:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61f675bed889ea3a5018eeac49828dfb9f7e876b",
          "body": "Router now serves the highest-priority healthy model first instead of\nblending priority into a health score (issue #120). Added routingOrder to\n/stats and Priority/Fallback/Next-up indicators across Web + TUI. Also\nincludes dev-mode port isolation and daemon error surfacing from the\nworking tree.",
          "is_bot": false,
          "headline": "0.5.29 - 🐛 Fix router priority routing (#120) + clearer router UI",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-15T14:30:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3161f472e3c7e9f5b79eda963c9fbb39163d329",
          "body": "Introduce shared-helpers.js with common FS/JSON/sleep/masking utilities and isRouteableProvider to deduplicate logic across modules. Update sources.js to propagate an optional addedDate in model tuples and include that field in MODELS. Wire consumers (tui, router-daemon, endpoint-installer, sync-set\n[…]\nns. Remove unused product-flags.js and add kandown task docs for planned refactors (key-handler, router-daemon, getVerdict). Update tests and TUI to handle optional addedDate and new isNewModel logic.",
          "is_bot": false,
          "headline": "Add shared helpers; support model addedDate",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-12T13:37:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c079256bfa968853357b219a1bd867bbd622320",
          "body": null,
          "is_bot": false,
          "headline": "0.5.28 - 🐛 Fix Docker 404s + pending confusion",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-11T12:28:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6920c03134c2a327e82049bcca0872295970109f",
          "body": null,
          "is_bot": false,
          "headline": "0.5.27 - 🆕 Add pi-free providers",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-11T11:34:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fd4af82b70a10cc386e4517bbc21b7fadc66015",
          "body": null,
          "is_bot": false,
          "headline": "0.5.26 - 🪓 Wipeout Gemini CLI & Rovo Dev (tool integrations)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-11T11:03:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e3a3942927db14d2ada6502a355240145f99688",
          "body": null,
          "is_bot": false,
          "headline": "0.5.25 - 🆕 Move NEW badge left of model name (same slot as ⭐)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T19:38:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54205e1b7d1f8ea6e28d92572f22884b81d9cc37",
          "body": null,
          "is_bot": false,
          "headline": "0.5.24 - ✨ Remove erroneous sparkles from verdict icons",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T19:31:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eca950f4c390b3d467e3f7d68c59c4aebebcbd32",
          "body": "…W_MODELS import",
          "is_bot": false,
          "headline": "0.5.23 - 🩹 Fix SyntaxError: duplicate speedCell/moodCell + missing NE…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T17:46:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e4757ff1020a43b400cfa34f1f1748b5b891753b",
          "body": null,
          "is_bot": false,
          "headline": "0.5.22",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T17:35:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9ef5dd7d58b8924a1d1e28d1ba672b95cbd5eb2",
          "body": "…emini(deprecate:3)",
          "is_bot": false,
          "headline": "0.5.21 - audit: cloudflare(-2+5,fix:3), openrouter(fix:2), googleai+g…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T13:15:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d8bf4dfe15497c56f3e300a1a335a3350f1c274",
          "body": null,
          "is_bot": false,
          "headline": "0.5.20",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T11:59:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "082c719fcef069a4e41a17a85fc37ef010ef4cbc",
          "body": null,
          "is_bot": false,
          "headline": "0.5.19",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T10:34:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5395f7d62ca1c1825a3d1d01d47ec19e64b301a0",
          "body": null,
          "is_bot": false,
          "headline": "Update SKILL.md",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-10T10:04:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d4fef4f87b23ee9cebb3991d487183f2e02b659",
          "body": null,
          "is_bot": false,
          "headline": "0.5.18 - 🩹 Fix prefix-aware updater loop",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-09T16:06:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0793ef11064a9cca87e1b940d839f23ed7e4ece",
          "body": null,
          "is_bot": false,
          "headline": "0.5.17 - 🔧 Docker key mapping + deps bumps + test coverage",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-08T17:45:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cb3ce5596d1dc667797c062eef4ff9d81795ce3",
          "body": null,
          "is_bot": false,
          "headline": "fix(deps): update vite-plus to 0.1.24",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-08T17:07:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da2f37fca53e8c0f22a20df30ecfcea06c79f145",
          "body": "Bumps [kandown](https://github.com/vava-nessa/kandown) from 0.4.0 to 0.8.0.\n- [Release notes](https://github.com/vava-nessa/kandown/releases)\n- [Changelog](https://github.com/vava-nessa/kandown/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/vava-nessa/kandown/compare/v0.4.0...v0.8.0)\n\n---\nup\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": "deps(deps): bump kandown from 0.4.0 to 0.8.0 (#111)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-08T15:48:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e818f80a85158df44f69db8c1212a2c5f5e91a6",
          "body": "Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3 to 4.\n- [Release notes](https://github.com/docker/setup-qemu-action/releases)\n- [Commits](https://github.com/docker/setup-qemu-action/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: docker/setup-qemu-\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": "ci(deps): bump docker/setup-qemu-action from 3 to 4 (#110)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-08T15:47:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7c1d08c5b668b5eb265eb0e4c9a77c36b296db7d",
          "body": "…n sed logic (#115)\n\n- scripts/docker-init.mjs imports ENV_VARS from config.js (single source of truth)\n- docker-entrypoint.sh simplified to 1-line node call\n- docker-compose.yml cleaned of 9 stale providers, added GEMINI_API_KEY, OPENCODE_ZEN_API_KEY\n- Dockerfile: added COPY scripts/ for init scrip\n[…]\napi/favorites, /api/version (dashboard deps)\n- Fixed key test probe: uses first valid model from provider instead of empty string\n\nCo-authored-by: stgreenb <18483964+stgreenb@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: Docker provider key mapping — Node.js init script replaces broke…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-08T15:46:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a517df3b9c38ee93826864ab6a072784dd0a503b",
          "body": null,
          "is_bot": false,
          "headline": "0.5.16 - 🌐 expandable detail rows + mini playground + AI latency bench",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T18:53:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b39e470bf531124dfa622a166690c091016f00d9",
          "body": null,
          "is_bot": false,
          "headline": "0.5.15 - 🔒 restore lockfile (take 3)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T16:00:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b919c2200e6341589dfb0ec6c62c3b0939939c79",
          "body": null,
          "is_bot": false,
          "headline": "0.5.15 - 🔧 --no-frozen-lockfile in CI for release",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T16:00:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9ef5991949d50fccd19d80f55ab6b97372f0d03",
          "body": null,
          "is_bot": false,
          "headline": "0.5.15 - 🔒 restore lockfile + pnpm@10 for CI compat",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:55:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aafaa4c8fcf028bebf3eb61aca441d19ef35fbd2",
          "body": null,
          "is_bot": false,
          "headline": "0.5.15 - 🔒 sync lockfile with pnpm@11.5.1",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:53:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70cdaff6ad6f47ee236b6079201937ef8bbd11da",
          "body": null,
          "is_bot": false,
          "headline": "0.5.15 - 🔒 restore lockfile",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:53:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34d402f8c9b4234d41cb6846841b87786f0d1705",
          "body": null,
          "is_bot": false,
          "headline": "0.5.15 - 🔒 update lockfile",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:52:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5d26e65e9de9bd4f1ae8f5b31700d3b82d0c8d6",
          "body": "…hboard",
          "is_bot": false,
          "headline": "0.5.15 - 🐛 Shift+R no longer launches OpenCode, only opens router das…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:40:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69d90a27f5cb185231dd2b238dce2741a0c33a96",
          "body": "…o white in light mode",
          "is_bot": false,
          "headline": "0.5.15 - 🩹 patchThemeBg at app level covers ALL overlays + header log…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:33:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ae28cc942f9e4b461fce8a709686b899fe0e72a",
          "body": "…x1b[49m",
          "is_bot": false,
          "headline": "0.5.15 - 🩹 Patch all chalk bg resets: re-apply theme bg after every \\…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:14:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ad985f1dc111e1bc34c3b4ce33f0ddf9f777c8f",
          "body": "…o bg reset",
          "is_bot": false,
          "headline": "0.5.15 - 🩹 BG_SET before content + headerLogo white in light mode + n…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T15:05:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8637f73f3dbb558d06f16569b38736b745483be6",
          "body": "…olour",
          "is_bot": false,
          "headline": "0.5.15 - 🩹 Remove per-line bg reset so full screen fills with theme c…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T14:59:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd4988636be6217134c05164e639f4a91cb128d4",
          "body": "…footer",
          "is_bot": false,
          "headline": "0.5.15 - 🎨 Full dual-theme palette: zero hardcoded colours + G Theme …",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T14:52:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0051c33121cd10347953504136ffc6c61229122e",
          "body": null,
          "is_bot": false,
          "headline": "0.5.14 - 🎨 G Theme footer hotkey + forced light/dark background colours",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T14:27:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0012333f0508ad1d7fc72decc0ab4b0a2df96bf",
          "body": null,
          "is_bot": false,
          "headline": "0.5.13 - 🎨 Provider SVG dropdown + health dots + playground direct route",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-04T14:07:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dab5669be7a968c07b7e8d7205835c5ca84dcdcd",
          "body": "Consolidate the three features that landed in commit 41f02a6 (M4 Web set\nmanager, M6 auto-heal, and the unusable row fade) into a single v0.5.12\nrelease to keep the version stream sequential and never skip a number.\n\nChanges in this commit:\n- package.json: bump from 0.5.14 to 0.5.12 (next sequential\n[…]\nribing a release that never actually published.\n- Consolidating everything into v0.5.12 keeps the changelog and the\n  shipped version aligned, and matches what a fresh npm install will\n  actually see.",
          "is_bot": false,
          "headline": "0.5.12 - 🩹 Auto-heal + M4 Set Manager + Unusable Row Fade",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T22:19:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41f02a6cce806a1ff16468002b6138e3d13d6d70",
          "body": "Introduce automatic healing of broken router sets and a full Web set manager. Key changes:\n\n- Add router.autoHeal and router.userCustomized config flags and expose them (plus brokenModelCount) in /api/router/status. Auto-heal runs after the initial probe burst and replaces AUTH_ERROR/STALE models wi\n[…]\nv0.5.12/v0.5.13), README updates, and package version bump to 0.5.13.\n\nThese changes are focused on improving first-run reliability and giving users an interactive UI to manage and repair router sets.",
          "is_bot": false,
          "headline": "Add router auto-heal and web set manager",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T22:10:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "459ddadb410c4897937ae1e67a5b20e480be5294",
          "body": "Introduce a multi-surface Playground and a configurable router pre-prompt. Adds server-side pre-prompt normalization/injection (DEFAULT_ROUTER_SETTINGS.prePrompt, normalizeRouterPrePrompt, injectPrePrompt, applyPrePromptToBody) and GET/PUT /api/router/preprompt endpoints so settings persist to ~/.fr\n[…]\ne pre-prompt for streaming and non-streaming chat completions, adds web Playground component stubs, bumps version to 0.5.11, updates README and changelog, and ignores a local scratchpad in .gitignore.",
          "is_bot": false,
          "headline": "Add Playground UI and router pre-prompt support",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T19:18:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c568cdbb27217f5d6f7112213b21dffb9522b42",
          "body": "…rror recovery",
          "is_bot": false,
          "headline": "0.5.10 - ✨ Install Endpoints wizard: animated step 4 confirmation + e…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T16:15:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a143c3d3c7d3126ba8da746fd1e8a6b1b6309e36",
          "body": null,
          "is_bot": false,
          "headline": "0.5.9",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T15:51:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "870bb2af824c236607adbe917fed0f16e28c561f",
          "body": null,
          "is_bot": false,
          "headline": "0.5.8",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T15:35:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46734cf6fcb4bb7132a9eea37eb56014f4f0b42e",
          "body": "…EADME update",
          "is_bot": false,
          "headline": "0.5.8 - ♿ M5: a11y 96 Lighthouse, mobile hamburger, :focus-visible, R…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T15:29:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50a6035cb6e1f447eb0a73c0eeef266aca8a16a2",
          "body": "…tall Endpoints wizard",
          "is_bot": false,
          "headline": "0.5.7 - 🚀 M4: Router Dashboard + Token Usage + Installed Models + Ins…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-02T15:07:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c788ce174639c6beed108ea048cc61e759fcd270",
          "body": "Adds QEMU setup for cross-compilation and changes the Docker build\nplatforms from linux/amd64 only to linux/amd64,linux/arm64.\n\nThis enables users on Apple Silicon (M1/M2/M3/M4), AWS Graviton,\nRaspberry Pi 4+, and other ARM64 hosts to pull and run the image\nnatively without emulation overhead.\n\nIn test_mode (load=true), we keep linux/amd64 only because the\nDocker load option does not support multi-platform manifests.\n\nCloses #95",
          "is_bot": false,
          "headline": "fix(docker): add multi-platform builds for amd64 + arm64",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T21:13:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9528bd0a64ab27bbdb57bc87cb033a9dd076344",
          "body": "…ker, per-row launch buttons, and compatibility fallback modals",
          "is_bot": false,
          "headline": "feat: implement M3 web-based endpoint installation flow with tool pic…",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T19:33:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5fe0585ed43d20b455fdbce2c3ca7ae72f8b7e0",
          "body": "- M1 + M2 marked DONE in the progress table (shipped as 0.5.5 + 0.5.6)\n- M3 marked as NEXT with detailed progress checklist\n- New handoff section for the next session: what's in place, what NOT\n  to do, hot spots in order, file references, acceptance criteria\n- Post-M2 entry documenting the issue #95 fix (Docker workflow_run\n  trigger + package.json version + latest tag always-on)\n- Fixed typo: findSimiLar (correct case per source)",
          "is_bot": false,
          "headline": "docs(plan): handoff to M3 with full implementation spec",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T15:40:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f12fcf980d9c90b7ee17b09647c7cadb19ae35c",
          "body": "The previous metadata step relied on type=ref,event=tag and\ntype=semver,pattern=... — both of which only work on tag-push\nevents. On workflow_run (our new primary trigger) the semver\ntag was empty, so the build was only tagged with its SHA.\n\nFix: read the version from package.json (new Extract versi\n[…]\nlt-branch builds so\nthe 'latest' tag always tracks the most recent release.\n\nThe next workflow_dispatch or workflow_run will produce an image\ntagged '0.5.6' + 'latest' + SHA, matching the npm release.",
          "is_bot": false,
          "headline": "ci(cd): always tag Docker as 'latest' and with the package version",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T15:20:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a00993fb0754e1046caf6dc1ccfb5b85f8a392e3",
          "body": "The previous condition\nexcluded both manual dispatches AND workflow_run triggers. The new\ncondition builds when (workflow_run succeeded) OR (manual dispatch\nwithout test_mode), so both paths work.",
          "is_bot": false,
          "headline": "ci(cd): fix workflow_dispatch condition to allow manual builds",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T15:06:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f80376c2c2a5c7ee340da2a4c1e475efecbd1d78",
          "body": "The legacy 'push: tags: v*.*.*' trigger stopped firing after v0.3.72,\nleaving the Docker image on the registry at 0.3.72 while the npm\npackage has been climbing to 0.5.6. Issue #95.\n\nReplace the broken tag-push trigger with a workflow_run trigger on\nthe Release workflow, so every successful npm publ\n[…]\n.*.* (unreliable)\n- Add on.workflow_run: workflows: [Release], types: [completed]\n- Conditional skip when the upstream Release failed\n- Update build-push and Trivy conditions to recognize workflow_run",
          "is_bot": false,
          "headline": "ci(cd): trigger Docker on every successful Release (workflow_run)",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T15:05:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d0e5458071b848a76001433896a6f28044b1f0b4",
          "body": null,
          "is_bot": false,
          "headline": "0.5.6",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T14:54:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b606efd804bc21b93e93a017e302f02e090f1de",
          "body": null,
          "is_bot": false,
          "headline": "update",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T12:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3428a22e790f806d2e5662074c268f7775c9e5b2",
          "body": "Add a mandatory startup self-update policy that auto-installs new releases before any user-facing surface starts. Introduce isPackageDevMode and enforceMandatoryStartupUpdate which persist install/check failure counters in config, allow two consecutive install failures before letting the UI start wi\n[…]\nate into the TUI and web server (render red warning banner in TUI and web UI), update socket hook and UI to surface the status, and add tests/CSS. Also bump package version to 0.5.5 and add changelog.",
          "is_bot": false,
          "headline": "Mandatory startup self-update with fallback",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T12:05:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7f35d0cd2afba832ff0b1bce413d2a92797d2da6",
          "body": "Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 6.0.1 to 6.0.2.\n- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)\n- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.m\n[…]\nrect:development\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": "deps(deps-dev): bump @vitejs/plugin-react from 6.0.1 to 6.0.2 (#107)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T11:59:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c557750a2a6a30bb7d566d4877b6df82340b134d",
          "body": "Bumps [vite-plus](https://github.com/voidzero-dev/vite-plus/tree/HEAD/packages/cli) from 0.1.20 to 0.1.23.\n- [Release notes](https://github.com/voidzero-dev/vite-plus/releases)\n- [Commits](https://github.com/voidzero-dev/vite-plus/commits/v0.1.23/packages/cli)\n\n---\nupdated-dependencies:\n- dependency\n[…]\nrect:development\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": "deps(deps-dev): bump vite-plus from 0.1.20 to 0.1.23 (#106)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T11:58:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5db1fbfcf817d8c43dc42746d3e9a25f184c42d5",
          "body": "Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.14 to 8.0.16.\n- [Release notes](https://github.com/vitejs/vite/releases)\n- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)\n- [Commits](https://github.com/vitejs/vite/commits/v8.0.16/package\n[…]\nrect:development\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": "deps(deps-dev): bump vite from 8.0.14 to 8.0.16 (#105)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T11:56:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6fcb6db41d49e57c1a41b9d212d7bda4d9db1fea",
          "body": "Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.\n- [Release notes](https://github.com/docker/setup-buildx-action/releases)\n- [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: docker/set\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": "ci(deps): bump docker/setup-buildx-action from 3 to 4 (#104)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T11:56:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2b1a0e8f23e49ef4b23c1483e15067eeffb217fd",
          "body": "Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.\n- [Release notes](https://github.com/docker/login-action/releases)\n- [Commits](https://github.com/docker/login-action/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: docker/login-action\n  dependency-versi\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": "ci(deps): bump docker/login-action from 3 to 4 (#103)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T11:55:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3bf1d12cba76fc757c6bfa444a97e757f0ffc62",
          "body": "Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4 to 6.\n- [Release notes](https://github.com/pnpm/action-setup/releases)\n- [Commits](https://github.com/pnpm/action-setup/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: pnpm/action-setup\n  dependency-version: '6'\n  \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": "ci(deps): bump pnpm/action-setup from 4 to 6 (#102)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T11:55:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af8668643f80bc95ba60e5327e773dd41548c491",
          "body": null,
          "is_bot": false,
          "headline": "0.5.4 - 🚀 Consolidate failed releases and CI fixes",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T11:53:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "222b7f96b99a481dd084b76cdb33b8a7f4839e08",
          "body": "The favicon generation script (scripts/build-favicons.mjs) requires the\n`magick` binary to rasterize the source icon, but the ubuntu-latest\nrunner doesn't ship with ImageMagick pre-installed. Add an apt-get install\nstep right after pnpm install so the build:favicons step in build:web\ncan run successfully.",
          "is_bot": false,
          "headline": "fix(ci): install ImageMagick in release workflow for 0.5.3",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T11:42:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "443a8380b44c81e51c26c4a998f7a42637224e67",
          "body": "The release workflow failed at the 'Publish to npm' step because:\n- package.json references 'node scripts/build-favicons.mjs' via build:favicons\n- but scripts/build-favicons.mjs was untracked in the working tree\n- and icon.png (the source the script rasterizes) was also untracked\n\nThis commit adds both files. The 0.5.3 release will re-run on this push\nbecause v0.5.3 was never tagged (the previous run failed before the tag step).",
          "is_bot": false,
          "headline": "fix(ci): add missing favicon build script + icon for 0.5.3 release",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T11:38:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3fd70d6c73c851bc32a025ab84cbb5ef7a678f5",
          "body": null,
          "is_bot": false,
          "headline": "0.5.3",
          "author_name": "Vanessa Depraute",
          "author_login": "vava-nessa",
          "committed_at": "2026-06-01T11:27:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 599,
      "latest_release_at": "2026-07-18T12:19:24Z",
      "latest_release_tag": "v0.5.50",
      "releases_from_tags": false,
      "days_since_last_push": 3,
      "active_weeks_last_year": 21,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 1.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "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": [
        {
          "name": "free-coding-models",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "nvidia",
            "nim",
            "llm",
            "cli",
            "ai",
            "models",
            "benchmark",
            "latency",
            "availability",
            "deepseek",
            "qwen",
            "llama",
            "mistral",
            "glm",
            "kimi",
            "gpt",
            "chatgpt",
            "openai",
            "api"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/free-coding-models",
          "is_deprecated": false,
          "latest_version": "0.5.50",
          "repository_url": "https://github.com/vava-nessa/free-coding-models",
          "versions_count": 214,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 5344,
          "first_published_at": "2026-02-21T22:40:09.010000Z",
          "latest_published_at": "2026-07-18T12:19:20.556000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 238,
      "stars": 2186,
      "watchers": 18,
      "fork_history": {
        "days": [
          {
            "date": "2026-02-21",
            "count": 1
          },
          {
            "date": "2026-02-22",
            "count": 12
          },
          {
            "date": "2026-02-23",
            "count": 6
          },
          {
            "date": "2026-02-24",
            "count": 3
          },
          {
            "date": "2026-02-25",
            "count": 3
          },
          {
            "date": "2026-02-26",
            "count": 5
          },
          {
            "date": "2026-02-27",
            "count": 3
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-01",
            "count": 2
          },
          {
            "date": "2026-03-03",
            "count": 3
          },
          {
            "date": "2026-03-05",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 1
          },
          {
            "date": "2026-03-07",
            "count": 2
          },
          {
            "date": "2026-03-11",
            "count": 1
          },
          {
            "date": "2026-03-12",
            "count": 1
          },
          {
            "date": "2026-03-13",
            "count": 2
          },
          {
            "date": "2026-03-14",
            "count": 2
          },
          {
            "date": "2026-03-15",
            "count": 3
          },
          {
            "date": "2026-03-16",
            "count": 4
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 3
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-04",
            "count": 13
          },
          {
            "date": "2026-04-05",
            "count": 25
          },
          {
            "date": "2026-04-06",
            "count": 17
          },
          {
            "date": "2026-04-07",
            "count": 5
          },
          {
            "date": "2026-04-08",
            "count": 5
          },
          {
            "date": "2026-04-09",
            "count": 3
          },
          {
            "date": "2026-04-10",
            "count": 2
          },
          {
            "date": "2026-04-11",
            "count": 1
          },
          {
            "date": "2026-04-12",
            "count": 8
          },
          {
            "date": "2026-04-13",
            "count": 5
          },
          {
            "date": "2026-04-14",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 3
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-04-17",
            "count": 3
          },
          {
            "date": "2026-04-18",
            "count": 2
          },
          {
            "date": "2026-04-19",
            "count": 3
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-23",
            "count": 1
          },
          {
            "date": "2026-04-24",
            "count": 1
          },
          {
            "date": "2026-04-25",
            "count": 1
          },
          {
            "date": "2026-04-26",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 2
          },
          {
            "date": "2026-04-28",
            "count": 3
          },
          {
            "date": "2026-04-29",
            "count": 3
          },
          {
            "date": "2026-04-30",
            "count": 5
          },
          {
            "date": "2026-05-02",
            "count": 3
          },
          {
            "date": "2026-05-03",
            "count": 6
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 2
          },
          {
            "date": "2026-05-07",
            "count": 2
          },
          {
            "date": "2026-05-09",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 4
          },
          {
            "date": "2026-05-12",
            "count": 1
          },
          {
            "date": "2026-05-16",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 2
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-24",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-05-30",
            "count": 3
          },
          {
            "date": "2026-05-31",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 1
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-08",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 3
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-12",
            "count": 1
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 2
          },
          {
            "date": "2026-06-16",
            "count": 2
          },
          {
            "date": "2026-06-17",
            "count": 2
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-06-27",
            "count": 1
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-07-01",
            "count": 2
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 1
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 238,
        "total_forks": 238
      },
      "star_history": null,
      "open_issues_and_prs": 25
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "website/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 279662,
      "source_files_sampled": 171,
      "oversized_source_files": 5,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 14156
    },
    "dependencies": {
      "manifests": [
        "opencode-plugin/package.json",
        "package.json",
        "pi-extension/package.json",
        "web/package.json",
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "shell-quote",
            "direct": false,
            "version": "1.8.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-395f-4hp3-45gv"
            ],
            "fixed_version": "1.9.0",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.20.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-96hv-2xvq-fx4p"
            ],
            "fixed_version": "8.21.0",
            "advisory_count": 1,
            "oldest_advisory_days": 38
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 2
        },
        "advisory_count": 2,
        "affected_count": 2,
        "assessed_count": 393,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 22,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@tabler/icons-react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.44.0"
        },
        {
          "name": "@tanstack/react-table",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.3"
        },
        {
          "name": "chalk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.6.2"
        },
        {
          "name": "kandown",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.8.0"
        },
        {
          "name": "socket.io",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.8.3"
        },
        {
          "name": "socket.io-client",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.8.3"
        },
        {
          "name": "@tanstack/react-virtual",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.14.2"
        },
        {
          "name": "@fontsource-variable/geist",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.9"
        },
        {
          "name": "@fontsource-variable/geist-mono",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.8"
        },
        {
          "name": "@tailwindcss/vite",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.18"
        },
        {
          "name": "@tanstack/react-devtools",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "latest"
        },
        {
          "name": "@tanstack/react-router",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "latest"
        },
        {
          "name": "@tanstack/react-router-devtools",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "latest"
        },
        {
          "name": "@tanstack/react-router-ssr-query",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "latest"
        },
        {
          "name": "@tanstack/react-start",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "latest"
        },
        {
          "name": "@tanstack/router-plugin",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.132.0"
        },
        {
          "name": "clsx",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "lucide-react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.545.0"
        },
        {
          "name": "react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.0"
        },
        {
          "name": "react-dom",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.0"
        },
        {
          "name": "tailwindcss",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.18"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@fontsource-variable/geist",
            "direct": true,
            "version": "^5.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "@fontsource-variable/geist-mono",
            "direct": true,
            "version": "^5.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@tabler/icons-react",
            "direct": true,
            "version": "3.44.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/vite",
            "direct": true,
            "version": "^4.1.18",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-devtools",
            "direct": true,
            "version": "latest",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-router",
            "direct": true,
            "version": "latest",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-router-devtools",
            "direct": true,
            "version": "latest",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-router-ssr-query",
            "direct": true,
            "version": "latest",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-start",
            "direct": true,
            "version": "latest",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-table",
            "direct": true,
            "version": "8.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-virtual",
            "direct": true,
            "version": "3.14.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-plugin",
            "direct": true,
            "version": "^1.132.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": true,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": true,
            "version": "^4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": true,
            "version": "^2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "kandown",
            "direct": true,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "kandown",
            "direct": true,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": true,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": true,
            "version": "^0.545.0",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "^19.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "^19.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io",
            "direct": true,
            "version": "4.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-client",
            "direct": true,
            "version": "4.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": true,
            "version": "3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": true,
            "version": "^3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": true,
            "version": "^4.1.18",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "2.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "@blocknote/code-block",
            "direct": false,
            "version": "0.49.0",
            "ecosystem": "npm"
          },
          {
            "name": "@blocknote/core",
            "direct": false,
            "version": "0.49.0",
            "ecosystem": "npm"
          },
          {
            "name": "@blocknote/mantine",
            "direct": false,
            "version": "0.49.0",
            "ecosystem": "npm"
          },
          {
            "name": "@blocknote/react",
            "direct": false,
            "version": "0.49.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emoji-mart/data",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/core",
            "direct": false,
            "version": "1.7.5",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/dom",
            "direct": false,
            "version": "1.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/react",
            "direct": false,
            "version": "0.27.19",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/react-dom",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/utils",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "@handlewithcare/prosemirror-inputrules",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@mantine/core",
            "direct": false,
            "version": "8.3.18",
            "ecosystem": "npm"
          },
          {
            "name": "@mantine/hooks",
            "direct": false,
            "version": "8.3.18",
            "ecosystem": "npm"
          },
          {
            "name": "@mantine/utils",
            "direct": false,
            "version": "6.0.22",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/runtime",
            "direct": false,
            "version": "0.133.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.133.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-android-arm-eabi",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-android-arm64",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-darwin-arm64",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-darwin-x64",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-freebsd-x64",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-arm-musleabihf",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-arm64-gnu",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-arm64-musl",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-riscv64-gnu",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-riscv64-musl",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-s390x-gnu",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-x64-gnu",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-linux-x64-musl",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-openharmony-arm64",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-win32-arm64-msvc",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-win32-ia32-msvc",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxfmt/binding-win32-x64-msvc",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint-tsgolint/darwin-arm64",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint-tsgolint/darwin-x64",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint-tsgolint/linux-arm64",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint-tsgolint/linux-x64",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint-tsgolint/win32-arm64",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint-tsgolint/win32-x64",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-android-arm-eabi",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-android-arm64",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-darwin-arm64",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-darwin-x64",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-freebsd-x64",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-arm-musleabihf",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-riscv64-gnu",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-riscv64-musl",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-linux-x64-musl",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-openharmony-arm64",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-win32-ia32-msvc",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxlint/plugins",
            "direct": false,
            "version": "1.61.0",
            "ecosystem": "npm"
          },
          {
            "name": "@polka/url",
            "direct": false,
            "version": "1.0.0-next.29",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-compose-refs",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs-precompiled",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/primitive",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@socket.io/component-emitter",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tabler/icons",
            "direct": false,
            "version": "3.44.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/typography",
            "direct": false,
            "version": "^0.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/devtools-vite",
            "direct": false,
            "version": "latest",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-store",
            "direct": false,
            "version": "0.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/store",
            "direct": false,
            "version": "0.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/table-core",
            "direct": false,
            "version": "8.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/virtual-core",
            "direct": false,
            "version": "3.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/dom",
            "direct": false,
            "version": "^10.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/react",
            "direct": false,
            "version": "^16.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/core",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/core",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bold",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bold",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bubble-menu",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bubble-menu",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-code",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-code",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-floating-menu",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-floating-menu",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-horizontal-rule",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-horizontal-rule",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-italic",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-italic",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-paragraph",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-paragraph",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-strike",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-strike",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-text",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-text",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-underline",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-underline",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extensions",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extensions",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/pm",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/pm",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/react",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/react",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/cors",
            "direct": false,
            "version": "2.8.19",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "^22.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "19.2.16",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "19.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "^19.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "19.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "^19.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/use-sync-external-store",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/use-sync-external-store",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": false,
            "version": "^6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-core",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-darwin-arm64",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-darwin-x64",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-linux-arm64-gnu",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-linux-arm64-musl",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-linux-x64-gnu",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-linux-x64-musl",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-test",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-win32-arm64-msvc",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "@voidzero-dev/vite-plus-win32-x64-msvc",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "base64id",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node-es",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-mart",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io",
            "direct": false,
            "version": "6.6.8",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io-client",
            "direct": false,
            "version": "6.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io-parser",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-equals",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-nonce",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-embedded",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-format",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-dom",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-html",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-has-property",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-body-ok-link",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-element",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-minify-whitespace",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-phrasing",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-mdast",
            "direct": false,
            "version": "10.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-text",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-whitespace-sensitive-tag-names",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isomorphic.js",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "^28.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lib0",
            "direct": false,
            "version": "0.2.117",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-phrasing",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-core-commonmark",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-strikethrough",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-destination",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-label",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-title",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-whitespace",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-chunked",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-classify-character",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-combine-extensions",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-numeric-character-reference",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-string",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-html-tag-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-normalize-identifier",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-resolve-all",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-subtokenize",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mrmime",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.12",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "orderedmap",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "oxfmt",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "oxlint",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "oxlint-tsgolint",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pixelmatch",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pngjs",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.15",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-changeset",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-commands",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-dropcursor",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-gapcursor",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-highlight",
            "direct": false,
            "version": "0.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-history",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-inputrules",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-keymap",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-model",
            "direct": false,
            "version": "1.25.7",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-schema-list",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-state",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-tables",
            "direct": false,
            "version": "1.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-transform",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-view",
            "direct": false,
            "version": "1.41.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-devtools-core",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-icons",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-number-format",
            "direct": false,
            "version": "5.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll",
            "direct": false,
            "version": "2.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll-bar",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-style-singleton",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "react-textarea-autosize",
            "direct": false,
            "version": "8.5.9",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex-recursion",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-utilities",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-format",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-minify-whitespace",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-parse",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-remark",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-gfm",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-rehype",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rope-sequence",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "shell-quote",
            "direct": false,
            "version": "1.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sirv",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-adapter",
            "direct": false,
            "version": "2.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-parser",
            "direct": false,
            "version": "4.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "tabbable",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinypool",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "totalist",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-trailing-lines",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "^6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.24.6",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-find-after",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "use-callback-ref",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-composed-ref",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "use-isomorphic-layout-effect",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "use-latest",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "use-sidecar",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-sync-external-store",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "^8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plus",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "^4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-keyname",
            "direct": false,
            "version": "2.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "7.5.11",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlhttprequest-ssl",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "y-prosemirror",
            "direct": false,
            "version": "1.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "y-protocols",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "yjs",
            "direct": false,
            "version": "13.6.31",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 415,
        "direct_count": 29,
        "indirect_count": 386
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 8,
        "merged_prs": 42,
        "open_issues": 17,
        "closed_ratio": 0.717,
        "closed_issues": 43,
        "closed_unmerged_prs": 26
      },
      "bus_factor": 1,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "vava-nessa",
          "commits": 513,
          "avatar_url": "https://avatars.githubusercontent.com/u/5466264?v=4"
        },
        {
          "type": "User",
          "login": "PhucTruong-ctrl",
          "commits": 17,
          "avatar_url": "https://avatars.githubusercontent.com/u/21700150?v=4"
        },
        {
          "type": "User",
          "login": "erwinh22",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/6641858?v=4"
        },
        {
          "type": "User",
          "login": "chindris-mihai-alexandru",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/12643176?v=4"
        },
        {
          "type": "User",
          "login": "whit3rabbit",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/12357518?v=4"
        },
        {
          "type": "User",
          "login": "serajbaltu",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/100094038?v=4"
        },
        {
          "type": "User",
          "login": "MoriDanWork",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/55363096?v=4"
        },
        {
          "type": "User",
          "login": "stgreenb",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/18483964?v=4"
        },
        {
          "type": "User",
          "login": "skylaweber",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/172871734?v=4"
        },
        {
          "type": "User",
          "login": "kwpale",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/22188849?v=4"
        }
      ],
      "contributors_sampled": 10,
      "top_contributor_share": 0.913
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "check-discord-link.yml",
        "commit-log.yml",
        "discord-issues.yml",
        "discord-prs.yml",
        "docker.yml",
        "release.yml",
        "security-audit.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "biome.json"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "3 out of 3 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": 1,
            "reason": "Found 3/30 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 3 contributing companies or organizations -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "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": 9,
            "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 13 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": 10,
            "reason": "security policy file 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": 8,
            "reason": "2 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "fc83df1abee1b8e5e755f5d4b97caeea8d5ef701",
        "ran_at": "2026-07-23T19:59:36Z",
        "aggregate_score": 4.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-23T13:25:57Z",
      "oldest_open_prs": [
        {
          "number": 125,
          "created_at": "2026-06-22T04:27:57Z",
          "last_comment_at": "2026-06-22T04:28:00Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 130,
          "created_at": "2026-06-29T04:26:59Z",
          "last_comment_at": "2026-06-29T04:27:02Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 131,
          "created_at": "2026-06-29T04:27:12Z",
          "last_comment_at": "2026-06-29T04:27:15Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 134,
          "created_at": "2026-07-06T04:26:48Z",
          "last_comment_at": "2026-07-06T04:26:52Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 135,
          "created_at": "2026-07-06T04:27:06Z",
          "last_comment_at": "2026-07-06T04:27:08Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 136,
          "created_at": "2026-07-06T04:27:15Z",
          "last_comment_at": "2026-07-06T04:27:18Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 138,
          "created_at": "2026-07-20T04:32:15Z",
          "last_comment_at": "2026-07-20T04:32:18Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 139,
          "created_at": "2026-07-22T07:56:43Z",
          "last_comment_at": "2026-07-22T07:56:48Z",
          "last_comment_author": "vercel"
        }
      ],
      "last_merged_pr_at": "2026-06-27T15:34:34Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": [
        {
          "number": 18,
          "created_at": "2026-02-25T02:15:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 21,
          "created_at": "2026-02-26T13:45:01Z",
          "last_comment_at": "2026-03-22T05:28:40Z",
          "last_comment_author": "Rishabh-Bajpai"
        },
        {
          "number": 27,
          "created_at": "2026-02-27T20:21:25Z",
          "last_comment_at": "2026-03-13T20:17:29Z",
          "last_comment_author": "iTzFaisal"
        },
        {
          "number": 30,
          "created_at": "2026-03-03T15:37:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 35,
          "created_at": "2026-03-07T15:01:15Z",
          "last_comment_at": "2026-03-29T10:20:05Z",
          "last_comment_author": "Nsomnia"
        },
        {
          "number": 51,
          "created_at": "2026-03-31T08:59:38Z",
          "last_comment_at": "2026-03-31T09:37:58Z",
          "last_comment_author": "vava-nessa"
        },
        {
          "number": 75,
          "created_at": "2026-04-21T06:46:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 101,
          "created_at": "2026-05-28T15:40:11Z",
          "last_comment_at": "2026-05-28T15:44:53Z",
          "last_comment_author": "karneaud"
        },
        {
          "number": 109,
          "created_at": "2026-06-02T23:07:05Z",
          "last_comment_at": "2026-06-07T23:13:36Z",
          "last_comment_author": "karneaud"
        },
        {
          "number": 116,
          "created_at": "2026-06-10T17:58:55Z",
          "last_comment_at": "2026-06-11T11:56:02Z",
          "last_comment_author": "vava-nessa"
        },
        {
          "number": 117,
          "created_at": "2026-06-10T17:59:07Z",
          "last_comment_at": "2026-06-11T12:25:50Z",
          "last_comment_author": "vava-nessa"
        },
        {
          "number": 118,
          "created_at": "2026-06-11T14:59:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 119,
          "created_at": "2026-06-12T17:15:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 124,
          "created_at": "2026-06-21T18:57:54Z",
          "last_comment_at": "2026-06-23T05:38:02Z",
          "last_comment_author": "houleixx"
        },
        {
          "number": 133,
          "created_at": "2026-07-04T06:03:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 137,
          "created_at": "2026-07-08T18:30:37Z",
          "last_comment_at": "2026-07-08T18:46:17Z",
          "last_comment_author": "stgreenb"
        },
        {
          "number": 140,
          "created_at": "2026-07-22T21:35:11Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/vava-nessa/free-coding-models",
    "host": "github.com",
    "name": "free-coding-models",
    "owner": "vava-nessa"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 71,
      "inputs": {
        "security": 58,
        "vitality": 87,
        "community": 63,
        "governance": 59,
        "engineering": 86
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 87,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "commits_last_year": 599,
              "human_commit_share": 0.92,
              "days_since_last_push": 3,
              "active_weeks_last_year": 21
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "21/52 weeks with commits",
                "points": 14.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 21
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "599 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 599
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 13 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": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v0.5.50",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 1.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "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 ~1.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 1.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 63,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "forks": 238,
              "stars": 2186,
              "watchers": 18,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2,186 stars",
                "points": 54.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2186
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "238 forks",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 238
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "18 watchers",
                "points": 6.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "packages": [
                "free-coding-models"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 5344
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "5,344 downloads/month across npm",
                "points": 49.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 5344,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 59,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 10,
              "top_contributor_share": 0.913
            },
            "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 91% of commits",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 91
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "10 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "merged_prs": 42,
              "open_issues": 17,
              "closed_issues": 43,
              "issue_closed_ratio": 0.717,
              "closed_unmerged_prs": 26
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "72% of issues closed",
                "points": 33.5,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 72
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "42/68 decided PRs merged",
                "points": 23.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 42,
                      "decided": 68
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 3/30 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "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": 56,
            "inputs": {
              "followers": 123,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "vava-nessa",
              "public_repos": 10,
              "account_age_days": 4693
            },
            "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": "123 followers of vava-nessa",
                "points": 15.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 123,
                      "login": "vava-nessa"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "10 public repos, account ~12 yr old",
                "points": 19.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 10
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 12
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "free-coding-models"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "214 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 214
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 86,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "7 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "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": "biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ai",
                "deepseek",
                "free",
                "free-ai",
                "freeai",
                "gpt",
                "gptoss",
                "kimi",
                "nim",
                "nvidia",
                "nvidia-nim",
                "nvidia-nim-api",
                "nvidia-nims",
                "openclaw",
                "opencode"
              ],
              "has_wiki": false,
              "homepage": "https://freecodingmodels.vercel.app",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://freecodingmodels.vercel.app",
                "points": 15,
                "status": "met",
                "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": "15 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "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": 58,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 48,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "3 out of 3 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 3/30 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 13 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 detected",
                "points": 5,
                "status": "met",
                "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": "2 existing vulnerabilities detected",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 393 resolved dependencies against OSV; 22 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 393
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 22
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 2,
              "affected_packages": 2,
              "assessed_packages": 393,
              "unassessed_packages": 22,
              "affected_by_severity": "high 2",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 393,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 6
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 68,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "moderate",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.446,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 14156
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "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": "41 of 92 human commits state their intent (structured subject or explanatory body)",
                "points": 23.8,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 41,
                      "sampled": 92
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "website/tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.08
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "website/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "website/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "8 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 8,
                      "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": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "primary_language": "HTML",
              "largest_source_bytes": 279662,
              "source_files_sampled": 171,
              "oversized_source_files": 5
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "HTML with type-check config (website/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "website/tsconfig.json",
                      "language": "HTML"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "5/171 source files over 60KB",
                "points": 53.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 171,
                      "oversized": 5
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'fcm-pi' from its registry",
    "Could not fetch npm package 'fcm-opencode' from its registry",
    "deps.dev does not index npm:free-coding-models@0.5.50; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T19:59:52.501005Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/v/vava-nessa/free-coding-models.svg",
  "full_name": "vava-nessa/free-coding-models",
  "license_state": "custom",
  "license_spdx": null
}

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

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

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