Public record
Software health reportschema 0.27.0 · metrics 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 stars⑂ 9 forkssince Jan 2026View on GitHub ↗

jannskiee/floe holds a health index of 67 out of 100, placing it in the Moderate band. It scores highest on AI Readiness (91/100) and lowest on Sustainability & Governance (53/100). It was last updated 1 day ago. A single contributor accounts for most of its recent work.

67
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

67
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

JC ParedesPersonal account
6 followers5 public repossince Jun 2022

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
Gogithub.com/jannskiee/floev1.8.0-201 day ago
npmp2p-filesharepoints to another repo — not scored1.0.08212216 days ago

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

79Good · 22% of overall
How it's scored
36/36Push recency — last push 1 days ago
8.3/36Commit cadence — 12/52 weeks with commits
18/18Commit volume — 355 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year355
human_commit_share0.92
days_since_last_push1
active_weeks_last_year12
How it's scored
27/27Ships releases — 20 releases published
36/36Release recency — latest release 1 days ago
27/27Release cadence — a release every ~3.4 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count20
latest_release_tagv1.8.0
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases3.4

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

57Moderate · 18% of overall
How it's scored
37.1/60Stars — 196 stars
7.5/25Forks — 9 forks
0/15Watchers — 0 watchers
Inputs used
forks9
stars196
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

53Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0/22.5Commit distribution — top contributor authored 100% of commits
1.4/13.5Contributor breadth — 1 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled1
top_contributor_share1
How it's scored
46.8/46.8Issue resolution — 100% of issues closed
36.3/38.3PR acceptance — 185/195 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/24 approved changesets -- score normalized to 0
Inputs used
merged_prs185
open_issues0
closed_issues1
issue_closed_ratio1
closed_unmerged_prs10
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
6.1/25Owner reach — 6 followers of jannskiee
13.8/25Track record — 5 public repos, account ~4 yr old
Inputs used
followers6
owner_typeUser
is_verified
owner_loginjannskiee
public_repos5
account_age_days1,492
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 1 package(s) on go
35/35Publish recency — latest publish 1 days ago
20/20Version history — 20 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesgithub.com/jannskiee/floe
ecosystemsgo
any_deprecatedno
min_days_since_publish1

Engineering Quality

Are baseline engineering and documentation practices in place?

89Excellent · 20% of overall
How it's scored
24/24CI workflows — 2 workflow(s)
24/24Tests present
16/16Linter config — eslint.config.mjs
0/9.6Pre-commit hooks
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 28 out of 30 merged PRs checked by a CI test -- score normalized to 9
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://floe.one
10/10Repository description
10/10Topics — 14 topics
10/10Wiki
Inputs used
topicsfile-sharing, file-transfer, nextjs, open-source, peer-to-peer, socket-io, typescript, webrtc, nodesjs, privacy, react, encryption, golang, p2p
has_wikiyes
homepagehttps://floe.one
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

57Moderate · 16% of overall
How it's scored
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.5License — 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
Inputs used
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate6
How it's scored
26.6/35Direct dependencies free of known advisories — 1 affected: ip-address 6.3.0 (moderate)
2.6/25Indirect dependencies free of known advisories — 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
17.4/40No advisories left outstanding — 7 advisory-carrying package(s) unaddressed past 90 days; oldest published 2,138 days ago
Inputs used
sourceosv
advisories22
affected_packages8
assessed_packages354
unassessed_packages0
affected_by_severitycritical 1, high 5, moderate 2
direct_affected_packages1
Matched the npm:p2p-fileshare@1.0.0 runtime dependency closure — what installing the published package pulls in — 354 packages. Reachability is not analyzed.

AI Readiness

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.

91Excellent · 0% of overall
How it's scored
45/45Agent instructions — CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 92 of 92 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes12,362
How it's scored
12.6/18One-command bootstrap — cli/go.mod (toolchain convention, no task runner)
22/22Automated tests
11/11Lint / format config — eslint.config.mjs
11/11Static type checking — client/tsconfig.json
10/10Reproducible environment — Dockerfile, lockfile
10/10Demonstrated agent practice — 14 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 5 of the last 100 commits are automated dependency updates
7/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
Inputs used
has_nixno
has_testsyes
lockfilesgo.sum, package-lock.json, pnpm-lock.yaml
has_dockerfileyes
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configsclient/tsconfig.json
agent_commit_share0.14
toolchain_manifestscli/go.mod
dependency_bot_commit_share0.05
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
55/55Manageable file sizes — 0/114 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes54,913
source_files_sampled114
oversized_source_files0

Key facts

196GitHub stars
1contributors
355commits, last 12 months
1days since last push
20releases
1bus factor
0open issues
Go, npmpackage ecosystems

Data collection 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

More detail

Star and fork history 0 ★ / 9 ⇿
0Stars
9Forks
18Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

0246810942026-042026-062026-07
Major 1Minor 7Patch 10
OpenSSF Scorecard 6.0 / 10
6.0aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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
Direct dependencies 28
RegistryPackageVersion constraintManifest
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
All dependencies 791

Full resolved dependency set from the GitHub dependency graph: 30 direct and 761 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

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

Installing npm:p2p-fileshare@1.0.0 pulls in 354 packages, direct and transitive: 8 carry known advisories, of which 1 are direct dependencies.

PackageVersionRelationSeverityAdvisoriesFixed in
node-forge0.9.2indirectcritical151.4.0
async3.2.0indirecthigh13.2.2
elliptic6.6.1indirecthigh1
libp2p0.27.4indirecthigh10.38.0
parse-duration0.1.3indirecthigh12.1.3
uuid3.4.0indirecthigh113.0.1
ip-address6.3.0directmoderate110.1.1
nanoid2.1.11indirectmoderate15.0.9

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsGo, npm.