EtienneLescot/openscreen
View on GitHub ↗
Unique within the repo — the other 21% repeats across its own files.
Unique across all public code — a further 15% is its own but appears in other public repos too.
Original and tidy — it rarely repeats itself, and little of it turns up in other public code. About as close to genuinely its own work as this metric can measure.
Worth consolidating — in the code
Real, actionable duplication in this repo's source, most concrete first.
Longest identical blocks
The longest runs of identical consecutive lines copied between two files (indentation ignored) — the most concrete copy-paste. Lift the block into a shared function or module.
| Lines | File A | File B | Cross-repo |
|---|---|---|---|
| 35 | EtienneLescot/openscreen/scripts/test-linux-audio-timeline.mjs:350 |
EtienneLescot/openscreen/scripts/test-macos-audio-timeline.mjs:370 |
same repo |
| 29 | EtienneLescot/openscreen/crates/compositor/src/pipeline_linux.rs:1164 |
EtienneLescot/openscreen/crates/compositor/src/pipeline_macos.rs:1324 |
same repo |
| 26 | EtienneLescot/openscreen/crates/compositor/src/cpu_frames_windows.rs:112 |
EtienneLescot/openscreen/crates/compositor/src/mac_frames.rs:209 |
same repo |
| 24 | EtienneLescot/openscreen/crates/compositor/src/text_macos.rs:73 |
EtienneLescot/openscreen/crates/compositor/src/text_windows.rs:76 |
same repo |
| 18 | EtienneLescot/openscreen/electron/mcp/app-channel.test.ts:44 |
EtienneLescot/openscreen/electron/mcp/openscreen-mcp-server.test.ts:53 |
same repo |
| 17 | EtienneLescot/openscreen/scripts/test-macos-audio-timeline.mjs:161 |
EtienneLescot/openscreen/scripts/test-windows-audio-timeline.mjs:59 |
same repo |
| 16 | EtienneLescot/openscreen/crates/compositor/src/pipeline_macos.rs:625 |
EtienneLescot/openscreen/crates/compositor/src/pipeline_windows.rs:1053 |
same repo |
| 16 | EtienneLescot/openscreen/crates/compositor/src/text_linux.rs:54 |
EtienneLescot/openscreen/crates/compositor/src/text_windows.rs:75 |
same repo |
| 16 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.test.ts:67 |
EtienneLescot/openscreen/electron/ai-edition/deep-agent/service.test.ts:164 |
same repo |
| 16 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.test.ts:67 |
EtienneLescot/openscreen/electron/mcp/openscreen-mcp-server.test.ts:51 |
same repo |
| 16 | EtienneLescot/openscreen/scripts/test-windows-camera-selection.mjs:76 |
EtienneLescot/openscreen/scripts/test-windows-microphone-selection.mjs:66 |
same repo |
| 15 | EtienneLescot/openscreen/crates/compositor/src/text_linux.rs:55 |
EtienneLescot/openscreen/crates/compositor/src/text_macos.rs:73 |
same repo |
| 15 | EtienneLescot/openscreen/scripts/test-linux-audio-timeline.mjs:186 |
EtienneLescot/openscreen/scripts/test-windows-audio-timeline.mjs:60 |
same repo |
| 14 | EtienneLescot/openscreen/crates/compositor/src/cpu_frames_windows.rs:112 |
EtienneLescot/openscreen/crates/compositor/src/linux_frames.rs:156 |
same repo |
| 14 | EtienneLescot/openscreen/crates/compositor/src/linux_frames.rs:156 |
EtienneLescot/openscreen/crates/compositor/src/mac_frames.rs:209 |
same repo |
| 13 | EtienneLescot/openscreen/crates/compositor/tests/cursor_model_render.rs:331 |
EtienneLescot/openscreen/crates/compositor/tests/format_fill_tilt_render.rs:88 |
same repo |
| 13 | EtienneLescot/openscreen/crates/compositor/tests/cursor_model_render.rs:348 |
EtienneLescot/openscreen/crates/compositor/tests/device_frame_render.rs:1456 |
same repo |
| 13 | EtienneLescot/openscreen/src/lib/ai-edition/document/insertion.test.ts:48 |
EtienneLescot/openscreen/src/lib/ai-edition/document/timeline.test.ts:651 |
same repo |
| 12 | EtienneLescot/openscreen/.github/workflows/build.yml:1253 |
EtienneLescot/openscreen/.github/workflows/publish-msstore.yml:161 |
same repo |
| 12 | EtienneLescot/openscreen/crates/compositor/tests/cursor_model_render.rs:332 |
EtienneLescot/openscreen/crates/compositor/tests/follow_camera_render.rs:112 |
same repo |
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 17% | 1508 | EtienneLescot/openscreen/crates/compositor/src/pipeline_macos.rs |
EtienneLescot/openscreen/crates/compositor/src/pipeline_windows.rs |
same repo |
| 10% | 1321 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.ts |
EtienneLescot/openscreen/electron/ai-edition/deep-agent/service.ts |
same repo |
| 10% | 1307 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.test.ts |
EtienneLescot/openscreen/electron/ai-edition/agent-tools.ts |
same repo |
| 13% | 1013 | EtienneLescot/openscreen/crates/compositor/src/pipeline_linux.rs |
EtienneLescot/openscreen/crates/compositor/src/pipeline_macos.rs |
same repo |
| 10% | 1008 | EtienneLescot/openscreen/crates/compositor/src/pipeline_linux.rs |
EtienneLescot/openscreen/crates/compositor/src/pipeline_windows.rs |
same repo |
| 6% | 987 | EtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs |
EtienneLescot/openscreen/crates/compositor/src/live.rs |
same repo |
| 7% | 851 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.test.ts |
EtienneLescot/openscreen/electron/ai-edition/deep-agent/service.ts |
same repo |
| 5% | 814 | EtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs |
EtienneLescot/openscreen/crates/compositor/src/regions.rs |
same repo |
| 7% | 811 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.ts |
EtienneLescot/openscreen/src/lib/ai-edition/document/timeline.ts |
same repo |
| 5% | 795 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.ts |
EtienneLescot/openscreen/src/components/ai-edition/RightPanes.tsx |
same repo |
| 32% | 773 | EtienneLescot/openscreen/scripts/test-linux-audio-timeline.mjs |
EtienneLescot/openscreen/scripts/test-macos-audio-timeline.mjs |
same repo |
| 5% | 766 | EtienneLescot/openscreen/src/components/ai-edition/RightPanes.tsx |
EtienneLescot/openscreen/src/components/ai-edition/v4/V4Timeline.tsx |
same repo |
| 5% | 751 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.ts |
EtienneLescot/openscreen/src/components/ai-edition/v4/V4Timeline.tsx |
same repo |
| 6% | 717 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.ts |
EtienneLescot/openscreen/src/lib/ai-edition/schema/index.ts |
same repo |
| 5% | 699 | EtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs |
EtienneLescot/openscreen/crates/compositor/src/scene.rs |
same repo |
| 5% | 691 | EtienneLescot/openscreen/crates/compositor/src/live.rs |
EtienneLescot/openscreen/crates/compositor/src/pipeline_windows.rs |
same repo |
| 4% | 674 | EtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs |
EtienneLescot/openscreen/crates/compositor/src/pipeline_windows.rs |
same repo |
| 5% | 671 | EtienneLescot/openscreen/electron/ai-edition/deep-agent/service.ts |
EtienneLescot/openscreen/src/components/ai-edition/RightPanes.tsx |
same repo |
| 6% | 654 | EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rs |
EtienneLescot/openscreen/crates/compositor/src/live.rs |
same repo |
| 5% | 650 | EtienneLescot/openscreen/src/components/ai-edition/NewEditorShell.tsx |
EtienneLescot/openscreen/src/components/ai-edition/RightPanes.tsx |
same repo |
Duplicate declarations
The same function, variable, class, or type name declared in more than one file — a fast copy-paste signal. Consider extracting a shared definition.
| Files | Declaration | Where |
|---|---|---|
| 71 | var mut |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/build.rsEtienneLescot/openscreen/crates/compositor/examples/decode_bench_macos.rs+68 more |
| 47 | var some |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/build.rsEtienneLescot/openscreen/crates/compositor/src/audio.rs+44 more |
| 32 | var scene |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/examples/live_free_run_bench_macos.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs+29 more |
| 27 | var path |
EtienneLescot/openscreen/crates/compositor/build.rsEtienneLescot/openscreen/crates/compositor/examples/decode_bench_macos.rsEtienneLescot/openscreen/crates/compositor/examples/decode_pure_macos.rs+24 more |
| 25 | var comp |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/examples/live_free_run_bench_macos.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs+22 more |
| 23 | var GPU |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/examples/decode_bench_macos.rsEtienneLescot/openscreen/crates/compositor/examples/live_free_run_bench_macos.rs+20 more |
| 21 | fn drop |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/src/audio.rsEtienneLescot/openscreen/crates/compositor/src/audio_jobs.rs+18 more |
| 18 | type AxcutDocument |
EtienneLescot/openscreen/electron/ai-edition/agent-tools.test.tsEtienneLescot/openscreen/electron/ai-edition/agent-tools.tsEtienneLescot/openscreen/electron/ai-edition/caption-tools.test.ts+15 more |
| 18 | var frame |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/examples/decode_pure_macos.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs+15 more |
| 18 | var std |
EtienneLescot/openscreen/crates/compositor/src/audio.rsEtienneLescot/openscreen/crates/compositor/src/cursor.rsEtienneLescot/openscreen/crates/compositor/src/d3d_linux.rs+15 more |
| 17 | var rgba |
EtienneLescot/openscreen/crates/compositor/src/compositor_windows.rsEtienneLescot/openscreen/crates/compositor/src/cursor_sdf.rsEtienneLescot/openscreen/crates/compositor/src/gif_export.rs+14 more |
| 17 | fn scene_json |
EtienneLescot/openscreen/crates/compositor/src/scene.rsEtienneLescot/openscreen/crates/compositor/tests/animated_background.rsEtienneLescot/openscreen/crates/compositor/tests/click_impact_render.rs+14 more |
| 16 | var source |
EtienneLescot/openscreen/crates/compositor/build.rsEtienneLescot/openscreen/crates/compositor/examples/live_free_run_bench_macos.rsEtienneLescot/openscreen/crates/compositor/src/audio.rs+13 more |
| 15 | var src |
EtienneLescot/openscreen/crates/compositor/build.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rsEtienneLescot/openscreen/crates/compositor/src/cpu_frames_windows.rs+12 more |
| 14 | var screen |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rsEtienneLescot/openscreen/crates/compositor/src/pipeline_windows.rs+11 more |
| 14 | var track |
EtienneLescot/openscreen/crates/compositor/src/audio.rsEtienneLescot/openscreen/crates/compositor/src/cursor.rsEtienneLescot/openscreen/crates/compositor/src/regions.rs+11 more |
| 13 | type blur |
EtienneLescot/openscreen/crates/compositor/src/scene.rsEtienneLescot/openscreen/electron/ai-edition/agent-tools.test.tsEtienneLescot/openscreen/electron/ai-edition/agent-tools.ts+10 more |
| 13 | fn render |
EtienneLescot/openscreen/crates/compositor/tests/animated_background.rsEtienneLescot/openscreen/crates/compositor/tests/cursor_model_render.rsEtienneLescot/openscreen/crates/compositor/tests/cursor_tap_render.rs+10 more |
| 12 | var desc |
EtienneLescot/openscreen/crates/compositor/src/compositor_windows.rsEtienneLescot/openscreen/crates/compositor/src/cpu_frames_windows.rsEtienneLescot/openscreen/crates/compositor/src/d3d_linux.rs+9 more |
| 12 | var frames |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/examples/decode_bench_macos.rsEtienneLescot/openscreen/crates/compositor/examples/decode_pure_macos.rs+9 more |
| 12 | var start |
EtienneLescot/openscreen/crates/compositor/src/audio.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rsEtienneLescot/openscreen/crates/compositor/src/cursor.rs+9 more |
| 12 | var target |
EtienneLescot/openscreen/crates/compositor/src/audio.rsEtienneLescot/openscreen/crates/compositor/src/camera.rsEtienneLescot/openscreen/crates/compositor/src/export_control.rs+9 more |
| 12 | var width |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/examples/live_free_run_bench_macos.rsEtienneLescot/openscreen/crates/compositor/src/camera.rs+9 more |
| 11 | var base |
EtienneLescot/openscreen/crates/compositor/src/audio.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rsEtienneLescot/openscreen/crates/compositor/src/config.rs+8 more |
| 11 | var cfg |
EtienneLescot/openscreen/crates/compositor-view-napi/src/lib.rsEtienneLescot/openscreen/crates/compositor/src/compositor_windows.rsEtienneLescot/openscreen/crates/compositor/tests/compose_linux.rs+8 more |
Docs & prose
Near-identical documentation — often translations (e.g. README.md ⇄ README_zh-CN.md) or mirrored guides. Usually intentional, not cleanup — listed separately so it doesn't inflate the code signal above.
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 5% | 497 | EtienneLescot/openscreen/docs/3d-effects-v2.md |
EtienneLescot/openscreen/docs/shader-effects.md |
same repo |
| 98% | 437 | EtienneLescot/openscreen/public/fonts/Caveat-OFL.txt |
EtienneLescot/openscreen/public/fonts/Oswald-OFL.txt |
same repo |
| 98% | 437 | EtienneLescot/openscreen/public/fonts/Lora-OFL.txt |
EtienneLescot/openscreen/public/fonts/Oswald-OFL.txt |
same repo |
| 98% | 436 | EtienneLescot/openscreen/public/fonts/Caveat-OFL.txt |
EtienneLescot/openscreen/public/fonts/Inter-OFL.txt |
same repo |
| 97% | 436 | EtienneLescot/openscreen/public/fonts/Caveat-OFL.txt |
EtienneLescot/openscreen/public/fonts/Lora-OFL.txt |
same repo |
| 97% | 435 | EtienneLescot/openscreen/public/fonts/Inter-OFL.txt |
EtienneLescot/openscreen/public/fonts/Oswald-OFL.txt |
same repo |
| 96% | 435 | EtienneLescot/openscreen/public/fonts/Inter-OFL.txt |
EtienneLescot/openscreen/public/fonts/Lora-OFL.txt |
same repo |
| 97% | 433 | EtienneLescot/openscreen/public/fonts/Oswald-OFL.txt |
EtienneLescot/openscreen/src/assets/fonts/OFL.txt |
same repo |
| 97% | 433 | EtienneLescot/openscreen/public/fonts/Caveat-OFL.txt |
EtienneLescot/openscreen/src/assets/fonts/OFL.txt |
same repo |
| 96% | 433 | EtienneLescot/openscreen/public/fonts/Lora-OFL.txt |
EtienneLescot/openscreen/src/assets/fonts/OFL.txt |
same repo |
| 97% | 432 | EtienneLescot/openscreen/public/fonts/Caveat-OFL.txt |
EtienneLescot/openscreen/public/fonts/IBMPlexMono-OFL.txt |
same repo |
| 96% | 432 | EtienneLescot/openscreen/public/fonts/Inter-OFL.txt |
EtienneLescot/openscreen/src/assets/fonts/OFL.txt |
same repo |
| 96% | 432 | EtienneLescot/openscreen/public/fonts/IBMPlexMono-OFL.txt |
EtienneLescot/openscreen/public/fonts/Lora-OFL.txt |
same repo |
| 96% | 431 | EtienneLescot/openscreen/public/fonts/IBMPlexMono-OFL.txt |
EtienneLescot/openscreen/public/fonts/Oswald-OFL.txt |
same repo |
| 96% | 431 | EtienneLescot/openscreen/public/fonts/IBMPlexMono-OFL.txt |
EtienneLescot/openscreen/public/fonts/Inter-OFL.txt |
same repo |
| 95% | 428 | EtienneLescot/openscreen/public/fonts/IBMPlexMono-OFL.txt |
EtienneLescot/openscreen/src/assets/fonts/OFL.txt |
same repo |
Largest files
Largest files
| LOC | File | Status |
|---|---|---|
| — | EtienneLescot/openscreen/design/openscreen-editor-v2.html | skipped from indexing (too large to index (2.0 MB)) |
| 9386 | EtienneLescot/openscreen/crates/compositor/src/frame_geometry.rs | skipped from indexing (over 0 LOC) |
| 7407 | EtienneLescot/openscreen/crates/compositor/src/compositor_linux.rs | skipped from indexing (over 0 LOC) |
| 5262 | EtienneLescot/openscreen/electron/ipc/handlers.ts | skipped from indexing (over 0 LOC) |
| 5230 | EtienneLescot/openscreen/crates/compositor/src/compositor_macos.rs | skipped from indexing (over 0 LOC) |
| 4692 | EtienneLescot/openscreen/design/openscreen-editor.html | indexed |
| 4322 | EtienneLescot/openscreen/src/components/ai-edition/RightPanes.tsx | indexed |
| 4136 | EtienneLescot/openscreen/crates/compositor/src/compositor_windows.rs | indexed |
| 4000 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.test.ts | indexed |
| 3860 | EtienneLescot/openscreen/electron/ai-edition/agent-tools.ts | indexed |