Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-24 15:18 UTC

jannskiee / floe

secure, encrypted P2P file transfer. No accounts, no file storage, end-to-end encrypted.

TypeScript · GoMIT★ 196 estrellas⑂ 9 forksdesde ene 2026Ver en GitHub ↗

jannskiee/floe tiene un índice de salud de 67 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es AI Readiness (91/100) y la más baja, Sustainability & Governance (53/100). Se actualizó por última vez hace 1 día. Una sola persona concentra la mayor parte del trabajo reciente.

67
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

67
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

JC ParedesCuenta personal
6 seguidores5 repositorios públicosdesde jun 2022

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/jannskiee/floev1.8.0-20hace 1 día
npmp2p-fileshareapunta a otro repositorio; no se puntúa1.0.0821hace 2216 días

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

79Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 1 días
8.3/36Cadencia de commits — 12/52 semanas con commits
18/18Volumen de commits — 355 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year355
human_commit_share0,92
days_since_last_push1
active_weeks_last_year12
Cómo se puntúa
27/27Publica versiones — 20 versiones publicadas
36/36Recencia de las versiones — última versión hace 1 días
27/27Cadencia de publicación — una versión cada ~3,4 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count20
latest_release_tagv1.8.0
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases3,4

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

57Moderado · 18% del índice global
Cómo se puntúa
37.1/60Estrellas — 196 estrellas
7.5/25Forks — 9 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks9
stars196
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

53Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
36.3/38.3Aceptación de PR — 185/195 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/24 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs185
open_issues0
closed_issues1
issue_closed_ratio1
closed_unmerged_prs10
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
6.1/25Alcance del propietario — 6 seguidores de jannskiee
13.8/25Trayectoria — 5 repos públicos, cuenta de ~4 años
Datos de entrada utilizados
followers6
owner_typeUser
is_verified
owner_loginjannskiee
public_repos5
account_age_days1492
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 1 días
20/20Historial de versiones — 20 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/jannskiee/floe
ecosystemsgo
any_deprecatedno
min_days_since_publish1

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

89Excelente · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — eslint.config.mjs
0/9.6Hooks de pre-commit
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 28 out of 30 merged PRs checked by a CI test -- score normalized to 9
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://floe.one
10/10Descripción del repositorio
10/10Topics — 14 topics
10/10Wiki
Datos de entrada utilizados
topicsfile-sharing, file-transfer, nextjs, open-source, peer-to-peer, socket-io, typescript, webrtc, nodesjs, privacy, react, encryption, golang, p2p
has_wiki
homepagehttps://floe.one
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

57Moderado · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.2/2.5CI-Tests — 28 out of 30 merged PRs checked by a CI test -- score normalized to 9
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/24 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
3.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
3/5SAST — SAST tool is not run on all commits -- score normalized to 6
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0/7.5Vulnerabilities — 12 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate6
Cómo se puntúa
26.6/35Dependencias directas libres de avisos conocidos — 1 afectados: ip-address 6.3.0 (moderate)
2.6/25Dependencias indirectas libres de avisos conocidos — 7 afectados: node-forge 0.9.2 (critical 9.8), async 3.2.0 (high 7.8), elliptic 6.6.1 (high 7.3), +4 más
17.4/40Sin avisos pendientes — 7 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 2138 días
Datos de entrada utilizados
sourceosv
advisories22
affected_packages8
assessed_packages354
unassessed_packages0
affected_by_severitycritical 1, high 5, moderate 2
direct_affected_packages1
Se cotejó el cierre de dependencias en tiempo de ejecución de npm:p2p-fileshare@1.0.0 —lo que arrastra la instalación del paquete publicado—: 354 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

