https://github.com/weckere/quipclipper
· scanned 2026-06-16 00:56 UTC (2 months, 1 week ago)
62 raw signals (0 security + 62 graph)
Last scanned 2 months, 1 week ago · v1 · 58 actionable findings from 1 signal source. 4 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 555 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
test_is_matroska |
software | healthy | tests/test_mkv.py:21 |
test_audio_track_ids_all_by_default |
software | healthy | tests/test_mkv.py:27 |
test_audio_track_ids_maps_relative_index_to_global_id |
software | healthy | tests/test_mkv.py:31 |
test_audio_track_ids_ignores_out_of_range |
software | healthy | tests/test_mkv.py:37 |
_video_args |
software | healthy | tests/test_mkv.py:41 |
test_build_args_video_all_tracks_uses_split_parts |
software | healthy | tests/test_mkv.py:51 |
test_build_args_video_selected_audio_and_no_subs |
software | healthy | tests/test_mkv.py:61 |
test_build_args_no_chapters_flag |
software | healthy | tests/test_mkv.py:67 |
test_build_args_audio_only_drops_video_and_subs |
software | healthy | tests/test_mkv.py:72 |
test_build_args_video_embeds_sidecar_as_extra_input |
software | healthy | tests/test_mkv.py:82 |
test_subtitle_track_ids |
software | healthy | tests/test_mkv.py:88 |
test_build_args_default_subtitle_flag |
software | healthy | tests/test_mkv.py:93 |
test_build_args_no_default_flag_without_selection |
software | healthy | tests/test_mkv.py:104 |
test_human_size |
software | healthy | tests/test_mkv.py:108 |
test_estimate_remux_bytes_sums_source_and_extras |
software | healthy | tests/test_mkv.py:115 |
test_estimate_remux_bytes_ignores_missing_extras |
software | healthy | tests/test_mkv.py:124 |
test_load_parses_all_cues |
software | healthy | tests/test_subtitles.py:16 |
test_text_is_cleaned_of_markup_and_newlines |
software | healthy | tests/test_subtitles.py:24 |
test_cues_are_sorted_and_indexed_contiguously |
software | healthy | tests/test_subtitles.py:34 |
test_missing_file_raises |
software | healthy | tests/test_subtitles.py:40 |
test_find_sidecar |
software | healthy | tests/test_subtitles.py:45 |
test_find_sidecar_prefixed |
software | healthy | tests/test_subtitles.py:53 |
test_resolve_subtitles_missing_video_raises_clean_error |
software | healthy | tests/test_subtitles.py:61 |
test_resolve_subtitles_requires_a_source |
software | healthy | tests/test_subtitles.py:68 |
_trk |
software | healthy | tests/test_subtitles.py:75 |
test_best_track_empty_is_none |
software | healthy | tests/test_subtitles.py:82 |
test_best_track_prefers_full_english_over_sdh_and_forced |
software | healthy | tests/test_subtitles.py:86 |
test_best_track_prefers_sdh_over_forced_when_only_those_two |
software | healthy | tests/test_subtitles.py:95 |
test_best_track_detects_forced_and_sdh_by_title_without_dis… |
software | healthy | tests/test_subtitles.py:104 |
test_best_track_treats_untagged_language_as_english |
software | healthy | tests/test_subtitles.py:113 |
test_best_track_ties_keep_container_order |
software | healthy | tests/test_subtitles.py:120 |
test_best_track_prefers_text_over_image |
software | healthy | tests/test_subtitles.py:125 |
test_best_track_text_wins_even_when_image_is_plain_dialogue |
software | healthy | tests/test_subtitles.py:137 |
test_best_track_falls_back_to_image_when_only_option |
software | healthy | tests/test_subtitles.py:147 |
mk |
software | healthy | tests/test_cli.py:12 |
test_parse_tracks_none |
software | healthy | tests/test_cli.py:17 |
test_parse_tracks_list |
software | healthy | tests/test_cli.py:22 |
test_parse_tracks_invalid |
software | healthy | tests/test_cli.py:27 |
test_select_single_candidate_autoselects |
software | healthy | tests/test_cli.py:32 |
boom |
software | healthy | tests/test_cli.py:33 |
test_select_parses_indices |
software | healthy | tests/test_cli.py:41 |
test_select_all |
software | healthy | tests/test_cli.py:47 |
test_select_dedupes_preserving_order |
software | healthy | tests/test_cli.py:53 |
test_select_out_of_range_rejected |
software | healthy | tests/test_cli.py:59 |
test_select_empty_rejected |
software | healthy | tests/test_cli.py:66 |
test_clip_audio_format_rejects_bad_value |
software | healthy | tests/test_cli.py:75 |
test_clip_audio_format_rejects_video |
software | healthy | tests/test_cli.py:83 |
test_clip_audio_format_rejects_with_split |
software | healthy | tests/test_cli.py:91 |
test_clip_audio_format_passes_codec_to_cut_clip |
software | healthy | tests/test_cli.py:102 |
fake_cut |
software | healthy | tests/test_cli.py:110 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
pyproject.toml |
software | healthy | pyproject.toml |
LICENSE |
software | healthy | LICENSE |
test_mkv.py |
software | healthy | tests/test_mkv.py |
test_subtitles.py |
software | healthy | tests/test_subtitles.py |
test_cli.py |
software | healthy | tests/test_cli.py |
test_clip.py |
software | healthy | tests/test_clip.py |
test_search.py |
software | healthy | tests/test_search.py |
WEBAPP_PLAN.md |
software | healthy | docs/WEBAPP_PLAN.md |
MANUAL.md |
software | healthy | docs/MANUAL.md |
DESIGN_NOTES.md |
software | healthy | docs/DESIGN_NOTES.md |
Dockerfile |
software | healthy | web/Dockerfile |
docker-compose.yml |
software | healthy | web/docker-compose.yml |
styles.css |
software | healthy | web/frontend/styles.css |
index.html |
software | healthy | web/frontend/index.html |
app.js |
software | healthy | web/frontend/app.js |
Dockerfile |
software | healthy | web/nginx/Dockerfile |
README.md |
software | healthy | web/backend/README.md |
pyproject.toml |
software | healthy | web/backend/pyproject.toml |
test_library.py |
software | healthy | web/backend/tests/test_library.py |
test_sub_cache.py |
software | healthy | web/backend/tests/test_sub_cache.py |
test_health.py |
software | healthy | web/backend/tests/test_health.py |
test_media_and_routes.py |
software | healthy | web/backend/tests/test_media_and_routes.py |
__init__.py |
software | healthy | web/backend/quipclipper_web/__init__.py |
library.py |
software | healthy | web/backend/quipclipper_web/library.py |
jellyfin.py |
software | healthy | web/backend/quipclipper_web/jellyfin.py |
config.py |
software | healthy | web/backend/quipclipper_web/config.py |
app.py |
software | healthy | web/backend/quipclipper_web/app.py |
jobs.py |
software | healthy | web/backend/quipclipper_web/jobs.py |
bookmarks.py |
software | healthy | web/backend/quipclipper_web/bookmarks.py |
__main__.py |
software | healthy | web/backend/quipclipper_web/__main__.py |
sub_cache.py |
software | healthy | web/backend/quipclipper_web/sub_cache.py |
media.py |
software | healthy | web/backend/quipclipper_web/media.py |
ci.yml |
software | healthy | .github/workflows/ci.yml |
__init__.py |
software | healthy | src/quipclipper/__init__.py |
clip.py |
software | healthy | src/quipclipper/clip.py |
subtitles.py |
software | healthy | src/quipclipper/subtitles.py |
cli.py |
software | healthy | src/quipclipper/cli.py |
models.py |
software | healthy | src/quipclipper/models.py |
search.py |
software | healthy | src/quipclipper/search.py |
mkv.py |
software | healthy | src/quipclipper/mkv.py |
| Label | Layer | Status | Path |
|---|---|---|---|
GET /api/health |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/config |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/library/roots |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/library/browse |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/library/search |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/items |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/items/subtitles |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/search |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/search/folder |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/search/folder/index-status |
api | healthy | web/backend/quipclipper_web/app.py |
POST /api/search/folder/index |
api | healthy | web/backend/quipclipper_web/app.py |
POST /api/items/subtitles/reindex |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/media |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/media/keyframe |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/media/transcode |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/media/hls |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/media/hls/{token}/{name} |
api | healthy | web/backend/quipclipper_web/app.py |
POST /api/clip |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/jobs |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/jobs/{job_id} |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/jobs/{job_id}/download/{filename} |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/bookmarks |
api | healthy | web/backend/quipclipper_web/app.py |
POST /api/bookmarks |
api | healthy | web/backend/quipclipper_web/app.py |
PATCH /api/bookmarks/{bookmark_id} |
api | healthy | web/backend/quipclipper_web/app.py |
DELETE /api/bookmarks |
api | healthy | web/backend/quipclipper_web/app.py |
DELETE /api/bookmarks/{bookmark_id} |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/clips |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/clips/download/{clip_path:path} |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/clips/stream/{clip_path:path} |
api | healthy | web/backend/quipclipper_web/app.py |
GET /api/jellyfin/meta |
api | healthy | web/backend/quipclipper_web/app.py |
| Label | Layer | Status | Path |
|---|---|---|---|
PathNotAllowed |
software | healthy | web/backend/quipclipper_web/library.py:19 |
Entry |
software | healthy | web/backend/quipclipper_web/library.py:40 |
JellyfinMeta |
software | healthy | web/backend/quipclipper_web/jellyfin.py:29 |
JellyfinClient |
software | healthy | web/backend/quipclipper_web/jellyfin.py:42 |
Settings |
software | healthy | web/backend/quipclipper_web/config.py:24 |
BookmarkCreate |
software | healthy | web/backend/quipclipper_web/app.py:177 |
BookmarkUpdate |
software | healthy | web/backend/quipclipper_web/app.py:191 |
ClipRequest |
software | healthy | web/backend/quipclipper_web/app.py:199 |
Status |
software | healthy | web/backend/quipclipper_web/jobs.py:24 |
Job |
software | healthy | web/backend/quipclipper_web/jobs.py:32 |
JobRegistry |
software | healthy | web/backend/quipclipper_web/jobs.py:65 |
Bookmark |
software | healthy | web/backend/quipclipper_web/bookmarks.py:27 |
BookmarkStore |
software | healthy | web/backend/quipclipper_web/bookmarks.py:48 |
SubtitleCache |
software | healthy | web/backend/quipclipper_web/sub_cache.py:33 |
ClipRange |
software | healthy | src/quipclipper/clip.py:101 |
SubtitleTrack |
software | healthy | src/quipclipper/subtitles.py:56 |
StreamInfo |
software | healthy | src/quipclipper/subtitles.py:112 |
ResolvedSubtitles |
software | healthy | src/quipclipper/subtitles.py:284 |
Cue |
software | healthy | src/quipclipper/models.py:20 |
Match |
software | healthy | src/quipclipper/models.py:42 |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
docs |
software | healthy | docs |
web |
software | healthy | web |
frontend |
software | healthy | web/frontend |
nginx |
software | healthy | web/nginx |
backend |
software | healthy | web/backend |
tests |
software | healthy | web/backend/tests |
quipclipper_web |
software | healthy | web/backend/quipclipper_web |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
quipclipper |
software | healthy | src/quipclipper |
| Label | Layer | Status | Path |
|---|---|---|---|
image::web/Dockerfile |
hardware | healthy | web/Dockerfile |
image::web/nginx/Dockerfile |
hardware | healthy | web/nginx/Dockerfile |
app |
hardware | healthy | web/docker-compose.yml |
web |
hardware | healthy | web/docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8000 |
network | healthy | web/Dockerfile |
port:8896 |
network | healthy | web/docker-compose.yml |
port:80 |
network | healthy | web/docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
test |
cicd | healthy | .github/workflows/ci.yml |
web |
cicd | healthy | .github/workflows/ci.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-nouf_c7c |
software | healthy | /tmp/repobility-clone-nouf_c7c |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | web/backend/README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
This page is publicly accessible at:
https://repobility.com/scan/c5d153a2-1e17-4e38-a397-4223c87157e7/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/c5d153a2-1e17-4e38-a397-4223c87157e7/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.