{"id":36493,"url":"https://github.com/dmtrKovalenko/odiff","last_synced_at":"2026-06-04T06:20:41.616Z","repository":{"id":41485432,"uuid":"310022924","full_name":"dmtrKovalenko/odiff","owner":"dmtrKovalenko","description":"A very fast SIMD-first image comparison library (with nodejs API)","archived":false,"fork":false,"pushed_at":"2025-09-29T00:39:20.000Z","size":75561,"stargazers_count":2522,"open_issues_count":21,"forks_count":93,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-09-29T01:25:38.161Z","etag":null,"topics":["diff","image-comparison","odiff","pixel-perfect","snapshot","testing-tool","visual"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmtrKovalenko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"dmtrKovalenko","open_collective":"odiff"}},"created_at":"2020-11-04T14:15:02.000Z","updated_at":"2025-09-28T19:52:33.000Z","dependencies_parsed_at":"2024-04-16T02:30:10.425Z","dependency_job_id":"3fd4538e-a925-44fe-8b78-59ac0f04ac62","html_url":"https://github.com/dmtrKovalenko/odiff","commit_stats":{"total_commits":240,"total_committers":10,"mean_commits":24.0,"dds":0.09166666666666667,"last_synced_commit":"c58c50587d7e55421abbf3ea5c10b2502e74b67f"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/dmtrKovalenko/odiff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmtrKovalenko%2Fodiff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmtrKovalenko%2Fodiff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmtrKovalenko%2Fodiff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmtrKovalenko%2Fodiff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmtrKovalenko","download_url":"https://codeload.github.com/dmtrKovalenko/odiff/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmtrKovalenko%2Fodiff/sbom","scorecard":{"id":348368,"data":{"date":"2025-08-11","repo":{"name":"github.com/dmtrKovalenko/odiff","commit":"df03e4a16e05c504342225454c2a318679dd1fe5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 8/30 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.2.1 not signed: https://api.github.com/repos/dmtrKovalenko/odiff/releases/200384093","Warn: release artifact v3.2.0 not signed: https://api.github.com/repos/dmtrKovalenko/odiff/releases/186815746","Warn: release artifact v3.1.2 not signed: https://api.github.com/repos/dmtrKovalenko/odiff/releases/178100548","Warn: release artifact v3.1.1 not signed: https://api.github.com/repos/dmtrKovalenko/odiff/releases/172233906","Warn: release artifact v3.1.0 not signed: https://api.github.com/repos/dmtrKovalenko/odiff/releases/171989766","Warn: release artifact v3.2.1 does not have provenance: https://api.github.com/repos/dmtrKovalenko/odiff/releases/200384093","Warn: release artifact v3.2.0 does not have provenance: https://api.github.com/repos/dmtrKovalenko/odiff/releases/186815746","Warn: release artifact v3.1.2 does not have provenance: https://api.github.com/repos/dmtrKovalenko/odiff/releases/178100548","Warn: release artifact v3.1.1 does not have provenance: https://api.github.com/repos/dmtrKovalenko/odiff/releases/172233906","Warn: release artifact v3.1.0 does not have provenance: https://api.github.com/repos/dmtrKovalenko/odiff/releases/171989766"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:123: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:137: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:140: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:147: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:162: update your workflow using https://app.stepsecurity.io/secureworkflow/dmtrKovalenko/odiff/build.yml/main?enable=pin","Warn: npmCommand not pinned by hash: release.sh:25","Warn: chocoCommand not pinned by hash: .github/workflows/build.yml:46","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   1 out of   2 npmCommand dependencies pinned","Info:   0 out of   1 chocoCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/build.yml:130"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T07:43:07.714Z","repository_id":41485432,"created_at":"2025-08-18T07:43:07.714Z","updated_at":"2025-08-18T07:43:07.714Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277455233,"owners_count":25820680,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-28T02:00:08.834Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diff","image-comparison","odiff","pixel-perfect","snapshot","testing-tool","visual"],"created_at":"2024-01-12T18:01:29.248Z","updated_at":"2025-10-02T18:21:26.844Z","avatar_url":"https://github.com/dmtrKovalenko.png","language":"Zig","project_url":"https://opencollective.ecosyste.ms/api/v1/projects/36493","html_url":"https://opencollective.ecosyste.ms/projects/36493","collective":{"id":1532,"uuid":"rvedj9wr-oz3a56dn-vegq7blg-8x4m0ykn","slug":"odiff","name":"Odiff","description":"Constantly improving speed of visual regression!","website":"","github":"dmtrKovalenko","twitter":"dmtrKovalenko","repository_url":null,"social_links":[{"type":"TWITTER","url":"https://twitter.com/dmtrKovalenko"},{"type":"GITHUB","url":"https://github.com/dmtrKovalenko"}],"currency":"USD","projects_count":146,"last_synced_at":"2026-06-06T00:15:12.935Z","created_at":"2024-01-10T13:17:50.347Z","updated_at":"2026-06-06T00:15:13.107Z","transactions_count":11,"balance":0.0,"account_type":"COLLECTIVE","owner":{"login":"dmtrKovalenko","name":"Dmitriy Kovalenko","uuid":"16926049","kind":"user","description":"Made some open source you might already be using. Want me to fix your issue? Mail me we'll have a deal. ","email":"dmitriy@iusevimbtw.com","website":"https://dmtrkovalenko.dev","location":"In your node_modules","twitter":"neogoose_btw","company":"@LightsourceAI","icon_url":"https://avatars.githubusercontent.com/u/16926049?u=c1ecf1b3524dfafac1e9a68e6dfb007d72232414\u0026v=4","repositories_count":121,"last_synced_at":"2026-01-07T04:30:56.055Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/dmtrKovalenko","funding_links":["https://github.com/sponsors/dmtrKovalenko"],"total_stars":3776,"followers":1194,"following":23,"created_at":"2022-11-02T16:31:53.860Z","updated_at":"2026-01-07T04:30:56.055Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmtrKovalenko","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmtrKovalenko/repositories"},"last_project_activity_at":"2025-09-29T00:39:20.000Z","archived":false,"no_funding":false,"no_license":false,"host":"opensource","collective_created_at":"2020-11-14T20:31:25.740Z","collective_updated_at":"2023-02-07T17:17:37.371Z","html_url":"https://opencollective.com/odiff","icon_url":"https://images.opencollective.com/odiff/logo/40.png","total_donations":98.67,"total_expenses":-109.36,"current_balance":0.0,"api_url":"https://opencollective.ecosyste.ms/api/v1/collectives/odiff","url":"https://opencollective.ecosyste.ms/collectives/odiff","projects_url":"https://opencollective.ecosyste.ms/api/v1/collectives/odiff/projects"}}