91Excelente · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 92 de 92 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes12.362
Cómo se puntúa
12.6/18Arranque con un solo comando — cli/go.mod (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
11/11Configuración de lint / formato — eslint.config.mjs
11/11Verificación estática de tipos — client/tsconfig.json
10/10Entorno reproducible — Dockerfile, lockfile
10/10Práctica demostrada con agentes — 14 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 5 de los últimos 100 commits son actualizaciones automáticas de dependencias
7/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum, package-lock.json, pnpm-lock.yaml
has_dockerfile
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configsclient/tsconfig.json
agent_commit_share0,14
toolchain_manifestscli/go.mod
dependency_bot_commit_share0,05
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
55/55Tamaños de archivo manejables — 0/114 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes54.913
source_files_sampled114
oversized_source_files0

Datos clave

196estrellas de GitHub
1contribuidores
355commits en los últimos 12 meses
1días desde el último push
20versiones publicadas
1factor bus
0issues abiertas
Go, npmecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • npm package 'p2p-fileshare' points at a different repository (https://github.com/fluencelabs/p2p-fileshare); excluded from ecosystem scoring

Más detalle

Historial de estrellas y forks 0 ★ / 9 ⇿
0Estrellas
9Forks
18Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

0246810942026-042026-062026-07
Mayor 1Menor 7Parche 10
OpenSSF Scorecard 6.0 / 10
6.0agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-24 15:18 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
9CI-Tests28 out of 30 merged PRs checked by a CI test -- score normalized to 9
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/24 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
7Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 7
6SASTSAST tool is not run on all commits -- score normalized to 6
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities12 existing vulnerabilities detected
Dependencias directas 28
RegistroPaqueteRestricción de versiónManifiesto
Gogithub.com/google/uuidv1.6.0cli/go.mod
Gogithub.com/gorilla/websocketv1.5.3cli/go.mod
Gogithub.com/pion/webrtc/v4v4.2.17cli/go.mod
Gogithub.com/schollz/progressbar/v3v3.19.1cli/go.mod
Gogithub.com/spf13/cobrav1.10.2cli/go.mod
npm@number-flow/react^0.6.2client/package.json
npm@radix-ui/react-accordion^1.2.16client/package.json
npm@radix-ui/react-progress^1.1.12client/package.json
npm@radix-ui/react-slot^1.3.0client/package.json
npm@sentry/nextjs^10.66.0client/package.json
npmclass-variance-authority^0.7.1client/package.json
npmclsx^2.1.1client/package.json
npmfflate^0.8.2client/package.json
npmlucide-react^1.25.0client/package.json
npmnext16.2.10client/package.json
npmqrcode.react^4.2.0client/package.json
npmreact19.2.7client/package.json
npmreact-dom19.2.7client/package.json
npmsimple-peer^9.11.1client/package.json
npmsocket.io-client^4.8.3client/package.json
npmtailwind-merge^3.4.0client/package.json
npmuuid^14.0.1client/package.json
npmcors^2.8.6server/package.json
npmdotenv^16.4.7server/package.json
npmexpress^5.2.1server/package.json
npmhelmet^8.3.0server/package.json
npmsocket.io^4.8.3server/package.json
npmws^8.21.1server/package.json
Todas las dependencias 791

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 30 paquetes directos y 761 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
Gogithub.com/google/uuidv1.6.0directa
Gogithub.com/gorilla/websocketv1.5.3directa
Gogithub.com/pion/webrtc/v4v4.2.15directa
Gogithub.com/schollz/progressbar/v3v3.19.0directa
Gogithub.com/spf13/cobrav1.10.2directa
npm@number-flow/react0.6.2directa
npm@radix-ui/react-accordion1.2.16directa
npm@radix-ui/react-progress1.1.12directa
npm@radix-ui/react-slot1.3.0directa
npm@sentry/nextjs10.66.0directa
npmclass-variance-authority0.7.1directa
npmclsx2.1.1directa
npmcors2.8.6directa
npmdotenv16.6.1directa
npmdotenv17.4.2directa
npmexpress5.2.1directa
npmfflate0.8.3directa
npmhelmet8.3.0directa
npmlucide-react1.25.0directa
npmnext16.2.10directa
npmqrcode.react4.2.0directa
npmreact19.2.7directa
npmreact-dom19.2.7directa
npmsimple-peer9.11.1directa
npmsocket.io4.8.3directa
npmsocket.io-client4.8.3directa
npmtailwind-merge3.6.0directa
npmuuid14.0.1directa
npmws8.21.0directa
npmws8.21.1directa
Gogithub.com/inconshreveable/mousetrapv1.1.0indirecta
Gogithub.com/mitchellh/colorstringv0.0.0-20190213212951-d06e56a500dbindirecta
Gogithub.com/pion/datachannelv1.6.0indirecta
Gogithub.com/pion/dtls/v3v3.1.4indirecta
Gogithub.com/pion/ice/v4v4.2.7indirecta
Gogithub.com/pion/interceptorv0.1.45indirecta
Gogithub.com/pion/loggingv0.2.4indirecta
Gogithub.com/pion/mdns/v2v2.1.0indirecta
Gogithub.com/pion/randutilv0.1.0indirecta
Gogithub.com/pion/rtcpv1.2.16indirecta
Gogithub.com/pion/rtpv1.10.2indirecta
Gogithub.com/pion/sctpv1.10.0indirecta
Gogithub.com/pion/sdp/v3v3.0.18indirecta
Gogithub.com/pion/srtp/v3v3.0.11indirecta
Gogithub.com/pion/stun/v3v3.1.5indirecta
Gogithub.com/pion/transport/v4v4.0.2indirecta
Gogithub.com/pion/turn/v5v5.0.9indirecta
Gogithub.com/rivo/unisegv0.4.7indirecta
Gogithub.com/spf13/pflagv1.0.9indirecta
Gogithub.com/wlynxg/anetv0.0.5indirecta
Gogolang.org/x/cryptov0.53.0indirecta
Gogolang.org/x/netv0.56.0indirecta
Gogolang.org/x/sysv0.46.0indirecta
Gogolang.org/x/termv0.44.0indirecta
Gogolang.org/x/timev0.14.0indirecta
npm@alloc/quick-lru5.2.0indirecta
npm@apm-js-collab/code-transformer0.18.0indirecta
npm@apm-js-collab/code-transformer-bundler-plugins0.6.2indirecta
npm@apm-js-collab/tracing-hooks0.13.0indirecta
npm@babel/code-frame7.29.7indirecta
npm@babel/compat-data7.29.7indirecta
npm@babel/core7.29.7indirecta
npm@babel/generator7.29.7indirecta
npm@babel/helper-compilation-targets7.29.7indirecta
npm@babel/helper-globals7.29.7indirecta
npm@babel/helper-module-imports7.29.7indirecta
npm@babel/helper-module-transforms7.29.7indirecta
npm@babel/helper-string-parser7.29.7indirecta
npm@babel/helper-validator-identifier7.29.7indirecta
npm@babel/helper-validator-option7.29.7indirecta
npm@babel/helpers7.29.7indirecta
npm@babel/parser7.29.7indirecta
npm@babel/template7.29.7indirecta
npm@babel/traverse7.29.7indirecta
npm@babel/types7.29.7indirecta
npm@emnapi/core1.10.0indirecta
npm@emnapi/runtime1.10.0indirecta
npm@emnapi/runtime1.11.2indirecta
npm@emnapi/wasi-threads1.2.1indirecta
npm@esbuild/aix-ppc640.28.1indirecta
npm@esbuild/android-arm0.28.1indirecta
npm@esbuild/android-arm640.28.1indirecta
npm@esbuild/android-x640.28.1indirecta
npm@esbuild/darwin-arm640.28.1indirecta
npm@esbuild/darwin-x640.28.1indirecta
npm@esbuild/freebsd-arm640.28.1indirecta
npm@esbuild/freebsd-x640.28.1indirecta
npm@esbuild/linux-arm0.28.1indirecta
npm@esbuild/linux-arm640.28.1indirecta
npm@esbuild/linux-ia320.28.1indirecta
npm@esbuild/linux-loong640.28.1indirecta
npm@esbuild/linux-mips64el0.28.1indirecta
npm@esbuild/linux-ppc640.28.1indirecta
npm@esbuild/linux-riscv640.28.1indirecta
npm@esbuild/linux-s390x0.28.1indirecta
npm@esbuild/linux-x640.28.1indirecta
npm@esbuild/netbsd-arm640.28.1indirecta
npm@esbuild/netbsd-x640.28.1indirecta
npm@esbuild/openbsd-arm640.28.1indirecta
npm@esbuild/openbsd-x640.28.1indirecta
npm@esbuild/openharmony-arm640.28.1indirecta
npm@esbuild/sunos-x640.28.1indirecta
npm@esbuild/win32-arm640.28.1indirecta
npm@esbuild/win32-ia320.28.1indirecta
npm@esbuild/win32-x640.28.1indirecta
npm@eslint-community/eslint-utils4.9.1indirecta
npm@eslint-community/regexpp4.12.2indirecta
npm@eslint/config-array0.21.2indirecta
npm@eslint/config-helpers0.4.2indirecta
npm@eslint/core0.17.0indirecta
npm@eslint/eslintrc3.3.5indirecta
npm@eslint/js9.39.4indirecta
npm@eslint/object-schema2.1.7indirecta
npm@eslint/plugin-kit0.4.1indirecta
npm@humanfs/core0.19.2indirecta
npm@humanfs/node0.16.8indirecta
npm@humanfs/types0.15.0indirecta
npm@humanwhocodes/module-importer1.0.1indirecta
npm@humanwhocodes/retry0.4.3indirecta
npm@img/colour1.1.0indirecta
npm@img/sharp-darwin-arm640.34.5indirecta
npm@img/sharp-darwin-x640.34.5indirecta
npm@img/sharp-libvips-darwin-arm641.2.4indirecta
npm@img/sharp-libvips-darwin-x641.2.4indirecta
npm@img/sharp-libvips-linux-arm1.2.4indirecta
npm@img/sharp-libvips-linux-arm641.2.4indirecta
npm@img/sharp-libvips-linux-ppc641.2.4indirecta
npm@img/sharp-libvips-linux-riscv641.2.4indirecta
npm@img/sharp-libvips-linux-s390x1.2.4indirecta
npm@img/sharp-libvips-linux-x641.2.4indirecta
npm@img/sharp-libvips-linuxmusl-arm641.2.4indirecta
npm@img/sharp-libvips-linuxmusl-x641.2.4indirecta
npm@img/sharp-linux-arm0.34.5indirecta
npm@img/sharp-linux-arm640.34.5indirecta
npm@img/sharp-linux-ppc640.34.5indirecta
npm@img/sharp-linux-riscv640.34.5indirecta
npm@img/sharp-linux-s390x0.34.5indirecta
npm@img/sharp-linux-x640.34.5indirecta
npm@img/sharp-linuxmusl-arm640.34.5indirecta
npm@img/sharp-linuxmusl-x640.34.5indirecta
npm@img/sharp-wasm320.34.5indirecta
npm@img/sharp-win32-arm640.34.5indirecta
npm@img/sharp-win32-ia320.34.5indirecta
npm@img/sharp-win32-x640.34.5indirecta
npm@jridgewell/gen-mapping0.3.13indirecta
npm@jridgewell/remapping2.3.5indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/source-map0.3.11indirecta
npm@jridgewell/sourcemap-codec1.5.5indirecta
npm@jridgewell/trace-mapping0.3.31indirecta
npm@napi-rs/wasm-runtime1.1.6indirecta
npm@next/env16.2.10indirecta
npm@next/eslint-plugin-next16.2.10indirecta
npm@next/swc-darwin-arm6416.2.10indirecta
npm@next/swc-darwin-x6416.2.10indirecta
npm@next/swc-linux-arm64-gnu16.2.10indirecta
npm@next/swc-linux-arm64-musl16.2.10indirecta
npm@next/swc-linux-x64-gnu16.2.10indirecta
npm@next/swc-linux-x64-musl16.2.10indirecta
npm@next/swc-win32-arm64-msvc16.2.10indirecta
npm@next/swc-win32-x64-msvc16.2.10indirecta
npm@nodelib/fs.scandir2.1.5indirecta
npm@nodelib/fs.stat2.0.5indirecta
npm@nodelib/fs.walk1.2.8indirecta
npm@nolyfill/is-core-module1.0.39indirecta
npm@opentelemetry/api1.9.1indirecta
npm@opentelemetry/api-logs0.220.0indirecta
npm@opentelemetry/core2.9.0indirecta
npm@opentelemetry/instrumentation0.220.0indirecta
npm@opentelemetry/resources2.9.0indirecta
npm@opentelemetry/sdk-trace2.9.0indirecta
npm@opentelemetry/sdk-trace-base2.9.0indirecta
npm@opentelemetry/semantic-conventions1.43.0indirecta
npm@playwright/test1.61.1indirecta
npm@radix-ui/primitive1.1.5indirecta
npm@radix-ui/react-collapsible1.1.16indirecta
npm@radix-ui/react-collection1.1.12indirecta
npm@radix-ui/react-compose-refs1.1.3indirecta
npm@radix-ui/react-context1.2.0indirecta
npm@radix-ui/react-direction1.1.2indirecta
npm@radix-ui/react-id1.1.2indirecta
npm@radix-ui/react-presence1.1.7indirecta
npm@radix-ui/react-primitive2.1.7indirecta
npm@radix-ui/react-use-controllable-state1.2.3indirecta
npm@radix-ui/react-use-effect-event0.0.3indirecta
npm@radix-ui/react-use-layout-effect1.1.2indirecta
npm@rollup/plugin-commonjs28.0.1indirecta
npm@rollup/pluginutils5.4.0indirecta
npm@rollup/rollup-android-arm-eabi4.62.2indirecta
npm@rollup/rollup-android-arm644.62.2indirecta
npm@rollup/rollup-darwin-arm644.62.2indirecta
npm@rollup/rollup-darwin-x644.62.2indirecta
npm@rollup/rollup-freebsd-arm644.62.2indirecta
npm@rollup/rollup-freebsd-x644.62.2indirecta
npm@rollup/rollup-linux-arm-gnueabihf4.62.2indirecta
npm@rollup/rollup-linux-arm-musleabihf4.62.2indirecta
npm@rollup/rollup-linux-arm64-gnu4.62.2indirecta
npm@rollup/rollup-linux-arm64-musl4.62.2indirecta
npm@rollup/rollup-linux-loong64-gnu4.62.2indirecta
npm@rollup/rollup-linux-loong64-musl4.62.2indirecta
npm@rollup/rollup-linux-ppc64-gnu4.62.2indirecta
npm@rollup/rollup-linux-ppc64-musl4.62.2indirecta
npm@rollup/rollup-linux-riscv64-gnu4.62.2indirecta
npm@rollup/rollup-linux-riscv64-musl4.62.2indirecta
npm@rollup/rollup-linux-s390x-gnu4.62.2indirecta
npm@rollup/rollup-linux-x64-gnu4.62.2indirecta
npm@rollup/rollup-linux-x64-musl4.62.2indirecta
npm@rollup/rollup-openbsd-x644.62.2indirecta
npm@rollup/rollup-openharmony-arm644.62.2indirecta
npm@rollup/rollup-win32-arm64-msvc4.62.2indirecta
npm@rollup/rollup-win32-ia32-msvc4.62.2indirecta
npm@rollup/rollup-win32-x64-gnu4.62.2indirecta
npm@rollup/rollup-win32-x64-msvc4.62.2indirecta
npm@rtsao/scc1.1.0indirecta
npm@sentry/babel-plugin-component-annotate5.3.0indirecta
npm@sentry/browser10.66.0indirecta
npm@sentry/browser-utils10.66.0indirecta
npm@sentry/bundler-plugin-core5.3.0indirecta
npm@sentry/bundler-plugins10.66.0indirecta
npm@sentry/cli2.58.6indirecta
npm@sentry/cli-darwin2.58.6indirecta
npm@sentry/cli-linux-arm2.58.6indirecta
npm@sentry/cli-linux-arm642.58.6indirecta
npm@sentry/cli-linux-i6862.58.6indirecta
npm@sentry/cli-linux-x642.58.6indirecta
npm@sentry/cli-win32-arm642.58.6indirecta
npm@sentry/cli-win32-i6862.58.6indirecta
npm@sentry/cli-win32-x642.58.6indirecta
npm@sentry/conventions0.16.0indirecta
npm@sentry/core10.66.0indirecta
npm@sentry/feedback10.66.0indirecta
npm@sentry/node10.66.0indirecta
npm@sentry/node-core10.66.0indirecta
npm@sentry/opentelemetry10.66.0indirecta
npm@sentry/react10.66.0indirecta
npm@sentry/replay10.66.0indirecta
npm@sentry/replay-canvas10.66.0indirecta
npm@sentry/server-utils10.66.0indirecta
npm@sentry/vercel-edge10.66.0indirecta
npm@sentry/webpack-plugin5.4.0indirecta
npm@socket.io/component-emitter3.1.2indirecta
npm@swc/helpers0.5.15indirecta
npm@tailwindcss/node4.3.3indirecta
npm@tailwindcss/oxide4.3.3indirecta
npm@tailwindcss/oxide-android-arm644.3.3indirecta
npm@tailwindcss/oxide-darwin-arm644.3.3indirecta
npm@tailwindcss/oxide-darwin-x644.3.3indirecta
npm@tailwindcss/oxide-freebsd-x644.3.3indirecta
npm@tailwindcss/oxide-linux-arm-gnueabihf4.3.3indirecta
npm@tailwindcss/oxide-linux-arm64-gnu4.3.3indirecta
npm@tailwindcss/oxide-linux-arm64-musl4.3.3indirecta
npm@tailwindcss/oxide-linux-x64-gnu4.3.3indirecta
npm@tailwindcss/oxide-linux-x64-musl4.3.3indirecta
npm@tailwindcss/oxide-wasm32-wasi4.3.3indirecta
npm@tailwindcss/oxide-win32-arm64-msvc4.3.3indirecta
npm@tailwindcss/oxide-win32-x64-msvc4.3.3indirecta
npm@tailwindcss/postcss4.3.3indirecta
npm@tybys/wasm-util0.10.3indirecta
npm@types/chai5.2.3indirecta
npm@types/cors2.8.19indirecta
npm@types/deep-eql4.0.2indirecta
npm@types/estree1.0.9indirecta
npm@types/json-schema7.0.15indirecta
npm@types/json50.0.29indirecta
npm@types/node25.0.3indirecta
npm@types/node26.1.1indirecta
npm@types/react19.2.17indirecta
npm@types/react-dom19.2.3indirecta
npm@types/simple-peer9.11.9indirecta
npm@types/uuid10.0.0indirecta
npm@types/ws8.18.1indirecta
npm@typescript-eslint/eslint-plugin8.64.0indirecta
npm@typescript-eslint/parser8.64.0indirecta
npm@typescript-eslint/project-service8.64.0indirecta
npm@typescript-eslint/scope-manager8.64.0indirecta
npm@typescript-eslint/tsconfig-utils8.64.0indirecta
npm@typescript-eslint/type-utils8.64.0indirecta
npm@typescript-eslint/types8.64.0indirecta
npm@typescript-eslint/typescript-estree8.64.0indirecta
npm@typescript-eslint/utils8.64.0indirecta
npm@typescript-eslint/visitor-keys8.64.0indirecta
npm@unrs/resolver-binding-android-arm-eabi1.12.2indirecta
npm@unrs/resolver-binding-android-arm641.12.2indirecta
npm@unrs/resolver-binding-darwin-arm641.12.2indirecta
npm@unrs/resolver-binding-darwin-x641.12.2indirecta
npm@unrs/resolver-binding-freebsd-x641.12.2indirecta
npm@unrs/resolver-binding-linux-arm-gnueabihf1.12.2indirecta
npm@unrs/resolver-binding-linux-arm-musleabihf1.12.2indirecta
npm@unrs/resolver-binding-linux-arm64-gnu1.12.2indirecta
npm@unrs/resolver-binding-linux-arm64-musl1.12.2indirecta
npm@unrs/resolver-binding-linux-loong64-gnu1.12.2indirecta
npm@unrs/resolver-binding-linux-loong64-musl1.12.2indirecta
npm@unrs/resolver-binding-linux-ppc64-gnu1.12.2indirecta
npm@unrs/resolver-binding-linux-riscv64-gnu1.12.2indirecta
npm@unrs/resolver-binding-linux-riscv64-musl1.12.2indirecta
npm@unrs/resolver-binding-linux-s390x-gnu1.12.2indirecta
npm@unrs/resolver-binding-linux-x64-gnu1.12.2indirecta
npm@unrs/resolver-binding-linux-x64-musl1.12.2indirecta
npm@unrs/resolver-binding-openharmony-arm641.12.2indirecta
npm@unrs/resolver-binding-wasm32-wasi1.12.2indirecta
npm@unrs/resolver-binding-win32-arm64-msvc1.12.2indirecta
npm@unrs/resolver-binding-win32-ia32-msvc1.12.2indirecta
npm@unrs/resolver-binding-win32-x64-msvc1.12.2indirecta
npm@vitest/expect3.2.6indirecta
npm@vitest/mocker3.2.6indirecta
npm@vitest/pretty-format3.2.6indirecta
npm@vitest/runner3.2.6indirecta
npm@vitest/snapshot3.2.6indirecta
npm@vitest/spy3.2.6indirecta
npm@vitest/utils3.2.6indirecta
npm@webassemblyjs/ast1.14.1indirecta
npm@webassemblyjs/floating-point-hex-parser1.13.2indirecta
npm@webassemblyjs/helper-api-error1.13.2indirecta
npm@webassemblyjs/helper-buffer1.14.1indirecta
npm@webassemblyjs/helper-numbers1.13.2indirecta
npm@webassemblyjs/helper-wasm-bytecode1.13.2indirecta
npm@webassemblyjs/helper-wasm-section1.14.1indirecta
npm@webassemblyjs/ieee7541.13.2indirecta
npm@webassemblyjs/leb1281.13.2indirecta
npm@webassemblyjs/utf81.13.2indirecta
npm@webassemblyjs/wasm-edit1.14.1indirecta
npm@webassemblyjs/wasm-gen1.14.1indirecta
npm@webassemblyjs/wasm-opt1.14.1indirecta
npm@webassemblyjs/wasm-parser1.14.1indirecta
npm@webassemblyjs/wast-printer1.14.1indirecta
npm@xtuc/ieee7541.2.0indirecta
npm@xtuc/long4.2.2indirecta
npmaccepts1.3.8indirecta
npmaccepts2.0.0indirecta
npmacorn8.17.0indirecta
npmacorn-import-phases1.0.4indirecta
npmacorn-jsx5.3.2indirecta
npmagent-base6.0.2indirecta
npmajv6.15.0indirecta
npmajv8.20.0indirecta
npmajv-formats2.1.1indirecta
npmajv-keywords5.1.0indirecta
npmansi-styles4.3.0indirecta
npmanymatch3.1.3indirecta
npmargparse2.0.1indirecta
npmaria-query5.3.2indirecta
npmarray-buffer-byte-length1.0.2indirecta
npmarray-includes3.1.9indirecta
npmarray.prototype.findlast1.2.5indirecta
npmarray.prototype.findlastindex1.2.6indirecta
npmarray.prototype.flat1.3.3indirecta
npmarray.prototype.flatmap1.3.3indirecta
npmarray.prototype.tosorted1.1.4indirecta
npmarraybuffer.prototype.slice1.0.4indirecta
npmassertion-error2.0.1indirecta
npmast-types-flow0.0.8indirecta
npmastring1.9.0indirecta
npmasync-function1.0.0indirecta
npmavailable-typed-arrays1.0.7indirecta
npmaxe-core4.12.1indirecta
npmaxobject-query4.1.0indirecta
npmbalanced-match1.0.2indirecta
npmbalanced-match4.0.4indirecta
npmbase64-js1.5.1indirecta
npmbase64id2.0.0indirecta
npmbaseline-browser-mapping2.10.43indirecta
npmbinary-extensions2.3.0indirecta
npmbody-parser2.3.0indirecta
npmbrace-expansion1.1.16indirecta
npmbrace-expansion5.0.7indirecta
npmbraces3.0.3indirecta
npmbrowserslist4.28.6indirecta
npmbuffer6.0.3indirecta
npmbuffer-from1.1.2indirecta
npmbytes3.1.2indirecta
npmcac6.7.14indirecta
npmcall-bind1.0.9indirecta
npmcall-bind-apply-helpers1.0.2indirecta
npmcall-bound1.0.4indirecta
npmcallsites3.1.0indirecta
npmcaniuse-lite1.0.30001806indirecta
npmchai5.3.3indirecta
npmchalk4.1.2indirecta
npmcheck-error2.1.3indirecta
npmchokidar3.6.0indirecta
npmchrome-trace-event1.0.4indirecta
npmcjs-module-lexer2.2.0indirecta
npmclient-only0.0.1indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcommander2.20.3indirecta
npmcommondir1.0.1indirecta
npmconcat-map0.0.1indirecta
npmcontent-disposition1.0.1indirecta
npmcontent-type1.0.5indirecta
npmcontent-type2.0.0indirecta
npmconvert-source-map2.0.0indirecta
npmcookie0.7.2indirecta
npmcookie-signature1.2.2indirecta
npmcross-spawn7.0.6indirecta
npmcsstype3.2.3indirecta
npmdamerau-levenshtein1.0.8indirecta
npmdata-view-buffer1.0.2indirecta
npmdata-view-byte-length1.0.2indirecta
npmdata-view-byte-offset1.0.1indirecta
npmdebug3.2.7indirecta
npmdebug4.4.3indirecta
npmdeep-eql5.0.2indirecta
npmdeep-is0.1.4indirecta
npmdefine-data-property1.1.4indirecta
npmdefine-properties1.2.1indirecta
npmdepd2.0.0indirecta
npmdetect-libc2.1.2indirecta
npmdoctrine2.1.0indirecta
npmdunder-proto1.0.1indirecta
npmee-first1.1.1indirecta
npmelectron-to-chromium1.5.393indirecta
npmemoji-regex9.2.2indirecta
npmencodeurl2.0.0indirecta
npmengine.io6.6.8indirecta
npmengine.io-client6.6.5indirecta
npmengine.io-parser5.2.3indirecta
npmenhanced-resolve5.24.2indirecta
npmerr-code3.0.1indirecta
npmes-abstract1.24.2indirecta
npmes-abstract-get1.0.0indirecta
npmes-define-property1.0.1indirecta
npmes-errors1.3.0indirecta
npmes-iterator-helpers1.4.0indirecta
npmes-module-lexer1.7.0indirecta
npmes-module-lexer2.3.1indirecta
npmes-object-atoms1.1.1indirecta
npmes-object-atoms1.1.2indirecta
npmes-set-tostringtag2.1.0indirecta
npmes-shim-unscopables1.1.0indirecta
npmes-to-primitive1.3.4indirecta
npmesbuild0.28.1indirecta
npmescalade3.2.0indirecta
npmescape-html1.0.3indirecta
npmescape-string-regexp4.0.0indirecta
npmeslint9.39.4indirecta
npmeslint-config-next16.2.10indirecta
npmeslint-import-resolver-node0.3.10indirecta
npmeslint-import-resolver-typescript3.10.1indirecta
npmeslint-module-utils2.14.0indirecta
npmeslint-plugin-import2.32.0indirecta
npmeslint-plugin-jsx-a11y6.10.2indirecta
npmeslint-plugin-react7.37.5indirecta
npmeslint-plugin-react-hooks7.1.1indirecta
npmeslint-scope5.1.1indirecta
npmeslint-scope8.4.0indirecta
npmeslint-visitor-keys3.4.3indirecta
npmeslint-visitor-keys4.2.1indirecta
npmeslint-visitor-keys5.0.1indirecta
npmesm-env1.2.2indirecta
npmespree10.4.0indirecta
npmesquery1.7.0indirecta
npmesrecurse4.3.0indirecta
npmestraverse4.3.0indirecta
npmestraverse5.3.0indirecta
npmestree-walker2.0.2indirecta
npmestree-walker3.0.3indirecta
npmesutils2.0.3indirecta
npmetag1.8.1indirecta
npmevents3.3.0indirecta
npmexpect-type1.3.0indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-glob3.3.1indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfast-levenshtein2.0.6indirecta
npmfast-uri3.1.3indirecta
npmfastq1.20.1indirecta
npmfdir6.5.0indirecta
npmfile-entry-cache8.0.0indirecta
npmfill-range7.1.1indirecta
npmfinalhandler2.1.1indirecta
npmfind-up5.0.0indirecta
npmflat-cache4.0.1indirecta
npmflatted3.4.2indirecta
npmfor-each0.3.5indirecta
npmforwarded0.2.0indirecta
npmfresh2.0.0indirecta
npmfsevents2.3.2indirecta
npmfsevents2.3.3indirecta
npmfunction-bind1.1.2indirecta
npmfunction.prototype.name1.2.0indirecta
npmfunctions-have-names1.2.3indirecta
npmgenerator-function2.0.1indirecta
npmgensync1.0.0-beta.2indirecta
npmget-browser-rtc1.1.0indirecta
npmget-intrinsic1.3.0indirecta
npmget-proto1.0.1indirecta
npmget-symbol-description1.1.0indirecta
npmget-tsconfig4.14.0indirecta
npmglob13.0.6indirecta
npmglob-parent5.1.2indirecta
npmglob-parent6.0.2indirecta
npmglob-to-regexp0.4.1indirecta
npmglobals14.0.0indirecta
npmglobals16.4.0indirecta
npmglobalthis1.0.4indirecta
npmgopd1.2.0indirecta
npmgraceful-fs4.2.11indirecta
npmhas-bigints1.1.0indirecta
npmhas-flag3.0.0indirecta
npmhas-flag4.0.0indirecta
npmhas-property-descriptors1.0.2indirecta
npmhas-proto1.2.0indirecta
npmhas-symbols1.1.0indirecta
npmhas-tostringtag1.0.2indirecta
npmhasown2.0.2indirecta
npmhasown2.0.4indirecta
npmhermes-estree0.25.1indirecta
npmhermes-parser0.25.1indirecta
npmhttp-errors2.0.1indirecta
npmhttps-proxy-agent5.0.1indirecta
npmiconv-lite0.7.3indirecta
npmieee7541.2.1indirecta
npmignore5.3.2indirecta
npmignore7.0.6indirecta
npmignore-by-default1.0.1indirecta
npmimport-fresh3.3.1indirecta
npmimport-in-the-middle3.3.1indirecta
npmimurmurhash0.1.4indirecta
npminherits2.0.4indirecta
npminternal-slot1.1.0indirecta
npmipaddr.js1.9.1indirecta
npmis-array-buffer3.0.5indirecta
npmis-async-function2.1.1indirecta
npmis-bigint1.1.0indirecta
npmis-binary-path2.1.0indirecta
npmis-boolean-object1.2.2indirecta
npmis-bun-module2.0.0indirecta
npmis-callable1.2.7indirecta
npmis-core-module2.16.2indirecta
npmis-data-view1.0.2indirecta
npmis-date-object1.1.0indirecta
npmis-document.all1.0.0indirecta
npmis-extglob2.1.1indirecta
npmis-finalizationregistry1.1.1indirecta
npmis-generator-function1.1.2indirecta
npmis-glob4.0.3indirecta
npmis-map2.0.3indirecta
npmis-negative-zero2.0.3indirecta
npmis-number7.0.0indirecta
npmis-number-object1.1.1indirecta
npmis-promise4.0.0indirecta
npmis-reference1.2.1indirecta
npmis-regex1.2.1indirecta
npmis-set2.0.3indirecta
npmis-shared-array-buffer1.0.4indirecta
npmis-string1.1.1indirecta
npmis-symbol1.1.1indirecta
npmis-typed-array1.1.15indirecta
npmis-weakmap2.0.2indirecta
npmis-weakref1.1.1indirecta
npmis-weakset2.0.4indirecta
npmisarray2.0.5indirecta
npmisexe2.0.0indirecta
npmiterator.prototype1.1.5indirecta
npmjest-worker27.5.1indirecta
npmjiti2.7.0indirecta
npmjs-tokens4.0.0indirecta
npmjs-tokens9.0.1indirecta
npmjs-yaml4.3.0indirecta
npmjsesc3.1.0indirecta
npmjson-buffer3.0.1indirecta
npmjson-schema-traverse0.4.1indirecta
npmjson-schema-traverse1.0.0indirecta
npmjson-stable-stringify-without-jsonify1.0.1indirecta
npmjson51.0.2indirecta
npmjson52.2.3indirecta
npmjsx-ast-utils3.3.5indirecta
npmkeyv4.5.4indirecta
npmlanguage-subtag-registry0.3.23indirecta
npmlanguage-tags1.0.9indirecta
npmlevn0.4.1indirecta
npmlightningcss1.32.0indirecta
npmlightningcss-android-arm641.32.0indirecta
npmlightningcss-darwin-arm641.32.0indirecta
npmlightningcss-darwin-x641.32.0indirecta
npmlightningcss-freebsd-x641.32.0indirecta
npmlightningcss-linux-arm-gnueabihf1.32.0indirecta
npmlightningcss-linux-arm64-gnu1.32.0indirecta
npmlightningcss-linux-arm64-musl1.32.0indirecta
npmlightningcss-linux-x64-gnu1.32.0indirecta
npmlightningcss-linux-x64-musl1.32.0indirecta
npmlightningcss-win32-arm64-msvc1.32.0indirecta
npmlightningcss-win32-x64-msvc1.32.0indirecta
npmloader-runner4.3.2indirecta
npmlocate-path6.0.0indirecta
npmlodash.merge4.6.2indirecta
npmloose-envify1.4.0indirecta
npmloupe3.2.1indirecta
npmlru-cache11.5.2indirecta
npmlru-cache5.1.1indirecta
npmmagic-string0.30.21indirecta
npmmath-intrinsics1.1.0indirecta
npmmedia-typer1.1.0indirecta
npmmerge-descriptors2.0.0indirecta
npmmerge-stream2.0.0indirecta
npmmerge21.4.1indirecta
npmmeriyah6.1.4indirecta
npmmicromatch4.0.8indirecta
npmmime-db1.52.0indirecta
npmmime-db1.54.0indirecta
npmmime-types2.1.35indirecta
npmmime-types3.0.2indirecta
npmminimatch10.2.5indirecta
npmminimatch3.1.5indirecta
npmminimist1.2.8indirecta
npmminipass7.1.3indirecta
npmmodule-details-from-path1.0.4indirecta
npmms2.1.3indirecta
npmnanoid3.3.16indirecta
npmnapi-postinstall0.3.4indirecta
npmnatural-compare1.4.0indirecta
npmnegotiator0.6.3indirecta
npmnegotiator1.0.0indirecta
npmneo-async2.6.2indirecta
npmnode-exports-info1.6.2indirecta
npmnode-fetch2.7.0indirecta
npmnode-releases2.0.51indirecta
npmnodemon3.1.14indirecta
npmnormalize-path3.0.0indirecta
npmnumber-flow0.6.2indirecta
npmobject-assign4.1.1indirecta
npmobject-inspect1.13.4indirecta
npmobject-keys1.1.1indirecta
npmobject.assign4.1.7indirecta
npmobject.entries1.1.9indirecta
npmobject.fromentries2.0.8indirecta
npmobject.groupby1.0.3indirecta
npmobject.values1.2.1indirecta
npmon-finished2.4.1indirecta
npmonce1.4.0indirecta
npmoptionator0.9.4indirecta
npmown-keys1.0.1indirecta
npmp-limit3.1.0indirecta
npmp-locate5.0.0indirecta
npmparent-module1.0.1indirecta
npmparseurl1.3.3indirecta
npmpath-exists4.0.0indirecta
npmpath-key3.1.1indirecta
npmpath-parse1.0.7indirecta
npmpath-scurry2.0.2indirecta
npmpath-to-regexp8.4.2indirecta
npmpathe2.0.3indirecta
npmpathval2.0.1indirecta
npmpicocolors1.1.1indirecta
npmpicomatch2.3.2indirecta
npmpicomatch4.0.4indirecta
npmpicomatch4.0.5indirecta
npmplaywright1.61.1indirecta
npmplaywright-core1.61.1indirecta
npmpossible-typed-array-names1.1.0indirecta
npmpostcss8.5.19indirecta
npmprelude-ls1.2.1indirecta
npmprettier3.7.4indirecta
npmprogress2.0.3indirecta
npmprop-types15.8.1indirecta
npmproxy-addr2.0.7indirecta
npmproxy-from-env1.1.0indirecta
npmpstree.remy1.1.8indirecta
npmpunycode2.3.1indirecta
npmqs6.15.2indirecta
npmqueue-microtask1.2.3indirecta
npmrandombytes2.1.0indirecta
npmrange-parser1.2.1indirecta
npmraw-body3.0.2indirecta
npmreact-is16.13.1indirecta
npmreadable-stream3.6.2indirecta
npmreaddirp3.6.0indirecta
npmreflect.getprototypeof1.0.10indirecta
npmregexp.prototype.flags1.5.4indirecta
npmrequire-from-string2.0.2indirecta
npmrequire-in-the-middle8.0.1indirecta
npmresolve2.0.0-next.7indirecta
npmresolve-from4.0.0indirecta
npmresolve-pkg-maps1.0.0indirecta
npmreusify1.1.0indirecta
npmrollup4.62.2indirecta
npmrouter2.2.0indirecta
npmrun-parallel1.2.0indirecta
npmsafe-array-concat1.1.4indirecta
npmsafe-buffer5.2.1indirecta
npmsafe-push-apply1.0.0indirecta
npmsafe-regex-test1.1.0indirecta
npmsafer-buffer2.1.2indirecta
npmscheduler0.27.0indirecta
npmschema-utils4.3.3indirecta
npmsemifies1.0.0indirecta
npmsemver6.3.1indirecta
npmsemver7.7.3indirecta
npmsemver7.8.5indirecta
npmsend1.2.1indirecta
npmserve-static2.2.1indirecta
npmset-function-length1.2.2indirecta
npmset-function-name2.0.2indirecta
npmset-proto1.0.0indirecta
npmsetprototypeof1.2.0indirecta
npmsharp0.34.5indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmside-channel1.1.0indirecta
npmside-channel1.1.1indirecta
npmside-channel-list1.0.0indirecta
npmside-channel-list1.0.1indirecta
npmside-channel-map1.0.1indirecta
npmside-channel-weakmap1.0.2indirecta
npmsiginfo2.0.0indirecta
npmsimple-update-notifier2.0.0indirecta
npmsocket.io-adapter2.5.7indirecta
npmsocket.io-parser4.2.6indirecta
npmsource-map0.6.1indirecta
npmsource-map-js1.2.1indirecta
npmsource-map-support0.5.21indirecta
npmstable-hash0.0.5indirecta
npmstackback0.0.2indirecta
npmstacktrace-parser0.1.11indirecta
npmstatuses2.0.2indirecta
npmstd-env3.10.0indirecta
npmstop-iteration-iterator1.1.0indirecta
npmstring.prototype.includes2.0.1indirecta
npmstring.prototype.matchall4.0.12indirecta
npmstring.prototype.repeat1.0.0indirecta
npmstring.prototype.trim1.2.11indirecta
npmstring.prototype.trimend1.0.10indirecta
npmstring.prototype.trimstart1.0.8indirecta
npmstring_decoder1.3.0indirecta
npmstrip-bom3.0.0indirecta
npmstrip-json-comments3.1.1indirecta
npmstrip-literal3.1.0indirecta
npmstyled-jsx5.1.6indirecta
npmsupports-color5.5.0indirecta
npmsupports-color7.2.0indirecta
npmsupports-color8.1.1indirecta
npmsupports-preserve-symlinks-flag1.0.0indirecta
npmtailwindcss4.3.3indirecta
npmtapable2.3.3indirecta
npmterser5.49.0indirecta
npmterser-webpack-plugin5.6.1indirecta
npmtinybench2.9.0indirecta
npmtinyexec0.3.2indirecta
npmtinyglobby0.2.17indirecta
npmtinypool1.1.1indirecta
npmtinyrainbow2.0.0indirecta
npmtinyspy4.0.4indirecta
npmto-regex-range5.0.1indirecta
npmtoidentifier1.0.1indirecta
npmtouch3.1.1indirecta
npmtr460.0.3indirecta
npmts-api-utils2.5.0indirecta
npmtsconfig-paths3.15.0indirecta
npmtslib2.8.1indirecta
npmtw-animate-css1.4.0indirecta
npmtype-check0.4.0indirecta
npmtype-fest0.7.1indirecta
npmtype-is2.1.0indirecta
npmtyped-array-buffer1.0.3indirecta
npmtyped-array-byte-length1.0.3indirecta
npmtyped-array-byte-offset1.0.4indirecta
npmtyped-array-length1.0.8indirecta
npmtypescript5.9.3indirecta
npmtypescript-eslint8.64.0indirecta
npmunbox-primitive1.1.0indirecta
npmundefsafe2.0.5indirecta
npmundici-types7.16.0indirecta
npmundici-types8.3.0indirecta
npmunpipe1.0.0indirecta
npmunrs-resolver1.12.2indirecta
npmupdate-browserslist-db1.2.3indirecta
npmuri-js4.4.1indirecta
npmutil-deprecate1.0.2indirecta
npmvary1.1.2indirecta
npmvite7.3.5indirecta
npmvite-node3.2.4indirecta
npmvitest3.2.6indirecta
npmwatchpack2.5.2indirecta
npmwebidl-conversions3.0.1indirecta
npmwebpack5.107.2indirecta
npmwebpack-sources3.5.1indirecta
npmwhatwg-url5.0.0indirecta
npmwhich2.0.2indirecta
npmwhich-boxed-primitive1.1.1indirecta
npmwhich-builtin-type1.2.1indirecta
npmwhich-collection1.0.2indirecta
npmwhich-typed-array1.1.22indirecta
npmwhy-is-node-running2.3.0indirecta
npmword-wrap1.2.5indirecta
npmwrappy1.0.2indirecta
npmxmlhttprequest-ssl2.1.2indirecta
npmyallist3.1.1indirecta
npmyocto-queue0.1.0indirecta
npmzod4.4.3indirecta
npmzod-validation-error4.0.2indirecta
Avisos de dependencias 8

Instalar npm:p2p-fileshare@1.0.0 arrastra 354 paquetes, directos y transitivos: 8 tienen avisos conocidos, de los cuales 1 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
node-forge0.9.2indirectacrítica151.4.0
async3.2.0indirectaalta13.2.2
elliptic6.6.1indirectaalta1
libp2p0.27.4indirectaalta10.38.0
parse-duration0.1.3indirectaalta12.1.3
uuid3.4.0indirectaalta113.0.1
ip-address6.3.0directamoderada110.1.1
nanoid2.1.11indirectamoderada15.0.9

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "file-sharing",
        "file-transfer",
        "nextjs",
        "open-source",
        "peer-to-peer",
        "socket-io",
        "typescript",
        "webrtc",
        "nodesjs",
        "privacy",
        "react",
        "encryption",
        "golang",
        "p2p"
      ],
      "is_fork": false,
      "size_kb": 1890,
      "has_wiki": true,
      "homepage": "https://floe.one",
      "languages": {
        "Go": 142041,
        "CSS": 5533,
        "Shell": 4222,
        "Dockerfile": 3122,
        "JavaScript": 51988,
        "PowerShell": 3795,
        "TypeScript": 352894
      },
      "pushed_at": "2026-07-23T14:48:51Z",
      "created_at": "2026-01-15T06:20:26Z",
      "owner_type": "User",
      "updated_at": "2026-07-24T07:28:51Z",
      "description": "secure, encrypted P2P file transfer. No accounts, no file storage, end-to-end encrypted.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": "JC Paredes",
      "type": "User",
      "login": "jannskiee",
      "company": null,
      "location": "Philippines",
      "followers": 6,
      "avatar_url": "https://avatars.githubusercontent.com/u/108071426?v=4",
      "created_at": "2022-06-23T12:28:31Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 1492
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-07-22T16:12:08Z"
        },
        {
          "tag": "v1.7.6",
          "kind": "patch",
          "published_at": "2026-07-21T14:40:49Z"
        },
        {
          "tag": "v1.7.5",
          "kind": "patch",
          "published_at": "2026-07-10T06:56:06Z"
        },
        {
          "tag": "v1.7.4",
          "kind": "patch",
          "published_at": "2026-07-09T16:56:48Z"
        },
        {
          "tag": "v1.7.3",
          "kind": "patch",
          "published_at": "2026-07-09T14:25:47Z"
        },
        {
          "tag": "v1.7.2",
          "kind": "patch",
          "published_at": "2026-06-30T14:10:28Z"
        },
        {
          "tag": "v1.7.1",
          "kind": "patch",
          "published_at": "2026-06-22T11:56:00Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-06-22T11:27:56Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-06-21T17:41:47Z"
        },
        {
          "tag": "v1.5.5",
          "kind": "patch",
          "published_at": "2026-06-21T15:45:42Z"
        },
        {
          "tag": "v1.5.4",
          "kind": "patch",
          "published_at": "2026-06-21T15:23:59Z"
        },
        {
          "tag": "v1.5.3",
          "kind": "patch",
          "published_at": "2026-06-21T14:49:30Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2026-06-17T15:23:38Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2026-06-17T12:20:20Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-06-17T11:18:11Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-06-16T18:25:02Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-06-16T17:48:30Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-06-15T18:21:17Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-06-15T16:55:09Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-06-14T06:52:44Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "87e88663fedb72cb6fb138b368381d2106f19706",
          "body": "The documentation moved from the docs.floe.one subdomain to the\nfloe.one/docs subpath. Update every in-repo reference (web app footer/nav\nand landing links, the CLI's printed Documentation URL, README,\nSELF_HOSTING, the docs CLI examples, and CLAUDE.md) to the new URL. Old\ndocs.floe.one links keep w\n[…]\nthat removes the extra redirect hop.\n\nThe docs/changelog.mdx historical entry is left as-is (hand-written), and\nthe next.config.mjs redirect rule intentionally keeps docs.floe.one as its\nhost matcher.",
          "is_bot": false,
          "headline": "docs: point all docs.floe.one links at floe.one/docs (#197)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-23T13:04:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "72d2af746f6c646dfdd8d3e306fa2ef200e2b263",
          "body": "… (#196)\n\nThe /docs rewrite proxied to floe.mintlify.app, but that host always\nserves the docs at the root; only floe.mintlify.site (and .dev) serve the\ndeployment's /docs base path. With base path set to /docs, the .app origin\nreturns 404, so www.floe.one/docs 404'd. Switch the rewrite destination to\nfloe.mintlify.site/docs, which is Mintlify's documented reverse-proxy\norigin and serves the base path correctly.",
          "is_bot": false,
          "headline": "fix(client): point docs rewrite at the base-path host (mintlify.site)…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-23T12:29:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da6de4637fd8fd85465382c66ad86aef33c4b615",
          "body": "Add a rewrite that proxies /docs and /docs/* to the Mintlify docs\ndeployment (which will run with base path /docs) and a host-scoped 301\nthat sends docs.floe.one/* to the matching www.floe.one/docs/* URL with\nthe full path preserved. This moves the documentation onto the primary\ndomain as a subpath \n[…]\nlify until the DNS cutover.\nSo merging and deploying this changes nothing user-facing. The Mintlify\nbase-path flip, the DNS repoint, and the internal link updates follow as\nseparate coordinated steps.",
          "is_bot": false,
          "headline": "feat(client): serve docs at /docs via Mintlify reverse proxy (#195)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-23T12:04:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "10144e677b3112dd7f5acf0d78196089e62a3085",
          "body": null,
          "is_bot": false,
          "headline": "docs: changelog for v1.8.0 (#194)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-22T16:09:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5af15c9a1e1fdd5bf9978aa853a784723ff4a9d3",
          "body": "* feat(cli): cap relayed transfers at 2 GB\n\nMirror the browser's relay gate in the CLI sender: once the connection is\nestablished, SendFiles inspects the selected ICE candidate pair and blocks\nthe transfer before any metadata or file bytes move when the path runs\nthrough a TURN relay and the queued \n[…]\n the\ntransfer was blocked)\" for the zero-file case, and \"connection closed\nafter N of M files\" for a partial batch. Regression-tested with a real\nloopback pair whose sender walks away without sending.",
          "is_bot": false,
          "headline": "feat(cli): cap relayed transfers at 2 GB (#193)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-22T16:07:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "33cc9a5880a8ac206d6ff122ad760a80e7c33bab",
          "body": "CodeQL flagged the dummy-base strip in scrubUrl: startsWith(BASE) also\nmatched absolute URLs on hosts that merely begin with \"scrub.invalid\"\n(for example scrub.invalid.evil.com), slicing them into garbage in the\nSentry breadcrumb. No secret was ever at risk (room scrubbing happens\nbefore the strip), the output was just wrong for that pathological\nhost. Matching BASE plus '/' is exact: a serialized URL always has '/'\nafter the host, so the prefix now only matches the dummy base itself.",
          "is_bot": false,
          "headline": "fix(client): match the scrub base with its path separator (#192)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T15:18:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76a3499ec6efe36c3fe5caa15a4c05397de6bba7",
          "body": "…ixes (#191)\n\nResolves the three open Dependabot alerts (no fix PRs arrived after\nseveral hours). brace-expansion 1.1.16 and js-yaml 4.3.0 land via the\nestablished pnpm-workspace.yaml override mechanism, scoped so the\nnon-vulnerable brace-expansion 5.x line is untouched; both are dev-only\ntooling de\n[…]\nlies when an invalid limit value is configured, which\nthis server never does, so this is hygiene rather than an exposure fix.\n\npnpm audit and npm audit both report zero vulnerabilities after the\npins.",
          "is_bot": false,
          "headline": "chore(deps): pin brace-expansion, js-yaml, and body-parser security f…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T15:18:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "67ce0ad65634f3c75db873a470f34be97b6e7588",
          "body": "Covers the CLI transfer-stall watchdog (fast, phase-labeled errors\ninstead of indefinite hangs), the faster sender exit on decline, the\nweb app's room-confirmed share link, and the Pion dependency updates.",
          "is_bot": false,
          "headline": "docs: changelog for v1.7.6 (#190)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T14:38:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e075ea5019103b810b98b24d9ee6a7acaaf42d4",
          "body": "An instrumented CI capture showed a sender and receiver both open their\ndata channels (\"Connected\" on both sides) and then hang in total\nsilence: the first metadata message never arrives, the receiver waits\nforever, and the sender burns its full 120 s ack deadline. Real users\nhitting any such stall \n[…]\n unit tests over real pion pairs (including a\nreproduction of the captured stall shape), the race detector, the CLI\ne2e suite, and a live decline simulation (sender exit went from 120 s\nto about 1 s).",
          "is_bot": false,
          "headline": "fix(cli): fail fast when a transfer stalls instead of hanging (#189)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T14:11:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43eb99e8f7fe5e80833c1f16f7db2d810f0bd945",
          "body": "…join (#188)\n\nThe sender rendered its share link the instant it was generated, while\njoin-room was still in flight, so the link was shareable before the\nroom existed server-side. A receiver following the link fast enough\njoined an empty room and was assigned the sender role (first joiner\nwins), and \n[…]\nf so a repeated create\nclick clears the previous room's timer instead of letting a stale\ntimer revert the displayed link to an abandoned room.\n\nNo wire-protocol change; the receiver flow is untouched.",
          "is_bot": false,
          "headline": "fix(client): render the room link only after the server confirms the …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T10:50:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4978fb546e70a2b2b850d861d671370e04da9088",
          "body": "…187)\n\n* chore(ci): add workflow_dispatch and keep e2e evidence from green runs\n\nworkflow_dispatch runs the full suite: the changes job already treats any\nnon-pull_request event as full-suite, so no filter changes are needed. It\nexists to recover from dropped push events (GitHub's event pipeline los\n[…]\ncelled attempt, so\na full re-run would fail at the upload step with a name conflict.\noverwrite: true makes a re-run replace the previous attempt's artifact\ninstead; harvest evidence before re-running.",
          "is_bot": false,
          "headline": "chore(ci): manual dispatch trigger and flaky-test evidence capture (#…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T10:11:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bfc4ded2c463b7380eed3042d99ba3d06877251c",
          "body": "Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.562.0 to 1.25.0.\n- [Release notes](https://github.com/lucide-icons/lucide/releases)\n- [Commits](https://github.com/lucide-icons/lucide/commits/1.25.0/packages/lucide-react)\n\n---\nupdated-dependencies:\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": "chore(deps): bump lucide-react from 0.562.0 to 1.25.0 in /client (#185)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T19:43:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f58a198e4f969acbb6d1a6b2ae72954a9803bf45",
          "body": "Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.43 to 26.1.1.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)\n\n---\nupdated-de\n[…]\nrect:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump @types/node from 20.19.43 to 26.1.1 in /client (#184)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T19:35:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "52b380fd94014ee5885f735499ae59689180cfe9",
          "body": "…ates (#182)\n\nBumps the npm-deps group with 12 updates in the /client directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@number-flow/react](https://github.com/barvian/number-flow/tree/HEAD/src) | `0.6.0` | `0.6.2` |\n| [@radix-ui/react-accordion](https://github.com/radix-ui/primitives/tree/H\n[…]\ne: version-update:semver-patch\n  dependency-group: npm-deps\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the npm-deps group across 2 directories with 16 upd…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T19:07:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "595d79753d61a71b53dd4547c948e0e6d15f02e5",
          "body": "…tes (#177)\n\nBumps the actions-deps group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [actions/checkout](https://github.com/actions/checkout) | `4.3.1` | `7.0.0` |\n| [actions/setup-node](https://github.com/actions/setup-node) | `4.4.0` | `7.0.0` |\n| [pnpm/action\n[…]\nersion-update:semver-major\n  dependency-group: actions-deps\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(ci): bump the actions-deps group across 1 directory with 7 upda…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T18:38:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1661a962084cd886446629c728324d27558a32e9",
          "body": "… (#176)\n\nBumps the go-deps group with 2 updates in the /cli directory: [github.com/pion/webrtc/v4](https://github.com/pion/webrtc) and [github.com/schollz/progressbar/v3](https://github.com/schollz/progressbar).\n\n\nUpdates `github.com/pion/webrtc/v4` from 4.2.15 to 4.2.17\n- [Release notes](https://g\n[…]\npe: version-update:semver-patch\n  dependency-group: go-deps\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the go-deps group across 1 directory with 2 updates…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T18:31:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a04dbc1cd4070c6d327c3c91e00c0744e72b0e77",
          "body": "The first grouped npm PR bundled 23 updates including two majors, and\none of them (typescript 5 -> 7) breaks typescript-eslint, so the\nwhole PR failed lint and every other update in it was blocked with\nit. Restricting the npm group to minor and patch updates lets the\nroutine bumps flow as one clean \n[…]\nse: JavaScript majors break routinely, Go majors\nchange import paths and rarely flow through version updates at all,\nand the grouped Actions majors already proved compatible by passing\nthe full suite.",
          "is_bot": false,
          "headline": "chore(deps): group only minor and patch npm updates (#181)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T18:02:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "018771ce45f991d64d6d593cea15442fbc250283",
          "body": "Dependabot's first npm version-update job (1466608923) died with npm\nerror EOVERRIDE: \"Override for ws@8.21.1 conflicts with direct\ndependency\". server/package.json lists ws twice: as a direct\ndependency and as a security override for the transitive copies that\nsocket.io's engine.io pulls in, both p\n[…]\n, npm install reproduces the exact EOVERRIDE\nmessage; with \"$ws\" the same bump resolves cleanly. The lockfile\nneeded no regeneration (npm ci passes unchanged) and the server\nsuite stays at 47 passing.",
          "is_bot": false,
          "headline": "fix(server): let the ws override track the direct dependency (#179)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T17:30:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "419d8c3168b6d722fc14a8d328f12bc3e6eb0519",
          "body": "…flow lint gate (#175)\n\n* chore(deps): add Dependabot version updates, monthly and grouped\n\nNothing watched dependency freshness: npm in client/ (pnpm) and\nserver/ (plain npm), Go modules in cli/, and the workflow actions all\ndrifted until something broke or a human remembered. A dependabot.yml\nwith\n[…]\nriod would let\nexactly those edits merge unchecked, and it proves itself on this\nPR's own runs before merge. CLAUDE.md's CI section now records that\nexception to the start-outside-the-gate convention.",
          "is_bot": false,
          "headline": "chore(ci): dependabot version updates, SHA-pinned actions, and a work…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T16:50:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dee2621bcb2ceb358ac6b6c01e16621951e1a2cd",
          "body": "* chore(ci): move the docs-only skip into an in-workflow paths filter\n\nA workflow-level paths-ignore and a required status check cannot\ncoexist: on a docs-only PR the workflow never starts, its checks sit\nat Expected forever, and the PR is unmergeable. A job-level skip has\nthe opposite semantics, si\n[…]\nfor a description of the changes-job mechanism.\n\nThe ruleset change itself (require \"CI green\", squash-only merges)\nis a settings step after this merges; until then the gate is just\nanother green job.",
          "is_bot": false,
          "headline": "chore(ci): in-workflow docs filter and a CI green gate (#173)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T14:22:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "85e07e92b068c025c7d54a6296a11c2281fbdfff",
          "body": "… read-only token (#172)\n\n* chore(ci): serve the e2e client from a production build\n\nnext dev compiles routes on demand; the URL-readiness probe pays the\nhome page compile inside the webServer startup budget, and on macOS\nrunners that first compile repeatedly blew the 120s timeout (3-4\nfailures to d\n[…]\nworkflow is back-compat's\ngh release view/download against this public repo's releases, which\ncontents: read covers; cache and artifact steps authenticate through\nthe runtime token and are unaffected.",
          "is_bot": false,
          "headline": "chore(ci): serve e2e from a production build, npm ci server installs,…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T13:04:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5dab25c018c31d8b0c2b2235a804811af3aeca8c",
          "body": "…ect (#171)\n\n* fix(server): remove only the disconnecting peer instead of deleting the room\n\nhandleDisconnect notified the other peer, nulled its roomId, and deleted the\nwhole room whenever ANY peer's socket dropped. One Socket.IO blip on either\nside therefore killed the room: the sender's displayed\n[…]\nnes), which is also the production code path since real\ndeployments never run on \"localhost\".\n\nE2E matrix legs now report 17 passed, 4 skipped (was 15/4); the\nback-compat job is unaffected (4 passed).",
          "is_bot": false,
          "headline": "fix: signaling room survives disconnects and clients rejoin on reconn…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T19:11:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41c4af0d85f7989b5f7970ced1aaed73a13ac7c3",
          "body": "…CLI (#169)\n\n* test(e2e): let spawnSend/spawnReceive target an explicit CLI binary\n\nBoth helpers hardcoded cliBinary(), the HEAD build from global-setup.\nThe upcoming back-compat spec drives a downloaded release binary\nthrough the same plumbing, so accept the binary path as a trailing\nparameter defa\n[…]\nnd spawnReceive now buffer both streams and append their\ntails (last 500 chars) to every rejection, including timeouts, so the\nnext transient failure names itself. No behavior change on success\npaths.",
          "is_bot": false,
          "headline": "chore(ci): add back-compat job pairing HEAD with the latest released …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T17:07:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "581165aedf8ec17d8c1678e67b1f942c768802d0",
          "body": "…age (#168)\n\n* test(e2e): build the CLI once in global setup and extract shared helpers\n\nThe CLI binary used to be built in cli-interop.spec.ts's beforeAll into a\nshared tmp path, which races when two spec files run in parallel locally\n(one worker rebuilds the exe while another worker's spawned proc\n[…]\n: fail loudly on an unknown RUNNER_OS in the Playwright cache step\n\nWithout a default arm the case would emit an empty cache path for a\nfuture matrix OS and fail the cache step confusingly downstream.",
          "is_bot": false,
          "headline": "chore(ci): matrix e2e across 3 OSes and add CLI-to-CLI transfer cover…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T14:33:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd13d606a7d9fef6c495f10835e142ff5bb2b0d6",
          "body": "Release binaries print \"floe 1.7.5\", not \"floe v1.7.5\": GoReleaser\ninjects {{ .Version }}, which strips the tag leading v before it\nreaches main.version. Align the sample output blocks on the\ninstallation and version pages with what the shipped binary prints.\nThe Docs: line is printed by the version subcommand and stays.",
          "is_bot": false,
          "headline": "docs(cli): drop the v prefix from floe version sample output (#167)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T12:18:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46982510be26ad0e83af92ddb8e393972f9e9594",
          "body": "… (#166)\n\nFLOE_VERSION=vX.Y.Z curl ... | sh sets the variable only for curl; the\nsh process running the installer never sees it and silently installs\nthe latest release instead of the requested one. Move the assignment to\nthe sh side of the pipe in the docs example, the script usage comment,\nand the could-not-determine-version error hint. The installer's own\nversion handling is unchanged and was always correct once the variable\nactually reaches sh.\n\nFixes #164",
          "is_bot": false,
          "headline": "fix(installer): correct FLOE_VERSION usage in pinned-install examples…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T12:14:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "227d19025b355bdcc0773fd180673d7bd87d308a",
          "body": "… (#165)\n\n* chore(ci): matrix cli job across ubuntu, windows, and macos\n\n- run go vet/test/build on ubuntu-latest, windows-latest, and\n  macos-latest with fail-fast disabled so one OS failure never hides\n  another; setup-go keeps per-OS cache keys automatically\n- add workflow-level concurrency: supe\n[…]\nge_json_file at client/package.json, which already\ndeclares packageManager: pnpm@11.1.2. One place to bump from now on.\n\nIsolated on purpose: revert this commit alone if the action misreads\nthe field.",
          "is_bot": false,
          "headline": "chore(ci): matrix cli job across 3 OSes, add timeouts and concurrency…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T12:00:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c8d61963ef1e18c2377fb11ce99f412abaa61bd",
          "body": "Trim the Development acknowledgment and badge to match the lowkey, one-line style of the Sentry and Mintlify credits. Drops the plan tier and duration.",
          "is_bot": false,
          "headline": "docs(readme): simplify the Anthropic sponsorship credit (#163)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-17T17:26:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e52ac4a0f8fab1f5dfadd781b1187e41ed7b917c",
          "body": "Credit Anthropic in the Acknowledgments section for accepting Floe into its open source program (six months of Claude Max, 20x), add a matching badge, and broaden the intro line to cover development tooling alongside runtime infrastructure.",
          "is_bot": false,
          "headline": "docs(readme): acknowledge Claude Max (20x) OSS sponsorship (#162)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-17T17:13:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0daddaddc917bdbe9bd923d3fa68f280b4d835f",
          "body": "* docs: improve SEO titles and descriptions across docs\n\n* docs: correct encryption description to DTLS (data channels use DTLS, not DTLS-SRTP)\n\n---------\n\nCo-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>\nCo-authored-by: Jc Paredes <paredesjancarlo99@gmail.com>",
          "is_bot": true,
          "headline": "Apply SEO and metadata best practices (#161)",
          "author_name": "mintlify[bot]",
          "author_login": "mintlify[bot]",
          "committed_at": "2026-07-17T17:03:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ed75ebb1d77f3a3872b8149dced3594560ac1e9",
          "body": "…#160)\n\nA share link always carries a valid UUID room id, but a hand-edited or\ntruncated #room fragment can carry a malformed one. The signaling server\nrejects such a join with an 'error' event the browser does not listen for,\nso the receiver sat on \"Waiting for the sender\" indefinitely.\n\nMirror the\n[…]\nLink Invalid\"\ncard (the same one the room-full path uses) rather than an endless wait;\nvalid ids are unaffected.\n\nAdds client/e2e/invalid-room.spec.ts covering both the rejected and the\naccepted path.",
          "is_bot": false,
          "headline": "fix(client): reject malformed room links instead of waiting forever (…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-11T18:15:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "37ce9d66c9427890a3ce64735eae46ebd1ec0428",
          "body": "…responsive hardening (#159)\n\n* feat(client): redesign homepage below the hero with premium landing sections\n\nReplace the About icon row with four new sections: a How it works step sequence, a privacy ledger listing exactly what the signaling server handles and never sees, a CLI section with per-OS \n[…]\nonto its own second line at every width\n- Refine privacy and how-it-works copy on how the room id rides the URL fragment\n- Add client/e2e/responsive.spec.ts: a 15-viewport (320 to 2560) overflow guard",
          "is_bot": false,
          "headline": "feat(client): redesign homepage, transfer card, and legal pages with …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-11T18:04:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87dd8324bfc4f5fcc0eb1d6f5576cb2eaec8b969",
          "body": "Covers the delivered-bytes progress fix, the receiver progress cadence fix,\nthe CLI backpressure-stall abort fix, and the direct/relay copy clarification.",
          "is_bot": false,
          "headline": "docs: add v1.7.5 changelog (#158)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-10T06:53:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a607da26f3d9dbf19dc3add54a2758532ff8991",
          "body": "… stay in sync (#156)\n\nThe sender counted bytes queued into the data-channel buffer as sent: with the\n8 MB high-water mark it ran up to 8 MB ahead of the receiver, froze all UI\nupdates for the 40-60 s the buffer took to drain on a slow relay, advanced the\nfile label a whole file early, and declared \n[…]\n\nthan a flat 60 s to drain, killing transfers on relays slower than ~70 KB/s.\nIt now aborts only when the buffer makes no progress for a full 60 s window.\n\nNo wire changes; protocol version unchanged.",
          "is_bot": false,
          "headline": "fix(transfer): report delivered bytes so sender and receiver progress…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T19:38:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d183570a2d5439095690d42505eff5adc3f88a7b",
          "body": "…py (#155)\n\n* fix(client): show direct-connection scope in badge, clarify relay fallback copy\n\nThe status badge now distinguishes Direct (same network), a host-host pair,\nfrom Direct (internet), a hole-punched P2P path, with scope-aware tooltips,\nso a direct connection over mobile data no longer rea\n[…]\nt\nsuffix. The tooltip and FAQ keep the explanation that direct paths span\ndifferent networks, including mobile data. classifyCandidatePair slims down\nto isRelayPair since scope is no longer displayed.",
          "is_bot": false,
          "headline": "fix(client): clarify direct/relay badge tooltip and relay fallback co…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T18:58:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "471203cd26316500fe7daaac19f7798ab8480142",
          "body": "…ms (#154)\n\nThe relay-connection page listed the full Cloudflare endpoint set (:5349 TLS\nplus TCP fallbacks on 80/443); the server now serves a minimal three-URL set,\nso describe that and why. Two pages still said the CLI sends fixed 16 KB\nchunks; both senders have been adaptive up to 256 KB since v1.7.3.",
          "is_bot": false,
          "headline": "docs: add v1.7.4 changelog; align relay endpoints and chunk-size clai…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T16:52:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf552ec8072be02271239b94fd09e8582e187cd4",
          "body": "Defense-in-depth companion to the server-side trim: pion gathers candidates\nand opens TURN allocations per URL per network interface, so a server that\nforwards a provider's full redundant list (Cloudflare mints 8 URLs) multiplies\nconnection-setup work. On multi-adapter machines this pushed \"Connecti\n[…]\nt\nlike self-hosted coturn's passes through unchanged, and an unclassifiable\nlist is left alone. Protects the CLI against any server, including\nself-hosted instances and a not-yet-updated api.floe.one.",
          "is_bot": false,
          "headline": "fix(cli): trim fetched ICE list to one URL per connectivity class (#153)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T16:38:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab1bc164c423eac2c1f003084475981028b8ea7d",
          "body": "…ss (#152)\n\nThe Cloudflare TURN migration started serving all 8 URLs Cloudflare mints\n(STUN on :3478/:53 plus TURN duplicated across udp/tcp/tls on\n:53/:80/:443/:3478/:5349). WebRTC clients gather candidates and open TURN\nallocations per URL per network interface, so the redundant URLs multiplied\nIC\n[…]\nerving the client relay-off filter contract. The\ncoturn fallback already returns exactly 3 URLs and is untouched.\n\nServer-side only: every existing browser and CLI benefits on deploy without\nupdating.",
          "is_bot": false,
          "headline": "fix(server): trim Cloudflare ICE list to one URL per connectivity cla…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T16:36:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97302a7e9a8e25229f9e913ce310f736675612d8",
          "body": "…ing tab (#151)\n\nTransfer links carried the room id only in the URL fragment (#room=<id>),\nso two links differ only by fragment. Browsers treat a fragment-only change\nas the same document: when a phone that already has Floe open scans a second\nQR code, it reuses the stale tab and swaps the hash with\n[…]\n to the server); the nonce carries no info.\n\nAs a safety net, also reload on hashchange when the room id changes, covering\nany browser that still performs a fragment-only navigation into the same tab.",
          "is_bot": false,
          "headline": "fix(client): join the new room when a fresh QR link opens in an exist…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T15:50:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2cddb28f2cb4cac034b39b950ec010d6d7bc29c",
          "body": "… --iface (#150)\n\n* fix(cli): skip link-local interfaces during ICE gathering\n\nOn machines with virtual/VPN adapters (Hyper-V, WSL, VMware, Tailscale) or\nAPIPA auto-config, pion gathered a host candidate on every link-local\n(169.254.0.0/16, fe80::/10) interface and spent 20-30s running connectivity\n\n[…]\nption (peer.WithInterfaceAllowlist) so peer.New\nstays backward compatible. Documents the flag and a troubleshooting entry for\nslow connects behind a VPN/VM. Adds a unit test for the allowlist matcher.",
          "is_bot": false,
          "headline": "fix(cli): skip link-local interfaces during ICE gathering, add opt-in…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T15:35:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b4388a55c7439388e4f7af824b4b49fe35ed8a1",
          "body": "CLI adaptive chunk sizing (up to 256 KB) plus the browser-to-CLI\nslow-accept timeout fix, both landed since v1.7.2.",
          "is_bot": false,
          "headline": "docs(changelog): add v1.7.3 entry (#149)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T14:22:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1affc379ac687080ad707bf5d20f0e6fc3ff84a",
          "body": "… (#148)\n\nThe CLI sender sent every file in fixed 16 KB chunks, so a transfer made ~16x\nmore dc.Send calls than the browser, which already sizes chunks to the\nnegotiated SCTP max-message-size capped at 256 KB. Each send carries fixed\nSCTP framing and per-call overhead, so the small chunk caps throug\n[…]\nange, so no ProtocolVersion bump and full browser<->CLI\ncompat holds. Adds a table-driven chunkSizeFor test; the existing 20 MB\nsha256-verified loopback now exercises the larger-chunk path end to end.",
          "is_bot": false,
          "headline": "perf(cli): size send chunks to the negotiated SCTP max (up to 256 KB)…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T14:11:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ff599b2d05aad64f1043606e13d8cebba709eda",
          "body": "A full audit of the 34 tracked md/mdx files found eight still describing the pre-migration TURN setup (coturn as the only relay, 'TURN_SECRET unset means STUN-only', Google-only STUN, missing CLOUDFLARE_TURN_* env vars). Update them to match server.js precedence (Cloudflare Realtime TURN, then cotur\n[…]\nged and self-hosted paths, and a security-privacy note naming Cloudflare as floe.one's relay operator. coturn remains fully documented as the self-hosting option. changelog.mdx deliberately untouched.",
          "is_bot": false,
          "headline": "docs: align all md/mdx with the Cloudflare TURN migration (#147)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-08T10:20:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05b72250e226a79aa02c50db85ade3f2942605d1",
          "body": "Production floe.one now relays via Cloudflare Realtime TURN, not the old self-hosted coturn at turn.floe.one. Update the privacy policy, relay-connection page, and architecture reference to name Cloudflare (turn.cloudflare.com) as the production relay and the Microsoft Azure signaling host, while keeping coturn documented as the self-hosting option. No turn.floe.one references remain.",
          "is_bot": false,
          "headline": "docs: point production TURN references at Cloudflare (#146)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-08T09:38:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2f2b38984d78e35c9c020e4223c01801213a7fd",
          "body": "C:/Program Files/Git/api/turn-credentials now mints short-lived ICE servers from Cloudflare Realtime TURN when CLOUDFLARE_TURN_KEY_ID / CLOUDFLARE_TURN_KEY_API_TOKEN are set, caching one set in memory (12h) and splitting STUN from TURN so the client relay-off filter still works. Falls back to self-hosted coturn (TURN_SECRET / TURN_DOMAIN), then public STUN. Client and CLI consume the ICE list generically and need no changes.",
          "is_bot": false,
          "headline": "feat(server): add Cloudflare Realtime TURN with coturn fallback (#145)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-07T12:05:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "568483e6889cd43c537908212ba650ebcf4b2e05",
          "body": "…m (#144)\n\n* fix(client): raise sender ack timeout to 120s to match CLI\n\nThe browser sender aborted after 15s waiting for the receiver's ack, but a\nCLI receiver only acks after a human answers its interactive \"Accept? [Y/n]\"\nprompt. A receiver slower than 15s caused browser-to-CLI transfers to fail\n\n[…]\nr, but the signaling server relays the fingerprints and is\ntherefore trusted to relay them faithfully. Reword to state the real\nguarantee and note that self-hosting removes the third-party dependency.",
          "is_bot": false,
          "headline": "fix: raise browser sender ack timeout to 120s; correct MITM docs clai…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-06T14:47:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88a429b5e26dcff6af33a93be5fc4ed0f743032a",
          "body": "The client image failed to build (docker compose up --build). Bump the client builder/runner to node:22-alpine (pnpm 11.x needs Node 22+ for node:sqlite), pin pnpm@11.1.2 to match packageManager, and copy pnpm-workspace.yaml into the install stage so the lockfile overrides resolve. Verified the full stack builds and serves from a clean fork with no secrets.",
          "is_bot": false,
          "headline": "fix(docker): repair the client image build for self-hosting (#143)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T16:44:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c24a4707d72fcdf4ee757259db5a7c0179665ab",
          "body": "Make the CONTRIBUTING.md client-only workflow consistent: tell contributors to set NEXT_PUBLIC_SOCKET_URL=https://api.floe.one (the .env.example ships localhost:3001), note the client+server flow already defaults to localhost:3001, and correct the env-table default.",
          "is_bot": false,
          "headline": "docs: fix client-only setup to point at the live signaling server (#142)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T16:04:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26c6bee639f9a1ca5c72ff5c5a821fef1d303ebe",
          "body": "Add the three env vars that drifted out of CONTRIBUTING.md: NEXT_PUBLIC_SITE_URL (client, #123) and MAX_CODE_REQUESTS_PER_IP + MAX_ACTIVE_CODES (server, #122), matching the .env.example files and the configuration reference.",
          "is_bot": false,
          "headline": "docs: sync CONTRIBUTING env tables with current env vars (#141)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T15:05:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37e1b924ffa30a76552e46b43dc5f9e4580996db",
          "body": "Document the v1.7.2 CLI release: floe send now prints a #room= fragment link and floe receive resolves both #room= and legacy ?room= links.",
          "is_bot": false,
          "headline": "docs: add v1.7.2 changelog entry (#140)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T14:08:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "252803266cfb703cdfbde80dbe829c0a56c01c8f",
          "body": "Move the receiver's completed-files list (checkmark, name + tooltip, size, per-file download link) into a presentational ReceivedFilesList component. The shared fileListRef passes down as a listRef prop; the parent's auto-scroll effect is unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract ReceivedFilesList from P2PTransfer (#139)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:38:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a86a6638e9de5a9f633ecd70710b97465ceb3fab",
          "body": "Move the sender's queued-files list (icon, name + tooltip, size, per-row delete/checkmark/spinner) into a presentational SelectedFilesList component. The shared fileListRef passes down as a listRef prop; the parent's auto-scroll effect is unchanged. FileIcon import relocates with it.",
          "is_bot": false,
          "headline": "refactor(client): extract SelectedFilesList from P2PTransfer (#138)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:33:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "337bdfaacc4b2fe6fd870b0d97d83e2971a63b55",
          "body": "Move the active-transfer progress row (label, speed/ETA, percentage, bar) into a presentational TransferProgressBar component, relocating the Progress UI import with it. Rendered under the existing progress > 0 guard; DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract TransferProgressBar from P2PTransfer (#137)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:26:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4a0c94b920295b44b59cb20e427f7c69bd0c922",
          "body": "Move the sender's share panel (link text, Copy/QR/Share buttons, QR code, status line) into a presentational ShareLinkPanel component, relocating the QRCodeSVG and Check/Copy/QrCode/Share2 imports with it. State and handlers stay in P2PTransfer; DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract ShareLinkPanel from P2PTransfer (#136)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:21:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0de49d5d9385093ac3e64d5188123f2ea8397188",
          "body": "…135)\n\nMove the receiver's \"Contribute to global stats\" opt-out checkbox card into a presentational StatsContributionToggle component. The opt-out state and its localStorage persistence stay in useTransferAnalytics; DOM and behavior unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract StatsContributionToggle from P2PTransfer (#…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:15:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "329628ac7f656abae5f567484abcb40526cb31d4",
          "body": "Move the sender's Network Relay Fallback checkbox card (and its disabled-state warning) into a presentational RelayFallbackToggle component. State stays in P2PTransfer via useRelayConfiguration; DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract RelayFallbackToggle from P2PTransfer (#134)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:11:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80a581026838ac94347876dfb9ddaf146ebabdf6",
          "body": "Move the connection status indicator (Wifi/ping, direct/relay/ready/offline dot, Info tooltip) into a presentational ConnectionStatusBadge component that owns the tooltip open/close state and its two effects. P2PTransfer drops ~78 JSX lines + 1 state + 2 effects; behavior and DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract ConnectionStatusBadge from P2PTransfer (#133)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:02:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "494081b144fe9e0581abda0553f4fbad9cf7a0b2",
          "body": "Pull the duplicated \"expected vs unexpected\" check and analytics reason mapping out of both peer error handlers into a pure, unit-tested classifyPeerError() in lib. Side effects (Sentry, setError, track, setStatus) stay inline. Adds 10 unit tests covering paths e2e cannot reliably trigger. No behavior change.",
          "is_bot": false,
          "headline": "refactor(client): extract classifyPeerError from P2PTransfer (#132)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T10:39:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e695adafb5be4e88a7dd1a2e6304f5018c7759d",
          "body": "Move the relay policy into a pure, unit-tested lib/relay.ts (RELAY_SIZE_LIMIT, filterIceServers, evaluateRelayGate) plus a thin useRelayConfiguration hook for the relayEnabled toggle. The sender's ICE filter and validation block now call these helpers; all side effects (status, error, Sentry, peer.destroy, sendAllFiles) stay inline and behave identically. Adds 9 unit tests covering the relay-block paths e2e does not reach.",
          "is_bot": false,
          "headline": "refactor(client): extract useRelayConfiguration from P2PTransfer (#131)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T10:27:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bafbb506bf95a2b737ce97b27c1623e81f94485a",
          "body": "Move Umami tracking and the global stats report into a useTransferAnalytics hook: the UmamiWindow interface, reportStatsEnabled state + both localStorage effects, a guarded track() wrapper, and reportBytes(). Replaces 4 inline umami.track call sites and collapses the receiver's stats-report block. Sentry stays inline.",
          "is_bot": false,
          "headline": "refactor(client): extract useTransferAnalytics from P2PTransfer (#130)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T10:16:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "515bdd067b72ad0b306a4b54ce5b1d3b934d17d5",
          "body": "Document the per-IP /api/code rate limit (MAX_CODE_REQUESTS_PER_IP), the active-code cap (MAX_ACTIVE_CODES, 503 when full), and the switch to crypto.randomInt (CSPRNG) for room-code generation. Tracks #122.",
          "is_bot": true,
          "headline": "docs: signaling rate limits and CSPRNG room codes (#127)",
          "author_name": "mintlify[bot]",
          "author_login": "mintlify[bot]",
          "committed_at": "2026-06-29T14:49:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4af9e16d86728c1d98d638adff68549ef63617a",
          "body": "Document the room-secret URL fragment and the NEXT_PUBLIC_SITE_URL build-time variable, fix the stray ?room= CLI example, and correct the documented NEXT_PUBLIC_SITE_URL default to https://www.floe.one.",
          "is_bot": true,
          "headline": "docs: fragment share links and site URL config (#126)",
          "author_name": "mintlify[bot]",
          "author_login": "mintlify[bot]",
          "committed_at": "2026-06-29T14:49:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe798167d9ec78402a64e81583c5c441dcb1a100",
          "body": "Fourth step of decomposing P2PTransfer.tsx into focused hooks. Move the\ndirect-vs-relay detection (checkConnectionType reading peer ICE stats, plus its\n5s polling interval and the connectionType state) into\nclient/hooks/useConnectionType.ts.\n\nThe hook returns { connectionType, startPolling, stopPoll\n[…]\nnalytics,\nfloe-connection-status dispatch) are unchanged.\n\nDeliberately untouched: the sender's separate inline getStats relay-fallback\nvalidation, which is a different concern and not covered by e2e.",
          "is_bot": false,
          "headline": "refactor(client): extract useConnectionType from P2PTransfer (#129)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-29T09:41:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d777460df9e528b022caebb2b432307388872167",
          "body": "Third step of decomposing P2PTransfer.tsx into focused hooks. Move the\nSocket.IO transport into client/hooks/useSignaling.ts: the socket singleton,\nisConnected + ping state, the 2s ping loop, and the\nconnect/disconnect/connect_error/reconnect/signal/peer-disconnected listeners.\n\nThe hook is peer- an\n[…]\nnectError, onReconnect) back to the component via callbacks.\nPeer/WebRTC creation stays in the component (next extraction). The component\nnow holds no direct socket reference. No wire-protocol change.",
          "is_bot": false,
          "headline": "refactor(client): extract useSignaling from P2PTransfer (#128)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-29T09:22:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbc4c271fb084e7f00e9c64d50539fd05ffd0472",
          "body": "Second step of decomposing P2PTransfer.tsx into focused hooks. Move the\nreceiver-side download orchestration (Download All + Download ZIP via fflate)\nand its progress state (isZipping, isDownloading, downloadProgress) into\nclient/hooks/useDownloadManager.ts, along with the ReceivedFile type and the\n\n[…]\nhavior-preserving: the component passes receivedFiles (read-only) and\nsetError into the hook. The per-file <a download> links, the iOS ZIP tip, and\nthe receiver connection logic stay in the component.",
          "is_bot": false,
          "headline": "refactor(client): extract useDownloadManager from P2PTransfer (#125)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-28T18:50:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "77eb144428793016ab6b982f6574415b089eb298",
          "body": "First step of decomposing the 1.5k-line P2PTransfer.tsx into focused hooks,\nmirroring the cli/engine/ split. Move the sender's file-selection concern\n(files, isDragging, totalBytes, and the pick/drag/drop/delete handlers) into\nclient/hooks/useFileManagement.ts.\n\nBehavior-preserving: the component no\n[…]\n currentFileIndex\nstays in the component because it tracks transfer progress, not selection.\nThe Playwright e2e (which drives file selection via setInputFiles) is the\nguard that behavior is unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract useFileManagement from P2PTransfer (#124)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-28T18:19:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82cedb941290e31416be31f4b2f11086de9f2657",
          "body": "* fix(client): keep the room secret out of analytics; trim trackers\n\nAddresses reviewer feedback on lissy93/awesome-privacy#643.\n\n- Move the room id from the ?room= query param to the URL fragment\n  (#room=) so it never reaches servers, the Referer header, or pageview\n  analytics. getRoomFromUrl() s\n[…]\nlaywright specs to expect #room= for browser- and\n  CLI-generated links.\n- docs: show the /#room= link format in the CLI and web-app guides.\n\nFixes the E2E CI job on #123, which still expected ?room=.",
          "is_bot": false,
          "headline": "fix(client): keep the room secret out of analytics; trim trackers (#123)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-28T17:47:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6136cb7776e037038136cfcd203b5a2711a41358",
          "body": "…uting (#122)\n\nSecurity hardening of the signaling layer. Server-only: no transfer-protocol,\nclient, or CLI change, and old peers are unaffected.\n\n- Rate-limit the code endpoints. Add a per-IP limiter to POST /api/code and\n  GET /api/code/:code through a shared makeRateLimiter middleware (default\n  \n[…]\ndeRateLimits export check; generateCode tests now inject the picker.\nDocs: CLAUDE.md rate-limiting section and server/.env.example updated; e2e\nconfig lifts the new limiter so the suite can't trip it.",
          "is_bot": false,
          "headline": "fix(server): rate-limit /api/code, CSPRNG room codes, scope signal ro…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T10:51:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab25caf8eca1b8c5edaa12f75c9c8f328f852948",
          "body": "…121)\n\nThe literal space between </strong> and the following text was not\nsurviving in the rendered DOM for this list item (the other three items\nrender fine), so /privacy showed \"Aggregate Transfer Total:When a\ntransfer...\". Use an explicit {' '} token, matching the spacing idiom\nalready used elsewhere in this <li>, so the space is preserved by\nconstruction.",
          "is_bot": false,
          "headline": "fix(client): restore space after \"Aggregate Transfer Total:\" label (#…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T10:03:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b470ec22b4743f1bb7ddc233cf1557286509009b",
          "body": "The architecture reference pinned the floe release line at 1.6.x, but the\ncurrent release is 1.7.x. Reword the parenthetical to 'the 1.x line' so the\nProtocol versioning section stays accurate across future 1.x releases without\nneeding another edit on each bump. Protocol version itself is unchanged (1).",
          "is_bot": false,
          "headline": "docs: make protocol-versioning note version-neutral (#120)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T09:51:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a99bb9fc55c92c94c40ca51b6a8b809d9655f47e",
          "body": "…t (#119)\n\n- Reorder nav to Try Floe / How It Works / Documentation / CLI / Self-Hosting / Contributing\n- Add Latest release and Build status badges; group flat badges before social\n- Fix blue underline on badge rows by collapsing each anchor onto one line\n- Tighten Quick Start copy and drop the redundant \"visit floe.one\" line",
          "is_bot": false,
          "headline": "docs(readme): refresh top nav, add release/CI badges, tidy quick star…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T06:11:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41f26093f0420be427f76891f012e4e95c749157",
          "body": "The Documentation Site section exposed Mintlify vendor/account config\n(credit quota, billing guardrails, automation cadence, intentionally-OFF\nroadmap) that is not code guidance and has no value in a public file.\n\nReplace it with a lean Documentation Site section that keeps only the two\ncodebase-relevant facts: changelog.mdx is hand-written, and CI skips\ndocs-only PRs via paths-ignore. The dropped operational details now live\nin private docs and the Mintlify dashboard.",
          "is_bot": false,
          "headline": "chore(docs): trim internal ops and billing details from CLAUDE.md (#118)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T20:38:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0966aa13da0af965faefab6d6f14302d5f813f3",
          "body": null,
          "is_bot": false,
          "headline": "chore: normalize CLAUDE.md to LF line endings (#117)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T20:07:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb41b5e6cca1e20714b6151739bdd69896f9048d",
          "body": "…r (#116)",
          "is_bot": false,
          "headline": "docs: instruct Claude Code to omit AI co-author and attribution foote…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T19:56:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3a1e5a37c70f1c8ee7543dd29252be16bdefd65",
          "body": "…set (#115)\n\nReplaces the stock create-next-app Vercel-triangle favicon with the Floe lightning bolt; adds apple-icon, web manifest with maskable icons, viewport themeColor, and removes the unused root icon.svg.",
          "is_bot": false,
          "headline": "fix(client): replace default Vercel favicon with Floe lightning icon …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T19:49:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a91624ae80c60e5e0323dcfb191ada2bac95173c",
          "body": "Forward UPSTASH_REDIS_REST_URL/TOKEN, MAX_REPORT_BYTES, and MAX_CONNECTIONS_PER_IP to the server container so durable global-stats and the override knobs work under Docker as documented. Also bump client/Dockerfile pnpm 10->11 and note localhost:3000 in the production CORS section.",
          "is_bot": false,
          "headline": "fix(self-hosting): forward stats/limit env vars in docker-compose (#114)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-25T18:12:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbbae85b815c803e7b8acee11ccc667f06ad92a1",
          "body": "…#113)\n\nAdds a deterministic, free Vale config to enforce Floe's no-em-dash rule on\nthe docs, complementing the Mintlify \"Apply style guide\" automation:\n\n- docs/.vale.ini: Floe-only style with MDX/JSX-aware ignores\n- docs/styles/Floe/EmDash.yml: flags the Unicode em dash as an error\n\nAdds paths-igno\n[…]\n no\nrequired status checks, so docs PRs stay mergeable.\n\nDocuments the Mintlify OSS docs pipeline and the four review automations in\nCLAUDE.md.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(docs): add Vale no-em-dash check and skip CI on docs-only PRs (…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-25T14:09:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d3a93aacab34961dbacc1e334107af8c9bb1c02",
          "body": "…jection\n\nfix(client): ignore browser-extension promise rejection in Sentry",
          "is_bot": false,
          "headline": "Merge pull request #112 from jannskiee/fix/sentry-ignore-extension-re…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-24T08:07:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39d12fca4221108fd9c26304c6bed4b7a6fbe183",
          "body": "Privacy/anti-fingerprint browser extensions bridge to native desktop\nsoftware and reject a promise with a plain object when that bridge is\nnot ready, surfacing as \"Object Not Found Matching Id:N, MethodName:...,\nParamCount:N\". This is not Floe code (no stack trace into our bundle,\n0 users affected),\n[…]\nignature to ignoreErrors. Kept narrow rather than filtering all\n\"Non-Error promise rejection captured\" so real promise rejections still\nreport.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): ignore browser-extension promise rejection in Sentry",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-24T08:03:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d0d0e72a3419a003fd783a644c6326eb3569a273",
          "body": "fix(client): define xs breakpoint and use dvh for mobile viewport height",
          "is_bot": false,
          "headline": "Merge pull request #111 from jannskiee/fix/mobile-responsive-breakpoint",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T20:43:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2751f17cd9792ef086f571514e1b076a47d42dc9",
          "body": "The receiver's \"Download All\" / \"Download ZIP\" buttons used xs:grid-cols-2,\nbut xs was never defined as a Tailwind v4 breakpoint, so the class was inert\nand the buttons stayed stacked in one column until the sm (640px) breakpoint.\nDefine --breakpoint-xs: 30rem in globals.css so the two-column layout\n[…]\ne height tracks the dynamic mobile\nviewport rather than 100vh, which ignores mobile browser chrome.\n\nBoth changes are CSS-only and DOM-neutral.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): define xs breakpoint and use dvh for mobile viewport height",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T20:39:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b5a75c7627e2bf7f34997d3529802f5abb29363",
          "body": "fix(client): align privacy policy with actual data handling",
          "is_bot": false,
          "headline": "Merge pull request #110 from jannskiee/fix/privacy-policy-accuracy",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:59:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f79824cbe8318ddab807fc8460639a8eb4461f0d",
          "body": "- Sentry session replay now masks all text and blocks media\n  (maskAllText/blockAllMedia: true) so file names and on-screen\n  content are never captured, upholding the privacy policy's promise.\n- Disclose Vercel Analytics and Speed Insights, which run on every\n  page load but were previously undocumented.\n- Correct the session-replay description: replays are sampled across\n  sessions, not captured only when an error occurs.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): align privacy policy with actual data handling",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:59:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "26bfd303f335671fcfb754ba18f10e3ca68e0d89",
          "body": "docs: document receiver stats toggle and add v1.7.1 changelog entry",
          "is_bot": false,
          "headline": "Merge pull request #109 from jannskiee/docs/global-stats-receiver-ui",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:41:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "863f8422258c6390005e97bd4281156667c791dc",
          "body": "- Add a \"Contribute to global stats\" section to the web-app receiving\n  guide, matching the relay-toggle section in the sending guide.\n- Mention the receiver stats toggle and CLI --no-report / FLOE_NO_STATS\n  in the quickstart receiver flows (browser and CLI).\n- Add the global stats counter to the rate-limit list in troubleshooting.\n- Add the missing v1.7.1 changelog entry (reliable CLI counter reporting).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: document receiver stats toggle and add v1.7.1 changelog entry",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:40:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0567aeb9bb96247a75576e4855347e25ea41776f",
          "body": "fix(cli): ensure stats report completes before program exits",
          "is_bot": false,
          "headline": "Merge pull request #108 from jannskiee/fix/stats-report-race",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:53:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76bae41c4f154a978c1f8bb0a758e1119c3909cf",
          "body": "reportBytesToServer was launched as a goroutine before the grace-period\nselect. When a CLI sender closes the data channel immediately on receiving\nthe \"received\" ack, done fires, the select returns, and the program exits\n-- killing the goroutine mid-HTTP-request. Large transfers (4+ GB)\nfailed to re\n[…]\n of this race.\n\nFix: move the call to after the select so it runs synchronously. It has\nits own 5s HTTP timeout and cannot hang indefinitely.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): ensure stats report completes before program exits",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:52:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6af892d6cc7eb80a4da43c026f5afb299df5ab92",
          "body": "feat: add opt-out for global transfer counter (CLI + browser)",
          "is_bot": false,
          "headline": "Merge pull request #107 from jannskiee/feat/stats-opt-out",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:25:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e04509cd110386076d0f83f153c9fbba3da0f385",
          "body": "- CLI: add --no-report flag to floe receive and FLOE_NO_STATS=1 env var.\n  Both gate reporting by passing an empty statsURL into ReceiveFiles,\n  hitting the existing if serverURL == \"\" guard in reportBytesToServer.\n  No change to ReceiveFiles signature or receiver.go logic.\n\n- Browser: add a Contrib\n[…]\n, receive/send pages, FAQ\n  (new opt-out Q&A), security-privacy, architecture, signaling how-it-works,\n  privacy page, README, and CLAUDE.md.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add opt-out for global transfer counter (CLI + browser)",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:23:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0a89f100a8498afba57a2786039ff17fbf2293f8",
          "body": "docs: clarify Upstash counter needs the read+write REST token",
          "is_bot": false,
          "headline": "Merge pull request #106 from jannskiee/docs/upstash-readwrite-token",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:40:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89bc42845d7e10fb071855d82b099f681e791786",
          "body": "The read-only Upstash REST token silently breaks the global transfer\ncounter: the server's INCRBY is rejected with NOPERM and the total never\npersists (it only lives in memory and resets on restart). Document in\nserver/.env.example and the self-hosting configuration reference that the\nread+write token is required.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: clarify Upstash counter needs the read+write REST token",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:40:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0e8e46c41987b1647c9fbe7e472d9809cc8ab469",
          "body": "fix(client): report global counter once per transfer, not per file",
          "is_bot": false,
          "headline": "Merge pull request #105 from jannskiee/fix/global-counter-per-transfer",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:32:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47f4bce3a79c57251fa95ab4b17244b1ae9ceb13",
          "body": "The browser receiver fired a POST /api/stats/report and an optimistic\nfloe:bytes-reported event for every completed file. On large multi-file\ntransfers this overran the server's per-IP report rate limit (60/min),\nso most reports were dropped with 429 and the persisted total badly\nunder-counted (e.g.\n[…]\nanimation per transfer, no\nrate-limit drops, and an accurate persisted total. No server or CLI\nchange (the CLI receiver already reported once).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): report global counter once per transfer, not per file",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:32:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a61e8e3b164c8c1f5efea51f4bec240811f7ae4",
          "body": "docs: document the global transfer counter feature",
          "is_bot": false,
          "headline": "Merge pull request #104 from jannskiee/docs/global-transfer-counter",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:04:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "896fe3b22c3cc98baca009175fc9ee671e0d15f4",
          "body": "Document the new public, all-time global transfer counter across the\ntechnical, self-hosting, and user-facing privacy docs.\n\n- CLAUDE.md: add a Global Stats Counter architecture section, note the\n  third (stats) rate limiter, and add the Upstash/cap env vars.\n- docs/reference/architecture.mdx: add /\n[…]\ny what the\n  counter records (one anonymous byte total) and what it does not (file names,\n  contents, per-transfer records, identity/IP links).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: document the global transfer counter feature",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:03:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d686eb0bf7032e3dc89012fbed98f0d8f855e5ac",
          "body": "feat: global transfer counter with rolling-number animation",
          "is_bot": false,
          "headline": "Merge pull request #103 from jannskiee/feat/global-transfer-counter",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T06:49:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed57caa82587d467de9d7dfce716e6e41c6b2039",
          "body": "Drop the bordered card layout for the global transfer stat in favor of a\nsingle centered line. Tune NumberFlow spin/transform/opacity timing for a\nsmoother odometer roll, and mount at 0 so the count-up animation plays on\nevery page load (NumberFlow only animates on value changes after mount).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(client): simplify global counter to one line with smoother roll",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T06:48:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "79495cd2cb1d99c04448c12ae4cb1d55c503040d",
          "body": "- Server: GET /api/stats (in-memory cache, zero Redis reads per poll)\n  POST /api/stats/report (receiver peers report bytes after transfer)\n  Upstash Redis INCRBY for durable persistence across redeploys\n  Rate-limited (60/min/IP) + 5 TB per-report cap\n  Gracefully degrades to in-memory when UPSTASH\n[…]\n\n- CLI receiver: reports totalReceived bytes to /api/stats/report after\n  each successful transfer (fire-and-forget, errors silently ignored)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add global transfer counter with rolling-number animation",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T06:19:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dc82ad7d3c5b06beea52895d6a8d3456ee5b6e11",
          "body": "Set appearance.strict to false so the theme toggle button renders in\nthe docs navbar (top-right, next to the GitHub link). Default theme\nstays dark. Light/dark logo variants and colors are already defined,\nso light mode renders correctly.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: enable light/dark appearance toggle (#102)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-21T19:03:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "29839e4580dfdd50e81c5f31da836522da205e45",
          "body": "Updates all documentation for the v1.6.0 protocol version negotiation\nfeature and tidies alignment in the code it added.\n\nDocs:\n- changelog: add v1.6.0 entry\n- architecture reference: add pv/pvMin/ver to metadata and ack, document\n  the new incompatible message, and add a Protocol versioning section\n[…]\nt struct\n\nNo test files were deleted: all existing tests remain valid and exercise\nlive code paths, so removing any would only reduce coverage.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: document protocol version negotiation (v1.6.0)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-21T17:52:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 20,
      "commits_last_year": 355,
      "latest_release_at": "2026-07-22T16:12:08Z",
      "latest_release_tag": "v1.8.0",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 12,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 3.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 71,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/jannskiee/floe",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/jannskiee/floe",
          "is_deprecated": false,
          "latest_version": "v1.8.0",
          "repository_url": "https://github.com/jannskiee/floe",
          "versions_count": 20,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-22T16:09:39Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1
        },
        {
          "name": "p2p-fileshare",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/p2p-fileshare",
          "is_deprecated": false,
          "latest_version": "1.0.0",
          "repository_url": "https://github.com/fluencelabs/p2p-fileshare",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 82,
          "first_published_at": "2020-06-29T12:10:18.776000Z",
          "latest_published_at": "2020-06-29T12:10:18.955000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 2216
        }
      ]
    },
    "popularity": {
      "forks": 9,
      "stars": 196,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 1
          },
          {
            "date": "2026-06-13",
            "count": 1
          },
          {
            "date": "2026-06-27",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-18",
            "count": 4
          }
        ],
        "complete": true,
        "collected": 9,
        "total_forks": 9
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "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": [
        "client/tsconfig.json"
      ],
      "toolchain_manifests": [
        "cli/go.mod"
      ],
      "largest_source_bytes": 54913,
      "source_files_sampled": 114,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 12362
    },
    "dependencies": {
      "manifests": [
        "cli/go.mod",
        "client/package.json",
        "package.json",
        "server/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "node-forge",
            "direct": false,
            "version": "0.9.2",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-2328-f5f3-gj25",
              "GHSA-2r2c-g63r-vccr",
              "GHSA-554w-wpv2-vw27",
              "GHSA-5gfm-wpxj-wjgq",
              "GHSA-5m6q-g25r-mvwx",
              "GHSA-5rrq-pxf6-6jx5",
              "GHSA-65ch-62r8-g69g",
              "GHSA-8fr3-hfg3-gpgp",
              "GHSA-92xj-mqp7-vmcj",
              "GHSA-cfm4-qjh2-4765"
            ],
            "fixed_version": "1.4.0",
            "advisory_count": 15,
            "oldest_advisory_days": 2138
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.8,
            "advisory_ids": [
              "GHSA-fwr7-v2mv-hh25"
            ],
            "fixed_version": "3.2.2",
            "advisory_count": 1,
            "oldest_advisory_days": 1569
          },
          {
            "name": "elliptic",
            "direct": false,
            "version": "6.6.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-848j-6mx2-7j84"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 196
          },
          {
            "name": "libp2p",
            "direct": false,
            "version": "0.27.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-f44q-634c-jvwv"
            ],
            "fixed_version": "0.38.0",
            "advisory_count": 1,
            "oldest_advisory_days": 1324
          },
          {
            "name": "parse-duration",
            "direct": false,
            "version": "0.1.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-hcrg-fc28-fcg5"
            ],
            "fixed_version": "2.1.3",
            "advisory_count": 1,
            "oldest_advisory_days": 526
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "3.4.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-w5hq-g745-h8pq"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 92
          },
          {
            "name": "ip-address",
            "direct": true,
            "version": "6.3.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-v2v4-37r5-5v8g"
            ],
            "fixed_version": "10.1.1",
            "advisory_count": 1,
            "oldest_advisory_days": 79
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "2.1.11",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-mwcw-c2x4-8c55"
            ],
            "fixed_version": "5.0.9",
            "advisory_count": 1,
            "oldest_advisory_days": 592
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 5,
          "critical": 1,
          "moderate": 2
        },
        "advisory_count": 22,
        "affected_count": 8,
        "assessed_count": 354,
        "malicious_count": 0,
        "assessed_package": "npm:p2p-fileshare@1.0.0",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "go",
        "npm"
      ],
      "dependencies": [
        {
          "name": "github.com/google/uuid",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "github.com/gorilla/websocket",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.3"
        },
        {
          "name": "github.com/pion/webrtc/v4",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.2.17"
        },
        {
          "name": "github.com/schollz/progressbar/v3",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.19.1"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "@number-flow/react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.6.2"
        },
        {
          "name": "@radix-ui/react-accordion",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.16"
        },
        {
          "name": "@radix-ui/react-progress",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.12"
        },
        {
          "name": "@radix-ui/react-slot",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.0"
        },
        {
          "name": "@sentry/nextjs",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.66.0"
        },
        {
          "name": "class-variance-authority",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "fflate",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.8.2"
        },
        {
          "name": "lucide-react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.25.0"
        },
        {
          "name": "next",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "16.2.10"
        },
        {
          "name": "qrcode.react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.7"
        },
        {
          "name": "react-dom",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.7"
        },
        {
          "name": "simple-peer",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.11.1"
        },
        {
          "name": "socket.io-client",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.8.3"
        },
        {
          "name": "tailwind-merge",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.0"
        },
        {
          "name": "uuid",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.1"
        },
        {
          "name": "cors",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.6"
        },
        {
          "name": "dotenv",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.4.7"
        },
        {
          "name": "express",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.1"
        },
        {
          "name": "helmet",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.3.0"
        },
        {
          "name": "socket.io",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.8.3"
        },
        {
          "name": "ws",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "github.com/google/uuid",
            "direct": true,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gorilla/websocket",
            "direct": true,
            "version": "v1.5.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/webrtc/v4",
            "direct": true,
            "version": "v4.2.15",
            "ecosystem": "go"
          },
          {
            "name": "github.com/schollz/progressbar/v3",
            "direct": true,
            "version": "v3.19.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/cobra",
            "direct": true,
            "version": "v1.10.2",
            "ecosystem": "go"
          },
          {
            "name": "@number-flow/react",
            "direct": true,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-accordion",
            "direct": true,
            "version": "1.2.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-progress",
            "direct": true,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": true,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/nextjs",
            "direct": true,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": true,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": true,
            "version": "2.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "dotenv",
            "direct": true,
            "version": "16.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "dotenv",
            "direct": true,
            "version": "17.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": true,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "fflate",
            "direct": true,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "helmet",
            "direct": true,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": true,
            "version": "1.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "next",
            "direct": true,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode.react",
            "direct": true,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "simple-peer",
            "direct": true,
            "version": "9.11.1",
            "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.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "github.com/inconshreveable/mousetrap",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mitchellh/colorstring",
            "direct": false,
            "version": "v0.0.0-20190213212951-d06e56a500db",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/datachannel",
            "direct": false,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/dtls/v3",
            "direct": false,
            "version": "v3.1.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/ice/v4",
            "direct": false,
            "version": "v4.2.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/interceptor",
            "direct": false,
            "version": "v0.1.45",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/logging",
            "direct": false,
            "version": "v0.2.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/mdns/v2",
            "direct": false,
            "version": "v2.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/randutil",
            "direct": false,
            "version": "v0.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/rtcp",
            "direct": false,
            "version": "v1.2.16",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/rtp",
            "direct": false,
            "version": "v1.10.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/sctp",
            "direct": false,
            "version": "v1.10.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/sdp/v3",
            "direct": false,
            "version": "v3.0.18",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/srtp/v3",
            "direct": false,
            "version": "v3.0.11",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/stun/v3",
            "direct": false,
            "version": "v3.1.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/transport/v4",
            "direct": false,
            "version": "v4.0.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/turn/v5",
            "direct": false,
            "version": "v5.0.9",
            "ecosystem": "go"
          },
          {
            "name": "github.com/rivo/uniseg",
            "direct": false,
            "version": "v0.4.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/pflag",
            "direct": false,
            "version": "v1.0.9",
            "ecosystem": "go"
          },
          {
            "name": "github.com/wlynxg/anet",
            "direct": false,
            "version": "v0.0.5",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/crypto",
            "direct": false,
            "version": "v0.53.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/net",
            "direct": false,
            "version": "v0.56.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sys",
            "direct": false,
            "version": "v0.46.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/term",
            "direct": false,
            "version": "v0.44.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/time",
            "direct": false,
            "version": "v0.14.0",
            "ecosystem": "go"
          },
          {
            "name": "@alloc/quick-lru",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/code-transformer",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/code-transformer-bundler-plugins",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/tracing-hooks",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "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/runtime",
            "direct": false,
            "version": "1.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.39.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/types",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/colour",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-riscv64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-riscv64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/source-map",
            "direct": false,
            "version": "0.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@next/env",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/eslint-plugin-next",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-darwin-arm64",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-darwin-x64",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-arm64-gnu",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-arm64-musl",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-x64-gnu",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-x64-musl",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-win32-arm64-msvc",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-win32-x64-msvc",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@nolyfill/is-core-module",
            "direct": false,
            "version": "1.0.39",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api-logs",
            "direct": false,
            "version": "0.220.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/core",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/instrumentation",
            "direct": false,
            "version": "0.220.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/resources",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace-base",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.43.0",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/primitive",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-collapsible",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-collection",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-compose-refs",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-context",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-direction",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-id",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-presence",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-primitive",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-controllable-state",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-effect-event",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-layout-effect",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-commonjs",
            "direct": false,
            "version": "28.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rtsao/scc",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/babel-plugin-component-annotate",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/browser",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/browser-utils",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/bundler-plugin-core",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/bundler-plugins",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-darwin",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-arm",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-arm64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-i686",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-x64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-win32-arm64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-win32-i686",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-win32-x64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/conventions",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/core",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/feedback",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node-core",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/opentelemetry",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/react",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/replay",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/replay-canvas",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/server-utils",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/vercel-edge",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/webpack-plugin",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@socket.io/component-emitter",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/helpers",
            "direct": false,
            "version": "0.5.15",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/node",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-android-arm64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-arm64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-x64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-freebsd-x64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-gnu",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-musl",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-gnu",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-musl",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-wasm32-wasi",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-arm64-msvc",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-x64-msvc",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/postcss",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "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/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json5",
            "direct": false,
            "version": "0.0.29",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "19.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "19.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/simple-peer",
            "direct": false,
            "version": "9.11.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/uuid",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm-eabi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-freebsd-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-musleabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-openharmony-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-wasm32-wasi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-ia32-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-x64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ast",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/floating-point-hex-parser",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-api-error",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-buffer",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-numbers",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-bytecode",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-section",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ieee754",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/leb128",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/utf8",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-edit",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-gen",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-opt",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-parser",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wast-printer",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/ieee754",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/long",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-import-phases",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-keywords",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-buffer-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-includes",
            "direct": false,
            "version": "3.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.findlast",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.findlastindex",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flat",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flatmap",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.tosorted",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "arraybuffer.prototype.slice",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-types-flow",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "astring",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "async-function",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "available-typed-arrays",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "axe-core",
            "direct": false,
            "version": "4.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "axobject-query",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "base64id",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.43",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "6.7.14",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001806",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "check-error",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "chrome-trace-event",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "client-only",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "commondir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "damerau-levenshtein",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-buffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-offset",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "deep-eql",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.393",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.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": "enhanced-resolve",
            "direct": false,
            "version": "5.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "err-code",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-abstract",
            "direct": false,
            "version": "1.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-abstract-get",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-iterator-helpers",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-shim-unscopables",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-to-primitive",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "9.39.4",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-next",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-import-resolver-node",
            "direct": false,
            "version": "0.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-import-resolver-typescript",
            "direct": false,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-module-utils",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-import",
            "direct": false,
            "version": "2.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-jsx-a11y",
            "direct": false,
            "version": "6.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-react",
            "direct": false,
            "version": "7.37.5",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-react-hooks",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esm-env",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "for-each",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "function.prototype.name",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "functions-have-names",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "generator-function",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-browser-rtc",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-symbol-description",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "4.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-to-regexp",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "16.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "globalthis",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has-bigints",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "hermes-estree",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "npm"
          },
          {
            "name": "hermes-parser",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "ignore-by-default",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-in-the-middle",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "internal-slot",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-array-buffer",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-async-function",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-bigint",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-boolean-object",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-bun-module",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-callable",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-data-view",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-date-object",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-document.all",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-finalizationregistry",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-function",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-map",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-negative-zero",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number-object",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-reference",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-regex",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-set",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-shared-array-buffer",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-string",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-symbol",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typed-array",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakmap",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakref",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakset",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "iterator.prototype",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "jiti",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsx-ast-utils",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "language-subtag-registry",
            "direct": false,
            "version": "0.3.23",
            "ecosystem": "npm"
          },
          {
            "name": "language-tags",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "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": "loader-runner",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "loose-envify",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "loupe",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "meriyah",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "module-details-from-path",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.16",
            "ecosystem": "npm"
          },
          {
            "name": "napi-postinstall",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-exports-info",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "npm"
          },
          {
            "name": "nodemon",
            "direct": false,
            "version": "3.1.14",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "number-flow",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "object.entries",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "object.fromentries",
            "direct": false,
            "version": "2.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "object.groupby",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "object.values",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "own-keys",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pathval",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "possible-typed-array-names",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.19",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "progress",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "prop-types",
            "direct": false,
            "version": "15.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pstree.remy",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "16.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "reflect.getprototypeof",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "regexp.prototype.flags",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "require-in-the-middle",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "2.0.0-next.7",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-array-concat",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-push-apply",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex-test",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "semifies",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-name",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-proto",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-update-notifier",
            "direct": false,
            "version": "2.0.0",
            "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",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "stable-hash",
            "direct": false,
            "version": "0.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stacktrace-parser",
            "direct": false,
            "version": "0.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "3.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "stop-iteration-iterator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.includes",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.matchall",
            "direct": false,
            "version": "4.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.repeat",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trim",
            "direct": false,
            "version": "1.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimend",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimstart",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-literal",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "styled-jsx",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.49.0",
            "ecosystem": "npm"
          },
          {
            "name": "terser-webpack-plugin",
            "direct": false,
            "version": "5.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinypool",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyspy",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "touch",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsconfig-paths",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tw-animate-css",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-buffer",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-length",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-offset",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-length",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "unbox-primitive",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "undefsafe",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unrs-resolver",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "7.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "vite-node",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "watchpack",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack",
            "direct": false,
            "version": "5.107.2",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-sources",
            "direct": false,
            "version": "3.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-boxed-primitive",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-builtin-type",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-collection",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-typed-array",
            "direct": false,
            "version": "1.1.22",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "xmlhttprequest-ssl",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod-validation-error",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 791,
        "direct_count": 30,
        "indirect_count": 761
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 185,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 1,
        "closed_unmerged_prs": 10
      },
      "bus_factor": 1,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "jannskiee",
          "commits": 344,
          "avatar_url": "https://avatars.githubusercontent.com/u/108071426?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.mjs"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "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": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 9,
            "reason": "28 out of 30 merged PRs checked by a CI test -- score normalized to 9",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/24 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 1 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": 7,
            "reason": "dependency not pinned by hash detected -- score normalized to 7",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 6,
            "reason": "SAST tool is not run on all commits -- score normalized to 6",
            "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": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "12 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "87e88663fedb72cb6fb138b368381d2106f19706",
        "ran_at": "2026-07-24T15:18:34Z",
        "aggregate_score": 6,
        "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-24T10:45:41Z",
      "oldest_open_prs": [
        {
          "number": 170,
          "created_at": "2026-07-18T17:00:08Z",
          "last_comment_at": "2026-07-18T19:20:33Z",
          "last_comment_author": "jannskiee"
        }
      ],
      "last_merged_pr_at": "2026-07-23T13:04:13Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/jannskiee/floe",
    "host": "github.com",
    "name": "floe",
    "owner": "jannskiee"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 67,
      "inputs": {
        "security": 57,
        "vitality": 79,
        "community": 57,
        "governance": 53,
        "engineering": 89
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 79,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "commits_last_year": 355,
              "human_commit_share": 0.92,
              "days_since_last_push": 1,
              "active_weeks_last_year": 12
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "12/52 weeks with commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "355 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 355
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 1 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": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 20,
              "latest_release_tag": "v1.8.0",
              "releases_from_tags": false,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 3.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "20 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 57,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "forks": 9,
              "stars": 196,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "196 stars",
                "points": 37.1,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 196
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "9 forks",
                "points": 7.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 53,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "merged_prs": 185,
              "open_issues": 0,
              "closed_issues": 1,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 10
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "185/195 decided PRs merged",
                "points": 36.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 185,
                      "decided": 195
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/24 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "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": 37,
            "inputs": {
              "followers": 6,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "jannskiee",
              "public_repos": 5,
              "account_age_days": 1492
            },
            "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": "6 followers of jannskiee",
                "points": 6.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 6,
                      "login": "jannskiee"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~4 yr old",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 4
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/jannskiee/floe"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 1
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 1 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "20 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "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": 89,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 82,
            "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": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "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": "28 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 18,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "file-sharing",
                "file-transfer",
                "nextjs",
                "open-source",
                "peer-to-peer",
                "socket-io",
                "typescript",
                "webrtc",
                "nodesjs",
                "privacy",
                "react",
                "encryption",
                "golang",
                "p2p"
              ],
              "has_wiki": true,
              "homepage": "https://floe.one",
              "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://floe.one",
                "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": "14 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 57,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 6
            },
            "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 is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "28 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/24 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 1 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 7",
                "points": 3.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 6",
                "points": 3,
                "status": "partial",
                "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": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "12 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Matched the npm:p2p-fileshare@1.0.0 runtime dependency closure — what installing the published package pulls in — 354 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:p2p-fileshare@1.0.0",
                  "assessed": 354
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 47,
            "inputs": {
              "source": "osv",
              "advisories": 22,
              "affected_packages": 8,
              "assessed_packages": 354,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 1, high 5, moderate 2",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: ip-address 6.3.0 (moderate)",
                "points": 26.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "ip-address 6.3.0 (moderate)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "7 affected: node-forge 0.9.2 (critical 9.8), async 3.2.0 (high 7.8), elliptic 6.6.1 (high 7.3), +4 more",
                "points": 2.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 7,
                      "packages": "node-forge 0.9.2 (critical 9.8), async 3.2.0 (high 7.8), elliptic 6.6.1 (high 7.3)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "7 advisory-carrying package(s) unaddressed past 90 days; oldest published 2138 days ago",
                "points": 17.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 7,
                      "oldest": 2138
                    }
                  }
                ],
                "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": 354,
              "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": 2
            },
            "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": "excellent",
        "name": "AI Readiness",
        "value": 91,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 12362
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "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": "92 of 92 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 92
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum",
                "package-lock.json",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "client/tsconfig.json"
              ],
              "agent_commit_share": 0.14,
              "toolchain_manifests": [
                "cli/go.mod"
              ],
              "dependency_bot_commit_share": 0.05
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "cli/go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "cli/go.mod"
                    }
                  }
                ],
                "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": "eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "client/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "client/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": "14 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 14,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "5 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 5,
                      "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 7",
                "points": 7,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 54913,
              "source_files_sampled": 114,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/114 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 114,
                      "oversized": 0
                    }
                  }
                ],
                "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",
    "npm package 'p2p-fileshare' points at a different repository (https://github.com/fluencelabs/p2p-fileshare); excluded from ecosystem scoring"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T15:18:53.214904Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jannskiee/floe.svg",
  "full_name": "jannskiee/floe",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasGo, npm.