OpenWhispr/openwhispr

Voice-to-text dictation app with local (Nvidia Parakeet/Whisper) and cloud models (BYOK). Privacy-first and available cross-platform.

JavaScript★ 7,523+121 that day#7 on trending

Analyzed September 7, 2026 at a9cf27b (main) with jscpd 5.4.0 in 1.1s.

2.49%duplicated code · 4,662 of 187,463 lines
340clones in code
767code files of 1,289 scanned
3.34%duplicated over all files · 838 clones

The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.

Largest clones in the code

  • 19 lines in 2 placesc829 tokens
    4* Uses AT-SPI2 to monitor the focused text field for value changes.
    5* Outputs "CHANGED:<value>" to stdout when the text changes.
    6* Exits after a timeout or on receiving a termination signal.
    7*
    8* Protocol (stdout):
    9*   INITIAL_VALUE:<text>  - Initial text field value
    10*   INITIAL_VALUE_B64:<base64> - Initial text field value (multiline)
    11*   CHANGED:<text>        - Text field value after a change
    12*   CHANGED_B64:<base64>  - Text field value after a change (multiline)
    13*   EDITABLE              - Focused element is writable with no live selection (--probe-editable)
    

    First 10 of 19 lines.

  • 80 lines in 2 placesjavascript381 tokens
    105    return false;
    106  }
    107
    108  log("Download failed or binary not found after download");
    109  return false;
    110}
    111
    112/**
    113 * Quote a path for use in shell commands on Windows.
    114 * @param {string} p - Path to quote
    

    First 10 of 80 lines.

  • 79 lines in 2 placesjavascript368 tokens
    70  process.exit(1);
    71}
    72
    73ensureDir(outputDir);
    74ensureDir(moduleCacheDir);
    75
    76let needsBuild = true;
    77if (fs.existsSync(outputBinary)) {
    78  if (!verifyBinaryArch(outputBinary, targetArch)) {
    79    log(`Existing binary is wrong architecture (expected ${targetArch}), rebuild needed`);
    

    First 10 of 79 lines.

7 more
Largest clones over all files, tests and data included
By format, code only
FormatFilesLinesClonesDuplicated linesDuplication
javascript26284,4392443,4874.13%
tsx20352,469567131.36%
typescript24337,476272990.8%
c105,88791131.92%
objectivec141,6972342%
perl24541102.2%
cpp3400161.5%
swift72,107000%
jsx31,035000%
bash12866000%
By format, all files
FormatFilesLinesClonesDuplicated linesDuplication
javascript702161,4566988,5765.31%
tsx20352,469567131.36%
typescript24637,570272990.8%
yaml171,6382543326.43%
json1941,82692610.62%
c105,88791131.92%
css42,4687622.51%
python494039410%
objectivec141,6972342%
perl24541102.2%

Trending appearances

DayRankStarsFilesLinesClonesAll filesCodeHealthCommit
Sep 7, 2026#77,523 (+121)1,289316,9318383.34%2.49%—a9cf27b

Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.