Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"ta-lib",
"financial",
"series-analysis",
"technical-analysis"
],
"is_fork": false,
"size_kb": 1008183,
"has_wiki": false,
"homepage": "https://ta-lib.org/",
"languages": {
"C": 14039671,
"C#": 606931,
"M4": 2173,
"Java": 32229391,
"Rust": 12494524,
"SCSS": 5456,
"CMake": 42533,
"Shell": 15521,
"Python": 295013,
"Makefile": 7066,
"TypeScript": 3352
},
"pushed_at": "2026-07-27T08:35:28Z",
"created_at": "2016-08-20T06:28:16Z",
"owner_type": "Organization",
"updated_at": "2026-07-27T02:56:58Z",
"description": "TA-Lib (Core C Library)",
"is_archived": false,
"is_disabled": false,
"license_spdx": "BSD-3-Clause",
"default_branch": "main",
"license_spdx_raw": "BSD-3-Clause",
"primary_language": "Java",
"significant_languages": [
"Java",
"C",
"Rust"
]
},
"owner": {
"blog": "https://sourceforge.net/p/ta-lib/bugs/102/",
"name": "TA-Lib",
"type": "Organization",
"login": "TA-Lib",
"company": null,
"location": null,
"followers": 332,
"avatar_url": "https://avatars.githubusercontent.com/u/21127168?v=4",
"created_at": "2016-08-19T14:54:08Z",
"is_verified": null,
"public_repos": 12,
"account_age_days": 3628
},
"license": {
"state": "standard",
"spdx_id": "BSD-3-Clause",
"raw_spdx": "BSD-3-Clause",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2026-07-03T17:36:45Z"
},
{
"tag": "v0.6.4",
"kind": "patch",
"published_at": "2025-01-11T05:00:37Z"
},
{
"tag": "v0.6.3",
"kind": "patch",
"published_at": "2025-01-06T00:16:36Z"
},
{
"tag": "v0.6.2",
"kind": "patch",
"published_at": "2024-12-26T04:12:47Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2024-12-23T21:37:11Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2024-02-13T17:47:56Z"
}
],
"recent_commits": [
{
"oid": "144c635bb429759235696d9f95e1734169205f3a",
"body": "…one (replaced by the generated metadata registry)",
"is_bot": false,
"headline": "docs: CLAUDE.md project tree — the hand-written Java meta/ layer is g…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-27T02:50:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4d46dbdc905712bdda7e27a978056ae3b5258b5",
"body": "… emitters\n\nFour lints under -D warnings (unnecessary_to_owned, unnecessary_map_or,\nredundant_closure_for_method_calls, too_many_lines on the ParamHolder\nemitter — allowed per the c_stream.rs precedent). Emission-neutral: a full\ngenerate produces zero file changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(codegen): clear the clippy pedantic gate in the Java doc/metadata…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-27T02:41:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "acad5800617507d77364cd9839d06382605294d1",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-27T02:36:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bcbecf469891abc98c26fde3c8525780c3e97f7a",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-27T02:28:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dab2d5c9295d5bbc82cfd63d40766643614b1ce0",
"body": "Merged for contribution credit. dev already carries the reworked\nimplementation (e9848f1e) built on this PR's end-bounding idea; all\nconflicts resolved to the dev version, so this merge changes no content.",
"is_bot": false,
"headline": "Merge PR #143: bound each MAVP ma() pass at its period's last use",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-27T02:01:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6160bc12d0de60ec4678dc37b12ed6b00d6de6a",
"body": "…ith doclint\n\njava_doc.rs renders each function's ta_codegen/input/<name>/<name>.md onto the\npublic batch API -- the Java counterpart of rust_doc.rs. Until now Core.java's\nonly /** blocks were the templated streaming blurbs: 168 batch methods with no\ndocumentation and no IDE hover. Prose comes from \n[…]\nges, exit 0; xlang-hash Rust 200961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 Java suites +\ndoclint; regen idempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
"is_bot": false,
"headline": "feat(java): generate batch Javadoc from the canonical .md + gate it w…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-27T00:27:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1bd1fcec96be1ddd94c4fee6a522cb37434dc069",
"body": "Java gets the introspection layer C and Rust already ship, replacing the frozen\n2007 meta/ island that A2 had to delete. Package io.github.talib.metadata:\nFunctions.all()/byName(), rows as immutable records, plus a ParamHolder and a\nGENERATED STATIC SWITCH for call-by-name -- C's TA_ParamHolderAlloc\n[…]\n961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 junit-free Java\nsuites (MetadataTest auto-discovered); regen idempotent; C/Rust/.NET generated\noutput byte-identical.\n\nMF,CC",
"is_bot": false,
"headline": "feat(java): ship the generated metadata registry + call-by-name",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-26T21:51:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e9848f1ec15b629fb2192e6038bcdfc25b28494f",
"body": "…ast use (#143)\n\nBuilds on PR #143 by @dexhunter: each per-period ma() pass now ends at the\nlast output using that period — bit-safe because every dispatched MA fills\nforward (truncating the end cannot change earlier outputs). The\nflag-and-rescan selection is replaced by a counting sort sized by the\n[…]\nlock-copy and wrong-fast-path-buffer defects pass\nevery pre-existing gate and are caught only by this group.\n\nAlso adds the missing #128 CHANGELOG entry.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
"is_bot": false,
"headline": "perf(mavp): group outputs by period and bound each ma() pass at its l…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-26T21:12:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6ceb94e83c1e0ad4aeeb8b56edc8148f8e1dafb5",
"body": "…overy\n\nThe A2 checkpoint review found what the gates structurally cannot see.\n\nThe published ta-lib.org Java pages documented an API that no longer exists. A2\nrewrote only the import FQNs there, so the pages LOOKED reviewed while every\nsample stayed on the pre-A1 surface: MInteger/RetCode imports (\n[…]\nd; 4 Java suites pass; regen\nidempotent. Note the gate run happened on a tree that also carried another\nsession's in-flight #143 MAVP work, so it green-lit both; the commit itself is\nJava-only.\n\nMF,CC",
"is_bot": false,
"headline": "fix(java): A2 checkpoint review — website API docs, casing, test disc…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-26T20:42:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e2b15dde33c82f705d425bc6caab365ca1fc71de",
"body": "The public batch surface returns `record OutRange(begIdx, count)` and throws on\nmisuse. A range shorter than the lookback stays a SUCCESS with count 0 -- C's\ncontract -- and is never an exception.\n\nFragments keep the C shape as package-private cores (`xxxInternal`,\n`xxxUnguardedInternal`); `java.rs`\n[…]\nJava\n200907 cases, 0 mismatches; cargo test ALL 10 suites 0 failed; 4 junit-free Java\nsuites pass (38+30+4 checks + stream smoke); regen idempotent; C/Rust/.NET\ngenerated output byte-identical.\n\nMF,CC",
"is_bot": false,
"headline": "refactor(java)!: OutRange + throwing wrappers; rename to io.github.talib",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-26T05:15:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "74ba14d4eae4ef89ba1dde8327433eeb510cc38f",
"body": "Core is immutable (final fields, deep-immutable CandleSetting, defensive\ncopies, no accessor hands an array back), so sharing one across threads is\nsafe under JLS 17.5 without synchronization. Settings move to a hand-written\nCoreBuilder; Core.DEFAULT is the shared zero-config instance.\n\nCompatibilit\n[…]\n --codegen 161/0/7 x4 languages, exit 0; xlang-hash Rust 200961 /\nJava 200907 cases, 0 mismatches; cargo test 306+226+2, 0 failed; regen\nidempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
"is_bot": false,
"headline": "refactor(java): immutable Core + CoreBuilder; drop compatibility",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-26T03:27:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0e48c4eb35f8e842040a6a2f6a0363f15d58e8da",
"body": "…riod prose\n\nPath-Dependent was the one category described only in the abstract. Add AD (a\nrunning accumulation whose level is an artifact of the start date) and SAR (a\nstate machine that can pick the opposite initial trend direction) as a two-item\nlist, so the reader sees both shapes the opening se\n[…]\nction page already names the setting it\nresponds to.\n\nLink \"Function Documentation\" in the intro to /functions/ rather than leaving\n\"the documentation\" for the reader to locate.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "docs(website): give Path-Dependent two examples; trim the unstable-pe…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-26T01:00:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ba2269e3b6f294a72f8a7dfb6b4e62a2d74c36d7",
"body": "TA_MAVP normalized every requested period into localPeriodArray, then, for\neach distinct period still flagged, called ma() over the whole remaining\nrange and scanned the rest of localPeriodArray to find and copy every\noutput sharing that period. Every ma() pass therefore ran to endIdx even\nwhen its \n[…]\ninside the\n1e-12 bar).\n\nThe added allocation is 2*(optInMaxPeriod+1) ints, sized by the period\nrange rather than the data, and is null-checked with full cleanup.\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
"is_bot": false,
"headline": "perf(mavp): bound each ma() pass at its period's last use",
"author_name": "Dex Hunter",
"author_login": "dexhunter",
"committed_at": "2026-07-25T12:12:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "68757ff34d2ce5ed5bf3379aa936605fa515565f",
"body": "Transitive dev dependency of the VuePress/vite build. Path traversal in\nprevious-source-map auto-loading; not reachable here (build-time only,\nno untrusted CSS). Lockfile-only.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "build(website): bump postcss 8.5.17 -> 8.5.22 (GHSA-r28c-9q8g-f849)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-25T03:59:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e203f7c436a9c21fd08246661971cfcb7ee37517",
"body": "\"If Initial Unstable Period, then...\" rather than a bare category name, so a\nreader landing mid-page sees that a section covers one case out of four, not a\nproperty every function has, and that the answer is the body below.\n\nAnchors are pinned with {#id} (markdown-it-attrs, already enabled by the th\n[…]\nnction pages deep-link\nthese sections, and letting the slugifier follow the wording would both lengthen\nthe ids and break every inbound link the next time a heading is reworded.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "docs(website): phrase the stability headings as conditionals",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-25T02:58:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "25c5157dd47c01a1a73800d477b2e5bd3c8eb515",
"body": "…I section\n\nReference page: trim the Start-Independent and Initial Unstable Period sections\nto what the reader needs, drop the two \"comparing across different-length\nwindows\" restatements, and link /api/unstable-period/ for what to do about an\nunstable period. Call the four things \"categories\" rathe\n[…]\nasted in issues and forum answers, so a bare rename would silently land\nthose readers at the top of a long page. The four in-repo pages that used it are\nmoved to the new anchor.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "docs(website): tighten the numerical-stability wording; rename the AP…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-25T02:49:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ba8c75f08d225a4abc33072f3b5e0c8505463101",
"body": "…lity line\n\nA state's definition is written once, on /functions/stability, and linked. The\nper-function line adds a clause only when there is something the link cannot\nsay: which inner function the unstable period is inherited from (DEMA -> EMA),\nwhat this function's own MAType default implies (BBAN\n[…]\nso inherits a period that still\nmoves its lookback (ADOSC -> EMA). Start-Independent, an intrinsic unstable\nperiod and plain path-dependence now render as the bare linked state.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "docs(website): say only what is specific to the function in the stabi…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-25T01:59:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d9108cd2758e769912626825f8825398ab06b9e0",
"body": "…ckboxes\n\nThe Properties table claimed \"Start-Independent\" for 17 functions that are not.\nThe YAML `unstable_period` flag answers the ABI question -- does this function own\na tunable TA_FUNC_UNST_* id -- which is what TA_FUNC_FLG_UNST_PER has always\nmeant, and the documentation was rendering it as a\n[…]\non) but\nunchecked cells no longer carry their tooltip. Verified: the phrases \"never\nconverges\" and \"candlestick-pattern signal\" now appear only on the pages where\nthey are true.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "docs(website): derive numerical stability; state it in prose, not che…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-25T01:41:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7b842bb10de1a133f9f5fa0042ca82b274c57761",
"body": "Present the RSI and BBANDS formulas as KaTeX display blocks (already enabled\nsite-wide via vuepress-theme-hope markdown.math + katex) instead of prose with\ninline math, followed by a short \"where ...\" legend line.\n\nRSI now states Wilder's published form (RS, then 100 - 100/(1+RS)) rather than\nour fu\n[…]\neriod shortcuts stay out of the docs.\n\ndocs_site: drop any \"##\" section whose body is blank, so an empty \"## Notes\"\nplaceholder in an input page never renders as a bare heading.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "docs(rsi,bbands): typeset formulas as display math; drop empty sections",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-25T01:08:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1ce79015cc02f9ef42f77db0c72beffb28772c33",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-24T20:19:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80a11563bfea3957bf1b7b4530e5508892ba30af",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-24T20:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71105c62c7a5d43c950f05ce981785c42cc78ba8",
"body": "… comments\n\nThe fuzz/xlang param-vector builder collected MAType candidates into a fixed\ncand[10] with an `nc < 10` guard that dropped extra values SILENTLY — it never\nreached the FUZZ_MAX_VEC overflow counter, so a MAType list longer than 10\nnon-default would quietly stop being swept. #93 (DISABLED\n[…]\n\" comment fixed.\n\nBehavior-neutral at M=11 (no coverage change); the next MAType add now fails\nthe gate instead of silently dropping arms. All gates green (--codegen,\n--xlang-hash, --fuzz-064, plain).",
"is_bot": false,
"headline": "test(regtest): make MAType vector-cap truncation fail loudly, refresh…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T19:56:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d7519d6c7a73403466d28630c29619d07666d198",
"body": "MACDEXT carries 3 MAType params, so its stream-vector count is 6*M+1 in the\nMAType-list length M. #93 added TA_MAType_DISABLED (M 10->11), taking it from\n61 to 67 vectors and tripping the STREAM_MAX_VEC=64 overflow guard — a hard\nfailure of the unfiltered `ta_regtest --codegen` stream_verify gate th\n[…]\ned since #93 landed. Raise the cap to 128 (runway for ~10 more\nMATypes); the dropped MACDEXT DISABLED arms are now actually stream-verified\n(15596 legs, up from 10684). Coverage restored, not reduced.",
"is_bot": false,
"headline": "test(regtest): raise STREAM_MAX_VEC 64->128 for MACDEXT after #93 (#93)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T18:18:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4ebb02a3fcbac58d2640e585d2ceef0b84b21a85",
"body": "…ers (#142)\n\nRoute the abstract sweep's empty-output cases (period consumes the whole\nrange -> TA_SUCCESS + zero-length) through server_verify, so the contract is\nverified against the Rust/Java/.NET servers, not just in-process C. The\ngeneric --codegen/--xlang-hash sweeps clamp every lookback below nbBars, so\nperiod>data was the one boundary never cross-checked. Non-vacuity guard +\n84 cases x 4 langs; sabotage-proven both ways.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "test(regtest): cross-check period>input empty-output vs language serv…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T18:01:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7bf49d271bf3ba1165dd8de360216f0d20f3fa21",
"body": "…s (#93)\n\nThe MA page also notes that DISABLED bypasses smoothing for any period.",
"is_bot": false,
"headline": "docs(functions): list TA_MAType_DISABLED in per-function MAType table…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T16:57:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7566c9f4fed9bc97435fe09fa2f5a860f1085dc3",
"body": "New TA_MAType value that makes the moving average a plain input->output copy\nwith a lookback of 0, regardless of the period parameter. Every function that\ntakes an MAType parameter (MA, MAVP, BBANDS, MACDEXT, STOCH/STOCHF/STOCHRSI,\nAPO/PPO/PVO) accepts it: they all route the copy through the single \n[…]\nISABLED swept everywhere: four-variant parity\n(guarded/unguarded/TA_S_), batch==stream (stream_verify), and bit-identical\nC/Rust/Java (--xlang-hash); the frozen-oracle differential sweep is unchanged.",
"is_bot": false,
"headline": "feat(ma): TA_MAType_DISABLED — period-independent no-smoothing (#93)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T16:57:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "39aac3bd8822a9b5fa77f2d91468472fe13ced7c",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-24T07:40:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6cf93e43b1a5dc7c0516eb54455ef27f940322f",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-24T07:31:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b8b7c4596b7909fcce573ba31ef97a61c240823",
"body": "Several period-scaled integer expressions were evaluated in int32 before\nbeing stored to a double, overflowing (signed UB) well inside the advertised\n[.,100000] period range:\n\n- WMA/HMA divider = (n*(n+1))>>1 -- the int product overflows at n>=46341\n (the issue's 65536 is only where the post-shif\n[…]\ne build folds the overflow to the correct value (the optimizer is\n entitled to assume no signed overflow), so the value check there is\n coherence-only.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(wma,hma,linearreg): compute period-scaled dividers in double (#142)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T04:28:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "81d9d54b879c38ab955194b40db181f00f6591a1",
"body": "Adding TA_MAType_HMA (#139) surfaced four places the MAType enum was still\nhand-maintained even though enums.yaml is the source of truth. All four now\nderive from enums.yaml:\n\n- include/ta_defs.h: moved the TA_MAType enum inside GENCODE SECTION 1 (a\n one-time marker edit) and emit it from enums.yam\n[…]\nd; no\nindicator-source drift). Gates: 303 generator tests + clippy; C reference\nregtest (four-variant bitwise parity); all 4 servers built; cross-language\n--codegen-only 161/161 x 4 languages, 0 fail.",
"is_bot": false,
"headline": "refactor(codegen): ta_codegen owns every MAType enum surface (#140)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T03:29:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "22924cdb7856fe68bb811984f4d3eb3b959a7618",
"body": "The flag never meant the \"start-dependent\" umbrella its name implied. An\nunstable-period function is *also* start-dependent (its warm-up depends on\nwhere the data begins) yet is deliberately NOT flagged, because it converges;\nthe flag marks only the set that never converges -- running accumulations\n\n[…]\nkeys;\nfull generator suite (611); C build + reference regtest (path-dependent set\nstill skipped correctly); all 4 language servers built; cross-language\n--codegen-only (161/161 x 4 languages, 0 fail).",
"is_bot": false,
"headline": "refactor(abstract): rename TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T02:35:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "180ec2fd99987441763044bff0b762bd505a9ac1",
"body": "Add a generated `## Properties` table to every function page\n(backends/docs_site.rs, injected before `## Implementation`), surfacing the\nabstract-layer flags that were previously invisible in the docs:\n\n- Numerical Stability column: a single-select of three mutually-exclusive\n states folded from tw\n[…]\nstability logic reads both `path_dependent` and the current\n`start_dependent` YAML word, so the generated pages are byte-stable across\nthe pending TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP rename.",
"is_bot": false,
"headline": "docs(website): per-function Properties table (stability + display flags)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-24T02:15:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "32f69a58dd2564596629bb3f3a9977ee5ae519c8",
"body": "Flip hma.yaml to [overlap, stream]. Recognition was already unlocked by\n#139's param-pure dual-mode split (optInTimePeriod == 2 || == 3): the\nanalyzer derives a full dual-mode plan -- mode A (degenerate, T3 input-ring\nonly) and mode B (general: two input rings + the sqrt(n)-1 dRing CIRCBUF).\nThe sol\n[…]\nC dualmode modeA=T3/state=5 modeB=T3/state=19. The abstract\nsurface carries TA_FUNC_FLG_STREAM; servers and the stream bench\nregenerated (ta_bench_stream: HMA update ~8ns, ~4x faster than batch@last).",
"is_bot": false,
"headline": "feat(hma): stream support via dual-mode per-arm buffer union (#141)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-23T23:07:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "728f8130c65edb21dfbadbd831b1feeaa9b085b6",
"body": "HMA(n) = WMA(2*WMA(price,n/2) - WMA(price,n), sqrt(n)), both derived\nperiods TRUNCATED per Alan Hull's own Integer() (Tulip and pandas-ta agree;\nStockCharts rounds -- a visibly different line, documented in hma.md and\npinned by n=7/8 convention tests). Default 20 is the author's, and a period\nwhere \n[…]\n, #141\n(streaming: recognition unlocked, per-arm buffer union in the stream\nemitters remains), #142 (pre-existing WMA divider int overflow at\np >= 65536, inherited deliberately for bit-compatibility).",
"is_bot": false,
"headline": "feat(hma): Hull Moving Average + TA_MAType_HMA, fused single-pass (#139)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-23T16:34:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fed29d3e4d2b24cc123be14d652d16121e86a1c7",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-23T07:40:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f551684f8ee46e1f4afb6be4854300ae27a95a9",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-23T07:33:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80b70d156ce55b4044f0137007308242826628d0",
"body": "…' term\n\nIntro paragraphs described the batch API first; now purpose -> mechanism ->\nguarantee, with batch as the closing contrast. Replace 'handle' with\n'stream' throughout (matches the actual type, e.g. TA_SMA_Stream) on the\nC, Rust and Java pages; fix a stale '*s is NULL' comment in the C example.",
"is_bot": false,
"headline": "docs(website): streaming intros lead with streaming; unify on 'stream…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-23T00:41:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7eb5bca6e81747f4f3968cde2cae2e5402491a1e",
"body": "…129)\n\nBoth ids were accepted by TA_SetUnstablePeriod() but never read by any\ncomputation (0 reads at v0.6.4 and reference-pre-cutover): ADXR and\nSTOCHRSI follow the unstable period of their internal ADX and RSI. Renamed\nto TA_FUNC_UNST_UNUSED_1 / _UNUSED_22 with values preserved (the MFI/IMI\npreced\n[…]\ne two ids everywhere; the website\nunstable-period list falls to 20 entries automatically.\n\nOutput is bit-identical by construction (fuzz-064 green); full --codegen\nsweep 161 funcs x 4 languages green.",
"is_bot": false,
"headline": "fix(api): retire inert TA_FUNC_UNST_ADXR and TA_FUNC_UNST_STOCHRSI (#…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-22T19:39:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0586205b88ef9639e97e20e88b82d66fd23a3867",
"body": "The FuncUnstId emitter (ta_defs.rs) drops the gen_code-era /* NNN */\ncomment format and writes TA_MAType-style explicit initializers, asserting\nvalues are contiguous from 0 (Java/Rust backends index by declaration\norder). Same treatment hand-applied to TA_RetCode, TA_Compatibility,\nTA_RangeType and TA_CandleSettingType. Values unchanged; no ABI change.\nAlso documents TA_Compatibility as deprecated.",
"is_bot": false,
"headline": "refactor(include): explicit = N values for every ta_defs.h enum",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-22T19:39:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df28ca3750ad90776c841a968c98fbae271fd840",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-22T07:44:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a70c72c0df9e8feaaac7d465aa20abfc9ae7e10",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-22T07:35:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d784e9f2a1a39dc4a30a38307548ffcc58ffcac8",
"body": "The 0.8.1 entry scoped NATR to startIdx > lookback; the zero-close\noutReal[0] gap also hits ordinary full-range calls (ta-lib-python#653).\nSplit the IMI unstable-period note onto its own line.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(changelog): #98 NATR zero-close gap affects full-range calls too",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-22T01:43:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9bf176fc25a0fabbfe034488bf4c0fc99a62a6b7",
"body": "TA_REALBODY/TA_UPPERSHADOW/TA_LOWERSHADOW/TA_HIGHLOWRANGE in ta_utility.h read\ntheir input arrays with no cast. In a TA_S_CDL* body those arrays are const\nfloat[], so TA_CANDLERANGE/TA_CANDLEAVERAGE compute the range in float and round\nbefore it widens into the double accumulator -- breaking PR #33'\n[…]\nregtest so the autotools dist nightly covers it.\n\nVerified: bare ./ta_regtest (VARIANT gate 167 funcs x 31104 vectors bit-identical\n+ new test green); fuzz-064 PASS, 0 failures.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "fix(ta_func): compute candle range in double inside TA_S_ bodies (#138)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-22T00:07:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "99826e3ac839576712de5ddd936220d5af0842f0",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-21T23:33:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10672914575e89c43d1b2b5c19ad30cd9bdc2439",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-21T23:26:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf376135e2dbc784de722ad00e154e1d4d191564",
"body": "…tops reading garbage\n\nThe new VARIANT gate's build_regime() is the first code to read\nTA_History.openInterest and trusts the struct's \"unused arrays are NULL\"\ncontract, but testTAFunction_ALL and test_codegen_with_simulator never set the\nfield (the fuzz histories already do). On Linux the stack slo\n[…]\n see\nuninitialized reads): the poison build SIGSEGVs at test_variants.c:368 and passes\nclean with the initializer. Harness only; no library code changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ta_regtest): NULL-init history.openInterest so the variant gate s…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T23:18:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "190aaf1e420821bbf4a9e113a11ab5ac064c532c",
"body": "…every slot (#137)\n\nvariant_frame::flat_inputs classified inputs by matching ParamType::Price -- an\narm that never fires, because parser::yaml expands a price bundle into Real\ninputs long before any backend sees it. Every price component therefore fell\nthrough to the Real arm and was emitted as TA_V\n[…]\nippy --all-targets clean, ta_regtest --codegen green across\nall four languages, and the full variant sweep (167 functions x 31104 vectors)\nbit-identical on the corrected inputs.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "fix(ta_regtest): feed the variant gate real OHLC bars, not volume in …",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T21:41:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0fac748036faa096ea38df696ad1a33e74836f99",
"body": "…the price bundle (#135)\n\nA price bar is declared once and used two ways. `ta_abstract` describes it as a\nsingle TA_Input_Price parameter named `inPriceHLC` whose flags word names the\ncomponents; the functions themselves take one array per component --\nTA_STOCH(startIdx, endIdx, inHigh, inLow, inClo\n[…]\n--codegen green across all four languages\n(including test_abstract's paramName comparison), 338 doctests, cargo doc\nwarning-free, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "docs(ta_codegen): document the arrays a function is called with, not …",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T21:21:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "08e4e5172ea2f20ad01378bd3a198ead5eca40ae",
"body": "The clippy gate is a hard CI step and variant_frame.rs landed in 7359f7ad\nwithout ever being run through it -- I built and tested the generator but not\n`cargo clippy --all-targets -- -D warnings`, so 7 pedantic errors reached dev.\n\nReal fixes:\n- map(...).unwrap_or(...) -> map_or(...)\n- `n - 1` as a \n[…]\nentical, so no downstream artifact\nmoves. Verified: both clippy steps clean, generator tests, the generated\ncrate's 338 doctests, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "fix(ta_codegen): satisfy clippy pedantic in variant_frame (#137)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T20:42:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7359f7ad95676d28ed24b917a6ee4883791243e6",
"body": "…period 1 (#137)\n\nEvery function ships four times over -- TA_<N>, TA_<N>_Unguarded, TA_S_<N> and\nTA_S_<N>_Unguarded -- and nothing gated three of them generically. #137 reported\nthis for the six post-cutover functions the frozen-reference sweep skips; the\nhole is wider than that, and was demonstrate\n[…]\n; --codegen all four languages; --xlang-hash\n(192942 cases, 0 mismatches); ASan+UBSan clean; -Wall -Wextra clean;\ncheck-source-lists; a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
"is_bot": false,
"headline": "test(regtest): bitwise four-variant parity gate, and fix TA_S_WMA at …",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T20:17:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ab484ccbd3fd7d18eeb35bafafa9426bbc1d46cd",
"body": "CMF landed as the 167th streamable function without updating the ratchet,\nso the dev nightly's generator-test job has been failing since 48e0170d.\nThe paired `emitted == total` assertion was already green — every\nstreamable function does emit its Java stream section.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(java): bump the stream emit ratchet to 167 for CMF (#134)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T18:57:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "519311abc6d170b5e9f9f6a8a50ed42f5d141dc6",
"body": "The example bars put close at the exact midpoint of high/low, so the\nmoney-flow multiplier was identically zero and the AD/ADOSC/CMF doctests\ncould not fail. Measured over all 167 doctests: 62 produced an output that\nno implementation error could change (52 CDL all-zero, AD/ADOSC/CMF\nall-zero, ACOS/\n[…]\necuted them.\n\nThe generated diff is rustdoc comments only -- no library code changes.\n338 doctests pass; sabotaging CMF's divisor makes its doctest fail.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(rust): make the generated doctests able to fail (#136)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T18:44:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d661b9ae084709184c5b3ad76d776e6961a4b442",
"body": "…en/input\n\nReworks the previous commit's hint into the generator's own idiom and extends\nit past MIN/MAX, then narrows it to the targets where it was measured to pay.\n\n- New Statement::UnrollHint IR node. `TA_UNROLL(n)` is written once per loop in\n ta_codegen/input/<f>/<f>.c, so the source of truth\n[…]\n frozen-reference codegen\nverification passes for all 4 languages / 161 functions, and the generated\nRust/Java/.NET sources are byte-identical to before.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
"is_bot": false,
"headline": "perf(minmax): express the rescan unroll as TA_UNROLL(n) from ta_codeg…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T17:19:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0365a69a37f5faaf2e3190881774c9ff7670c29e",
"body": "Brings in dexhunter's original work so the contribution stays in the history.\nThe follow-up commit reworks the hint into the generator's TA_UNROLL(n) idiom,\nextends it to the other rescan functions, and restricts it to the compilers\nwhere it was measured to pay.",
"is_bot": false,
"headline": "Merge PR #128: unroll the expired-extreme rescans in MIN/MAX",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T17:11:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48e0170d4c41ff8abd916b3826667d2a4b2b31de",
"body": "The n-bar sum of Chaikin's money flow volume over the n-bar sum of volume.\nGroup Volume Indicators, default period 20, lookback n-1, streamable.\n\nThe per-bar multiplier is written exactly as ta_AD.c's, deliberately. Tulip's\norder, (v*num)/den, would instead make our output bit-identical to that orac\n[…]\nMF examples are all-zero and cannot fail) and #137\n(post-cutover functions reach no *_Unguarded or TA_S_* variant -- three\nsabotages of TA_S_CMF passed the entire suite before test_cmf.c was widened).",
"is_bot": false,
"headline": "feat(cmf): Chaikin Money Flow (#134)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T16:52:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "65e49d72ab77aa830e14e0c6d48e51296be09edd",
"body": "The earlier approach fast-pathed monotonic windows, which are atypical in normal TA-Lib input. This targets the common random-walk case instead without changing the algorithm or adding work to the per-sample tight loop.\n\nMIN and MAX already cache the current extreme and rescan only when it expires. \n[…]\n ASan plus UBSan, generator tests, clippy, and idempotent regeneration. Wall-clock samples were inconclusive and are not claimed.\n\nFixes TA-Lib/ta-lib-python#715\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
"is_bot": false,
"headline": "perf(minmax): unroll expired-extreme rescans",
"author_name": "Dex Hunter",
"author_login": "dexhunter",
"committed_at": "2026-07-21T11:29:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cae231d8f0764c92d8ba7712d0c46a017cf1a117",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-21T07:40:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba3f8a516e8350a6cd35f9e538ec83ce86f39f9e",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-21T07:34:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb8bf53aec1796833d749fe0ca2691a50737b41b",
"body": "escape_prose escaped every `[` outside a code span, which is right for prose\nlike inReal[i] but also mangled real markdown links, stranding the URL as plain\ntext. The shipped crate rendered a literal\n\n \\[TradingView](https://www.tradingview.com/...)\n\nand the dangling URL tripped rustdoc's bare_urls\n[…]\neral text into a live broken link. Site-absolute destinations are\nrebased onto https://ta-lib.org/.\n\nVerified in the rendered HTML rather than by warning count — a silenced lint is\nnot a working link.",
"is_bot": false,
"headline": "fix(rustdoc): keep genuine inline links intact in the generated docs",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T05:31:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "09888183369784ab9f32d8a96a9fba4609589529",
"body": "A generated page described what each parameter meant but never what values it\naccepted: 0 of 166 showed a default or a range, and the reader had to open the\nYAML. docs/ta_codegen_input_doc.md has always specified the split — numbers live\nin <name>.yaml and are injected at render — but only the prohi\n[…]\ndles\ninto inHigh/inLow/inClose, so the authored `inPriceHLC` has nothing to join\nagainst; carrying the bundle on FuncDef is the prerequisite and is left for the\nfollow-on, recorded in the status note.",
"is_bot": false,
"headline": "feat(docs): inject the YAML parameter metadata at render time (#132)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T05:31:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "df6f59ec1676e044f92c9c2b192aa50e14f9aa8e",
"body": "VWMA (#131) added the 166th stream-flagged function without touching the\npin, so the suite has been red since 5e50d7f4. The count is deliberately\nhand-maintained, and this is the deliberate update.",
"is_bot": false,
"headline": "test(java): move the stream emit ratchet to 166",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T05:30:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eaf3a1f64515f5b7555ce6deb07e56d3358413ed",
"body": "…d oracle\n\nThey were skipped at FUNCTION level for #118, so all three had zero differential\ncoverage vs 0.6.4 -- and the summary reported that as '3 case(s)', understating a\n~3000-comparison gap by three orders of magnitude.\n\nThe exclusion is only justified where 0.6.4's cancelling E[x^2]-mean^2 for\n[…]\nannot:\nit restores agreement with 0.6.4. That direction stays pinned by test_stddev.c\nand the BBANDS stable-variance test.\n\nAlso corrects the stochrsi-skipped label, which counts functions, not cases.",
"is_bot": false,
"headline": "test(fuzz-064): compare VAR/STDDEV/BBANDS where 0.6.4 is still a vali…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T03:36:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cec94326f32b0dc02d17dd206f704abeafed59d6",
"body": "Bollinger specifies 20 periods / 2 standard deviations. The 5 came from\nTA_DEF_UI_TimePeriod_5_MINIMUM2, a generic descriptor shared with STDDEV/VAR/\nBETA/T3, never a decision about Bollinger Bands -- the deviation defaults (2.0)\nand MA type (SMA) were set correctly from the same recommendation, and\n[…]\nr changes only for callers relying on the abstract-layer\ndefault. Gates green: ta_regtest, --codegen 161/161 x3, --xlang-hash 0\nmismatches, fuzz-064 0 failures (BBANDS already excluded there by #118).",
"is_bot": false,
"headline": "fix(bbands): default optInTimePeriod 5 -> 20 (#133)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T02:55:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fae2c79c4467b82ce2be32b382d97bc3782e215c",
"body": null,
"is_bot": false,
"headline": "docs(vwma): drop the cross-implementation default note",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T02:31:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4be71d3aa8ac755c3a028c384b445805e30c2e4e",
"body": "… inReal\n\nThe unconditional staging buffer from 3f2f804e cost ~21% at 100k bars (the\nonly real MAVP slowdown in history — a fixed-flag bisect across ten commits\nfrom reference-pre-cutover shows everything else flat and bit-identical; the\nta_bench \"+11% vs cref\" that prompted the audit was mean-of-50\n[…]\n BBANDS' tempBuffer guard.\n\nInterleaved bench: conditional == pre-#130 baseline. In-place path stays\nbitwise-correct (193-pair gate, ASan); MAVP green on all four languages\nincl. stream + OpenAndFill.",
"is_bot": false,
"headline": "perf(mavp): stage the #130 in-place defence only when outReal aliases…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T02:25:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d72e41571d8ef090ef739f194fbc50da8e3e9ed6",
"body": "It also fed the page description and the rustdoc.",
"is_bot": false,
"headline": "docs(vwma): drop the VWAP contrast from the summary",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T02:14:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cad531db586b08296c8645dab06e4032e27e8d2e",
"body": "Sabotage-proven: reintroducing a guard that returns 0.0 fails this leg and\nnothing else. Also trims the flat-price comment -- agreement there is to a few\nULP in every implementation (pandas-ta 9.1e-12, Tulip 6.5e-11, ours 8.0e-11),\nso it needed a measurement, not an essay.",
"is_bot": false,
"headline": "test(vwma): pin the documented NaN on an all-zero-volume window (#131)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T01:46:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "582db41e05d52a1e82556b42d5c3769a015a3b61",
"body": "Closes the gap between what #131's verification plan claimed and what was\nactually implemented.\n\n- Tulip Indicators 0.9.2 checked-in vectors as deterministic small cases:\n tests/extra.txt:320 (vwma 4) and tests/untest.txt:466 (vwma 5). Only extra.txt\n is independently derived -- its header says th\n[…]\n were re-verified live against pandas-ta-classic 0.6.52\n(max rel 4.739e-16) and cross-checked against the Tulip server (max rel\n4.739e-16) -- they are genuinely externally derived, not self-generated.",
"is_bot": false,
"headline": "test(vwma): add the second oracle and the flat-price case (#131)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T01:46:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5e50d7f4b428b01e6fd4a026489c905ff87d5431",
"body": "Sum(P*V)/Sum(V) over a trailing window. Overlap Studies, inReal + volume\n(the OBV input shape, so a source other than close is expressible), lookback\nperiod-1, streaming from day one.\n\nKeeps the redundant /n on both sums and mirrors TA_SMA's add-new / snapshot /\nsubtract-old order, which makes it BI\n[…]\nr. abstract_volume_view() keys off the existing\nTA_IN_PRICE_VOLUME flag and is applied to both the in-process call and the JSON\nrequest so the two sides cannot diverge. Benefits every volume function.",
"is_bot": false,
"headline": "feat(vwma): Volume Weighted Moving Average (#131)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T01:46:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3f2f804e21348022a0b1105fed16280deb3c93b5",
"body": "…functions (#130)\n\nReusing an input buffer as one of the outputs is a documented guarantee\n(\"All TA functions support this\") but returned TA_SUCCESS with wrong values:\n\n- LINEARREG/_ANGLE/_SLOPE/_INTERCEPT/TSF: the O(1) sliding recurrence read\n the departing value after the priming write clobbered \n[…]\n path. Red on exactly the 8 functions before the fix.\n\nASan/UBSan green, --codegen 161/161 x4 languages, stream 14840 legs\nbit-exact, OpenAndFill bitwise, fuzz-064 0 failures, xlang-hash 0 mismatches.",
"is_bot": false,
"headline": "fix(func): in-place (input==output) calls returned wrong values in 8 …",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-21T01:20:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2af1dca199ef0e7b29892349f47596480cf710e3",
"body": "…ance trap\n\nGroundwork for the new-indicator wave (board proposals #21-#48). Each of these\nwould have let a future function ship with a gate that looked green while\ntesting nothing.\n\n- checkOracleValue(): shared |got-want| <= absTol + relTol*|want| comparison for\n external-oracle golden values, rep\n[…]\nual 165; count them with TA_ForEachFunc instead.\n\nAll three sabotage-proven: the perturbed golden, the flipped cap and the\nmutated count each turn the run red, and the run is green with them restored.",
"is_bot": false,
"headline": "test(regtest): close three gate-vacuity holes + a zero-crossing toler…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T21:19:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b0c8ff23809a5fa6830b634cee498136e7e09216",
"body": "Updates the four generator-side header sources (c.rs, rust_lang.rs,\nta_abstract_c.rs, ta_retcode.c.template) plus the hand-written headers;\nalso brings the 43 legacy Java files forward from 1999-2006/2007.",
"is_bot": false,
"headline": "chore: bump BSD license copyright year to 2026",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T19:18:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "38148302ad5d89e3e9b6cb4260e37f83bb406274",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-20T18:20:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f3404024ad0deec520feb58983b41b35258880e",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-20T18:13:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46a1bce48ef6c0961c2e3b0493a240ac0167abc6",
"body": "Rust and Java never ship a way to select a compatibility variant: the enum is\ncrate-internal/package-private, the setter and getter are gone, and the private\nfield stays pinned to Default. The variant branches in the generated indicators\nare dead code pending their removal. C keeps the deprecated TA\n[…]\nsabotage-proven: perturbing the Metastock seeding in CMO fails\nthe compat=1 leg.\n\nMetastock notes dropped from the EMA/RSI/MACD/CMO pages, the crate docs/README\nand the rust/java/stream website pages.",
"is_bot": false,
"headline": "refactor(rust,java): drop the public compatibility (Metastock) API",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T17:54:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "75318b7e0e7f0f790825c9ca33a756690e54a2b9",
"body": "Audited every open/deferred item in docs/canonical-cutover-runbook.md\nagainst dev, main and v0.7.1: all complete. Stage 6-B (the one stage\nwithout a DONE marker) was delivered by PR #92 + 97e9f89a; the XML\nNUL-termination and large-period gaps are fixed; the server_verify and\ntag-portability deferra\n[…]\ncation-runbook.md section 4\n\nAlso drops the two pointers into the deleted file and a now-false\nNVI/PVI comment in backends/mod.rs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: delete the canonical-cutover runbook (cutover shipped in 0.7.1)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T17:21:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "80411e03301ce609aea5d4e48ce20b532d8f9c6d",
"body": null,
"is_bot": false,
"headline": "docs(changelog): 0.8.1 entry updates + deprecate TA_SetCompatibility",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T15:00:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7a528a00ada4629481c26e8563ddc23146d8be2",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-20T08:05:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7842d1cd3699d1b53a094f268652a6207a0ac75",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-20T07:58:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c99845aec0e53c6fdd3a503fea7300ea0cdb9d23",
"body": "… on the C API page\n\n4.3: TA_S_ is a prefix, not a suffix; fix plurals and \"allows to digest\";\nstate the guarantee precisely (same output, bit-for-bit — verified by the\nregression gates); align the two signature blocks.\n\n4.4: fix grammar throughout (linked against, thread-safe, single-threaded,\n\"prior to exit\"); mirror 3.1's TA_Shutdown wording.\n\n3.0: \"declared in headers in include/*.h\" -> \"in the include/*.h headers\".",
"is_bot": false,
"headline": "docs(website): copyedit float-vs-double (4.3) + multi-threading (4.4)…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T01:56:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9d5e75faf510b8b5b2d5a2242be29a7a5a24511",
"body": "…le period intro (4.2)\n\n4.1: drop the duplicated \"at runtime\"; replace \"without knowing it a\npriori\" with the concrete claim (call a function whose signature was\nunknown at compile time).\n\n4.2: reword around the actual phenomenon — recursive functions' first\noutputs depend on the starting point, an effect that decays until the\noutput is stable — instead of the \"function having memories\" framing.\nFixes the grammar errors and links the two API calls to the #api anchor.",
"is_bot": false,
"headline": "docs(website): copyedit abstraction-layer tail (4.1) + rewrite unstab…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T01:32:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4822d6c33a90ce2beac170c6146aab000e99f638",
"body": "…n the C API page\n\n3.3: fix grammar in the intro and lookback paragraphs, scope the Range\nMatching waste example to startIdx=0, and state the Exact Allocation pro\nas its result.\n\n4.1: the opener implied by-name calling is what direct calls do — it is\nwhat ta_abstract enables; reword to hard-coded vs runtime lookup. Lead the\nuse-case list with wrapper generation, make the charting-app bullet\nconcrete, and point the closing off-ramp at both batch and streaming.",
"is_bot": false,
"headline": "docs(website): copyedit Output Size (3.3) + abstraction layer (4.1) o…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T01:10:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0e2aeaead7c0bece1606e56d1c0f4e45059fc6a",
"body": "…PI page\n\nFix grammar and simplify wording throughout: the calling-pattern intro and\nits four parameter-group bullets, both TA_MA examples and their result\nexplanations, the single-bar EMA example, and the in-place buffer notes.\n\nAlso fix a wrong value in the range example: with startIdx=125 and\nendIdx=225, outNbElement is 101, not 100 — endIdx is inclusive (now stated\nexplicitly). Verified against the compiled library.",
"is_bot": false,
"headline": "docs(website): copyedit the batch-processing section (3.2) of the C A…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-20T00:49:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f38e132f6531f8e1bbf8135cacb6c0910e2ca8f6",
"body": "…sources\n\nThe pre-cutover generators re-preprocessed the C source with _MANAGED /\n_JAVA / _RUST defined; all bindings are now generated natively by\nta_codegen, so only the plain-C branch was ever compiled. Remove the dead\narms and the macro scaffolding:\n\n- ta_defs.h: plain `typedef enum` for all six\n[…]\n for the frozen\n reference-pre-cutover tag.\n\nPreprocessed output is token-identical (gcc -E diff), regtest passes\n161 functions x 4 languages against the frozen reference, and generate\nis idempotent.",
"is_bot": false,
"headline": "refactor: drop the dead multi-language preprocessor layer from the C …",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-19T21:02:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a7892a23601b14673f32548c134c122ad158bc38",
"body": "Intro: drop the \"Part of the C/C++ Core API\" breadcrumb so the page can later\ncover the Rust/Java bindings too, and say plainly that \"unstable period\" names\na setting rather than the problem it addresses.\n\nAPI section: \"family of functions\" was wrong -- each TA_FuncUnstId value maps\nto exactly one f\n[…]\n, ...) as a\ncaller would write them, instead of bare suffixes with the prefix explained in\nthe lead-in.\n\nAlso drop \"in principle\" and the last use of \"transient\", a term used nowhere\nelse on the page.",
"is_bot": false,
"headline": "docs(website): unstable period — clarify the API section, list the C ids",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-19T17:41:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c3fc0a5acb4d84a2ac625f5ef5d9e8014bfc7041",
"body": "…te pages\n\nThe unstable-period page listed the 22 TA_FuncUnstId functions by hand, so it\ncould silently drift from the enum it documents. Generate that list instead.\n\nNew backend docs_patch.rs, a sibling to docs_site.rs. The split is deliberate:\ndocs_site OWNS whole files under website/src/functions\n[…]\n3) and reverts cleanly; deleting a\nmarker panics with the marker name; a full generate on a clean tree produces no\nother churn; a production VuePress build renders the region with no visible\nartifact.",
"is_bot": false,
"headline": "feat(generator): maintain generated regions inside hand-written websi…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-19T16:28:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dc129b3f1512044527a3112942d795122be84720",
"body": "Explain in \"Why it exists\" that the warm-up distortion is inherent to the\nalgorithms rather than specific to TA-Lib: every implementation has to seed\nthe recursion somewhere. What TA-Lib adds is the ability to scrub those\nearly values on every function call.\n\nAdd \"What to do\" enumerating the three d\n[…]\nFUNC_UNST_ADX`, `ADXR`, ...) and so read as a typo. State the\nprefix once in the lead-in and list every name bare. The 22 names were\nverified to match the FuncUnstId enum in include/ta_defs.h exactly.",
"is_bot": false,
"headline": "docs(website): unstable period — add a \"What to do\" section",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-19T15:43:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cecaaf303b7762c8d4426d1fbe6edbab7381a8d9",
"body": "vuepress-theme-hope renders a single `.vp-toc-placeholder` and repositions\nit by breakpoint: at >= $pc (1440px) `#toc` is absolutely placed as the\nright-hand rail, below that it collapses into a box above the content. The\ntheme leaves the placeholder `position: sticky` at every width, so on\nnarrower\n[…]\noutrank the theme: its toc.scss is imported by the TOC\ncomponent, so its injection order relative to this file differs between dev\nand build; equal specificity would make the override order-dependent.",
"is_bot": false,
"headline": "fix(website): stop \"On this page\" floating over the content",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-19T15:43:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "39c583f1777a52a3a3d4a45af4d715f2f5317cab",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-19T04:46:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2582d647d3c856e9ce6c689dfc1e730af08fe8c7",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-19T04:38:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3dc5c125fda3be250a95ae06116d55a484fe3a8",
"body": "Core page: rename 3.0 to 'Calling into TA-Lib'; add a 3.1 'Initialize and\nShutdown' section (TA_Initialize/TA_Shutdown) before batch processing; move\nthe 'all public functions in ta_func.h' pointer under the 3.0 title; rename\n'direct call' to 'batch processing' consistently (the direct-vs-abstractio\n[…]\n Core\npage as a section instead of a separate page).\n\nDeprecate TA_SetCompatibility: undocumented on the site and marked deprecated\nin include/ta_func.h (via the generator source in ta_abstract_c.rs).",
"is_bot": false,
"headline": "docs(website): C API restructure + deprecate TA_SetCompatibility",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-19T04:32:14Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0d2807ae256a5a63cea9ff5d294b7edc6b426f8d",
"body": "Split the language docs into independent pages — Rust Core API, Rust\nStreaming API, Java Core API, Java Streaming API — each headed by a\n'Not yet released — estimated Q1 2027' banner. The C/C++ Streaming page\nis now C-only (the Rust and Java sections that had accreted onto it are\nremoved). Sidebar regrouped into collapsible C/C++, Rust, and Java API\ngroups. Every code example was fact-checked against the generated\nRust/Java source.",
"is_bot": false,
"headline": "docs(website): per-language API pages (Rust/Java Core + Streaming)",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-18T23:08:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "239dcb7782bb3af43ca1b8c12994288f52fddb41",
"body": null,
"is_bot": true,
"headline": "Update dist package (from ubuntu-latest)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-18T21:42:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d9f24356ac27d2c6841dec016e8c330b49e4af7",
"body": null,
"is_bot": true,
"headline": "Update dist package (from windows-2022)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-18T21:38:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "352b6ff75ef961bbfd9ea8a8cecdff3601d2f506",
"body": "…ool_assert_comparison\n\nThe dev-nightly clippy gate runs `--all-targets -D warnings`, which promotes\nthis warning to an error; use a plain assert! so the gate stays green.",
"is_bot": false,
"headline": "test(java-stream): assert! over assert_eq!(_, true) — clears clippy b…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-18T21:31:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a060db6f81d651032d68bb112242824b6c381245",
"body": "# Conflicts:\n#\tta_codegen/generator/src/backends/ta_abstract_c.rs\n#\tta_codegen/generator/src/server_gen.rs",
"is_bot": false,
"headline": "Merge branch 'java-stream' into dev",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-18T21:22:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62e5e1e858e1d0934d89096ade417355b4c3290a",
"body": "…elf-check live\n\ncargo clippy --lib: 0 errors, 0 warnings (dev's 4052b053 cherry-picked for the\nparallel pre-existing fixes; the rest were this branch's). Final gates: 580\ngenerator tests green; all-language ta_regtest --codegen green with the Java\nstream pass at 165 functions / 14840 bit-exact legs\n[…]\ne new stream-pass fuzz-port self-check reporting 9/9 shapes bit-identical\nfor both porting servers (Rust, Java). PrefixProbe confirms TA_MA/TA_MAVP\nrejects now carry their own stable message prefixes.",
"is_bot": false,
"headline": "fix(java-stream): clippy-clean generator, verified prefix fix, fuzz s…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-18T18:57:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c0b5a13b2fe57401a05c494e895a700dab6f568c",
"body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nrgo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.\n\n(cherry picked from commit 4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb)",
"is_bot": false,
"headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-18T18:52:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0d216a3d2706d4614ab87f4eed65484daa1eeec8",
"body": "…ning\n\nDispatch/period-bank opens precheck their OWN lookback before delegating, so\ninsufficient-history rejects always carry the caller's stable \"TA_<NAME>\nopen:\" prefix (previously a TA_MA short-history reject surfaced as\n\"TA_SMA open:\"). flag_sync: pre-add start_dependent (dev #127), panic on\nunp\n[…]\ncompiles fuzz_data.h directly). Dedup sv input-array maps and the\nper-tier base field lists; InsufficientHistoryException server copy moves to\na template file; build.xml gains the stream-smoke target.",
"is_bot": false,
"headline": "fix(java-stream): review findings — prefix-stable rejects, gate harde…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-18T18:51:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb",
"body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nems_after_test_module) to the end of the file.\n\nNo behavior change: cargo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.",
"is_bot": false,
"headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
"author_name": "mario4tier",
"author_login": "mario4tier",
"committed_at": "2026-07-18T15:48:25Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 6,
"commits_last_year": 966,
"latest_release_at": "2026-07-03T17:36:45Z",
"latest_release_tag": "v0.7.1",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 19,
"days_since_latest_release": 23,
"mean_days_between_releases": 174.2
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 37,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 291,
"stars": 1638,
"watchers": 30,
"fork_history": {
"days": [
{
"date": "2016-12-22",
"count": 1
},
{
"date": "2017-01-06",
"count": 1
},
{
"date": "2017-08-22",
"count": 1
},
{
"date": "2018-01-27",
"count": 1
},
{
"date": "2018-03-11",
"count": 1
},
{
"date": "2018-03-12",
"count": 1
},
{
"date": "2018-08-28",
"count": 1
},
{
"date": "2018-09-18",
"count": 1
},
{
"date": "2018-10-04",
"count": 1
},
{
"date": "2019-01-04",
"count": 1
},
{
"date": "2019-02-24",
"count": 1
},
{
"date": "2019-12-04",
"count": 1
},
{
"date": "2020-06-15",
"count": 1
},
{
"date": "2020-11-17",
"count": 1
},
{
"date": "2020-11-19",
"count": 1
},
{
"date": "2021-01-10",
"count": 1
},
{
"date": "2021-02-03",
"count": 1
},
{
"date": "2021-02-15",
"count": 1
},
{
"date": "2021-04-25",
"count": 1
},
{
"date": "2021-05-08",
"count": 1
},
{
"date": "2021-10-13",
"count": 1
},
{
"date": "2022-01-25",
"count": 1
},
{
"date": "2022-04-29",
"count": 1
},
{
"date": "2022-06-28",
"count": 1
},
{
"date": "2022-07-09",
"count": 1
},
{
"date": "2023-01-16",
"count": 1
},
{
"date": "2023-02-03",
"count": 1
},
{
"date": "2023-02-13",
"count": 1
},
{
"date": "2023-02-17",
"count": 1
},
{
"date": "2023-02-28",
"count": 1
},
{
"date": "2023-03-06",
"count": 1
},
{
"date": "2023-03-08",
"count": 1
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-04-09",
"count": 1
},
{
"date": "2023-04-10",
"count": 1
},
{
"date": "2023-04-17",
"count": 1
},
{
"date": "2023-05-06",
"count": 1
},
{
"date": "2023-05-27",
"count": 1
},
{
"date": "2023-05-28",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-23",
"count": 1
},
{
"date": "2023-07-01",
"count": 1
},
{
"date": "2023-07-09",
"count": 1
},
{
"date": "2023-07-16",
"count": 1
},
{
"date": "2023-08-09",
"count": 1
},
{
"date": "2023-08-16",
"count": 1
},
{
"date": "2023-08-20",
"count": 1
},
{
"date": "2023-08-25",
"count": 1
},
{
"date": "2023-09-22",
"count": 1
},
{
"date": "2023-09-28",
"count": 1
},
{
"date": "2023-10-07",
"count": 1
},
{
"date": "2023-10-18",
"count": 2
},
{
"date": "2023-10-22",
"count": 1
},
{
"date": "2023-10-30",
"count": 1
},
{
"date": "2023-11-18",
"count": 1
},
{
"date": "2023-11-20",
"count": 1
},
{
"date": "2023-11-26",
"count": 1
},
{
"date": "2023-11-27",
"count": 1
},
{
"date": "2023-11-29",
"count": 2
},
{
"date": "2023-12-14",
"count": 1
},
{
"date": "2023-12-17",
"count": 1
},
{
"date": "2023-12-22",
"count": 1
},
{
"date": "2023-12-25",
"count": 2
},
{
"date": "2023-12-26",
"count": 1
},
{
"date": "2024-01-02",
"count": 1
},
{
"date": "2024-01-10",
"count": 1
},
{
"date": "2024-01-14",
"count": 1
},
{
"date": "2024-01-15",
"count": 1
},
{
"date": "2024-01-22",
"count": 1
},
{
"date": "2024-02-02",
"count": 2
},
{
"date": "2024-02-10",
"count": 1
},
{
"date": "2024-02-12",
"count": 2
},
{
"date": "2024-02-18",
"count": 1
},
{
"date": "2024-03-01",
"count": 1
},
{
"date": "2024-03-11",
"count": 1
},
{
"date": "2024-03-16",
"count": 1
},
{
"date": "2024-03-23",
"count": 1
},
{
"date": "2024-03-24",
"count": 1
},
{
"date": "2024-03-25",
"count": 1
},
{
"date": "2024-03-28",
"count": 2
},
{
"date": "2024-03-29",
"count": 1
},
{
"date": "2024-03-30",
"count": 1
},
{
"date": "2024-04-16",
"count": 1
},
{
"date": "2024-04-21",
"count": 2
},
{
"date": "2024-04-27",
"count": 1
},
{
"date": "2024-04-28",
"count": 1
},
{
"date": "2024-05-01",
"count": 2
},
{
"date": "2024-05-02",
"count": 1
},
{
"date": "2024-05-05",
"count": 1
},
{
"date": "2024-05-14",
"count": 1
},
{
"date": "2024-05-20",
"count": 1
},
{
"date": "2024-05-22",
"count": 1
},
{
"date": "2024-05-23",
"count": 1
},
{
"date": "2024-05-24",
"count": 1
},
{
"date": "2024-05-27",
"count": 2
},
{
"date": "2024-05-29",
"count": 1
},
{
"date": "2024-05-30",
"count": 1
},
{
"date": "2024-06-07",
"count": 1
},
{
"date": "2024-06-08",
"count": 1
},
{
"date": "2024-06-15",
"count": 1
},
{
"date": "2024-06-20",
"count": 1
},
{
"date": "2024-06-28",
"count": 2
},
{
"date": "2024-07-05",
"count": 1
},
{
"date": "2024-07-21",
"count": 1
},
{
"date": "2024-08-02",
"count": 1
},
{
"date": "2024-08-10",
"count": 1
},
{
"date": "2024-08-14",
"count": 1
},
{
"date": "2024-08-15",
"count": 1
},
{
"date": "2024-08-17",
"count": 1
},
{
"date": "2024-08-18",
"count": 1
},
{
"date": "2024-08-19",
"count": 1
},
{
"date": "2024-08-22",
"count": 1
},
{
"date": "2024-08-23",
"count": 1
},
{
"date": "2024-08-25",
"count": 1
},
{
"date": "2024-09-10",
"count": 1
},
{
"date": "2024-09-15",
"count": 1
},
{
"date": "2024-09-23",
"count": 1
},
{
"date": "2024-09-26",
"count": 1
},
{
"date": "2024-09-27",
"count": 1
},
{
"date": "2024-09-30",
"count": 1
},
{
"date": "2024-10-08",
"count": 1
},
{
"date": "2024-10-09",
"count": 1
},
{
"date": "2024-10-12",
"count": 1
},
{
"date": "2024-10-18",
"count": 1
},
{
"date": "2024-10-22",
"count": 1
},
{
"date": "2024-10-25",
"count": 1
},
{
"date": "2024-10-28",
"count": 1
},
{
"date": "2024-11-13",
"count": 1
},
{
"date": "2024-11-14",
"count": 1
},
{
"date": "2024-11-17",
"count": 1
},
{
"date": "2024-11-20",
"count": 2
},
{
"date": "2024-11-29",
"count": 1
},
{
"date": "2024-12-02",
"count": 1
},
{
"date": "2024-12-07",
"count": 1
},
{
"date": "2024-12-19",
"count": 1
},
{
"date": "2024-12-23",
"count": 1
},
{
"date": "2024-12-26",
"count": 1
},
{
"date": "2024-12-28",
"count": 2
},
{
"date": "2024-12-29",
"count": 1
},
{
"date": "2025-01-03",
"count": 1
},
{
"date": "2025-01-06",
"count": 1
},
{
"date": "2025-01-08",
"count": 1
},
{
"date": "2025-01-12",
"count": 1
},
{
"date": "2025-01-17",
"count": 2
},
{
"date": "2025-01-18",
"count": 1
},
{
"date": "2025-01-23",
"count": 1
},
{
"date": "2025-01-25",
"count": 1
},
{
"date": "2025-02-01",
"count": 1
},
{
"date": "2025-02-05",
"count": 2
},
{
"date": "2025-02-08",
"count": 2
},
{
"date": "2025-02-15",
"count": 1
},
{
"date": "2025-02-22",
"count": 1
},
{
"date": "2025-03-03",
"count": 1
},
{
"date": "2025-03-09",
"count": 1
},
{
"date": "2025-03-13",
"count": 1
},
{
"date": "2025-03-14",
"count": 1
},
{
"date": "2025-03-19",
"count": 1
},
{
"date": "2025-03-20",
"count": 1
},
{
"date": "2025-03-21",
"count": 1
},
{
"date": "2025-03-23",
"count": 1
},
{
"date": "2025-03-26",
"count": 1
},
{
"date": "2025-03-28",
"count": 1
},
{
"date": "2025-03-29",
"count": 1
},
{
"date": "2025-04-01",
"count": 1
},
{
"date": "2025-04-02",
"count": 1
},
{
"date": "2025-04-03",
"count": 1
},
{
"date": "2025-04-05",
"count": 1
},
{
"date": "2025-04-09",
"count": 1
},
{
"date": "2025-04-13",
"count": 1
},
{
"date": "2025-04-14",
"count": 1
},
{
"date": "2025-04-20",
"count": 1
},
{
"date": "2025-04-22",
"count": 1
},
{
"date": "2025-04-24",
"count": 1
},
{
"date": "2025-04-27",
"count": 1
},
{
"date": "2025-05-02",
"count": 1
},
{
"date": "2025-05-04",
"count": 1
},
{
"date": "2025-05-15",
"count": 1
},
{
"date": "2025-05-19",
"count": 3
},
{
"date": "2025-05-28",
"count": 1
},
{
"date": "2025-05-30",
"count": 1
},
{
"date": "2025-06-03",
"count": 1
},
{
"date": "2025-06-09",
"count": 1
},
{
"date": "2025-06-10",
"count": 1
},
{
"date": "2025-06-14",
"count": 1
},
{
"date": "2025-06-16",
"count": 1
},
{
"date": "2025-06-17",
"count": 1
},
{
"date": "2025-06-20",
"count": 1
},
{
"date": "2025-06-21",
"count": 2
},
{
"date": "2025-06-22",
"count": 1
},
{
"date": "2025-06-29",
"count": 1
},
{
"date": "2025-07-02",
"count": 1
},
{
"date": "2025-07-04",
"count": 1
},
{
"date": "2025-07-06",
"count": 1
},
{
"date": "2025-07-09",
"count": 1
},
{
"date": "2025-07-14",
"count": 1
},
{
"date": "2025-07-18",
"count": 1
},
{
"date": "2025-07-20",
"count": 1
},
{
"date": "2025-07-23",
"count": 1
},
{
"date": "2025-07-28",
"count": 1
},
{
"date": "2025-07-30",
"count": 1
},
{
"date": "2025-08-03",
"count": 1
},
{
"date": "2025-08-12",
"count": 1
},
{
"date": "2025-08-13",
"count": 1
},
{
"date": "2025-08-14",
"count": 1
},
{
"date": "2025-08-15",
"count": 2
},
{
"date": "2025-08-18",
"count": 1
},
{
"date": "2025-08-20",
"count": 1
},
{
"date": "2025-08-23",
"count": 1
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-08-31",
"count": 1
},
{
"date": "2025-09-18",
"count": 1
},
{
"date": "2025-09-26",
"count": 1
},
{
"date": "2025-09-28",
"count": 1
},
{
"date": "2025-10-02",
"count": 1
},
{
"date": "2025-10-04",
"count": 1
},
{
"date": "2025-10-11",
"count": 1
},
{
"date": "2025-10-14",
"count": 1
},
{
"date": "2025-10-19",
"count": 2
},
{
"date": "2025-10-21",
"count": 2
},
{
"date": "2025-10-24",
"count": 1
},
{
"date": "2025-10-25",
"count": 1
},
{
"date": "2025-10-30",
"count": 1
},
{
"date": "2025-11-08",
"count": 1
},
{
"date": "2025-11-11",
"count": 2
},
{
"date": "2025-11-14",
"count": 1
},
{
"date": "2025-11-17",
"count": 1
},
{
"date": "2025-11-24",
"count": 2
},
{
"date": "2025-11-27",
"count": 1
},
{
"date": "2025-12-03",
"count": 1
},
{
"date": "2025-12-05",
"count": 2
},
{
"date": "2025-12-09",
"count": 2
},
{
"date": "2025-12-16",
"count": 1
},
{
"date": "2025-12-24",
"count": 1
},
{
"date": "2025-12-25",
"count": 1
},
{
"date": "2025-12-27",
"count": 1
},
{
"date": "2026-01-03",
"count": 1
},
{
"date": "2026-01-13",
"count": 1
},
{
"date": "2026-01-23",
"count": 1
},
{
"date": "2026-01-25",
"count": 1
},
{
"date": "2026-02-10",
"count": 1
},
{
"date": "2026-02-12",
"count": 1
},
{
"date": "2026-03-09",
"count": 1
},
{
"date": "2026-03-14",
"count": 1
},
{
"date": "2026-04-10",
"count": 1
},
{
"date": "2026-04-15",
"count": 1
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-04-27",
"count": 1
},
{
"date": "2026-04-29",
"count": 1
},
{
"date": "2026-05-08",
"count": 1
},
{
"date": "2026-05-17",
"count": 1
},
{
"date": "2026-05-25",
"count": 1
},
{
"date": "2026-06-01",
"count": 1
},
{
"date": "2026-06-02",
"count": 2
},
{
"date": "2026-06-05",
"count": 1
},
{
"date": "2026-06-10",
"count": 1
},
{
"date": "2026-06-19",
"count": 1
},
{
"date": "2026-06-21",
"count": 1
},
{
"date": "2026-06-26",
"count": 1
},
{
"date": "2026-06-30",
"count": 1
},
{
"date": "2026-07-06",
"count": 1
},
{
"date": "2026-07-09",
"count": 2
},
{
"date": "2026-07-10",
"count": 1
},
{
"date": "2026-07-13",
"count": 1
},
{
"date": "2026-07-18",
"count": 1
}
],
"complete": true,
"collected": 291,
"total_forks": 291
},
"star_history": null,
"open_issues_and_prs": 8
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"ta_codegen/generator/Cargo.toml",
"ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
"ta_codegen/output/rust/Cargo.toml",
"ta_codegen/output/rust/library/Cargo.toml",
"ta_codegen/output/rust/tools/Cargo.toml"
],
"largest_source_bytes": 12329300,
"source_files_sampled": 922,
"oversized_source_files": 196,
"agent_instruction_files": [
"CLAUDE.md",
"src/tools/ta_regtest/CLAUDE.md",
"ta_codegen/generator/CLAUDE.md"
],
"agent_instruction_max_bytes": 27322
},
"dependencies": {
"manifests": [
"website/package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 498,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 1,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "katex",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^0.16.47"
},
{
"name": "serde",
"manifest": "ta_codegen/generator/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "serde_yaml",
"manifest": "ta_codegen/generator/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.9"
},
{
"name": "serde_json",
"manifest": "ta_codegen/generator/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "regex",
"manifest": "ta_codegen/generator/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "regex",
"direct": true,
"version": "1.12.3",
"ecosystem": "crates"
},
{
"name": "serde",
"direct": true,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde_json",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "serde_json",
"direct": true,
"version": "1.0.149",
"ecosystem": "crates"
},
{
"name": "serde_yaml",
"direct": true,
"version": "0.9.34+deprecated",
"ecosystem": "crates"
},
{
"name": "katex",
"direct": true,
"version": "0.16.47",
"ecosystem": "npm"
},
{
"name": "aho-corasick",
"direct": false,
"version": "1.1.4",
"ecosystem": "crates"
},
{
"name": "equivalent",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "hashbrown",
"direct": false,
"version": "0.16.1",
"ecosystem": "crates"
},
{
"name": "indexmap",
"direct": false,
"version": "2.13.0",
"ecosystem": "crates"
},
{
"name": "itoa",
"direct": false,
"version": "1.0.17",
"ecosystem": "crates"
},
{
"name": "memchr",
"direct": false,
"version": "2.8.0",
"ecosystem": "crates"
},
{
"name": "proc-macro2",
"direct": false,
"version": "1.0.106",
"ecosystem": "crates"
},
{
"name": "quote",
"direct": false,
"version": "1.0.45",
"ecosystem": "crates"
},
{
"name": "regex-automata",
"direct": false,
"version": "0.4.14",
"ecosystem": "crates"
},
{
"name": "regex-syntax",
"direct": false,
"version": "0.8.10",
"ecosystem": "crates"
},
{
"name": "ryu",
"direct": false,
"version": "1.0.23",
"ecosystem": "crates"
},
{
"name": "serde_core",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde_derive",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "syn",
"direct": false,
"version": "2.0.117",
"ecosystem": "crates"
},
{
"name": "unicode-ident",
"direct": false,
"version": "1.0.24",
"ecosystem": "crates"
},
{
"name": "unsafe-libyaml",
"direct": false,
"version": "0.2.11",
"ecosystem": "crates"
},
{
"name": "zmij",
"direct": false,
"version": "1.0.21",
"ecosystem": "crates"
},
{
"name": "@babel/generator",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "8.0.4",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "8.0.4",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "8.0.4",
"ecosystem": "npm"
},
{
"name": "@bufbuild/protobuf",
"direct": false,
"version": "2.12.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "@esbuild/aix-ppc64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ia32",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-loong64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-mips64el",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ppc64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-riscv64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-s390x",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openharmony-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/sunos-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-ia32",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/remapping",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@lit-labs/ssr-dom-shim",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "@lit/reactive-element",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/plugin-component",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/plugin-frontmatter",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/plugin-headers",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/plugin-sfc",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/plugin-title",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/plugin-toc",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/shared",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit-vue/types",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@mdit/helper",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-alert",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-align",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-attrs",
"direct": false,
"version": "0.25.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-container",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-demo",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-figure",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-footnote",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-icon",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-img-lazyload",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-img-mark",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-img-size",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-include",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-inline-rule",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-katex-slim",
"direct": false,
"version": "0.26.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-layout",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-mark",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-mathjax-slim",
"direct": false,
"version": "0.26.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-plantuml",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-spoiler",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-stylize",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-sub",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-sup",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-tab",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-tasklist",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-tex",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@mdit/plugin-uml",
"direct": false,
"version": "0.24.2",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.139.0",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-android-arm64",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-darwin-arm64",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-darwin-x64",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-freebsd-x64",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm-glibc",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm-musl",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm64-glibc",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm64-musl",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-x64-glibc",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-x64-musl",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-win32-arm64",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-win32-ia32",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-win32-x64",
"direct": false,
"version": "2.5.6",
"ecosystem": "npm"
},
{
"name": "@pkgr/core",
"direct": false,
"version": "0.3.6",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-android-arm64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-arm64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-x64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-freebsd-x64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm-gnueabihf",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-musl",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-ppc64-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-s390x-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-musl",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-openharmony-arm64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-wasm32-wasi",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-arm64-msvc",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-x64-msvc",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/pluginutils",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/core",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/engine-javascript",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/engine-oniguruma",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/langs",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/primitive",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/themes",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/transformers",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/types",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@shikijs/vscode-textmate",
"direct": false,
"version": "10.0.2",
"ecosystem": "npm"
},
{
"name": "@stackblitz/sdk",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.3",
"ecosystem": "npm"
},
{
"name": "@types/debug",
"direct": false,
"version": "4.1.13",
"ecosystem": "npm"
},
{
"name": "@types/fs-extra",
"direct": false,
"version": "11.0.4",
"ecosystem": "npm"
},
{
"name": "@types/hash-sum",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "@types/hast",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "@types/jsesc",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@types/jsonfile",
"direct": false,
"version": "6.1.4",
"ecosystem": "npm"
},
{
"name": "@types/linkify-it",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "@types/markdown-it",
"direct": false,
"version": "14.1.2",
"ecosystem": "npm"
},
{
"name": "@types/markdown-it-emoji",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "@types/mdast",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "@types/mdurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "@types/ms",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "24.13.3",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "26.1.1",
"ecosystem": "npm"
},
{
"name": "@types/picomatch",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "@types/sax",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "@types/trusted-types",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "@types/unist",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@types/web-bluetooth",
"direct": false,
"version": "0.0.21",
"ecosystem": "npm"
},
{
"name": "@ungap/structured-clone",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "@vitejs/plugin-vue",
"direct": false,
"version": "6.0.7",
"ecosystem": "npm"
},
{
"name": "@vue-macros/common",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-core",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-dom",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-sfc",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-ssr",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/devtools-api",
"direct": false,
"version": "8.1.5",
"ecosystem": "npm"
},
{
"name": "@vue/devtools-kit",
"direct": false,
"version": "8.1.5",
"ecosystem": "npm"
},
{
"name": "@vue/devtools-shared",
"direct": false,
"version": "8.1.5",
"ecosystem": "npm"
},
{
"name": "@vue/reactivity",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/runtime-core",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/runtime-dom",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/server-renderer",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/shared",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vuepress/bundler-vite",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vuepress/bundlerutils",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vuepress/cli",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vuepress/client",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vuepress/core",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vuepress/helper",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/highlighter-helper",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/markdown",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-active-header-links",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-back-to-top",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-blog",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-catalog",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-comment",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-copy-code",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-copyright",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-git",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-icon",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-links-check",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-chart",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-ext",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-hint",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-image",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-include",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-math",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-preview",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-stylize",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-markdown-tab",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-notice",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-nprogress",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-photo-swipe",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-reading-time",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-redirect",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-rtl",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-sass-palette",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-seo",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-shiki",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-sitemap",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-slimsearch",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/plugin-theme-data",
"direct": false,
"version": "2.0.0-rc.130",
"ecosystem": "npm"
},
{
"name": "@vuepress/shared",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vuepress/utils",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "@vueuse/core",
"direct": false,
"version": "14.3.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/metadata",
"direct": false,
"version": "14.3.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/shared",
"direct": false,
"version": "14.3.0",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.17.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "arg",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "ast-kit",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "ast-walker-scope",
"direct": false,
"version": "0.9.0",
"ecosystem": "npm"
},
{
"name": "autoprefixer",
"direct": false,
"version": "10.5.2",
"ecosystem": "npm"
},
{
"name": "bail",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "balloon-css",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "baseline-browser-mapping",
"direct": false,
"version": "2.10.43",
"ecosystem": "npm"
},
{
"name": "bcrypt-ts",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "birpc",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "boolbase",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.28.6",
"ecosystem": "npm"
},
{
"name": "cac",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "5.3.1",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001805",
"ecosystem": "npm"
},
{
"name": "ccount",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "5.6.2",
"ecosystem": "npm"
},
{
"name": "character-entities-html4",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "character-entities-legacy",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "cheerio",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "cheerio-select",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "cli-cursor",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "cli-spinners",
"direct": false,
"version": "3.4.0",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "colorjs.io",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "comma-separated-tokens",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "14.0.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "8.3.0",
"ecosystem": "npm"
},
{
"name": "confbox",
"direct": false,
"version": "0.1.8",
"ecosystem": "npm"
},
{
"name": "confbox",
"direct": false,
"version": "0.2.4",
"ecosystem": "npm"
},
{
"name": "connect-history-api-fallback",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "create-codepen",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "css-select",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "css-what",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "csstype",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "decamelize",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "dequal",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "detect-libc",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "devlop",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "dijkstrajs",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "dom-serializer",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "domelementtype",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "domhandler",
"direct": false,
"version": "5.0.3",
"ecosystem": "npm"
},
{
"name": "domutils",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.389",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "encoding-sniffer",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "envinfo",
"direct": false,
"version": "7.21.0",
"ecosystem": "npm"
},
{
"name": "esbuild",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "esprima",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "exsolve",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "extend",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "extend-shallow",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "fflate",
"direct": false,
"version": "0.8.3",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "fraction.js",
"direct": false,
"version": "5.3.4",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": false,
"version": "11.3.6",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "get-east-asian-width",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "giscus",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "gray-matter",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "hash-sum",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "hast-util-from-html",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "hast-util-from-parse5",
"direct": false,
"version": "8.0.3",
"ecosystem": "npm"
},
{
"name": "hast-util-parse-selector",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "hast-util-sanitize",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "hast-util-to-html",
"direct": false,
"version": "9.0.5",
"ecosystem": "npm"
},
{
"name": "hast-util-whitespace",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "hastscript",
"direct": false,
"version": "9.0.1",
"ecosystem": "npm"
},
{
"name": "hookable",
"direct": false,
"version": "5.5.3",
"ecosystem": "npm"
},
{
"name": "html-void-elements",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "htmlparser2",
"direct": false,
"version": "10.1.0",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "immutable",
"direct": false,
"version": "5.1.9",
"ecosystem": "npm"
},
{
"name": "is-extendable",
"direct": false,
"version": "0.1.1",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-interactive",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "is-unicode-supported",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "3.15.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "jsonfile",
"direct": false,
"version": "6.2.1",
"ecosystem": "npm"
},
{
"name": "kind-of",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "lightningcss",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-android-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-freebsd-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm-gnueabihf",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-arm64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-x64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lilconfig",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "linkify-it",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "lit",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "lit-element",
"direct": false,
"version": "4.2.2",
"ecosystem": "npm"
},
{
"name": "lit-html",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "local-pkg",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "log-symbols",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.21",
"ecosystem": "npm"
},
{
"name": "magic-string-ast",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "markdown-it",
"direct": false,
"version": "14.3.0",
"ecosystem": "npm"
},
{
"name": "markdown-it-anchor",
"direct": false,
"version": "9.2.1",
"ecosystem": "npm"
},
{
"name": "markdown-it-cjk-friendly",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "markdown-it-emoji",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-hast",
"direct": false,
"version": "13.2.1",
"ecosystem": "npm"
},
{
"name": "mdurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-character",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-encode",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-sanitize-uri",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-symbol",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-types",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "mimic-function",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "mlly",
"direct": false,
"version": "1.8.2",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "muggle-string",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.16",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "5.1.16",
"ecosystem": "npm"
},
{
"name": "node-addon-api",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.51",
"ecosystem": "npm"
},
{
"name": "nth-check",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "oniguruma-parser",
"direct": false,
"version": "0.12.2",
"ecosystem": "npm"
},
{
"name": "oniguruma-to-es",
"direct": false,
"version": "4.3.6",
"ecosystem": "npm"
},
{
"name": "ora",
"direct": false,
"version": "9.4.1",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "p-try",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "7.3.0",
"ecosystem": "npm"
},
{
"name": "parse5-htmlparser2-tree-adapter",
"direct": false,
"version": "7.1.0",
"ecosystem": "npm"
},
{
"name": "parse5-parser-stream",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "perfect-debounce",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "photoswipe",
"direct": false,
"version": "5.4.4",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.5",
"ecosystem": "npm"
},
{
"name": "pkg-types",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "pkg-types",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pngjs",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.22",
"ecosystem": "npm"
},
{
"name": "postcss-load-config",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "postcss-value-parser",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "property-information",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "punycode.js",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "qrcode",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "quansync",
"direct": false,
"version": "0.2.11",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "regex",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "regex-recursion",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "regex-utilities",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "rehype-parse",
"direct": false,
"version": "9.0.1",
"ecosystem": "npm"
},
{
"name": "rehype-sanitize",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "rehype-stringify",
"direct": false,
"version": "10.0.1",
"ecosystem": "npm"
},
{
"name": "require-directory",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "require-main-filename",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "restore-cursor",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "rolldown",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "rxjs",
"direct": false,
"version": "7.8.2",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "sass",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-all-unknown",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-android-arm",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-android-arm64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-android-riscv64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-android-x64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-darwin-arm64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-darwin-x64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-arm",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-arm64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-musl-arm",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-musl-arm64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-musl-riscv64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-musl-x64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-riscv64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-linux-x64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-unknown-all",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-win32-arm64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sass-embedded-win32-x64",
"direct": false,
"version": "1.100.0",
"ecosystem": "npm"
},
{
"name": "sax",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "scule",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "section-matter",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "set-blocking",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shiki",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "sitemap",
"direct": false,
"version": "9.0.1",
"ecosystem": "npm"
},
{
"name": "slimsearch",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "space-separated-tokens",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "sprintf-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "stdin-discarder",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "8.2.2",
"ecosystem": "npm"
},
{
"name": "stringify-entities",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "strip-bom-string",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "8.1.1",
"ecosystem": "npm"
},
{
"name": "sync-child-process",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "sync-message-port",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "synckit",
"direct": false,
"version": "0.11.13",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.17",
"ecosystem": "npm"
},
{
"name": "trim-lines",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "trough",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "uc.micro",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "ufo",
"direct": false,
"version": "1.6.4",
"ecosystem": "npm"
},
{
"name": "undici",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "7.18.2",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "8.3.0",
"ecosystem": "npm"
},
{
"name": "unified",
"direct": false,
"version": "11.0.5",
"ecosystem": "npm"
},
{
"name": "unist-util-is",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "unist-util-position",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-stringify-position",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-visit",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "unist-util-visit-parents",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unplugin",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "unplugin-utils",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "upath",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "upath",
"direct": false,
"version": "3.0.8",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "varint",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "vfile",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "vfile-location",
"direct": false,
"version": "5.0.3",
"ecosystem": "npm"
},
{
"name": "vfile-message",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "8.1.4",
"ecosystem": "npm"
},
{
"name": "vue",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "vue-router",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "vuepress",
"direct": false,
"version": "2.0.0-rc.30",
"ecosystem": "npm"
},
{
"name": "vuepress-plugin-components",
"direct": false,
"version": "2.0.0-rc.107",
"ecosystem": "npm"
},
{
"name": "vuepress-plugin-md-enhance",
"direct": false,
"version": "2.0.0-rc.107",
"ecosystem": "npm"
},
{
"name": "vuepress-shared",
"direct": false,
"version": "2.0.0-rc.107",
"ecosystem": "npm"
},
{
"name": "vuepress-theme-hope",
"direct": false,
"version": "2.0.0-rc.107",
"ecosystem": "npm"
},
{
"name": "web-namespaces",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "webpack-virtual-modules",
"direct": false,
"version": "0.6.2",
"ecosystem": "npm"
},
{
"name": "whatwg-encoding",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "which-module",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "yaml",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "15.4.1",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "18.1.3",
"ecosystem": "npm"
},
{
"name": "yoctocolors",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "zwitch",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 499,
"direct_count": 6,
"indirect_count": 493
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 23,
"open_issues": 7,
"closed_ratio": 0.933,
"closed_issues": 98,
"closed_unmerged_prs": 8
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "mario4tier",
"commits": 601,
"avatar_url": "https://avatars.githubusercontent.com/u/4542410?v=4"
},
{
"type": "User",
"login": "chadfurman",
"commits": 384,
"avatar_url": "https://avatars.githubusercontent.com/u/635170?v=4"
},
{
"type": "User",
"login": "vbmithr",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/797581?v=4"
},
{
"type": "User",
"login": "chad-fossa",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/161645047?v=4"
},
{
"type": "User",
"login": "cpp4ever",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/1954426?v=4"
},
{
"type": "User",
"login": "dexhunter",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/6930518?v=4"
},
{
"type": "User",
"login": "nehemiah888",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/141201269?v=4"
},
{
"type": "User",
"login": "greenTableWork",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/252103756?v=4"
},
{
"type": "User",
"login": "vikasnkumar",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/12120?v=4"
},
{
"type": "User",
"login": "trufanov-nok",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/5746456?v=4"
}
],
"contributors_sampled": 20,
"top_contributor_share": 0.592
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"dev-nightly-tests.yml",
"main-nightly-tests.yml",
"post-release-vcpkg.yml",
"release-step-1.yml",
"release-step-2.yml",
"website.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Cargo.lock",
"pnpm-lock.yaml"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 4,
"reason": "binaries present in source code",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 3,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 0,
"reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 1/29 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 7 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": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 29 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": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 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": "144c635bb429759235696d9f95e1734169205f3a",
"ran_at": "2026-07-27T10:40:16Z",
"aggregate_score": 3.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-27T08:46:31Z",
"oldest_open_prs": [
{
"number": 85,
"created_at": "2026-04-05T15:05:16Z",
"last_comment_at": "2026-07-14T19:19:38Z",
"last_comment_author": "mario4tier"
}
],
"last_merged_pr_at": "2026-07-27T02:09:46Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 30,
"created_at": "2024-02-13T18:07:52Z",
"last_comment_at": "2024-11-12T04:07:23Z",
"last_comment_author": "mario4tier"
},
{
"number": 60,
"created_at": "2025-03-17T06:48:14Z",
"last_comment_at": "2025-03-17T14:55:40Z",
"last_comment_author": "mario4tier"
},
{
"number": 81,
"created_at": "2026-02-19T20:06:41Z",
"last_comment_at": "2026-07-04T11:37:17Z",
"last_comment_author": "mario4tier"
},
{
"number": 84,
"created_at": "2026-03-16T22:33:26Z",
"last_comment_at": "2026-07-03T23:19:16Z",
"last_comment_author": "mario4tier"
},
{
"number": 116,
"created_at": "2026-07-15T19:03:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 144,
"created_at": "2026-07-26T04:26:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 145,
"created_at": "2026-07-27T04:20:55Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/TA-Lib/ta-lib",
"host": "github.com",
"name": "ta-lib",
"owner": "TA-Lib"
},
"metrics": {
"overall": {
"key": "overall",
"band": "at_risk",
"name": "Overall health",
"note": "High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.",
"notes": [
{
"code": "jurisdiction_overall_adjustment",
"params": {
"cap": 49,
"pct": 50
}
}
],
"value": 31,
"inputs": {
"security": 34,
"vitality": 77,
"community": 67,
"governance": 60,
"engineering": 68,
"high_risk_jurisdiction_cap": 49,
"high_risk_jurisdiction_multiplier": 50,
"weighted_overall_before_jurisdiction": 62,
"overall_after_jurisdiction_multiplier": 31
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 77,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"commits_last_year": 966,
"human_commit_share": 0.78,
"days_since_last_push": 0,
"active_weeks_last_year": 19
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "19/52 weeks with commits",
"points": 13.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 19
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "966 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 966
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 76,
"inputs": {
"releases_count": 6,
"latest_release_tag": "v0.7.1",
"releases_from_tags": false,
"days_since_latest_release": 23,
"mean_days_between_releases": 174.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "6 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 6
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 23 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 23
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~174.2 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 174.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 0,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 0 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 0
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 67,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "good",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 81,
"inputs": {
"forks": 291,
"stars": 1638,
"watchers": 30,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1,638 stars",
"points": 52.1,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 1638
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "291 forks",
"points": 20.5,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 291
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "30 watchers",
"points": 8.1,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 30
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (BSD-3-Clause)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "BSD-3-Clause"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 60,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 42,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 20,
"top_contributor_share": 0.592
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 59% of commits",
"points": 9.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 59
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "20 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 20
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 7 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"merged_prs": 23,
"open_issues": 7,
"closed_issues": 98,
"issue_closed_ratio": 0.933,
"closed_unmerged_prs": 8
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "93% of issues closed",
"points": 43.6,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 93
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "23/31 decided PRs merged",
"points": 28.4,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 23,
"decided": 31
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 1/29 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"followers": 332,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "TA-Lib",
"public_repos": 12,
"account_age_days": 3628
},
"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": "332 followers of TA-Lib",
"points": 18.1,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 332,
"login": "TA-Lib"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "12 public repos, account ~9 yr old",
"points": 20.1,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 12
}
},
{
"code": "account_age_years",
"params": {
"years": 9
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 68,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "6 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 6
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"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": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"topics": [
"ta-lib",
"financial",
"series-analysis",
"technical-analysis"
],
"has_wiki": false,
"homepage": "https://ta-lib.org/",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://ta-lib.org/",
"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": "4 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 4
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 34,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier to Security posture and gives it an At risk ceiling of 49.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "jurisdiction_posture_adjustment",
"params": {
"cap": 49,
"pct": 50
}
}
],
"value": 18,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 3.5,
"high_risk_jurisdiction_cap": 49,
"high_risk_jurisdiction_multiplier": 50,
"security_posture_after_multiplier": 18,
"security_posture_before_jurisdiction": 35
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "binaries present in source code",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"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 1/29 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 7 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": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 29 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 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "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": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 498 resolved dependencies against OSV; 1 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 498
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 1
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 498,
"unassessed_packages": 1,
"affected_by_severity": "none",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 498,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "moderate",
"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": 50,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": true,
"exposures": [
{
"role": "top_contributor",
"count": 1,
"country": "Russia"
}
],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 14
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "Russia: top_contributor (1)",
"points": 50,
"status": "partial",
"details": [
{
"code": "jurisdiction_exposure",
"params": {
"role": "top_contributor",
"count": 1,
"country": "Russia"
}
}
],
"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": "good",
"name": "AI Readiness",
"value": 71,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"CLAUDE.md",
"src/tools/ta_regtest/CLAUDE.md",
"ta_codegen/generator/CLAUDE.md"
],
"agent_instruction_max_bytes": 27322
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "78 of 78 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 78,
"sampled": 78
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Cargo.lock",
"pnpm-lock.yaml"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.09,
"toolchain_manifests": [
"ta_codegen/generator/Cargo.toml",
"ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
"ta_codegen/output/rust/Cargo.toml",
"ta_codegen/output/rust/library/Cargo.toml",
"ta_codegen/output/rust/tools/Cargo.toml"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml"
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Java (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Java"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"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": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 88,
"inputs": {
"primary_language": "Java",
"largest_source_bytes": 12329300,
"source_files_sampled": 922,
"oversized_source_files": 196
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Java (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Java"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "196/922 source files over 60KB",
"points": 43.3,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 922,
"oversized": 196
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"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": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"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": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch npm package 'ta-lib.org' from its registry",
"Could not fetch crates package 'ta-codegen' from its registry"
],
"report_type": "repository",
"generated_at": "2026-07-27T10:40:35.789371Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/TA-Lib/ta-lib.svg",
"full_name": "TA-Lib/ta-lib",
"license_state": "standard",
"license_spdx": "BSD-3-Clause"
}