Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 6592,
"has_wiki": true,
"homepage": "https://shopify.github.io/liquid/",
"languages": {
"Ruby": 611544,
"Liquid": 72882
},
"pushed_at": "2026-07-05T18:56:26Z",
"created_at": "2008-05-08T15:27:26Z",
"owner_type": "Organization",
"updated_at": "2026-07-21T20:10:33Z",
"description": "Liquid markup language. Safe, customer facing template language for flexible web apps. ",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Ruby",
"significant_languages": [
"Ruby",
"Liquid"
]
},
"owner": {
"blog": "https://shopify.engineering/",
"name": "Shopify",
"type": "Organization",
"login": "Shopify",
"company": null,
"location": "The Internet",
"followers": 8334,
"avatar_url": "https://avatars.githubusercontent.com/u/8085?v=4",
"created_at": "2008-04-21T18:02:10Z",
"is_verified": null,
"public_repos": 1219,
"account_age_days": 6665
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v5.13.0",
"kind": "minor",
"published_at": "2026-06-29T15:47:37Z"
},
{
"tag": "v5.12.0",
"kind": "minor",
"published_at": "2026-03-18T15:57:50Z"
},
{
"tag": "v5.11.0",
"kind": "minor",
"published_at": "2025-11-19T17:06:55Z"
},
{
"tag": "v5.10.0",
"kind": "minor",
"published_at": "2025-10-30T11:30:40Z"
},
{
"tag": "v5.9.0",
"kind": "minor",
"published_at": "2025-10-27T16:28:58Z"
},
{
"tag": "v5.8.7",
"kind": "patch",
"published_at": "2025-06-09T19:44:07Z"
},
{
"tag": "v5.8.6",
"kind": "patch",
"published_at": "2025-04-14T15:53:29Z"
},
{
"tag": "v5.8.5",
"kind": "patch",
"published_at": "2025-04-14T15:28:13Z"
},
{
"tag": "v5.8.4",
"kind": "patch",
"published_at": "2025-04-09T19:02:48Z"
},
{
"tag": "v5.8.3",
"kind": "patch",
"published_at": "2025-04-04T16:35:37Z"
},
{
"tag": "v5.8.2",
"kind": "patch",
"published_at": "2025-04-04T16:35:21Z"
},
{
"tag": "v5.8.1",
"kind": "patch",
"published_at": "2025-02-26T12:16:35Z"
},
{
"tag": "v5.8.0",
"kind": "minor",
"published_at": "2025-02-25T10:04:16Z"
},
{
"tag": "v5.7.3",
"kind": "patch",
"published_at": "2025-02-24T10:59:03Z"
},
{
"tag": "v5.7.2",
"kind": "patch",
"published_at": "2025-01-31T16:59:37Z"
},
{
"tag": "v5.7.1",
"kind": "patch",
"published_at": "2025-01-24T13:13:02Z"
},
{
"tag": "v5.7.0",
"kind": "minor",
"published_at": "2025-01-17T13:26:42Z"
},
{
"tag": "v5.6.4",
"kind": "patch",
"published_at": "2025-01-14T03:30:55Z"
},
{
"tag": "v5.6.3",
"kind": "patch",
"published_at": "2025-01-13T22:38:47Z"
},
{
"tag": "v5.6.2",
"kind": "patch",
"published_at": "2025-01-13T21:23:33Z"
},
{
"tag": "v5.6.1",
"kind": "patch",
"published_at": "2025-01-13T20:17:08Z"
},
{
"tag": "v5.6.0",
"kind": "minor",
"published_at": "2024-12-19T20:07:30Z"
},
{
"tag": "v5.6.0.rc1",
"kind": "other",
"published_at": "2024-11-04T20:30:21Z"
},
{
"tag": "v5.5.1",
"kind": "patch",
"published_at": "2024-11-04T20:29:52Z"
},
{
"tag": "v5.5.0",
"kind": "minor",
"published_at": "2024-03-21T19:54:02Z"
}
],
"recent_commits": [
{
"oid": "807d45a6b3d4568e64e86b375e3702df2c7c860c",
"body": "Keep the historical blank-body inline-error suppression for lax and strict parse modes, but stop suppressing the rendered error text when the template was parsed in strict2. Raised-error rendering continues to raise in all modes.\n\nStore the resolved template error mode on the render context while a \n[…]\nng whether a blank tag should hide inline error text.\n\nAdd integration coverage for lax/strict suppression, strict2 non-suppression across blank body forms, nonblank bodies, and raised-error behavior.",
"is_bot": false,
"headline": "Surface blank-body inline errors in strict2",
"author_name": "Tobi Lütke",
"author_login": "tobi",
"committed_at": "2026-07-05T18:56:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7a5e45fc4784e6e2e3092f2eb6f613644f1e2e5a",
"body": null,
"is_bot": false,
"headline": "Bump to 5.13.0 (#2103)",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2026-06-29T15:41:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9efca9f718e901141a1786ecdd10609fff811b6a",
"body": null,
"is_bot": false,
"headline": "Use liquid-spec branch for `self` specs",
"author_name": "Ian Ker-Seymer",
"author_login": "ianks",
"committed_at": "2026-06-12T03:20:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "529800f46ba452c9baedda83b29cfa0240d0ac57",
"body": null,
"is_bot": false,
"headline": "Let environment `self` shadow `SelfDrop`",
"author_name": "Ian Ker-Seymer",
"author_login": "ianks",
"committed_at": "2026-06-12T03:20:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b368dffb844c44a9466226d1a243b05aafc5be5",
"body": null,
"is_bot": false,
"headline": "Fix `SelfDrop` equality (#2091)",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2026-06-05T08:47:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "742ac3dbf5432c6c2689ea00da604d7379f73799",
"body": null,
"is_bot": false,
"headline": "Prevent `SelfDrop` context mutation across render boundaries (#2082)",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2026-05-20T07:34:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1954a2655cf4d427b6c9169354832638740f2db5",
"body": null,
"is_bot": false,
"headline": "Update liquid-spec adapters",
"author_name": "Ian Ker-Seymer",
"author_login": "ianks",
"committed_at": "2026-04-28T14:11:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d81b1b68cf576cc9643ada149c7aa06c25304b8",
"body": "Remove \"strict2\" from bare bracket error message",
"is_bot": false,
"headline": "Merge pull request #2077 from Shopify/remove-strict2-from-error-message",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-04-24T20:21:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dfddd8f390038402fbf5ddf133eaf81375a7ab1a",
"body": "Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove \"strict2\" from bare bracket error message",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-04-24T20:18:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "95ce7e7fa1d4ae80cfd650c4e066d85508190905",
"body": "Add strict2_parse to increment and decrement tags",
"is_bot": false,
"headline": "Merge pull request #2067 from Shopify/strict2-increment-decrement",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-04-24T20:11:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "197d755e0ccf5ed216636f95f45f5725857d8e75",
"body": "Add strict2_parse to assign and capture tags",
"is_bot": false,
"headline": "Merge pull request #2065 from Shopify/strict2-assign-capture",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-04-24T20:10:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0c5444db14178efc15b7ec3dc538ab2683da859",
"body": "Reject bare-bracket syntax in strict2 and introduce `self` keyword",
"is_bot": false,
"headline": "Merge pull request #2060 from Shopify/bare-bracket-self-keyword",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-04-24T20:06:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c99036046eba682c9ce50afe37ba639279df84f0",
"body": "Both tags previously accepted any string as a variable name via\n`markup.strip`. Now they use `parse_with_selected_parser` and validate\nthe variable name with `p.consume(:id)` in strict2 mode.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add strict2_parse to increment and decrement tags",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-03-27T19:32:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a9c85622ddd784078c2eed34b19a351fe57362cf",
"body": "Skip slow test raising many exceptions on non-CRuby",
"is_bot": false,
"headline": "Merge pull request #2066 from eregon/skip-slow-test",
"author_name": "Kevin Menard",
"author_login": "nirvdrum",
"committed_at": "2026-03-26T06:14:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f4d7e78b880f2e72d01cbe610ea5b99d7dd6db8",
"body": null,
"is_bot": false,
"headline": "Skip slow test raising many exceptions on non-CRuby",
"author_name": "Benoit Daloze",
"author_login": "eregon",
"committed_at": "2026-03-25T16:20:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d5c15a03e847b139ab8a696486d6e657390a424",
"body": "Both tags previously used only regex (VariableSignature) to validate\nvariable names, which allowed invalid identifiers like (a(b(c) and\n[x.y] in all parse modes.\n\n- assign: strict2_parse uses Parser to validate the LHS as a valid\n identifier before delegating RHS to Variable\n- capture: strict2_pars\n[…]\nrSwitching and dispatch through\n strict_parse_with_error_mode_fallback\n- Lax mode is unchanged — invalid names are still accepted\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add strict2_parse to assign and capture tags",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-03-25T16:07:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fd68d076ddc9d9c65cabbccc6dd5a1b4b9ab0af3",
"body": "Add TruffleRuby in CI",
"is_bot": false,
"headline": "Merge pull request #2038 from eregon/truffleruby-ci",
"author_name": "Kevin Menard",
"author_login": "nirvdrum",
"committed_at": "2026-03-25T15:53:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96aa47d13f19b5117385d31f12136fd9d409b39a",
"body": null,
"is_bot": false,
"headline": "Add TruffleRuby in CI",
"author_name": "Benoit Daloze",
"author_login": "eregon",
"committed_at": "2026-03-25T15:46:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad70c5c4591c860fc67a1c51d3de0856fedc377c",
"body": null,
"is_bot": false,
"headline": "Improve no Symbol leak tests to be more reliable",
"author_name": "Benoit Daloze",
"author_login": "eregon",
"committed_at": "2026-03-25T15:46:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d824de701c57d839b2cd378179e79eb0acab54cc",
"body": null,
"is_bot": false,
"headline": "Adapt slice filter to work on non-64 bit platforms",
"author_name": "Benoit Daloze",
"author_login": "eregon",
"committed_at": "2026-03-25T15:46:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "346166b600f08856250534faa3693742332b0349",
"body": "Store @is_for_loop during parsing so consumers can determine the\nwith/for keyword from the AST instead of re-parsing raw markup.\nMatches the existing pattern in the Render tag.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add for_loop? to Include tag for AST-based keyword detection",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-03-24T18:52:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "532b4390634b111b0cae447347d7a6afd04b8d75",
"body": "Add bare-bracket rejection to Parser#expression in strict2 mode, so that\n`['var']` is disallowed and `self['var']` is the required syntax.\n\n- Add `Expression::SELF` constant ('self')\n- Add `Parser#reject_bare_brackets` option, checked in `expression`\n- Add `ParseContext#reject_bare_brackets?` and `f\n[…]\nokups\n- Add `Variable#==` for rewriter state comparison\n- Update `Context#find_variable` to return `VariableLookupDrop` for `self`\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Reject bare-bracket syntax in strict2 and introduce `self` keyword",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-03-23T16:13:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dd37353cca46f81c7708847708086ab91eaf382d",
"body": "Update ruby/setup-ruby to v1.295.0 for ubuntu-24.04 support",
"is_bot": false,
"headline": "Merge pull request #2062 from Shopify/update-setup-ruby",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-03-19T19:29:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e80f775f898e8a6e928d9e78caa951d3c438bd67",
"body": "The pinned version (v1.273.0) does not have prebuilt `ruby-head` binaries\nfor `ubuntu-24.04`, which `ubuntu-latest` now resolves to. This causes CI\nto fail with \"Unavailable version head for ruby on ubuntu-24.04\".\n\nUpdating to v1.295.0 picks up ubuntu-24.04 support for all Ruby versions\nincluding head builds.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Update ruby/setup-ruby from v1.273.0 to v1.295.0",
"author_name": "Alok Swamy",
"author_login": "aswamy",
"committed_at": "2026-03-19T19:22:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "59d8d0d22db3b4865deecde0ab2683bea25a1e9f",
"body": "* feat: add cumulative resource score tracking across partial renders\n\nAdd cumulative_render_score and cumulative_assign_score counters to\nResourceLimits that accumulate across reset() calls, with optional\ncumulative_render_score_limit and cumulative_assign_score_limit to\ncap total work across all p\n[…]\numulative limits in reset() itself. Since reset() is called before\nthe begin/rescue MemoryError block in Template#render, the raise\npropagates to the parent naturally — no changes to BlockBody needed.",
"is_bot": false,
"headline": "Add cumulative resource score tracking across partial renders (#2058)",
"author_name": "Ian Ker-Seymer",
"author_login": "ianks",
"committed_at": "2026-03-18T15:54:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5fa36267aa1f97ab1f87971ef948bc6730c42e58",
"body": "Fix rubocop offenses in test file",
"is_bot": false,
"headline": "Merge pull request #2054 from Shopify/gg-fix-rubocop-offenses",
"author_name": "Gray Gilmore",
"author_login": "graygilmore",
"committed_at": "2026-03-06T21:28:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a72b604680288bfbe82ccb782351e666bb8922e1",
"body": null,
"is_bot": false,
"headline": "Fix rubocop offenses in test file",
"author_name": "Gray Gilmore",
"author_login": "graygilmore",
"committed_at": "2026-03-06T21:27:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e76244cd28901cf2124cfa5974c58205d84bbef",
"body": "Add squish filter",
"is_bot": false,
"headline": "Merge pull request #2050 from bakura10/squish-filter",
"author_name": "Gray Gilmore",
"author_login": "graygilmore",
"committed_at": "2026-03-06T21:22:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d589c516974058d84ce0e17ab51cd37ae91bfa21",
"body": null,
"is_bot": false,
"headline": "Add squish filter",
"author_name": "Michaël Gallego",
"author_login": "bakura10",
"committed_at": "2026-02-19T01:03:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d897899f6654c476e58e884bc8e24924600e5801",
"body": "Update the specs to new signature and fix CI",
"is_bot": false,
"headline": "Merge pull request #2036 from Shopify/cp-fix-rubocop",
"author_name": "CP Clermont",
"author_login": "charlespwd",
"committed_at": "2026-01-14T14:14:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa817c4cfd8a0ca693698193a4d6d19c1ecbe42e",
"body": "liquid-spec main changed the adapter API:\n- compile block now receives (ctx, source, options) and should store\n the template in ctx[:template]\n- render block now receives (ctx, assigns, options) and retrieves\n the template from ctx[:template]\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Update liquid-spec adapters for new ctx-based API",
"author_name": "Charles-P. Clermont",
"author_login": "charlespwd",
"committed_at": "2026-01-13T18:06:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7d90b524ea4450f473b4ece5aa1c12af2dece47b",
"body": null,
"is_bot": false,
"headline": "Remove on pull_request trigger. It's redundant.",
"author_name": "Charles-P. Clermont",
"author_login": "charlespwd",
"committed_at": "2026-01-12T18:27:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bbcf8d6ad8a8b1e051a7f013f84168ed7f470bab",
"body": null,
"is_bot": false,
"headline": "Better matrix CI check names",
"author_name": "Charles-P. Clermont",
"author_login": "charlespwd",
"committed_at": "2026-01-12T18:27:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51ff08db7b77607a76753c0bd35333d8ee425bd5",
"body": null,
"is_bot": false,
"headline": "Fix CI",
"author_name": "Charles-P. Clermont",
"author_login": "charlespwd",
"committed_at": "2026-01-12T18:06:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eaa9f215bf90d05ef5113055dfc42e85e991dd3c",
"body": "- ruby_liquid_lax.rb: Tests lax parsing mode with :lax_parsing feature\n- ruby_liquid_yjit.rb: Tests YJIT + strict mode + ActiveSupport\n\nMatrix results: 4483 matched, 18 different (lax edge cases), 61 skipped\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add lax and YJIT liquid-spec adapters",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-06T01:11:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ccd05e869ce4c2b050863d5b9c466b6cc770cfd3",
"body": "- Implement liquid_blank? and liquid_empty? methods in Condition\n to emulate ActiveSupport's behavior when it's not loaded\n- This ensures templates like `{% if x == blank %}` work identically\n whether ActiveSupport is loaded or not\n- Update liquid-spec adapters for new API (ctx parameter)\n- Add rake spec task for running liquid-spec matrix\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Make blank/empty comparisons invariant to ActiveSupport",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-06T00:54:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a4a29f3e0836cfd04c1b55b52e92d36914424e7d",
"body": "…upport\n\nRequire liquid-spec to be run on commit automatically and related fixes",
"is_bot": false,
"headline": "Merge pull request #2034 from Shopify/fix-liquid-spec-without-actives…",
"author_name": "Tobias Lütke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:32:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0058e4322ba0099206f9b263b9b80f25e2d1be30",
"body": null,
"is_bot": false,
"headline": "Add fail-fast: false to prevent job cancellation",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:30:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50e1789537edc78a3c8f53949d3dd4e8302df9b5",
"body": null,
"is_bot": false,
"headline": "Use liquid-spec feature branch until PR is merged",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:29:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79a2e042ff66e6dfb05314edce735fd19b05de03",
"body": null,
"is_bot": false,
"headline": "Use liquid-spec main branch",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:24:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddee08fb95484d0134748949b71a083696905e0e",
"body": "Both adapters now pass with 0 failures:\n- ruby_liquid.rb: 4194 passed (skips activesupport and shopify_error_handling specs)\n- ruby_liquid_with_active_support.rb: 4203 passed (skips shopify_error_handling specs)",
"is_bot": false,
"headline": "Add activesupport feature to with_active_support adapter",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:21:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2988f1a5009b1b4947495a11fa7f055e0d33482f",
"body": null,
"is_bot": false,
"headline": "Update liquid-spec to branch with per-spec required_features support",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:15:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef13b2dfd5886f9af680129fbe2e4626ae54355f",
"body": "- nil is NOT empty (but IS blank) - matches Shopify production\n- String first/last returns '' for empty strings, not nil - matches ActiveSupport\n- Add test for nil not being empty",
"is_bot": false,
"headline": "Fix empty? semantics and string first/last for empty strings",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:06:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0fb0ad83fe24e153715378f0284cdceafe0353f",
"body": null,
"is_bot": false,
"headline": "Run liquid-spec for all adapters in spec/*.rb",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:02:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae26cb29ac62c0c08fa58f30578a1de6e569ee16",
"body": null,
"is_bot": false,
"headline": "Disable auto-require for activesupport gem",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:00:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "608a877053e76e31c2829426b257aa2c37032eee",
"body": null,
"is_bot": false,
"headline": "Add spec adapter with ActiveSupport for comparison testing",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T03:00:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d321adae77f926e74b7ac5820a352fff47e7fa05",
"body": null,
"is_bot": false,
"headline": "Fix spec adapter for liquid-spec API (template, assigns, options)",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:59:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53641e19ce2682847e3b616126a706a3c2efb5bc",
"body": null,
"is_bot": false,
"headline": "Pin liquid-spec to minimum required commit 3d1b492",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:57:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ccd10a986a0ef43b68a50f24e234cde806df3568",
"body": null,
"is_bot": false,
"headline": "Pin liquid-spec to main branch",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:56:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4890de9d5e845285d7eac55ec3f2651ef7764df",
"body": null,
"is_bot": false,
"headline": "hm",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:54:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e3ccbc1886d869dcb26456533c0f5b8e4f4be6d",
"body": null,
"is_bot": false,
"headline": "test",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:49:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e0b46049afc9452e43564883282f99e7d1ccf7ec",
"body": null,
"is_bot": false,
"headline": "Add Ruby 3.4 yjit, 4.0 zjit, and head zjit to CI matrix",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:44:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19528a9b3f3c3841a6e19a7b375a269775b508ad",
"body": null,
"is_bot": false,
"headline": "Update CI matrix: remove Ruby 3.0-3.2, add Ruby 4.0",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:42:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34c274d3149cedd4fea250cb7e687d7dbb05ef5b",
"body": "… comma",
"is_bot": false,
"headline": "Fix rubocop: rename ruby-liquid.rb to ruby_liquid.rb and add trailing…",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:42:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "533d470723ce234de824534857f225236cf2dcbf",
"body": null,
"is_bot": false,
"headline": "Fix spec job to include :spec bundle group",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:35:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05f9c2a0300d8fba14e1a26e94952c9f2c42e322",
"body": "- Add liquid-spec gem from GitHub to :spec group\n- Create spec/ruby-liquid.rb adapter for the reference implementation\n- Add spec job to CI workflow to run liquid-spec tests",
"is_bot": false,
"headline": "Add liquid-spec for conformance testing",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T02:34:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af58800c1605a9c0033a50b3a22897f8003e979e",
"body": null,
"is_bot": false,
"headline": "Update rubocop-shopify to 2.18.0 and fix new offenses",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T01:22:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "361d1d52b167d83f5f9a94c659d40643ab9a0012",
"body": null,
"is_bot": false,
"headline": "Fix rubocop offenses from 1.82 upgrade",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T01:20:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "391c0df57ae7033bac09277c9ff2b31da37f0c76",
"body": null,
"is_bot": false,
"headline": "Update rubocop to 1.82.0 for Ruby 4.0 support",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T01:19:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ed29760c07cc20504aa46463185bfffa318396d",
"body": null,
"is_bot": false,
"headline": "Add benchmark gem for Ruby 4.0 compatibility",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T01:18:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e3548d39ec28ec1cb843b44e8503a9a433b2055",
"body": null,
"is_bot": false,
"headline": "Remove redundant else-clause",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T01:16:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33bac87a5cf4192ce478162849465cbde1f15bc5",
"body": "Implement ActiveSupport-compatible behaviors internally so Liquid works\ncorrectly without ActiveSupport being loaded:\n\n1. String first/last via property access (name.first, name.last)\n - VariableLookup now handles string[0] and string[-1] for first/last\n\n2. String first/last via filters (name | fi\n[…]\nc failures for templates like:\n- {{ name.first }} / {{ name | first }} on strings\n- {% if x == blank %} for whitespace strings, empty hashes/arrays\n- {% case ' ' %}{% when blank %} matching whitespace",
"is_bot": false,
"headline": "Address liquid-spec issues without ActiveSupport loaded",
"author_name": "Tobi Lutke",
"author_login": "tobi",
"committed_at": "2026-01-02T01:14:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a60a6c0d9370b45de2e2b0e2d8c00515a8f0eb12",
"body": "…to-liquid-spec\n\nMake new tests serializable to liquid-spec",
"is_bot": false,
"headline": "Merge pull request #2027 from Shopify/cp-make-new-tests-serializable-…",
"author_name": "CP Clermont",
"author_login": "charlespwd",
"committed_at": "2025-12-18T20:41:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bad29caaae0e374366d28eadf3b45fb07ae4ec01",
"body": null,
"is_bot": false,
"headline": "Fixup GH action",
"author_name": "Charles-P. Clermont",
"author_login": "charlespwd",
"committed_at": "2025-12-18T20:39:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cbeff64708ed74d2297d803e27b7b9b8b29af3d6",
"body": "(No anonymous classes)",
"is_bot": false,
"headline": "Make new tests serializable to liquid-spec",
"author_name": "Charles-P. Clermont",
"author_login": "charlespwd",
"committed_at": "2025-12-18T18:56:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22e979a6fae0038c703a95c7421f159f71934a38",
"body": "## Summary\n\n- BigDecimal values now stringify using `to_s(\"F\")` format instead of the default `to_s`\n\n## Why\n\nRuby's default `BigDecimal#to_s` produces engineering/scientific notation for certain values:\n\n```ruby\nBigDecimal(\"0.00001\").to_s # => \"0.1E-4\"\nBigDecimal(\"12345678.9\").to_s # => \"0.1\n[…]\nput in templates. Using `to_s(\"F\")` produces the expected floating-point format:\n\n```ruby\nBigDecimal(\"0.00001\").to_s(\"F\") # => \"0.00001\"\nBigDecimal(\"12345678.9\").to_s(\"F\") # => \"12345678.9\"\n```",
"is_bot": false,
"headline": "Use floating-point format for BigDecimal stringification (#2022)",
"author_name": "Ian Ker-Seymer",
"author_login": "ianks",
"committed_at": "2025-12-05T20:54:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "735d551168fcbf205b4699d422b707acbd54357f",
"body": "Preserve literal semantics in strict2 case/when",
"is_bot": false,
"headline": "Merge pull request #2016 from Shopify/jb-method-literals",
"author_name": "Julia",
"author_login": "dejmedus",
"committed_at": "2025-12-04T16:11:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa27bfe6e0eff396407bfb031ef1de5f5014e206",
"body": "Previously, strict2 case/when used `safe_parse_expression`\nto parse when expressions causing `blank`/`empty` to be\ntreated as string literals (Expression::LITERALS maps 'empty' => ''),\nrather than method literals\n\nThis caused unexpected behavior:\n\n```\n{%- case empty_obj -%}\n{%- when empty -%}\n prev\n[…]\n== '' is false)\n now: renders (empty_obj.empty? is true)\n{%- endcase -%}\n```\n\nThis commit instead calls `Condition.parse_expression`\nwith `safe: true`, which will correctly handle `blank`\nand `empty`",
"is_bot": false,
"headline": "Preserve literal semantics in strict2 case/when",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-11-28T22:51:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "32b50ecafecae41b924f3e3120c6dc587efdd800",
"body": "This commit reverts the Inline Snippets tag (#2001) and bumps\nLiquid to 5.11. For now, the inclusion of Inline Snippets\nin the latest Liquid release is being treated as a bug.\n\nWhile #2001 does implement the scope contained in RFC#1916,\nwe need to take a step back to make sure we’re setting our\nsights high enough with this feature, and that we’re truly\nsupporting theme developers in the ways they need.\n\nIf you have any feedback, please leave a comment on RFC#1916.\n\n- Liquid Developer Tools",
"is_bot": false,
"headline": "Bump Liquid to 5.11.0 (#2012)",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-11-19T17:03:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cbd8a0a2ee2cd3f12516c52558e5a894d1fd792a",
"body": "Don't raise if no variable found when `using context.key?` with `strict_variables`",
"is_bot": false,
"headline": "Merge pull request #2007 from Shopify/gg-change-key-behavior",
"author_name": "Gray Gilmore",
"author_login": "graygilmore",
"committed_at": "2025-11-04T21:01:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9973f3399e6531ac381e798039f41f33d65aa508",
"body": "Previously if you set `strict_variables` to `true` on the context using\n`key?('key_name')` would raise a `Liquid::UndefinedVariable` error.\nRaising this error makes sense if you're trying to access the variable\ndirectly with something like `context['key_name']` but by using `key?`\nyou're safely checking if it exists first.\n\nYou should be able to enable `strict_variables` and use `key?` in\ncombination with each other to ensure code safety.",
"is_bot": false,
"headline": "Don't raise if no variable found when using context.key?",
"author_name": "Gray Gilmore",
"author_login": "graygilmore",
"committed_at": "2025-10-30T22:33:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "248f3a412f59da16fc184bc0bbd92522a1f62393",
"body": null,
"is_bot": false,
"headline": "Bump to 5.10.0",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-30T11:28:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a16ec56a402e898145354e8a213bb7f0a2408b43",
"body": "…sages in the render tag",
"is_bot": false,
"headline": "Update error handling for keeping backward-compatibility on error mes…",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12fd93fbe2de580d2615bfeb8f1c67c0a805edbf",
"body": null,
"is_bot": false,
"headline": "Missing inline snippets should display same error as filebased",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ceb0e9cec9f6f49b479a6df655e53ce1f5cf715",
"body": null,
"is_bot": false,
"headline": "Raise error on invalid snippet name",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98fbd985d8792481189e2c937df6609c33d1fa7c",
"body": null,
"is_bot": false,
"headline": "Remove unneeded read method",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae05ba071cf2a9c7d60ebd5a55a51fac674b29fc",
"body": null,
"is_bot": false,
"headline": "Add liquid_public_docs yard tag to snippet tag",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42051311488f108af1f3c44d388f37b7d59d92fe",
"body": null,
"is_bot": false,
"headline": "Extract snippet resource scoring logic into assign_score_of",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db350c54ff24f2bb9c6878f2d85348fb9d34f9ba",
"body": null,
"is_bot": false,
"headline": "Allow render tag to recognize drops that respond to to_partial",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0cc6cdd5531fdf6e5f82966b3c52c7ecc7a3be09",
"body": null,
"is_bot": false,
"headline": "Remove ... syntax references",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40e45e32ac867f742a64da6b5272954909c74586",
"body": null,
"is_bot": false,
"headline": "Raise syntax error on incorrect render identifier type",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4d2237b90096ce85f1c99e4d04e92772bfd4967",
"body": null,
"is_bot": false,
"headline": "Support prop spreading",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ceeefba02cec894e3a58a749410de12ef7ff969",
"body": null,
"is_bot": false,
"headline": "Implement resource limits and remove leftover string references",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65fb80a347e5f7dabc2a867ce2c998a82beae2ae",
"body": null,
"is_bot": false,
"headline": "Render arguments should maintain correct precedence",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "489a03118ce27053fd162f0160e029a2f0af3ba5",
"body": null,
"is_bot": false,
"headline": "Remove inline snippet specific example files",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99116638fdc3093118e936bac5326eab789b0adc",
"body": "This commit updates the render method to share parts\nof the snippet and block rendering logic to enable\ninline snippets to support `with`, `for`, and `as`\nsyntax",
"is_bot": false,
"headline": "Support with, for, and as inline snippet syntax",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9bcfd32e65a6b8ef7ef823d4a7b0335953ae6eab",
"body": null,
"is_bot": false,
"headline": "Support ... inline snippet syntax",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7ad1c90ca683332e21d08a85f2e90a538f20a01",
"body": "Currently, snippet files identified by strings. This\nPR makes changes to render to allow for new inline\nsnippets to use variables as identifiers instead",
"is_bot": false,
"headline": "Change inline snippet identifier from string to variable",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12bbbc4537753e519eae5afeb1573f1a7d0f6e2a",
"body": null,
"is_bot": false,
"headline": "Create SnippetDrop and set in scope",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1eca707c4a40a035b924500726720dbffd5c4214",
"body": "Previously, inline snippets syntax looked a bit\ndifferent, they:\n\n- used strings as tag identifiers\n- defined tag arguments {% snippet \"input\" |type| %}\n\nThis PR updates snippets to better reflect\nthe currently proposed syntax\n\nCo-authored-by: Orlando Qiu <orlando.qiu@shopify.com>",
"is_bot": false,
"headline": "Update inline snippets syntax",
"author_name": "Julia Boutin",
"author_login": "dejmedus",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed9c4e31c40f94077d52afcb48391210c9b912ff",
"body": "Inline snippets will reduce code duplication and\nimprove the developer experience, eliminating the\nneed for one-off snippet files",
"is_bot": false,
"headline": "Introduce new inline snippets tag",
"author_name": "Josh Faigan",
"author_login": "EvilGenius13",
"committed_at": "2025-10-30T11:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c357f91e0c677327180c8e745b6e1bf867d65ab2",
"body": null,
"is_bot": false,
"headline": "Bump to 5.9.0",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T16:25:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f58216f48b5671fe25090d1cb251bb083cc3858",
"body": null,
"is_bot": false,
"headline": "Add unit test mixing positional and kwargs arguments",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d38795168b8c4aad243d0b466c15adac30f4920c",
"body": "Co-authored-by: Gray Gilmore <graygilmore@gmail.com>",
"is_bot": false,
"headline": "Update test/integration/tags/table_row_test.rb",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51f312b2206e521e5c64769b2a16e3df44ddcaaa",
"body": "Co-authored-by: Gray Gilmore <graygilmore@gmail.com>",
"is_bot": false,
"headline": "Update README.md",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44f0429c089dda91b4d4fdd6548554522622d15a",
"body": null,
"is_bot": false,
"headline": "Extract `/\\w+:0x\\h{8}/` regex to `UNNAMED_CYCLE_PATTERN` constant",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e57b7efe4e1cb3bc1ecf65887d07e881c0132448",
"body": null,
"is_bot": false,
"headline": "Simplify render/include tags following PR review feedback",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15430c0770fbd759a52d18790f27b19690f3b335",
"body": "The benchmark results show that rigid mode performs a bit better than both strict\nand lax modes across most metrics, including tokenization, parsing, rendering,\nand their combined operations. Rigid mode consistently delivers the highest\nnumber of iterations per second, with performance differences s\n[…]\n20.019775s\n render: 663.752 (± 2.6%) i/s (1.51 ms/i) - 13.268k in 20.010303s\n parse & render: 116.464 (± 2.6%) i/s (8.59 ms/i) - 2.332k in 20.037869s\nliquid$\n```",
"is_bot": false,
"headline": "Add rigid mode to `rake benchmark` task",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6aa4041c0f33da8420891b10d9d1f668ab7e0456",
"body": null,
"is_bot": false,
"headline": "Rename `with_error_mode(...)` to `with_error_modes(...)`",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d63dd104de53ced56afa7e74a161847b3daf5a60",
"body": "Co-authored-by: Alok Swamy <alok.swamy@shopify.com>",
"is_bot": false,
"headline": "Update test/integration/tags/render_tag_test.rb",
"author_name": "Guilherme Carreiro",
"author_login": "karreiro",
"committed_at": "2025-10-27T15:33:31Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 25,
"commits_last_year": 137,
"latest_release_at": "2026-06-29T15:47:37Z",
"latest_release_tag": "v5.13.0",
"releases_from_tags": false,
"days_since_last_push": 16,
"active_weeks_last_year": 26,
"days_since_latest_release": 22,
"mean_days_between_releases": 50.1
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "liquid",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/liquid",
"is_deprecated": false,
"latest_version": "5.13.0",
"repository_url": "https://github.com/Shopify/liquid",
"versions_count": 71,
"total_downloads": 134118752,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2009-07-25T18:10:21Z",
"latest_published_at": "2026-06-29T15:45:47.737000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 22
}
]
},
"popularity": {
"forks": 1537,
"stars": 11839,
"watchers": 722,
"fork_history": {
"days": [
{
"date": "2016-11-29",
"count": 1
},
{
"date": "2016-12-05",
"count": 1
},
{
"date": "2016-12-12",
"count": 1
},
{
"date": "2016-12-15",
"count": 1
},
{
"date": "2016-12-16",
"count": 1
},
{
"date": "2016-12-19",
"count": 1
},
{
"date": "2016-12-27",
"count": 1
},
{
"date": "2017-01-03",
"count": 1
},
{
"date": "2017-01-04",
"count": 1
},
{
"date": "2017-01-08",
"count": 2
},
{
"date": "2017-01-15",
"count": 1
},
{
"date": "2017-01-16",
"count": 1
},
{
"date": "2017-01-17",
"count": 1
},
{
"date": "2017-01-19",
"count": 1
},
{
"date": "2017-01-24",
"count": 1
},
{
"date": "2017-01-25",
"count": 1
},
{
"date": "2017-01-27",
"count": 1
},
{
"date": "2017-02-09",
"count": 1
},
{
"date": "2017-02-13",
"count": 1
},
{
"date": "2017-02-18",
"count": 1
},
{
"date": "2017-02-20",
"count": 1
},
{
"date": "2017-02-21",
"count": 1
},
{
"date": "2017-02-22",
"count": 2
},
{
"date": "2017-02-24",
"count": 1
},
{
"date": "2017-02-27",
"count": 1
},
{
"date": "2017-02-28",
"count": 1
},
{
"date": "2017-03-02",
"count": 1
},
{
"date": "2017-03-06",
"count": 1
},
{
"date": "2017-03-11",
"count": 1
},
{
"date": "2017-03-13",
"count": 1
},
{
"date": "2017-03-14",
"count": 1
},
{
"date": "2017-03-22",
"count": 1
},
{
"date": "2017-03-29",
"count": 1
},
{
"date": "2017-03-30",
"count": 1
},
{
"date": "2017-04-02",
"count": 1
},
{
"date": "2017-04-03",
"count": 1
},
{
"date": "2017-04-11",
"count": 1
},
{
"date": "2017-04-14",
"count": 1
},
{
"date": "2017-04-28",
"count": 1
},
{
"date": "2017-05-03",
"count": 2
},
{
"date": "2017-05-10",
"count": 1
},
{
"date": "2017-05-12",
"count": 1
},
{
"date": "2017-05-16",
"count": 1
},
{
"date": "2017-05-19",
"count": 1
},
{
"date": "2017-05-20",
"count": 3
},
{
"date": "2017-06-02",
"count": 1
},
{
"date": "2017-06-05",
"count": 1
},
{
"date": "2017-06-06",
"count": 2
},
{
"date": "2017-06-07",
"count": 1
},
{
"date": "2017-06-14",
"count": 1
},
{
"date": "2017-06-25",
"count": 1
},
{
"date": "2017-06-26",
"count": 1
},
{
"date": "2017-06-27",
"count": 1
},
{
"date": "2017-06-29",
"count": 2
},
{
"date": "2017-06-30",
"count": 1
},
{
"date": "2017-07-03",
"count": 1
},
{
"date": "2017-07-13",
"count": 1
},
{
"date": "2017-07-15",
"count": 1
},
{
"date": "2017-07-16",
"count": 1
},
{
"date": "2017-07-19",
"count": 1
},
{
"date": "2017-07-21",
"count": 1
},
{
"date": "2017-07-28",
"count": 1
},
{
"date": "2017-08-02",
"count": 1
},
{
"date": "2017-08-04",
"count": 1
},
{
"date": "2017-08-11",
"count": 1
},
{
"date": "2017-08-17",
"count": 1
},
{
"date": "2017-08-22",
"count": 1
},
{
"date": "2017-08-24",
"count": 1
},
{
"date": "2017-08-25",
"count": 2
},
{
"date": "2017-08-26",
"count": 1
},
{
"date": "2017-08-31",
"count": 1
},
{
"date": "2017-09-03",
"count": 1
},
{
"date": "2017-09-05",
"count": 1
},
{
"date": "2017-09-07",
"count": 1
},
{
"date": "2017-09-12",
"count": 1
},
{
"date": "2017-09-13",
"count": 1
},
{
"date": "2017-09-14",
"count": 2
},
{
"date": "2017-09-23",
"count": 1
},
{
"date": "2017-10-08",
"count": 1
},
{
"date": "2017-10-16",
"count": 1
},
{
"date": "2017-10-17",
"count": 1
},
{
"date": "2017-10-19",
"count": 2
},
{
"date": "2017-10-25",
"count": 1
},
{
"date": "2017-10-28",
"count": 1
},
{
"date": "2017-11-02",
"count": 1
},
{
"date": "2017-11-03",
"count": 1
},
{
"date": "2017-11-05",
"count": 1
},
{
"date": "2017-11-06",
"count": 1
},
{
"date": "2017-11-07",
"count": 2
},
{
"date": "2017-11-08",
"count": 1
},
{
"date": "2017-11-11",
"count": 1
},
{
"date": "2017-11-13",
"count": 2
},
{
"date": "2017-11-14",
"count": 2
},
{
"date": "2017-11-15",
"count": 1
},
{
"date": "2017-11-19",
"count": 1
},
{
"date": "2017-11-20",
"count": 1
},
{
"date": "2017-11-21",
"count": 2
},
{
"date": "2017-11-25",
"count": 1
},
{
"date": "2017-11-28",
"count": 1
},
{
"date": "2017-12-03",
"count": 1
},
{
"date": "2017-12-04",
"count": 3
},
{
"date": "2017-12-05",
"count": 1
},
{
"date": "2017-12-07",
"count": 2
},
{
"date": "2017-12-08",
"count": 1
},
{
"date": "2017-12-09",
"count": 1
},
{
"date": "2017-12-11",
"count": 1
},
{
"date": "2017-12-12",
"count": 2
},
{
"date": "2017-12-13",
"count": 1
},
{
"date": "2017-12-14",
"count": 2
},
{
"date": "2017-12-19",
"count": 2
},
{
"date": "2017-12-26",
"count": 1
},
{
"date": "2017-12-28",
"count": 1
},
{
"date": "2017-12-31",
"count": 1
},
{
"date": "2018-01-09",
"count": 1
},
{
"date": "2018-01-12",
"count": 1
},
{
"date": "2018-01-19",
"count": 1
},
{
"date": "2018-01-20",
"count": 1
},
{
"date": "2018-01-21",
"count": 1
},
{
"date": "2018-01-25",
"count": 2
},
{
"date": "2018-02-06",
"count": 3
},
{
"date": "2018-02-07",
"count": 1
},
{
"date": "2018-02-08",
"count": 1
},
{
"date": "2018-02-11",
"count": 1
},
{
"date": "2018-02-13",
"count": 1
},
{
"date": "2018-02-19",
"count": 1
},
{
"date": "2018-02-22",
"count": 1
},
{
"date": "2018-02-28",
"count": 2
},
{
"date": "2018-03-06",
"count": 2
},
{
"date": "2018-03-07",
"count": 1
},
{
"date": "2018-03-12",
"count": 1
},
{
"date": "2018-03-14",
"count": 1
},
{
"date": "2018-03-17",
"count": 1
},
{
"date": "2018-03-23",
"count": 1
},
{
"date": "2018-04-04",
"count": 1
},
{
"date": "2018-04-06",
"count": 1
},
{
"date": "2018-04-14",
"count": 1
},
{
"date": "2018-04-16",
"count": 1
},
{
"date": "2018-04-19",
"count": 1
},
{
"date": "2018-04-20",
"count": 1
},
{
"date": "2018-04-21",
"count": 1
},
{
"date": "2018-04-22",
"count": 1
},
{
"date": "2018-04-23",
"count": 1
},
{
"date": "2018-04-28",
"count": 1
},
{
"date": "2018-05-01",
"count": 1
},
{
"date": "2018-05-06",
"count": 1
},
{
"date": "2018-05-07",
"count": 1
},
{
"date": "2018-05-11",
"count": 1
},
{
"date": "2018-05-14",
"count": 1
},
{
"date": "2018-05-15",
"count": 1
},
{
"date": "2018-05-18",
"count": 1
},
{
"date": "2018-05-23",
"count": 1
},
{
"date": "2018-05-24",
"count": 1
},
{
"date": "2018-06-03",
"count": 1
},
{
"date": "2018-06-05",
"count": 1
},
{
"date": "2018-06-06",
"count": 1
},
{
"date": "2018-06-18",
"count": 2
},
{
"date": "2018-06-20",
"count": 1
},
{
"date": "2018-06-21",
"count": 1
},
{
"date": "2018-06-22",
"count": 1
},
{
"date": "2018-06-23",
"count": 1
},
{
"date": "2018-06-30",
"count": 1
},
{
"date": "2018-07-20",
"count": 1
},
{
"date": "2018-07-25",
"count": 1
},
{
"date": "2018-08-01",
"count": 2
},
{
"date": "2018-08-04",
"count": 1
},
{
"date": "2018-08-06",
"count": 1
},
{
"date": "2018-08-07",
"count": 1
},
{
"date": "2018-08-08",
"count": 1
},
{
"date": "2018-08-10",
"count": 2
},
{
"date": "2018-08-16",
"count": 1
},
{
"date": "2018-08-17",
"count": 1
},
{
"date": "2018-08-22",
"count": 1
},
{
"date": "2018-08-27",
"count": 1
},
{
"date": "2018-08-28",
"count": 1
},
{
"date": "2018-08-31",
"count": 2
},
{
"date": "2018-09-09",
"count": 2
},
{
"date": "2018-09-23",
"count": 1
},
{
"date": "2018-09-26",
"count": 1
},
{
"date": "2018-09-27",
"count": 1
},
{
"date": "2018-10-01",
"count": 1
},
{
"date": "2018-10-08",
"count": 1
},
{
"date": "2018-10-14",
"count": 1
},
{
"date": "2018-10-17",
"count": 1
},
{
"date": "2018-11-01",
"count": 3
},
{
"date": "2018-11-11",
"count": 1
},
{
"date": "2018-11-12",
"count": 1
},
{
"date": "2018-11-14",
"count": 2
},
{
"date": "2018-11-18",
"count": 1
},
{
"date": "2018-11-20",
"count": 1
},
{
"date": "2018-11-21",
"count": 2
},
{
"date": "2018-11-22",
"count": 1
},
{
"date": "2018-11-24",
"count": 1
},
{
"date": "2018-12-01",
"count": 1
},
{
"date": "2018-12-04",
"count": 1
},
{
"date": "2018-12-16",
"count": 1
},
{
"date": "2018-12-17",
"count": 1
},
{
"date": "2018-12-25",
"count": 1
},
{
"date": "2019-01-14",
"count": 1
},
{
"date": "2019-01-15",
"count": 1
},
{
"date": "2019-01-20",
"count": 1
},
{
"date": "2019-01-23",
"count": 1
},
{
"date": "2019-01-27",
"count": 1
},
{
"date": "2019-01-28",
"count": 1
},
{
"date": "2019-01-31",
"count": 1
},
{
"date": "2019-02-07",
"count": 3
},
{
"date": "2019-02-10",
"count": 1
},
{
"date": "2019-02-11",
"count": 1
},
{
"date": "2019-02-12",
"count": 1
},
{
"date": "2019-02-13",
"count": 1
},
{
"date": "2019-02-14",
"count": 1
},
{
"date": "2019-02-15",
"count": 1
},
{
"date": "2019-02-20",
"count": 1
},
{
"date": "2019-02-21",
"count": 1
},
{
"date": "2019-02-26",
"count": 1
},
{
"date": "2019-02-28",
"count": 1
},
{
"date": "2019-03-11",
"count": 1
},
{
"date": "2019-03-13",
"count": 1
},
{
"date": "2019-03-18",
"count": 1
},
{
"date": "2019-03-20",
"count": 1
},
{
"date": "2019-03-25",
"count": 1
},
{
"date": "2019-04-01",
"count": 1
},
{
"date": "2019-04-08",
"count": 1
},
{
"date": "2019-04-09",
"count": 2
},
{
"date": "2019-04-15",
"count": 1
},
{
"date": "2019-04-17",
"count": 1
},
{
"date": "2019-04-22",
"count": 1
},
{
"date": "2019-04-23",
"count": 1
},
{
"date": "2019-04-25",
"count": 1
},
{
"date": "2019-04-26",
"count": 1
},
{
"date": "2019-05-07",
"count": 1
},
{
"date": "2019-05-17",
"count": 2
},
{
"date": "2019-05-21",
"count": 1
},
{
"date": "2019-05-22",
"count": 1
},
{
"date": "2019-05-26",
"count": 1
},
{
"date": "2019-05-28",
"count": 1
},
{
"date": "2019-06-03",
"count": 1
},
{
"date": "2019-06-06",
"count": 1
},
{
"date": "2019-06-07",
"count": 1
},
{
"date": "2019-06-14",
"count": 1
},
{
"date": "2019-06-18",
"count": 1
},
{
"date": "2019-06-19",
"count": 1
},
{
"date": "2019-06-20",
"count": 1
},
{
"date": "2019-06-25",
"count": 1
},
{
"date": "2019-07-10",
"count": 1
},
{
"date": "2019-07-11",
"count": 1
},
{
"date": "2019-07-13",
"count": 1
},
{
"date": "2019-07-16",
"count": 1
},
{
"date": "2019-07-19",
"count": 1
},
{
"date": "2019-07-26",
"count": 1
},
{
"date": "2019-07-28",
"count": 1
},
{
"date": "2019-08-04",
"count": 1
},
{
"date": "2019-08-08",
"count": 1
},
{
"date": "2019-08-16",
"count": 1
},
{
"date": "2019-08-17",
"count": 2
},
{
"date": "2019-08-28",
"count": 1
},
{
"date": "2019-08-29",
"count": 1
},
{
"date": "2019-08-31",
"count": 1
},
{
"date": "2019-09-03",
"count": 1
},
{
"date": "2019-09-06",
"count": 1
},
{
"date": "2019-09-11",
"count": 1
},
{
"date": "2019-09-24",
"count": 1
},
{
"date": "2019-09-27",
"count": 1
},
{
"date": "2019-10-01",
"count": 2
},
{
"date": "2019-10-04",
"count": 1
},
{
"date": "2019-10-05",
"count": 1
},
{
"date": "2019-10-08",
"count": 1
},
{
"date": "2019-10-12",
"count": 1
},
{
"date": "2019-10-14",
"count": 1
},
{
"date": "2019-10-16",
"count": 1
},
{
"date": "2019-10-21",
"count": 1
},
{
"date": "2019-10-22",
"count": 1
},
{
"date": "2019-10-23",
"count": 1
},
{
"date": "2019-11-01",
"count": 1
},
{
"date": "2019-11-06",
"count": 1
},
{
"date": "2019-11-07",
"count": 2
},
{
"date": "2019-11-11",
"count": 1
},
{
"date": "2019-11-13",
"count": 1
},
{
"date": "2019-11-21",
"count": 1
},
{
"date": "2019-11-25",
"count": 2
},
{
"date": "2019-12-09",
"count": 1
},
{
"date": "2019-12-12",
"count": 1
},
{
"date": "2019-12-13",
"count": 1
},
{
"date": "2019-12-19",
"count": 1
},
{
"date": "2019-12-25",
"count": 1
},
{
"date": "2020-01-03",
"count": 2
},
{
"date": "2020-01-10",
"count": 1
},
{
"date": "2020-01-13",
"count": 1
},
{
"date": "2020-01-15",
"count": 1
},
{
"date": "2020-01-16",
"count": 1
},
{
"date": "2020-01-21",
"count": 1
},
{
"date": "2020-01-23",
"count": 1
},
{
"date": "2020-01-26",
"count": 1
},
{
"date": "2020-01-27",
"count": 1
},
{
"date": "2020-01-29",
"count": 1
},
{
"date": "2020-01-31",
"count": 1
},
{
"date": "2020-02-07",
"count": 1
},
{
"date": "2020-02-08",
"count": 2
},
{
"date": "2020-02-14",
"count": 1
},
{
"date": "2020-02-18",
"count": 1
},
{
"date": "2020-02-21",
"count": 1
},
{
"date": "2020-02-25",
"count": 2
},
{
"date": "2020-02-26",
"count": 1
},
{
"date": "2020-02-28",
"count": 1
},
{
"date": "2020-02-29",
"count": 1
},
{
"date": "2020-03-10",
"count": 1
},
{
"date": "2020-03-13",
"count": 1
},
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-03-28",
"count": 1
},
{
"date": "2020-04-01",
"count": 1
},
{
"date": "2020-04-02",
"count": 1
},
{
"date": "2020-04-05",
"count": 1
},
{
"date": "2020-04-16",
"count": 1
},
{
"date": "2020-04-19",
"count": 1
},
{
"date": "2020-04-20",
"count": 1
},
{
"date": "2020-04-21",
"count": 1
},
{
"date": "2020-04-27",
"count": 1
},
{
"date": "2020-05-01",
"count": 1
},
{
"date": "2020-05-02",
"count": 1
},
{
"date": "2020-05-03",
"count": 1
},
{
"date": "2020-05-04",
"count": 1
},
{
"date": "2020-05-05",
"count": 1
},
{
"date": "2020-05-07",
"count": 1
},
{
"date": "2020-05-10",
"count": 1
},
{
"date": "2020-05-12",
"count": 2
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-19",
"count": 1
},
{
"date": "2020-05-21",
"count": 1
},
{
"date": "2020-05-27",
"count": 1
},
{
"date": "2020-05-28",
"count": 1
},
{
"date": "2020-06-07",
"count": 1
},
{
"date": "2020-06-09",
"count": 1
},
{
"date": "2020-06-10",
"count": 1
},
{
"date": "2020-06-11",
"count": 1
},
{
"date": "2020-06-14",
"count": 1
},
{
"date": "2020-06-19",
"count": 1
},
{
"date": "2020-06-24",
"count": 1
},
{
"date": "2020-06-30",
"count": 1
},
{
"date": "2020-07-06",
"count": 1
},
{
"date": "2020-07-09",
"count": 1
},
{
"date": "2020-07-12",
"count": 1
},
{
"date": "2020-07-14",
"count": 1
},
{
"date": "2020-07-18",
"count": 1
},
{
"date": "2020-07-28",
"count": 1
},
{
"date": "2020-07-30",
"count": 1
},
{
"date": "2020-08-02",
"count": 1
},
{
"date": "2020-08-04",
"count": 1
},
{
"date": "2020-08-05",
"count": 1
},
{
"date": "2020-08-09",
"count": 1
},
{
"date": "2020-08-11",
"count": 2
},
{
"date": "2020-08-14",
"count": 1
},
{
"date": "2020-08-24",
"count": 1
},
{
"date": "2020-09-01",
"count": 1
},
{
"date": "2020-09-07",
"count": 3
},
{
"date": "2020-09-08",
"count": 1
},
{
"date": "2020-09-10",
"count": 1
},
{
"date": "2020-09-12",
"count": 1
},
{
"date": "2020-09-14",
"count": 1
},
{
"date": "2020-09-15",
"count": 1
},
{
"date": "2020-09-18",
"count": 1
},
{
"date": "2020-09-19",
"count": 1
},
{
"date": "2020-09-21",
"count": 1
},
{
"date": "2020-09-23",
"count": 1
},
{
"date": "2020-09-26",
"count": 1
},
{
"date": "2020-10-02",
"count": 1
},
{
"date": "2020-10-03",
"count": 1
},
{
"date": "2020-10-05",
"count": 2
},
{
"date": "2020-10-09",
"count": 1
},
{
"date": "2020-10-13",
"count": 1
},
{
"date": "2020-10-19",
"count": 1
},
{
"date": "2020-10-20",
"count": 1
},
{
"date": "2020-10-26",
"count": 1
},
{
"date": "2020-11-02",
"count": 1
},
{
"date": "2020-11-05",
"count": 1
},
{
"date": "2020-11-09",
"count": 1
},
{
"date": "2020-11-12",
"count": 1
},
{
"date": "2020-11-13",
"count": 1
},
{
"date": "2020-11-16",
"count": 1
},
{
"date": "2020-11-17",
"count": 1
},
{
"date": "2020-11-22",
"count": 1
},
{
"date": "2020-11-23",
"count": 1
},
{
"date": "2020-11-25",
"count": 3
},
{
"date": "2020-11-27",
"count": 1
},
{
"date": "2020-11-29",
"count": 1
},
{
"date": "2020-12-01",
"count": 1
},
{
"date": "2020-12-02",
"count": 1
},
{
"date": "2020-12-07",
"count": 1
},
{
"date": "2020-12-14",
"count": 1
},
{
"date": "2020-12-15",
"count": 1
},
{
"date": "2020-12-24",
"count": 1
},
{
"date": "2020-12-26",
"count": 1
},
{
"date": "2020-12-28",
"count": 1
},
{
"date": "2021-01-02",
"count": 1
},
{
"date": "2021-01-03",
"count": 1
},
{
"date": "2021-01-05",
"count": 1
},
{
"date": "2021-01-14",
"count": 1
},
{
"date": "2021-01-16",
"count": 1
},
{
"date": "2021-01-18",
"count": 1
},
{
"date": "2021-01-19",
"count": 1
},
{
"date": "2021-01-20",
"count": 1
},
{
"date": "2021-01-21",
"count": 1
},
{
"date": "2021-01-22",
"count": 1
},
{
"date": "2021-01-23",
"count": 1
},
{
"date": "2021-01-25",
"count": 1
},
{
"date": "2021-01-28",
"count": 1
},
{
"date": "2021-02-10",
"count": 1
},
{
"date": "2021-02-11",
"count": 1
},
{
"date": "2021-03-12",
"count": 1
},
{
"date": "2021-03-26",
"count": 1
},
{
"date": "2021-03-28",
"count": 1
},
{
"date": "2021-03-30",
"count": 2
},
{
"date": "2021-03-31",
"count": 1
},
{
"date": "2021-04-04",
"count": 1
},
{
"date": "2021-04-08",
"count": 1
},
{
"date": "2021-04-12",
"count": 1
},
{
"date": "2021-04-16",
"count": 1
},
{
"date": "2021-04-19",
"count": 1
},
{
"date": "2021-04-25",
"count": 1
},
{
"date": "2021-04-27",
"count": 1
},
{
"date": "2021-04-28",
"count": 1
},
{
"date": "2021-04-29",
"count": 1
},
{
"date": "2021-05-01",
"count": 1
},
{
"date": "2021-05-06",
"count": 1
},
{
"date": "2021-05-11",
"count": 2
},
{
"date": "2021-05-14",
"count": 1
},
{
"date": "2021-05-19",
"count": 1
},
{
"date": "2021-05-21",
"count": 1
},
{
"date": "2021-05-23",
"count": 2
},
{
"date": "2021-05-30",
"count": 1
},
{
"date": "2021-05-31",
"count": 1
},
{
"date": "2021-06-01",
"count": 1
},
{
"date": "2021-06-04",
"count": 1
},
{
"date": "2021-06-05",
"count": 1
},
{
"date": "2021-06-12",
"count": 1
},
{
"date": "2021-06-22",
"count": 1
},
{
"date": "2021-06-23",
"count": 1
},
{
"date": "2021-06-24",
"count": 1
},
{
"date": "2021-06-25",
"count": 1
},
{
"date": "2021-06-28",
"count": 1
},
{
"date": "2021-07-01",
"count": 1
},
{
"date": "2021-07-06",
"count": 3
},
{
"date": "2021-07-09",
"count": 1
},
{
"date": "2021-07-10",
"count": 1
},
{
"date": "2021-07-12",
"count": 1
},
{
"date": "2021-07-13",
"count": 1
},
{
"date": "2021-07-15",
"count": 2
},
{
"date": "2021-07-23",
"count": 1
},
{
"date": "2021-08-03",
"count": 1
},
{
"date": "2021-08-04",
"count": 1
},
{
"date": "2021-08-16",
"count": 1
},
{
"date": "2021-08-21",
"count": 2
},
{
"date": "2021-08-31",
"count": 1
},
{
"date": "2021-09-02",
"count": 1
},
{
"date": "2021-09-03",
"count": 1
},
{
"date": "2021-09-22",
"count": 1
},
{
"date": "2021-10-01",
"count": 1
},
{
"date": "2021-10-02",
"count": 1
},
{
"date": "2021-10-06",
"count": 2
},
{
"date": "2021-10-08",
"count": 1
},
{
"date": "2021-10-09",
"count": 1
},
{
"date": "2021-10-16",
"count": 1
},
{
"date": "2021-10-20",
"count": 1
},
{
"date": "2021-10-26",
"count": 2
},
{
"date": "2021-11-02",
"count": 1
},
{
"date": "2021-11-03",
"count": 1
},
{
"date": "2021-11-04",
"count": 1
},
{
"date": "2021-11-05",
"count": 1
},
{
"date": "2021-11-09",
"count": 1
},
{
"date": "2021-11-10",
"count": 1
},
{
"date": "2021-11-12",
"count": 1
},
{
"date": "2021-11-14",
"count": 1
},
{
"date": "2021-11-16",
"count": 1
},
{
"date": "2021-11-18",
"count": 2
},
{
"date": "2021-11-22",
"count": 1
},
{
"date": "2021-11-23",
"count": 2
},
{
"date": "2021-11-25",
"count": 1
},
{
"date": "2021-11-26",
"count": 1
},
{
"date": "2021-11-28",
"count": 1
},
{
"date": "2021-12-01",
"count": 1
},
{
"date": "2021-12-10",
"count": 1
},
{
"date": "2021-12-18",
"count": 1
},
{
"date": "2021-12-20",
"count": 1
},
{
"date": "2021-12-24",
"count": 2
},
{
"date": "2021-12-25",
"count": 1
},
{
"date": "2021-12-26",
"count": 1
},
{
"date": "2021-12-28",
"count": 1
},
{
"date": "2021-12-31",
"count": 1
},
{
"date": "2022-01-03",
"count": 1
},
{
"date": "2022-01-05",
"count": 2
},
{
"date": "2022-01-06",
"count": 1
},
{
"date": "2022-01-11",
"count": 1
},
{
"date": "2022-01-14",
"count": 1
},
{
"date": "2022-01-15",
"count": 1
},
{
"date": "2022-01-16",
"count": 1
},
{
"date": "2022-01-22",
"count": 1
},
{
"date": "2022-01-27",
"count": 2
},
{
"date": "2022-01-28",
"count": 1
},
{
"date": "2022-01-30",
"count": 1
},
{
"date": "2022-02-01",
"count": 1
},
{
"date": "2022-02-03",
"count": 1
},
{
"date": "2022-02-09",
"count": 1
},
{
"date": "2022-02-10",
"count": 1
},
{
"date": "2022-02-14",
"count": 1
},
{
"date": "2022-02-15",
"count": 1
},
{
"date": "2022-02-19",
"count": 1
},
{
"date": "2022-02-25",
"count": 1
},
{
"date": "2022-03-01",
"count": 2
},
{
"date": "2022-03-02",
"count": 1
},
{
"date": "2022-03-04",
"count": 1
},
{
"date": "2022-03-05",
"count": 1
},
{
"date": "2022-03-09",
"count": 1
},
{
"date": "2022-03-10",
"count": 1
},
{
"date": "2022-03-15",
"count": 1
},
{
"date": "2022-03-16",
"count": 2
},
{
"date": "2022-03-22",
"count": 1
},
{
"date": "2022-03-25",
"count": 1
},
{
"date": "2022-03-27",
"count": 1
},
{
"date": "2022-04-02",
"count": 2
},
{
"date": "2022-04-04",
"count": 1
},
{
"date": "2022-04-14",
"count": 1
},
{
"date": "2022-05-09",
"count": 1
},
{
"date": "2022-05-14",
"count": 1
},
{
"date": "2022-05-16",
"count": 1
},
{
"date": "2022-05-20",
"count": 1
},
{
"date": "2022-05-21",
"count": 1
},
{
"date": "2022-05-25",
"count": 1
},
{
"date": "2022-05-31",
"count": 2
},
{
"date": "2022-06-02",
"count": 2
},
{
"date": "2022-06-12",
"count": 1
},
{
"date": "2022-06-19",
"count": 1
},
{
"date": "2022-06-25",
"count": 1
},
{
"date": "2022-06-28",
"count": 1
},
{
"date": "2022-07-02",
"count": 1
},
{
"date": "2022-07-05",
"count": 1
},
{
"date": "2022-07-06",
"count": 1
},
{
"date": "2022-07-12",
"count": 2
},
{
"date": "2022-07-14",
"count": 2
},
{
"date": "2022-07-25",
"count": 1
},
{
"date": "2022-07-30",
"count": 1
},
{
"date": "2022-08-01",
"count": 1
},
{
"date": "2022-08-02",
"count": 2
},
{
"date": "2022-08-07",
"count": 1
},
{
"date": "2022-08-08",
"count": 1
},
{
"date": "2022-08-10",
"count": 1
},
{
"date": "2022-08-17",
"count": 1
},
{
"date": "2022-08-19",
"count": 1
},
{
"date": "2022-08-21",
"count": 1
},
{
"date": "2022-08-25",
"count": 1
},
{
"date": "2022-08-26",
"count": 1
},
{
"date": "2022-08-29",
"count": 1
},
{
"date": "2022-09-05",
"count": 1
},
{
"date": "2022-09-11",
"count": 1
},
{
"date": "2022-09-15",
"count": 1
},
{
"date": "2022-09-20",
"count": 1
},
{
"date": "2022-10-03",
"count": 1
},
{
"date": "2022-10-05",
"count": 1
},
{
"date": "2022-10-06",
"count": 1
},
{
"date": "2022-10-12",
"count": 1
},
{
"date": "2022-10-13",
"count": 2
},
{
"date": "2022-10-28",
"count": 1
},
{
"date": "2022-10-31",
"count": 1
},
{
"date": "2022-11-01",
"count": 2
},
{
"date": "2022-11-02",
"count": 1
},
{
"date": "2022-11-07",
"count": 1
},
{
"date": "2022-11-09",
"count": 1
},
{
"date": "2022-11-10",
"count": 1
},
{
"date": "2022-11-20",
"count": 1
},
{
"date": "2022-11-30",
"count": 1
},
{
"date": "2022-12-02",
"count": 1
},
{
"date": "2022-12-03",
"count": 1
},
{
"date": "2022-12-13",
"count": 1
},
{
"date": "2022-12-18",
"count": 1
},
{
"date": "2022-12-25",
"count": 1
},
{
"date": "2023-01-11",
"count": 1
},
{
"date": "2023-01-14",
"count": 1
},
{
"date": "2023-01-17",
"count": 5
},
{
"date": "2023-01-19",
"count": 1
},
{
"date": "2023-01-22",
"count": 1
},
{
"date": "2023-01-24",
"count": 2
},
{
"date": "2023-01-25",
"count": 1
},
{
"date": "2023-01-27",
"count": 1
},
{
"date": "2023-01-28",
"count": 1
},
{
"date": "2023-02-01",
"count": 1
},
{
"date": "2023-02-08",
"count": 1
},
{
"date": "2023-02-19",
"count": 1
},
{
"date": "2023-02-20",
"count": 1
},
{
"date": "2023-02-24",
"count": 2
},
{
"date": "2023-02-27",
"count": 1
},
{
"date": "2023-03-02",
"count": 2
},
{
"date": "2023-03-05",
"count": 1
},
{
"date": "2023-03-17",
"count": 1
},
{
"date": "2023-03-28",
"count": 1
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-02",
"count": 1
},
{
"date": "2023-04-03",
"count": 1
},
{
"date": "2023-04-10",
"count": 1
},
{
"date": "2023-04-11",
"count": 1
},
{
"date": "2023-04-14",
"count": 1
},
{
"date": "2023-04-26",
"count": 1
},
{
"date": "2023-04-30",
"count": 1
},
{
"date": "2023-05-07",
"count": 2
},
{
"date": "2023-05-18",
"count": 1
},
{
"date": "2023-05-20",
"count": 1
},
{
"date": "2023-05-23",
"count": 1
},
{
"date": "2023-05-26",
"count": 1
},
{
"date": "2023-05-29",
"count": 1
},
{
"date": "2023-05-30",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-08",
"count": 1
},
{
"date": "2023-06-10",
"count": 1
},
{
"date": "2023-06-12",
"count": 1
},
{
"date": "2023-06-24",
"count": 1
},
{
"date": "2023-06-29",
"count": 1
},
{
"date": "2023-07-03",
"count": 2
},
{
"date": "2023-07-05",
"count": 1
},
{
"date": "2023-07-06",
"count": 1
},
{
"date": "2023-07-20",
"count": 1
},
{
"date": "2023-07-23",
"count": 1
},
{
"date": "2023-08-03",
"count": 1
},
{
"date": "2023-08-24",
"count": 1
},
{
"date": "2023-08-25",
"count": 1
},
{
"date": "2023-08-26",
"count": 1
},
{
"date": "2023-08-28",
"count": 1
},
{
"date": "2023-08-31",
"count": 1
},
{
"date": "2023-09-02",
"count": 1
},
{
"date": "2023-09-04",
"count": 1
},
{
"date": "2023-09-07",
"count": 2
},
{
"date": "2023-09-11",
"count": 1
},
{
"date": "2023-09-28",
"count": 1
},
{
"date": "2023-09-29",
"count": 1
},
{
"date": "2023-10-03",
"count": 1
},
{
"date": "2023-10-04",
"count": 1
},
{
"date": "2023-10-08",
"count": 1
},
{
"date": "2023-10-17",
"count": 1
},
{
"date": "2023-10-20",
"count": 1
},
{
"date": "2023-10-22",
"count": 1
},
{
"date": "2023-10-24",
"count": 1
},
{
"date": "2023-11-01",
"count": 1
},
{
"date": "2023-11-04",
"count": 1
},
{
"date": "2023-11-05",
"count": 1
},
{
"date": "2023-11-09",
"count": 1
},
{
"date": "2023-11-13",
"count": 2
},
{
"date": "2023-11-15",
"count": 1
},
{
"date": "2023-11-20",
"count": 1
},
{
"date": "2023-11-21",
"count": 1
},
{
"date": "2023-11-22",
"count": 1
},
{
"date": "2023-11-24",
"count": 1
},
{
"date": "2023-11-26",
"count": 1
},
{
"date": "2023-11-30",
"count": 1
},
{
"date": "2023-12-05",
"count": 1
},
{
"date": "2023-12-09",
"count": 1
},
{
"date": "2023-12-19",
"count": 1
},
{
"date": "2023-12-27",
"count": 2
},
{
"date": "2023-12-29",
"count": 1
},
{
"date": "2024-01-17",
"count": 1
},
{
"date": "2024-01-19",
"count": 2
},
{
"date": "2024-01-23",
"count": 2
},
{
"date": "2024-01-24",
"count": 1
},
{
"date": "2024-01-29",
"count": 1
},
{
"date": "2024-02-01",
"count": 1
},
{
"date": "2024-02-03",
"count": 2
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-02-15",
"count": 1
},
{
"date": "2024-02-16",
"count": 1
},
{
"date": "2024-02-22",
"count": 1
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-02-26",
"count": 1
},
{
"date": "2024-03-09",
"count": 1
},
{
"date": "2024-03-12",
"count": 1
},
{
"date": "2024-03-29",
"count": 2
},
{
"date": "2024-04-03",
"count": 2
},
{
"date": "2024-04-18",
"count": 1
},
{
"date": "2024-04-19",
"count": 1
},
{
"date": "2024-04-23",
"count": 1
},
{
"date": "2024-05-10",
"count": 2
},
{
"date": "2024-05-11",
"count": 1
},
{
"date": "2024-05-13",
"count": 1
},
{
"date": "2024-05-17",
"count": 1
},
{
"date": "2024-05-21",
"count": 1
},
{
"date": "2024-05-23",
"count": 1
},
{
"date": "2024-05-25",
"count": 1
},
{
"date": "2024-05-26",
"count": 1
},
{
"date": "2024-05-30",
"count": 1
},
{
"date": "2024-05-31",
"count": 1
},
{
"date": "2024-06-09",
"count": 2
},
{
"date": "2024-06-10",
"count": 1
},
{
"date": "2024-06-12",
"count": 2
},
{
"date": "2024-06-18",
"count": 1
},
{
"date": "2024-06-20",
"count": 2
},
{
"date": "2024-06-23",
"count": 1
},
{
"date": "2024-06-28",
"count": 1
},
{
"date": "2024-07-02",
"count": 1
},
{
"date": "2024-07-04",
"count": 1
},
{
"date": "2024-07-11",
"count": 1
},
{
"date": "2024-07-23",
"count": 1
},
{
"date": "2024-07-24",
"count": 1
},
{
"date": "2024-07-31",
"count": 1
},
{
"date": "2024-08-23",
"count": 1
},
{
"date": "2024-08-24",
"count": 1
},
{
"date": "2024-08-26",
"count": 1
},
{
"date": "2024-08-28",
"count": 1
},
{
"date": "2024-08-30",
"count": 1
},
{
"date": "2024-09-11",
"count": 2
},
{
"date": "2024-09-14",
"count": 1
},
{
"date": "2024-09-16",
"count": 1
},
{
"date": "2024-09-30",
"count": 1
},
{
"date": "2024-10-02",
"count": 1
},
{
"date": "2024-10-08",
"count": 1
},
{
"date": "2024-10-17",
"count": 1
},
{
"date": "2024-10-19",
"count": 1
},
{
"date": "2024-10-21",
"count": 1
},
{
"date": "2024-10-24",
"count": 1
},
{
"date": "2024-10-28",
"count": 1
},
{
"date": "2024-11-03",
"count": 2
},
{
"date": "2024-11-08",
"count": 1
},
{
"date": "2024-11-10",
"count": 1
},
{
"date": "2024-11-12",
"count": 1
},
{
"date": "2024-11-14",
"count": 1
},
{
"date": "2024-11-20",
"count": 1
},
{
"date": "2024-11-25",
"count": 2
},
{
"date": "2024-11-26",
"count": 2
},
{
"date": "2024-11-29",
"count": 1
},
{
"date": "2024-11-30",
"count": 2
},
{
"date": "2024-12-12",
"count": 1
},
{
"date": "2024-12-14",
"count": 1
},
{
"date": "2024-12-21",
"count": 1
},
{
"date": "2024-12-23",
"count": 1
},
{
"date": "2024-12-25",
"count": 1
},
{
"date": "2024-12-27",
"count": 1
},
{
"date": "2025-01-06",
"count": 1
},
{
"date": "2025-01-07",
"count": 1
},
{
"date": "2025-01-10",
"count": 2
},
{
"date": "2025-01-14",
"count": 1
},
{
"date": "2025-01-17",
"count": 1
},
{
"date": "2025-01-20",
"count": 1
},
{
"date": "2025-01-25",
"count": 1
},
{
"date": "2025-01-26",
"count": 1
},
{
"date": "2025-01-30",
"count": 2
},
{
"date": "2025-01-31",
"count": 1
},
{
"date": "2025-02-05",
"count": 1
},
{
"date": "2025-02-08",
"count": 1
},
{
"date": "2025-02-12",
"count": 2
},
{
"date": "2025-02-17",
"count": 1
},
{
"date": "2025-02-18",
"count": 1
},
{
"date": "2025-02-19",
"count": 1
},
{
"date": "2025-02-27",
"count": 1
},
{
"date": "2025-03-02",
"count": 1
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-03-05",
"count": 1
},
{
"date": "2025-03-06",
"count": 1
},
{
"date": "2025-03-13",
"count": 1
},
{
"date": "2025-03-15",
"count": 1
},
{
"date": "2025-03-22",
"count": 2
},
{
"date": "2025-03-27",
"count": 1
},
{
"date": "2025-04-06",
"count": 1
},
{
"date": "2025-04-07",
"count": 1
},
{
"date": "2025-04-09",
"count": 2
},
{
"date": "2025-04-10",
"count": 1
},
{
"date": "2025-04-21",
"count": 2
},
{
"date": "2025-04-24",
"count": 1
},
{
"date": "2025-04-25",
"count": 1
},
{
"date": "2025-04-28",
"count": 1
},
{
"date": "2025-05-01",
"count": 1
},
{
"date": "2025-05-09",
"count": 3
},
{
"date": "2025-05-12",
"count": 1
},
{
"date": "2025-05-15",
"count": 1
},
{
"date": "2025-05-16",
"count": 2
},
{
"date": "2025-05-19",
"count": 1
},
{
"date": "2025-05-20",
"count": 1
},
{
"date": "2025-05-24",
"count": 1
},
{
"date": "2025-05-26",
"count": 1
},
{
"date": "2025-05-30",
"count": 1
},
{
"date": "2025-05-31",
"count": 1
},
{
"date": "2025-06-04",
"count": 1
},
{
"date": "2025-06-09",
"count": 1
},
{
"date": "2025-06-11",
"count": 1
},
{
"date": "2025-06-12",
"count": 1
},
{
"date": "2025-06-14",
"count": 1
},
{
"date": "2025-06-15",
"count": 1
},
{
"date": "2025-06-17",
"count": 1
},
{
"date": "2025-06-23",
"count": 1
},
{
"date": "2025-06-30",
"count": 1
},
{
"date": "2025-07-02",
"count": 1
},
{
"date": "2025-07-05",
"count": 1
},
{
"date": "2025-07-09",
"count": 1
},
{
"date": "2025-07-15",
"count": 1
},
{
"date": "2025-07-16",
"count": 1
},
{
"date": "2025-07-18",
"count": 1
},
{
"date": "2025-08-09",
"count": 1
},
{
"date": "2025-08-16",
"count": 1
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2025-09-05",
"count": 1
},
{
"date": "2025-09-06",
"count": 1
},
{
"date": "2025-09-07",
"count": 2
},
{
"date": "2025-09-08",
"count": 2
},
{
"date": "2025-09-10",
"count": 1
},
{
"date": "2025-09-12",
"count": 1
},
{
"date": "2025-09-15",
"count": 1
},
{
"date": "2025-09-24",
"count": 1
},
{
"date": "2025-09-27",
"count": 1
},
{
"date": "2025-09-29",
"count": 1
},
{
"date": "2025-09-30",
"count": 1
},
{
"date": "2025-10-16",
"count": 1
},
{
"date": "2025-10-18",
"count": 1
},
{
"date": "2025-10-27",
"count": 1
},
{
"date": "2025-11-02",
"count": 1
},
{
"date": "2025-11-11",
"count": 1
},
{
"date": "2025-11-15",
"count": 1
},
{
"date": "2025-11-20",
"count": 1
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2025-11-22",
"count": 1
},
{
"date": "2025-11-23",
"count": 1
},
{
"date": "2025-11-25",
"count": 1
},
{
"date": "2025-12-01",
"count": 1
},
{
"date": "2025-12-03",
"count": 2
},
{
"date": "2025-12-07",
"count": 1
},
{
"date": "2025-12-24",
"count": 1
},
{
"date": "2025-12-26",
"count": 1
},
{
"date": "2025-12-31",
"count": 3
},
{
"date": "2026-01-02",
"count": 1
},
{
"date": "2026-01-03",
"count": 1
},
{
"date": "2026-01-09",
"count": 1
},
{
"date": "2026-01-13",
"count": 1
},
{
"date": "2026-01-18",
"count": 1
},
{
"date": "2026-01-20",
"count": 1
},
{
"date": "2026-01-21",
"count": 1
},
{
"date": "2026-01-24",
"count": 2
},
{
"date": "2026-01-26",
"count": 1
},
{
"date": "2026-01-27",
"count": 1
},
{
"date": "2026-02-04",
"count": 1
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-02-17",
"count": 1
},
{
"date": "2026-02-19",
"count": 1
},
{
"date": "2026-02-23",
"count": 2
},
{
"date": "2026-02-25",
"count": 1
},
{
"date": "2026-03-01",
"count": 1
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-03-07",
"count": 1
},
{
"date": "2026-03-09",
"count": 1
},
{
"date": "2026-03-13",
"count": 1
},
{
"date": "2026-03-14",
"count": 1
},
{
"date": "2026-03-15",
"count": 1
},
{
"date": "2026-03-27",
"count": 1
},
{
"date": "2026-03-31",
"count": 1
},
{
"date": "2026-04-02",
"count": 1
},
{
"date": "2026-04-03",
"count": 1
},
{
"date": "2026-04-04",
"count": 1
},
{
"date": "2026-04-05",
"count": 1
},
{
"date": "2026-04-06",
"count": 1
},
{
"date": "2026-04-07",
"count": 1
},
{
"date": "2026-04-12",
"count": 1
},
{
"date": "2026-04-13",
"count": 2
},
{
"date": "2026-04-28",
"count": 1
},
{
"date": "2026-04-30",
"count": 1
},
{
"date": "2026-05-13",
"count": 1
},
{
"date": "2026-05-14",
"count": 1
},
{
"date": "2026-05-15",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-05-25",
"count": 1
},
{
"date": "2026-05-26",
"count": 1
},
{
"date": "2026-05-27",
"count": 1
},
{
"date": "2026-05-30",
"count": 1
},
{
"date": "2026-05-31",
"count": 1
},
{
"date": "2026-06-07",
"count": 1
},
{
"date": "2026-06-08",
"count": 1
},
{
"date": "2026-06-11",
"count": 1
},
{
"date": "2026-06-12",
"count": 3
},
{
"date": "2026-06-22",
"count": 1
},
{
"date": "2026-06-27",
"count": 1
},
{
"date": "2026-07-01",
"count": 1
},
{
"date": "2026-07-04",
"count": 2
},
{
"date": "2026-07-05",
"count": 1
},
{
"date": "2026-07-09",
"count": 2
},
{
"date": "2026-07-15",
"count": 2
},
{
"date": "2026-07-20",
"count": 2
}
],
"complete": false,
"collected": 1000,
"total_forks": 1537
},
"star_history": {
"days": [
{
"date": "2024-09-23",
"count": 1
},
{
"date": "2024-09-24",
"count": 2
},
{
"date": "2024-09-25",
"count": 1
},
{
"date": "2024-09-26",
"count": 1
},
{
"date": "2024-09-29",
"count": 1
},
{
"date": "2024-09-30",
"count": 1
},
{
"date": "2024-10-01",
"count": 3
},
{
"date": "2024-10-02",
"count": 2
},
{
"date": "2024-10-03",
"count": 1
},
{
"date": "2024-10-05",
"count": 2
},
{
"date": "2024-10-07",
"count": 1
},
{
"date": "2024-10-08",
"count": 5
},
{
"date": "2024-10-09",
"count": 3
},
{
"date": "2024-10-10",
"count": 2
},
{
"date": "2024-10-11",
"count": 3
},
{
"date": "2024-10-13",
"count": 2
},
{
"date": "2024-10-15",
"count": 2
},
{
"date": "2024-10-16",
"count": 1
},
{
"date": "2024-10-17",
"count": 3
},
{
"date": "2024-10-18",
"count": 2
},
{
"date": "2024-10-19",
"count": 3
},
{
"date": "2024-10-20",
"count": 2
},
{
"date": "2024-10-21",
"count": 2
},
{
"date": "2024-10-22",
"count": 2
},
{
"date": "2024-10-23",
"count": 1
},
{
"date": "2024-10-24",
"count": 2
},
{
"date": "2024-10-25",
"count": 4
},
{
"date": "2024-10-26",
"count": 1
},
{
"date": "2024-10-27",
"count": 2
},
{
"date": "2024-10-28",
"count": 1
},
{
"date": "2024-10-29",
"count": 3
},
{
"date": "2024-10-30",
"count": 4
},
{
"date": "2024-10-31",
"count": 3
},
{
"date": "2024-11-02",
"count": 1
},
{
"date": "2024-11-03",
"count": 1
},
{
"date": "2024-11-04",
"count": 1
},
{
"date": "2024-11-05",
"count": 4
},
{
"date": "2024-11-06",
"count": 1
},
{
"date": "2024-11-07",
"count": 4
},
{
"date": "2024-11-08",
"count": 1
},
{
"date": "2024-11-09",
"count": 1
},
{
"date": "2024-11-10",
"count": 1
},
{
"date": "2024-11-12",
"count": 2
},
{
"date": "2024-11-14",
"count": 2
},
{
"date": "2024-11-15",
"count": 3
},
{
"date": "2024-11-16",
"count": 3
},
{
"date": "2024-11-17",
"count": 6
},
{
"date": "2024-11-19",
"count": 4
},
{
"date": "2024-11-20",
"count": 2
},
{
"date": "2024-11-21",
"count": 3
},
{
"date": "2024-11-24",
"count": 1
},
{
"date": "2024-11-25",
"count": 3
},
{
"date": "2024-11-26",
"count": 3
},
{
"date": "2024-11-27",
"count": 1
},
{
"date": "2024-11-28",
"count": 2
},
{
"date": "2024-11-29",
"count": 3
},
{
"date": "2024-11-30",
"count": 1
},
{
"date": "2024-12-03",
"count": 4
},
{
"date": "2024-12-04",
"count": 1
},
{
"date": "2024-12-05",
"count": 3
},
{
"date": "2024-12-07",
"count": 1
},
{
"date": "2024-12-08",
"count": 2
},
{
"date": "2024-12-10",
"count": 2
},
{
"date": "2024-12-11",
"count": 1
},
{
"date": "2024-12-12",
"count": 2
},
{
"date": "2024-12-13",
"count": 2
},
{
"date": "2024-12-14",
"count": 3
},
{
"date": "2024-12-16",
"count": 2
},
{
"date": "2024-12-17",
"count": 2
},
{
"date": "2024-12-18",
"count": 3
},
{
"date": "2024-12-19",
"count": 3
},
{
"date": "2024-12-22",
"count": 3
},
{
"date": "2024-12-23",
"count": 3
},
{
"date": "2024-12-24",
"count": 3
},
{
"date": "2024-12-25",
"count": 1
},
{
"date": "2024-12-26",
"count": 1
},
{
"date": "2024-12-27",
"count": 1
},
{
"date": "2024-12-30",
"count": 1
},
{
"date": "2025-01-01",
"count": 2
},
{
"date": "2025-01-02",
"count": 4
},
{
"date": "2025-01-03",
"count": 2
},
{
"date": "2025-01-05",
"count": 1
},
{
"date": "2025-01-07",
"count": 3
},
{
"date": "2025-01-08",
"count": 2
},
{
"date": "2025-01-09",
"count": 3
},
{
"date": "2025-01-10",
"count": 1
},
{
"date": "2025-01-11",
"count": 1
},
{
"date": "2025-01-13",
"count": 1
},
{
"date": "2025-01-14",
"count": 2
},
{
"date": "2025-01-15",
"count": 3
},
{
"date": "2025-01-16",
"count": 3
},
{
"date": "2025-01-18",
"count": 1
},
{
"date": "2025-01-19",
"count": 2
},
{
"date": "2025-01-20",
"count": 2
},
{
"date": "2025-01-22",
"count": 2
},
{
"date": "2025-01-23",
"count": 1
},
{
"date": "2025-01-24",
"count": 3
},
{
"date": "2025-01-25",
"count": 2
},
{
"date": "2025-01-26",
"count": 2
},
{
"date": "2025-01-27",
"count": 3
},
{
"date": "2025-01-28",
"count": 3
},
{
"date": "2025-01-31",
"count": 3
},
{
"date": "2025-02-01",
"count": 1
},
{
"date": "2025-02-04",
"count": 3
},
{
"date": "2025-02-05",
"count": 5
},
{
"date": "2025-02-06",
"count": 2
},
{
"date": "2025-02-07",
"count": 1
},
{
"date": "2025-02-09",
"count": 3
},
{
"date": "2025-02-10",
"count": 3
},
{
"date": "2025-02-12",
"count": 4
},
{
"date": "2025-02-14",
"count": 1
},
{
"date": "2025-02-17",
"count": 2
},
{
"date": "2025-02-18",
"count": 4
},
{
"date": "2025-02-19",
"count": 1
},
{
"date": "2025-02-20",
"count": 1
},
{
"date": "2025-02-21",
"count": 1
},
{
"date": "2025-02-22",
"count": 1
},
{
"date": "2025-02-23",
"count": 5
},
{
"date": "2025-02-25",
"count": 2
},
{
"date": "2025-02-26",
"count": 2
},
{
"date": "2025-02-27",
"count": 1
},
{
"date": "2025-02-28",
"count": 2
},
{
"date": "2025-03-01",
"count": 1
},
{
"date": "2025-03-03",
"count": 2
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-03-05",
"count": 2
},
{
"date": "2025-03-06",
"count": 3
},
{
"date": "2025-03-07",
"count": 4
},
{
"date": "2025-03-08",
"count": 2
},
{
"date": "2025-03-09",
"count": 3
},
{
"date": "2025-03-10",
"count": 3
},
{
"date": "2025-03-13",
"count": 1
},
{
"date": "2025-03-14",
"count": 1
},
{
"date": "2025-03-15",
"count": 1
},
{
"date": "2025-03-16",
"count": 1
},
{
"date": "2025-03-17",
"count": 1
},
{
"date": "2025-03-18",
"count": 3
},
{
"date": "2025-03-19",
"count": 3
},
{
"date": "2025-03-20",
"count": 1
},
{
"date": "2025-03-21",
"count": 1
},
{
"date": "2025-03-22",
"count": 3
},
{
"date": "2025-03-23",
"count": 4
},
{
"date": "2025-03-24",
"count": 3
},
{
"date": "2025-03-25",
"count": 1
},
{
"date": "2025-03-27",
"count": 1
},
{
"date": "2025-03-28",
"count": 2
},
{
"date": "2025-03-29",
"count": 2
},
{
"date": "2025-03-30",
"count": 2
},
{
"date": "2025-03-31",
"count": 1
},
{
"date": "2025-04-03",
"count": 2
},
{
"date": "2025-04-04",
"count": 3
},
{
"date": "2025-04-05",
"count": 1
},
{
"date": "2025-04-07",
"count": 2
},
{
"date": "2025-04-08",
"count": 2
},
{
"date": "2025-04-10",
"count": 1
},
{
"date": "2025-04-11",
"count": 2
},
{
"date": "2025-04-13",
"count": 1
},
{
"date": "2025-04-15",
"count": 2
},
{
"date": "2025-04-16",
"count": 2
},
{
"date": "2025-04-18",
"count": 2
},
{
"date": "2025-04-19",
"count": 1
},
{
"date": "2025-04-20",
"count": 1
},
{
"date": "2025-04-21",
"count": 2
},
{
"date": "2025-04-22",
"count": 2
},
{
"date": "2025-04-24",
"count": 3
},
{
"date": "2025-04-25",
"count": 3
},
{
"date": "2025-04-27",
"count": 2
},
{
"date": "2025-04-28",
"count": 1
},
{
"date": "2025-05-01",
"count": 3
},
{
"date": "2025-05-02",
"count": 1
},
{
"date": "2025-05-03",
"count": 1
},
{
"date": "2025-05-05",
"count": 1
},
{
"date": "2025-05-06",
"count": 1
},
{
"date": "2025-05-07",
"count": 2
},
{
"date": "2025-05-08",
"count": 2
},
{
"date": "2025-05-09",
"count": 2
},
{
"date": "2025-05-10",
"count": 1
},
{
"date": "2025-05-11",
"count": 2
},
{
"date": "2025-05-12",
"count": 2
},
{
"date": "2025-05-13",
"count": 1
},
{
"date": "2025-05-14",
"count": 1
},
{
"date": "2025-05-15",
"count": 2
},
{
"date": "2025-05-16",
"count": 2
},
{
"date": "2025-05-18",
"count": 1
},
{
"date": "2025-05-19",
"count": 1
},
{
"date": "2025-05-20",
"count": 1
},
{
"date": "2025-05-22",
"count": 4
},
{
"date": "2025-05-25",
"count": 1
},
{
"date": "2025-05-26",
"count": 3
},
{
"date": "2025-05-27",
"count": 2
},
{
"date": "2025-05-28",
"count": 2
},
{
"date": "2025-05-29",
"count": 1
},
{
"date": "2025-05-30",
"count": 2
},
{
"date": "2025-05-31",
"count": 2
},
{
"date": "2025-06-01",
"count": 2
},
{
"date": "2025-06-03",
"count": 1
},
{
"date": "2025-06-04",
"count": 1
},
{
"date": "2025-06-06",
"count": 2
},
{
"date": "2025-06-07",
"count": 1
},
{
"date": "2025-06-08",
"count": 1
},
{
"date": "2025-06-09",
"count": 1
},
{
"date": "2025-06-10",
"count": 1
},
{
"date": "2025-06-11",
"count": 2
},
{
"date": "2025-06-12",
"count": 2
},
{
"date": "2025-06-13",
"count": 1
},
{
"date": "2025-06-15",
"count": 1
},
{
"date": "2025-06-16",
"count": 1
},
{
"date": "2025-06-17",
"count": 2
},
{
"date": "2025-06-18",
"count": 2
},
{
"date": "2025-06-19",
"count": 1
},
{
"date": "2025-06-20",
"count": 2
},
{
"date": "2025-06-21",
"count": 1
},
{
"date": "2025-06-22",
"count": 1
},
{
"date": "2025-06-23",
"count": 2
},
{
"date": "2025-06-24",
"count": 5
},
{
"date": "2025-06-25",
"count": 1
},
{
"date": "2025-06-26",
"count": 1
},
{
"date": "2025-06-27",
"count": 2
},
{
"date": "2025-06-29",
"count": 5
},
{
"date": "2025-07-01",
"count": 2
},
{
"date": "2025-07-03",
"count": 2
},
{
"date": "2025-07-04",
"count": 3
},
{
"date": "2025-07-06",
"count": 1
},
{
"date": "2025-07-07",
"count": 1
},
{
"date": "2025-07-08",
"count": 3
},
{
"date": "2025-07-10",
"count": 1
},
{
"date": "2025-07-11",
"count": 1
},
{
"date": "2025-07-14",
"count": 1
},
{
"date": "2025-07-16",
"count": 2
},
{
"date": "2025-07-17",
"count": 1
},
{
"date": "2025-07-20",
"count": 1
},
{
"date": "2025-07-21",
"count": 1
},
{
"date": "2025-07-22",
"count": 2
},
{
"date": "2025-07-23",
"count": 3
},
{
"date": "2025-07-24",
"count": 3
},
{
"date": "2025-07-26",
"count": 3
},
{
"date": "2025-07-28",
"count": 1
},
{
"date": "2025-07-29",
"count": 2
},
{
"date": "2025-08-01",
"count": 1
},
{
"date": "2025-08-02",
"count": 2
},
{
"date": "2025-08-03",
"count": 2
},
{
"date": "2025-08-04",
"count": 1
},
{
"date": "2025-08-05",
"count": 4
},
{
"date": "2025-08-06",
"count": 2
},
{
"date": "2025-08-07",
"count": 4
},
{
"date": "2025-08-08",
"count": 4
},
{
"date": "2025-08-09",
"count": 2
},
{
"date": "2025-08-10",
"count": 1
},
{
"date": "2025-08-11",
"count": 3
},
{
"date": "2025-08-12",
"count": 3
},
{
"date": "2025-08-13",
"count": 2
},
{
"date": "2025-08-17",
"count": 1
},
{
"date": "2025-08-18",
"count": 3
},
{
"date": "2025-08-19",
"count": 1
},
{
"date": "2025-08-20",
"count": 2
},
{
"date": "2025-08-21",
"count": 2
},
{
"date": "2025-08-22",
"count": 1
},
{
"date": "2025-08-24",
"count": 3
},
{
"date": "2025-08-25",
"count": 1
},
{
"date": "2025-08-27",
"count": 4
},
{
"date": "2025-08-29",
"count": 2
},
{
"date": "2025-08-31",
"count": 2
},
{
"date": "2025-09-01",
"count": 1
},
{
"date": "2025-09-02",
"count": 2
},
{
"date": "2025-09-04",
"count": 1
},
{
"date": "2025-09-05",
"count": 5
},
{
"date": "2025-09-06",
"count": 1
},
{
"date": "2025-09-07",
"count": 3
},
{
"date": "2025-09-08",
"count": 1
},
{
"date": "2025-09-09",
"count": 3
},
{
"date": "2025-09-11",
"count": 4
},
{
"date": "2025-09-12",
"count": 2
},
{
"date": "2025-09-14",
"count": 3
},
{
"date": "2025-09-15",
"count": 1
},
{
"date": "2025-09-16",
"count": 3
},
{
"date": "2025-09-18",
"count": 1
},
{
"date": "2025-09-20",
"count": 1
},
{
"date": "2025-09-21",
"count": 2
},
{
"date": "2025-09-22",
"count": 1
},
{
"date": "2025-09-23",
"count": 1
},
{
"date": "2025-09-24",
"count": 1
},
{
"date": "2025-09-26",
"count": 1
},
{
"date": "2025-09-28",
"count": 1
},
{
"date": "2025-09-29",
"count": 1
},
{
"date": "2025-09-30",
"count": 3
},
{
"date": "2025-10-02",
"count": 4
},
{
"date": "2025-10-03",
"count": 4
},
{
"date": "2025-10-05",
"count": 1
},
{
"date": "2025-10-07",
"count": 1
},
{
"date": "2025-10-08",
"count": 2
},
{
"date": "2025-10-09",
"count": 2
},
{
"date": "2025-10-10",
"count": 1
},
{
"date": "2025-10-13",
"count": 3
},
{
"date": "2025-10-14",
"count": 1
},
{
"date": "2025-10-15",
"count": 3
},
{
"date": "2025-10-17",
"count": 2
},
{
"date": "2025-10-19",
"count": 1
},
{
"date": "2025-10-23",
"count": 2
},
{
"date": "2025-10-26",
"count": 1
},
{
"date": "2025-10-27",
"count": 7
},
{
"date": "2025-10-28",
"count": 1
},
{
"date": "2025-10-29",
"count": 3
},
{
"date": "2025-10-31",
"count": 1
},
{
"date": "2025-11-01",
"count": 2
},
{
"date": "2025-11-02",
"count": 2
},
{
"date": "2025-11-03",
"count": 4
},
{
"date": "2025-11-04",
"count": 3
},
{
"date": "2025-11-05",
"count": 3
},
{
"date": "2025-11-06",
"count": 2
},
{
"date": "2025-11-08",
"count": 2
},
{
"date": "2025-11-09",
"count": 2
},
{
"date": "2025-11-10",
"count": 3
},
{
"date": "2025-11-11",
"count": 2
},
{
"date": "2025-11-12",
"count": 2
},
{
"date": "2025-11-13",
"count": 3
},
{
"date": "2025-11-15",
"count": 2
},
{
"date": "2025-11-16",
"count": 1
},
{
"date": "2025-11-17",
"count": 4
},
{
"date": "2025-11-18",
"count": 2
},
{
"date": "2025-11-19",
"count": 4
},
{
"date": "2025-11-20",
"count": 3
},
{
"date": "2025-11-21",
"count": 4
},
{
"date": "2025-11-22",
"count": 2
},
{
"date": "2025-11-23",
"count": 1
},
{
"date": "2025-11-24",
"count": 1
},
{
"date": "2025-11-25",
"count": 1
},
{
"date": "2025-11-26",
"count": 2
},
{
"date": "2025-11-27",
"count": 3
},
{
"date": "2025-11-28",
"count": 1
},
{
"date": "2025-11-29",
"count": 1
},
{
"date": "2025-11-30",
"count": 1
},
{
"date": "2025-12-01",
"count": 3
},
{
"date": "2025-12-02",
"count": 1
},
{
"date": "2025-12-03",
"count": 2
},
{
"date": "2025-12-05",
"count": 1
},
{
"date": "2025-12-06",
"count": 1
},
{
"date": "2025-12-07",
"count": 1
},
{
"date": "2025-12-08",
"count": 1
},
{
"date": "2025-12-09",
"count": 3
},
{
"date": "2025-12-10",
"count": 4
},
{
"date": "2025-12-11",
"count": 2
},
{
"date": "2025-12-12",
"count": 2
},
{
"date": "2025-12-13",
"count": 1
},
{
"date": "2025-12-14",
"count": 2
},
{
"date": "2025-12-15",
"count": 4
},
{
"date": "2025-12-16",
"count": 5
},
{
"date": "2025-12-17",
"count": 1
},
{
"date": "2025-12-18",
"count": 4
},
{
"date": "2025-12-21",
"count": 1
},
{
"date": "2025-12-22",
"count": 3
},
{
"date": "2025-12-23",
"count": 2
},
{
"date": "2025-12-24",
"count": 1
},
{
"date": "2025-12-25",
"count": 2
},
{
"date": "2025-12-26",
"count": 4
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2025-12-30",
"count": 1
},
{
"date": "2025-12-31",
"count": 2
},
{
"date": "2026-01-01",
"count": 2
},
{
"date": "2026-01-02",
"count": 1
},
{
"date": "2026-01-04",
"count": 1
},
{
"date": "2026-01-05",
"count": 3
},
{
"date": "2026-01-06",
"count": 1
},
{
"date": "2026-01-07",
"count": 3
},
{
"date": "2026-01-08",
"count": 2
},
{
"date": "2026-01-09",
"count": 2
},
{
"date": "2026-01-10",
"count": 1
},
{
"date": "2026-01-11",
"count": 1
},
{
"date": "2026-01-13",
"count": 3
},
{
"date": "2026-01-14",
"count": 2
},
{
"date": "2026-01-15",
"count": 1
},
{
"date": "2026-01-19",
"count": 1
},
{
"date": "2026-01-20",
"count": 2
},
{
"date": "2026-01-21",
"count": 2
},
{
"date": "2026-01-22",
"count": 1
},
{
"date": "2026-01-23",
"count": 3
},
{
"date": "2026-01-26",
"count": 2
},
{
"date": "2026-01-27",
"count": 1
},
{
"date": "2026-01-28",
"count": 1
},
{
"date": "2026-01-29",
"count": 3
},
{
"date": "2026-01-30",
"count": 2
},
{
"date": "2026-01-31",
"count": 3
},
{
"date": "2026-02-02",
"count": 2
},
{
"date": "2026-02-03",
"count": 1
},
{
"date": "2026-02-04",
"count": 1
},
{
"date": "2026-02-05",
"count": 3
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-02-08",
"count": 1
},
{
"date": "2026-02-09",
"count": 1
},
{
"date": "2026-02-12",
"count": 1
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-02-15",
"count": 2
},
{
"date": "2026-02-16",
"count": 3
},
{
"date": "2026-02-18",
"count": 1
},
{
"date": "2026-02-19",
"count": 1
},
{
"date": "2026-02-20",
"count": 1
},
{
"date": "2026-02-21",
"count": 2
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-02-23",
"count": 1
},
{
"date": "2026-02-24",
"count": 3
},
{
"date": "2026-02-25",
"count": 1
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-02-27",
"count": 2
},
{
"date": "2026-02-28",
"count": 2
},
{
"date": "2026-03-01",
"count": 1
},
{
"date": "2026-03-02",
"count": 2
},
{
"date": "2026-03-03",
"count": 2
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-05",
"count": 2
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-03-08",
"count": 1
},
{
"date": "2026-03-09",
"count": 4
},
{
"date": "2026-03-11",
"count": 1
},
{
"date": "2026-03-12",
"count": 1
},
{
"date": "2026-03-13",
"count": 8
},
{
"date": "2026-03-14",
"count": 4
},
{
"date": "2026-03-15",
"count": 6
},
{
"date": "2026-03-16",
"count": 2
},
{
"date": "2026-03-17",
"count": 1
},
{
"date": "2026-03-19",
"count": 5
},
{
"date": "2026-03-20",
"count": 1
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-23",
"count": 2
},
{
"date": "2026-03-24",
"count": 4
},
{
"date": "2026-03-26",
"count": 2
},
{
"date": "2026-03-27",
"count": 2
},
{
"date": "2026-03-28",
"count": 2
},
{
"date": "2026-03-29",
"count": 4
},
{
"date": "2026-03-30",
"count": 2
},
{
"date": "2026-03-31",
"count": 7
},
{
"date": "2026-04-02",
"count": 3
},
{
"date": "2026-04-03",
"count": 2
},
{
"date": "2026-04-05",
"count": 3
},
{
"date": "2026-04-06",
"count": 1
},
{
"date": "2026-04-07",
"count": 1
},
{
"date": "2026-04-10",
"count": 2
},
{
"date": "2026-04-13",
"count": 3
},
{
"date": "2026-04-14",
"count": 1
},
{
"date": "2026-04-15",
"count": 3
},
{
"date": "2026-04-16",
"count": 2
},
{
"date": "2026-04-17",
"count": 1
},
{
"date": "2026-04-18",
"count": 3
},
{
"date": "2026-04-19",
"count": 1
},
{
"date": "2026-04-20",
"count": 3
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-04-26",
"count": 1
},
{
"date": "2026-04-27",
"count": 5
},
{
"date": "2026-04-28",
"count": 4
},
{
"date": "2026-04-29",
"count": 1
},
{
"date": "2026-04-30",
"count": 2
},
{
"date": "2026-05-01",
"count": 3
},
{
"date": "2026-05-03",
"count": 1
},
{
"date": "2026-05-04",
"count": 1
},
{
"date": "2026-05-05",
"count": 1
},
{
"date": "2026-05-09",
"count": 1
},
{
"date": "2026-05-10",
"count": 1
},
{
"date": "2026-05-11",
"count": 1
},
{
"date": "2026-05-12",
"count": 2
},
{
"date": "2026-05-13",
"count": 1
},
{
"date": "2026-05-14",
"count": 2
},
{
"date": "2026-05-18",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-05-20",
"count": 1
},
{
"date": "2026-05-21",
"count": 2
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-05-26",
"count": 1
},
{
"date": "2026-05-27",
"count": 1
},
{
"date": "2026-05-28",
"count": 4
},
{
"date": "2026-05-29",
"count": 2
},
{
"date": "2026-05-30",
"count": 1
},
{
"date": "2026-06-01",
"count": 1
},
{
"date": "2026-06-02",
"count": 1
},
{
"date": "2026-06-03",
"count": 1
},
{
"date": "2026-06-05",
"count": 1
},
{
"date": "2026-06-06",
"count": 1
},
{
"date": "2026-06-07",
"count": 1
},
{
"date": "2026-06-08",
"count": 2
},
{
"date": "2026-06-12",
"count": 3
},
{
"date": "2026-06-14",
"count": 1
},
{
"date": "2026-06-16",
"count": 1
},
{
"date": "2026-06-18",
"count": 1
},
{
"date": "2026-06-19",
"count": 1
},
{
"date": "2026-06-22",
"count": 4
},
{
"date": "2026-06-23",
"count": 1
},
{
"date": "2026-06-24",
"count": 2
},
{
"date": "2026-06-25",
"count": 2
},
{
"date": "2026-06-26",
"count": 1
},
{
"date": "2026-06-28",
"count": 1
},
{
"date": "2026-06-29",
"count": 1
},
{
"date": "2026-06-30",
"count": 1
},
{
"date": "2026-07-01",
"count": 2
},
{
"date": "2026-07-02",
"count": 1
},
{
"date": "2026-07-03",
"count": 2
},
{
"date": "2026-07-04",
"count": 2
},
{
"date": "2026-07-05",
"count": 1
},
{
"date": "2026-07-06",
"count": 1
},
{
"date": "2026-07-07",
"count": 1
},
{
"date": "2026-07-08",
"count": 1
},
{
"date": "2026-07-09",
"count": 5
},
{
"date": "2026-07-10",
"count": 1
},
{
"date": "2026-07-14",
"count": 2
},
{
"date": "2026-07-15",
"count": 1
},
{
"date": "2026-07-16",
"count": 2
},
{
"date": "2026-07-17",
"count": 1
},
{
"date": "2026-07-19",
"count": 2
},
{
"date": "2026-07-21",
"count": 2
}
],
"complete": false,
"collected": 1000,
"total_stars": 11839
},
"open_issues_and_prs": 423
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"example"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 47235,
"source_files_sampled": 154,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"Gemfile"
],
"advisories": {
"error": "No resolved dependencies carried a version and a supported ecosystem",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 17,
"direct_affected_count": 0
},
"ecosystems": [
"rubygems"
],
"dependencies": [
{
"name": "base64",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "liquid-spec",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "activesupport",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "activesupport",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "base64",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "liquid-spec",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "benchmark",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "benchmark-ips",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "bigdecimal",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "lru_redux",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "memory_profiler",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "minitest",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rubocop",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rubocop-performance",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rubocop-shopify",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "stackprof",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "strscan",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "terminal-table",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "webrick",
"direct": false,
"version": null,
"ecosystem": "rubygems"
}
],
"collected": true,
"truncated": false,
"total_count": 17,
"direct_count": 3,
"indirect_count": 14
}
},
"maintainership": {
"issues": {
"open_prs": 96,
"merged_prs": 731,
"open_issues": 327,
"closed_ratio": 0.652,
"closed_issues": 613,
"closed_unmerged_prs": 295
},
"bus_factor": 6,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "dylanahsmith",
"commits": 317,
"avatar_url": "https://avatars.githubusercontent.com/u/954402?v=4"
},
{
"type": "User",
"login": "pushrax",
"commits": 179,
"avatar_url": "https://avatars.githubusercontent.com/u/984857?v=4"
},
{
"type": "User",
"login": "fw42",
"commits": 149,
"avatar_url": "https://avatars.githubusercontent.com/u/2072686?v=4"
},
{
"type": "User",
"login": "ggmichaelgo",
"commits": 124,
"avatar_url": "https://avatars.githubusercontent.com/u/2475611?v=4"
},
{
"type": "User",
"login": "trishume",
"commits": 76,
"avatar_url": "https://avatars.githubusercontent.com/u/887610?v=4"
},
{
"type": "User",
"login": "karreiro",
"commits": 55,
"avatar_url": "https://avatars.githubusercontent.com/u/1079279?v=4"
},
{
"type": "User",
"login": "peterzhu2118",
"commits": 41,
"avatar_url": "https://avatars.githubusercontent.com/u/15860699?v=4"
},
{
"type": "User",
"login": "titanous",
"commits": 40,
"avatar_url": "https://avatars.githubusercontent.com/u/13026?v=4"
},
{
"type": "User",
"login": "tobi",
"commits": 40,
"avatar_url": "https://avatars.githubusercontent.com/u/347?v=4"
},
{
"type": "User",
"login": "shopmike",
"commits": 39,
"avatar_url": "https://avatars.githubusercontent.com/u/53470248?v=4"
}
],
"contributors_sampled": 100,
"top_contributor_share": 0.185
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"cla.yml",
"liquid.yml"
],
"has_docs_dir": false,
"linter_configs": [
".rubocop.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "17 out of 17 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 9,
"reason": "Found 17/18 approved changesets -- score normalized to 9",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 39 contributing companies or organizations",
"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": "12 commit(s) and 0 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": null,
"reason": "packaging workflow not 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": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 9,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "807d45a6b3d4568e64e86b375e3702df2c7c860c",
"ran_at": "2026-07-21T23:31:44Z",
"aggregate_score": 7.3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-20T21:06:51Z",
"oldest_open_prs": [
{
"number": 336,
"created_at": "2014-04-08T22:35:42Z",
"last_comment_at": "2021-10-26T03:56:00Z",
"last_comment_author": "maogongzi"
},
{
"number": 456,
"created_at": "2014-10-10T12:45:11Z",
"last_comment_at": "2020-06-07T22:03:56Z",
"last_comment_author": "stedman"
},
{
"number": 561,
"created_at": "2015-05-12T18:07:38Z",
"last_comment_at": "2015-05-17T00:15:19Z",
"last_comment_author": "dylanahsmith"
},
{
"number": 624,
"created_at": "2015-07-14T02:44:39Z",
"last_comment_at": "2016-01-13T20:28:28Z",
"last_comment_author": "dylanahsmith"
},
{
"number": 644,
"created_at": "2015-08-20T15:14:51Z",
"last_comment_at": "2016-01-13T19:42:51Z",
"last_comment_author": "rickydazla"
},
{
"number": 694,
"created_at": "2016-02-01T16:47:13Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 750,
"created_at": "2016-04-25T16:15:38Z",
"last_comment_at": "2016-04-25T17:50:46Z",
"last_comment_author": "dylanahsmith"
},
{
"number": 779,
"created_at": "2016-07-15T18:40:25Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 878,
"created_at": "2017-03-29T13:19:57Z",
"last_comment_at": "2018-12-21T20:25:22Z",
"last_comment_author": "dyspop"
},
{
"number": 916,
"created_at": "2017-08-09T16:17:18Z",
"last_comment_at": "2017-08-11T15:28:43Z",
"last_comment_author": "pushrax"
},
{
"number": 1028,
"created_at": "2018-09-13T21:17:27Z",
"last_comment_at": "2023-01-04T01:12:00Z",
"last_comment_author": "pudiva"
},
{
"number": 1071,
"created_at": "2019-03-11T22:20:14Z",
"last_comment_at": "2023-11-06T21:48:21Z",
"last_comment_author": "gjtorikian"
},
{
"number": 1078,
"created_at": "2019-03-18T21:39:38Z",
"last_comment_at": "2019-03-19T10:13:39Z",
"last_comment_author": "krystof-k"
},
{
"number": 1079,
"created_at": "2019-03-24T07:37:29Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1084,
"created_at": "2019-04-01T06:29:35Z",
"last_comment_at": "2020-11-26T02:26:45Z",
"last_comment_author": "er1"
},
{
"number": 1124,
"created_at": "2019-08-08T23:44:26Z",
"last_comment_at": "2019-09-02T06:36:08Z",
"last_comment_author": "shopmike"
},
{
"number": 1138,
"created_at": "2019-08-29T01:41:15Z",
"last_comment_at": "2019-09-19T16:49:05Z",
"last_comment_author": "shopmike"
},
{
"number": 1146,
"created_at": "2019-08-31T14:20:15Z",
"last_comment_at": "2023-08-31T13:52:27Z",
"last_comment_author": "bmandl"
},
{
"number": 1155,
"created_at": "2019-09-16T11:45:45Z",
"last_comment_at": "2019-09-16T13:26:53Z",
"last_comment_author": "shopmike"
},
{
"number": 1159,
"created_at": "2019-09-18T05:03:10Z",
"last_comment_at": "2019-09-19T17:20:23Z",
"last_comment_author": "shopmike"
}
],
"last_merged_pr_at": "2026-06-29T15:41:55Z",
"ci_last_conclusion": "SKIPPED",
"oldest_open_issues": [
{
"number": 138,
"created_at": "2012-08-19T05:29:55Z",
"last_comment_at": "2025-12-17T18:32:45Z",
"last_comment_author": "evulse"
},
{
"number": 213,
"created_at": "2013-06-20T14:28:03Z",
"last_comment_at": "2014-03-24T14:19:11Z",
"last_comment_author": "fw42"
},
{
"number": 224,
"created_at": "2013-07-12T14:36:30Z",
"last_comment_at": "2016-01-31T16:55:56Z",
"last_comment_author": "pushrax"
},
{
"number": 344,
"created_at": "2014-04-27T23:30:21Z",
"last_comment_at": "2014-04-28T18:09:54Z",
"last_comment_author": "j-h-a"
},
{
"number": 394,
"created_at": "2014-07-23T22:46:07Z",
"last_comment_at": "2020-09-04T00:01:31Z",
"last_comment_author": "samip5"
},
{
"number": 422,
"created_at": "2014-08-17T19:39:54Z",
"last_comment_at": "2016-06-20T16:00:38Z",
"last_comment_author": "amw"
},
{
"number": 507,
"created_at": "2015-01-09T21:53:15Z",
"last_comment_at": "2015-07-06T20:06:47Z",
"last_comment_author": "pushrax"
},
{
"number": 523,
"created_at": "2015-02-09T07:31:03Z",
"last_comment_at": "2015-04-15T17:10:18Z",
"last_comment_author": "tyteen4a03"
},
{
"number": 544,
"created_at": "2015-03-30T17:14:06Z",
"last_comment_at": "2015-03-30T17:15:54Z",
"last_comment_author": "fw42"
},
{
"number": 560,
"created_at": "2015-05-12T17:11:56Z",
"last_comment_at": "2023-01-31T23:17:18Z",
"last_comment_author": "asbjornu"
},
{
"number": 567,
"created_at": "2015-05-13T22:05:09Z",
"last_comment_at": "2020-08-11T13:10:26Z",
"last_comment_author": "hexerei"
},
{
"number": 580,
"created_at": "2015-05-29T18:29:32Z",
"last_comment_at": "2018-04-03T09:22:01Z",
"last_comment_author": "kj"
},
{
"number": 635,
"created_at": "2015-07-30T21:00:44Z",
"last_comment_at": "2022-04-19T14:29:48Z",
"last_comment_author": "dylanahsmith"
},
{
"number": 668,
"created_at": "2015-11-09T21:09:18Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 671,
"created_at": "2015-11-18T13:04:33Z",
"last_comment_at": "2016-01-28T21:29:05Z",
"last_comment_author": "pushrax"
},
{
"number": 678,
"created_at": "2015-12-05T12:07:49Z",
"last_comment_at": "2016-01-06T23:04:01Z",
"last_comment_author": "parkr"
},
{
"number": 698,
"created_at": "2016-02-04T17:12:42Z",
"last_comment_at": "2018-06-26T23:19:07Z",
"last_comment_author": "Convincible"
},
{
"number": 699,
"created_at": "2016-02-08T16:05:56Z",
"last_comment_at": "2020-11-25T12:00:46Z",
"last_comment_author": "matthijskooijman"
},
{
"number": 701,
"created_at": "2016-02-15T23:24:55Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 708,
"created_at": "2016-03-15T11:20:06Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Shopify/liquid",
"host": "github.com",
"name": "liquid",
"owner": "Shopify"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"security": 73,
"vitality": 82,
"community": 95,
"governance": 85,
"engineering": 76
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 82,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"commits_last_year": 137,
"human_commit_share": 1,
"days_since_last_push": 16,
"active_weeks_last_year": 26
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 16 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 16
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "26/52 weeks with commits",
"points": 18,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 26
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "137 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 137
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "12 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 92,
"inputs": {
"releases_count": 25,
"latest_release_tag": "v5.13.0",
"releases_from_tags": false,
"days_since_latest_release": 22,
"mean_days_between_releases": 50.1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "25 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 25
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 22 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 22
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~50.1 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 50.1
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "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": 16,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 16 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 16
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "excellent",
"name": "Community & Adoption",
"value": 95,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"forks": 1537,
"stars": 11839,
"watchers": 722,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "11,839 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 11839
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1,537 forks",
"points": 25,
"status": "met",
"details": [
{
"code": "forks",
"params": {
"count": 1537
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "722 watchers",
"points": 15,
"status": "met",
"details": [
{
"code": "watchers",
"params": {
"count": 722
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"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": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"packages": [
"liquid"
],
"dependents": null,
"ecosystems": "rubygems",
"total_downloads": 134118752,
"monthly_downloads": null
},
"components": [
{
"key": "total_downloads",
"name": "Total downloads",
"detail": "134,118,752 downloads all-time across rubygems",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_total",
"params": {
"count": 134118752,
"ecosystems": "rubygems"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "excellent",
"name": "Sustainability & Governance",
"value": 85,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "excellent",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"bus_factor": 6,
"contributors_sampled": 100,
"top_contributor_share": 0.185
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "6 contributor(s) cover half of all commits",
"points": 48.6,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 6
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 18% of commits",
"points": 18.3,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 18
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "100 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 100
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 39 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"merged_prs": 731,
"open_issues": 327,
"closed_issues": 613,
"issue_closed_ratio": 0.652,
"closed_unmerged_prs": 295
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "65% of issues closed",
"points": 30.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 65
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "731/1026 decided PRs merged",
"points": 27.3,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 731,
"decided": 1026
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 17/18 approved changesets -- score normalized to 9",
"points": 13.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"followers": 8334,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Shopify",
"public_repos": 1219,
"account_age_days": 6665
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "8,334 followers of Shopify",
"points": 25,
"status": "met",
"details": [
{
"code": "owner_followers",
"params": {
"count": 8334,
"login": "Shopify"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "1219 public repos, account ~18 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 1219
}
},
{
"code": "account_age_years",
"params": {
"years": 18
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"liquid"
],
"ecosystems": "rubygems",
"any_deprecated": false,
"min_days_since_publish": 22
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on rubygems",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "rubygems"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 22 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 22
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "71 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 71
}
}
],
"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": "good",
"name": "Engineering Quality",
"value": 76,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "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": ".rubocop.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml"
}
}
],
"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": "17 out of 17 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": "https://shopify.github.io/liquid/",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://shopify.github.io/liquid/",
"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": null,
"points": 0,
"status": "missed",
"details": [],
"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": "good",
"name": "Security",
"value": 73,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "good",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 73,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 7.3
},
"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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "17 out of 17 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 17/18 approved changesets -- score normalized to 9",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 39 contributing companies or organizations",
"points": 2.5,
"status": "met",
"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": "12 commit(s) and 0 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 not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 4.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "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": 16
},
"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": "at_risk",
"name": "AI Readiness",
"value": 43,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 21,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.4,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"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": "40 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 21.3,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 40,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.09,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".rubocop.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "9 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 9,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "dependency automation configured, none observed in the sampled commits",
"points": 5,
"status": "partial",
"details": [
{
"code": "dependency_bot_config_only",
"params": {}
}
],
"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": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Ruby",
"largest_source_bytes": 47235,
"source_files_sampled": 154,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Ruby without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Ruby"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/154 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 154,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"example"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "example",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "example"
}
}
],
"max_points": 40
}
]
}
],
"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": [
"No resolved dependencies carried a version and a supported ecosystem"
],
"report_type": "repository",
"generated_at": "2026-07-21T23:32:13.583281Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/Shopify/liquid.svg",
"full_name": "Shopify/liquid",
"license_state": "standard",
"license_spdx": "MIT"
}