RepoTrust

Leaderboard github.com

TfTHacker/timeline-for-bases

Timeline view for Bases in Obsidain

  • View repository ↗
  • TypeScript
  • ★ 89
  • commit f72f35d78711
  • scored 2026-11-14
  • scoring prov-4+qual-2+sec-2

AI provenance

1%

possible

Confidence
65%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

64/100

weak

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

66/100

weak

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 1 possible 65% 100%
Code quality 64 weak 90% 100%
Security 66 weak 85% 100%

AI provenance

Weak signals consistent with AI-assisted development. 1 commit(s) carry explicit AI attribution, too few to characterize the codebase.

  • Explicitly attributed share (lower bound): 0.8%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 0.8%
AI tool Attributed commits Lines added
Claude Code 1 64

Current source lines last changed by AI-attributed commits: 34 of 4,315.

Too few lines in one group to compare finding densities.

Month Lines added Attributed to AI
2026-03 6,330 1%
2026-04 1,472 0%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (28d69158b00b)

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is weak: test-to-source ratio 0.10, no CI test run detected; 14% of function code in complex or long functions; 3% duplicated lines. Weakest area: testing.

Area Score
Complexity (lizard) 66
Duplication 84
Code smells (Opengrep) 56
Tests and CI 41
Documentation 85
Type safety 100
Process (Scorecard review/maintenance) n/a
  • Functions: 330; mean complexity 3.4, 90th percentile 8; 6 complex and 2 long functions
  • Duplicated lines: 2.8% of 3,248 compared
  • Tests: 412 test lines for 4,315 source lines (ratio 0.10); CI test commands: none detected; 3% of recent source commits also change tests
  • Docs missing or thin: contributing

Most complex functions:

Security

Security posture is weak: 15 known vulnerabilities in 5 dependencies; 4 high-severity workflow issues. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 80
Vulnerable dependencies (OSV) 56
CI workflows (zizmor) 51
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Known vulnerabilities: 15 in 5 packages (critical 0, high 10, medium 5, low 0)

  • Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits

Top findings

Severity Finding Location
high osv/GHSA-3jxr-9vmj-r5cp: brace-expansion@1.1.12 (npm) is affected by GHSA-3jxr-9vmj-r5cp package-lock.json
high osv/GHSA-6j4f-fj2g-mc7p: brace-expansion@1.1.12 (npm) is affected by GHSA-6j4f-fj2g-mc7p package-lock.json
high osv/GHSA-mh99-v99m-4gvg: brace-expansion@1.1.12 (npm) is affected by GHSA-mh99-v99m-4gvg package-lock.json
high osv/GHSA-qhr7-859c-m2p7: brace-expansion@1.1.12 (npm) is affected by GHSA-qhr7-859c-m2p7 package-lock.json
high osv/GHSA-rgw5-rvv9-x895: brace-expansion@1.1.12 (npm) is affected by GHSA-rgw5-rvv9-x895 package-lock.json
high osv/GHSA-rf6f-7fwh-wjgh: flatted@3.4.1 (npm) is affected by GHSA-rf6f-7fwh-wjgh package-lock.json
high osv/GHSA-2883-xcg3-v3hh: js-yaml@4.1.1 (npm) is affected by GHSA-2883-xcg3-v3hh package-lock.json
high osv/GHSA-52cp-r559-cp3m: js-yaml@4.1.1 (npm) is affected by GHSA-52cp-r559-cp3m package-lock.json
high osv/GHSA-5p4m-2wfm-xmqj: js-yaml@4.1.1 (npm) is affected by GHSA-5p4m-2wfm-xmqj package-lock.json
high osv/GHSA-c2c7-rcm5-vvqj: picomatch@2.3.1 (npm) is affected by GHSA-c2c7-rcm5-vvqj package-lock.json
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/release.yml:20
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/release.yml:23
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/release.yml:51
high zizmor/cache-poisoning: runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] .github/workflows/release.yml:23
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename: Detected that function argument dirPath has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low] scripts/push-to-nexus.mjs:13
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal: Detected possible user input going into a path.join or path.resolve function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low] scripts/push-to-nexus.mjs:17
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal: Detected possible user input going into a path.join or path.resolve function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low] scripts/push-to-nexus.mjs:18
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename: Detected that function argument filename has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low] scripts/push-to-nexus.mjs:20
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename: Detected that function argument filename has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low] scripts/push-to-nexus.mjs:24
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename: Detected that function argument filename has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low] scripts/push-to-nexus.mjs:24
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename: Detected that function argument watchPath has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low] scripts/watch.mjs:58
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename: Detected that function argument watchPath has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low] scripts/watch.mjs:59
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a indent function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low] src/timeline-base-yaml.ts:35
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a indent function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low] src/timeline-base-yaml.ts:60
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a key function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low] src/timeline-view.ts:611

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Repository profile

  • Source lines: 4,315; test lines: 412
Language Lines
TypeScript 4,463
JavaScript 233
Shell 31

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/TfTHacker/timeline-for-bases/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/TfTHacker/timeline-for-bases/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/TfTHacker/timeline-for-bases/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/TfTHacker/timeline-for-bases/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/TfTHacker/timeline-for-bases/security.svg)](https://repotrust.synapticcyber.com/r/github.com/TfTHacker/timeline-for-bases/)