{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T15:39:10.170681Z","repo":{"ref":{"host":"github.com","owner":"Flow-Launcher","name":"Flow.Launcher"},"default_branch":"dev","clone_url":"https://github.com/Flow-Launcher/Flow.Launcher.git","html_url":"https://github.com/Flow-Launcher/Flow.Launcher","description":":mag: Quick file search & app launcher for Windows with community-made plugins","stars":16027,"forks":682,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":100967,"primary_language":"C#","license_spdx":"MIT","created_at":"2020-04-21T08:12:15Z","pushed_at":"2026-11-14T12:12:47Z","security_policy_url":null,"distribution":{"owner_created_at":"2020-03-29T01:39:32Z","owner_type":"Organization","release_assets":[{"name":"Flow-Launcher-Portable.zip","size":206006357,"download_count":11634,"release_tag":"v2.1.4","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.4/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":101789184,"download_count":55276,"release_tag":"v2.1.4","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.4/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.1.4-full.nupkg","size":101790641,"download_count":24891,"release_tag":"v2.1.4","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.4/FlowLauncher-2.1.4-full.nupkg"},{"name":"RELEASES","size":83,"download_count":1403102,"release_tag":"v2.1.4","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.4/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":206030350,"download_count":18422,"release_tag":"v2.1.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.3/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":101801984,"download_count":118733,"release_tag":"v2.1.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.3/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.1.3-full.nupkg","size":101801677,"download_count":27066,"release_tag":"v2.1.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.3/FlowLauncher-2.1.3-full.nupkg"},{"name":"RELEASES","size":83,"download_count":2460095,"release_tag":"v2.1.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.3/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":205396106,"download_count":6481,"release_tag":"v2.1.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.2/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":101487616,"download_count":39877,"release_tag":"v2.1.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.2/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.1.2-full.nupkg","size":101486602,"download_count":20975,"release_tag":"v2.1.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.2/FlowLauncher-2.1.2-full.nupkg"},{"name":"RELEASES","size":83,"download_count":692382,"release_tag":"v2.1.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.2/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":199898381,"download_count":9424,"release_tag":"v2.1.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.1/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":98785280,"download_count":58522,"release_tag":"v2.1.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.1/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.1.1-full.nupkg","size":98777401,"download_count":14965,"release_tag":"v2.1.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.1/FlowLauncher-2.1.1-full.nupkg"},{"name":"RELEASES","size":82,"download_count":1228213,"release_tag":"v2.1.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.1/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":202090677,"download_count":4969,"release_tag":"v2.1.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.0/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":99870720,"download_count":17896,"release_tag":"v2.1.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.0/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.1.0-full.nupkg","size":99867090,"download_count":16784,"release_tag":"v2.1.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.0/FlowLauncher-2.1.0-full.nupkg"},{"name":"RELEASES","size":82,"download_count":245508,"release_tag":"v2.1.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.0/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":195965435,"download_count":21044,"release_tag":"v2.0.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.3/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":96856576,"download_count":113500,"release_tag":"v2.0.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.3/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.0.3-full.nupkg","size":96841952,"download_count":25619,"release_tag":"v2.0.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.3/FlowLauncher-2.0.3-full.nupkg"},{"name":"RELEASES","size":82,"download_count":2243862,"release_tag":"v2.0.3","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.3/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":196119559,"download_count":7302,"release_tag":"v2.0.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.2/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":98027008,"download_count":43296,"release_tag":"v2.0.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.2/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.0.2-full.nupkg","size":98047401,"download_count":21095,"release_tag":"v2.0.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.2/FlowLauncher-2.0.2-full.nupkg"},{"name":"RELEASES","size":82,"download_count":896266,"release_tag":"v2.0.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.2/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":195811407,"download_count":5322,"release_tag":"v2.0.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.1/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":97875968,"download_count":29908,"release_tag":"v2.0.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.1/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.0.1-full.nupkg","size":97890476,"download_count":20163,"release_tag":"v2.0.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.1/FlowLauncher-2.0.1-full.nupkg"},{"name":"RELEASES","size":82,"download_count":555654,"release_tag":"v2.0.1","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.1/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":199720958,"download_count":4730,"release_tag":"v2.0.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.0/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":99822080,"download_count":23416,"release_tag":"v2.0.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.0/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-2.0.0-full.nupkg","size":99848489,"download_count":19235,"release_tag":"v2.0.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.0/FlowLauncher-2.0.0-full.nupkg"},{"name":"RELEASES","size":82,"download_count":374983,"release_tag":"v2.0.0","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.0.0/RELEASES"},{"name":"Flow-Launcher-Portable.zip","size":169976920,"download_count":9419,"release_tag":"v1.20.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v1.20.2/Flow-Launcher-Portable.zip"},{"name":"Flow-Launcher-Setup.exe","size":85006848,"download_count":58347,"release_tag":"v1.20.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v1.20.2/Flow-Launcher-Setup.exe"},{"name":"FlowLauncher-1.20.2-full.nupkg","size":84958765,"download_count":23567,"release_tag":"v1.20.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v1.20.2/FlowLauncher-1.20.2-full.nupkg"},{"name":"RELEASES","size":83,"download_count":1294718,"release_tag":"v1.20.2","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v1.20.2/RELEASES"}]}},"commit_sha":"236c847977abfe72d73de8cd8d2d0e4896c53647","profile":{"lines_by_language":{"C#":66431,"Python":266,"PowerShell":137},"files_by_category":{"other":473,"source":399,"binary":162,"config":41,"docs":15,"test":1,"oversized":1},"source_lines":66590,"test_lines":244},"pillars":{"ai_provenance":{"score":0.5,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0047,"suspected_share":0.0074,"estimated_share":0.0047,"ai_artifacts":0.0,"flagged_work_units":2.0,"flagged_releases":0.0,"style_index":0.195},"summary":"Explicit AI attribution on 0% of first-party code added; an estimated 0% including velocity signals."},"quality":{"score":72.4,"confidence":0.9,"coverage":1.0,"label":"adequate","breakdown":{"complexity":71.8,"duplication":74.5,"lint":96.2,"testing":55.7,"docs":65.0,"type_safety":40.0,"process":100.0},"summary":"Code quality is adequate: test-to-source ratio 0.00, CI runs tests; 11% of function code in complex or long functions; 5% duplicated lines. Weakest area: type safety."},"security":{"score":59.6,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":84.6,"sast":98.7,"dependencies":60.7,"ci_actions":0.0,"posture":40.0,"scorecard":25.7},"summary":"Security posture is weak: 18 known vulnerabilities in 5 dependencies; 2 high-severity SAST findings; 43 high-severity workflow issues. Weakest area: ci actions."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"ok","tool_version":"scorecard v5.6.0","metrics":{"aggregate":4.6,"check:Maintained":10.0,"check:Dangerous-Workflow":10.0,"check:Code-Review":10.0,"check:Token-Permissions":0.0,"check:Binary-Artifacts":8.0,"check:CII-Best-Practices":0.0,"check:Pinned-Dependencies":0.0,"check:Fuzzing":0.0,"check:License":10.0,"check:Signed-Releases":0.0,"check:Security-Policy":0.0,"check:SAST":0.0},"findings":[],"evidence":[{"kind":"scorecard-check","description":"Scorecard Maintained: 10/10 (30 commit(s) and 13 issue activity found in the last 90 days -- score normalized to 10)","ref":"Maintained","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Dangerous-Workflow: 10/10 (no dangerous workflow patterns detected)","ref":"Dangerous-Workflow","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Code-Review: 10/10 (all changesets reviewed)","ref":"Code-Review","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Token-Permissions: 0/10 (detected GitHub workflow tokens with excessive permissions)","ref":"Token-Permissions","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Binary-Artifacts: 8/10 (binaries present in source code)","ref":"Binary-Artifacts","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":0.2},{"kind":"scorecard-check","description":"Scorecard CII-Best-Practices: 0/10 (no effort to earn an OpenSSF best practices badge detected)","ref":"CII-Best-Practices","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Pinned-Dependencies: 0/10 (dependency not pinned by hash detected -- score normalized to 0)","ref":"Pinned-Dependencies","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Fuzzing: 0/10 (project is not fuzzed)","ref":"Fuzzing","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":1.0},{"kind":"scorecard-check","description":"Scorecard License: 10/10 (license file detected)","ref":"License","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Signed-Releases: 0/10 (Project has not signed or included provenance with any releases.)","ref":"Signed-Releases","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Security-Policy: 0/10 (security policy file not detected)","ref":"Security-Policy","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":1.0},{"kind":"scorecard-check","description":"Scorecard SAST: 0/10 (SAST tool is not run on all commits -- score normalized to 0)","ref":"SAST","url":"https://scorecard.dev/viewer/?uri=github.com/Flow-Launcher/Flow.Launcher","weight":1.0}],"data":{"date":"2026-11-09","commit":"ff99ea05d7ad198de6e26e2878215f7221860dac","matches_head":false},"error":null},{"analyzer":"sec-registry","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no registry dependencies declared"},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":8978.0,"attributed_commits":95.0,"attributed_commit_share":0.010581421251949209,"effective_loc":595605.0,"attributed_loc":2823.0,"attributed_loc_share":0.004739718437555091,"tools_detected":3.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 71 attributed commits, 1,668 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"OpenAI Codex: 16 attributed commits, 1,052 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"Claude Code: 8 attributed commits, 103 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"947ba49f4f05d06843f9dc7114bc6c207a9c4fde","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/947ba49f4f05d06843f9dc7114bc6c207a9c4fde","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (b140acd785)","ref":"1df3d59508efe2b6ee97f78ddda2a835f16d5768","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/1df3d59508efe2b6ee97f78ddda2a835f16d5768","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (a28397b762)","ref":"e56b8b84ce0702c38e8e3e04e9aefc522c8edcc3","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/e56b8b84ce0702c38e8e3e04e9aefc522c8edcc3","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (a28397b762)","ref":"ecfc33585aa54744f56ec0bf3b426a15f270ee82","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/ecfc33585aa54744f56ec0bf3b426a15f270ee82","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (a28397b762)","ref":"f1449af072c4dfc141479e014eac74a7b6de5d33","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/f1449af072c4dfc141479e014eac74a7b6de5d33","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (a28397b762)","ref":"774cb30d081dcb370a0a3c4774948eeffd6dc4b1","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/774cb30d081dcb370a0a3c4774948eeffd6dc4b1","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (a28397b762)","ref":"a1672b8dcd9c50d83328018e40ca0bc96dde1b80","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/a1672b8dcd9c50d83328018e40ca0bc96dde1b80","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"77addf268d5970cdeadd933b9c63e422d89b820c","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/77addf268d5970cdeadd933b9c63e422d89b820c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2ed6e165cde57384a8db8985a1a631afa32f0b17","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/2ed6e165cde57384a8db8985a1a631afa32f0b17","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3aa61ccb1be2ae919d24c0cfa9af97d6f1df8dff","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/3aa61ccb1be2ae919d24c0cfa9af97d6f1df8dff","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8a3eb137f180e481d8f22bb48af13d840a4cfd46","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/8a3eb137f180e481d8f22bb48af13d840a4cfd46","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"233f797f351749f98a6069cdd6f686e8abd0b9dc","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/233f797f351749f98a6069cdd6f686e8abd0b9dc","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"518ace52c2d01f83c338a2778746fcb5c432223b","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/518ace52c2d01f83c338a2778746fcb5c432223b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4e7adb8ab7551d2026abb4644ece7b7c8eb57540","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/4e7adb8ab7551d2026abb4644ece7b7c8eb57540","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: PR branch 'copilot/update-readme-sponsor'","ref":"a637c8244faac0fe3c2db021df6524522763c399","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/a637c8244faac0fe3c2db021df6524522763c399","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (1700eddb4c)","ref":"44127bf898c4853e630941c3e03f6bd23450ae64","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/44127bf898c4853e630941c3e03f6bd23450ae64","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"56719cb8b221117df2ad341eec2ddb6474676f8f","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/56719cb8b221117df2ad341eec2ddb6474676f8f","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (1700eddb4c)","ref":"e02ee631e883f6d10a5ad5c64c2de60bf90dca50","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/e02ee631e883f6d10a5ad5c64c2de60bf90dca50","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"65e58344839fa01c08d6a8583abae060c84a110a","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/65e58344839fa01c08d6a8583abae060c84a110a","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (1700eddb4c)","ref":"f15de6272b7cfe7feaac6b433fdf778b464515bd","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/f15de6272b7cfe7feaac6b433fdf778b464515bd","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (1700eddb4c)","ref":"aa09301761867579604e0ee2164bc5224b2135ad","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/aa09301761867579604e0ee2164bc5224b2135ad","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (1700eddb4c)","ref":"2c31b06a2641a01b2aa4b12243010c27908f92f4","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/2c31b06a2641a01b2aa4b12243010c27908f92f4","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (1700eddb4c)","ref":"b76d2698be7d6a35ba14fa32c648beee7a1b5094","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/b76d2698be7d6a35ba14fa32c648beee7a1b5094","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (1700eddb4c)","ref":"a81157fa833340545dd213c59109ef40eeb1daf5","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/a81157fa833340545dd213c59109ef40eeb1daf5","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/flow-shell-cmd-quotes'","ref":"0059c8ec0282df178fa697b4aff971542853a2d0","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/0059c8ec0282df178fa697b4aff971542853a2d0","weight":0.9}],"data":{"attributed_loc_by_commit":{"356f229fd44e65f0975ca3f700df3e96b4a87a5c":1,"f9a01e10025563e069c3caafce85b80e89d60d2f":1,"15a7e3a5afd8af4a9139935fd376d963963fb66b":1,"2a2ef234d952be3bc44507f95248b1622b92256d":1,"834780d6e7d57577a59f35c0ad5715f99e7b61cf":1,"514fa0037a0f0ad6b78ad6ae17d943764cf696c7":1,"a2d99573855b145a4ac68f270494c05f07ea06a6":6,"aaadf167777a9374f07a523a11b3c102c403ee5b":1,"f5de5d70dbede5d276e311489b06fcec01656c42":2,"5bafe23971c55f1505bd030cf721f426c23bb77d":1,"3f5e69be7f385cec24097a2479025b5ba569c071":1,"e3dbdaef15b9a53bca6cce994cb2f5e01ddceed3":1,"1cf264a3a9c5d519482f5585e7fb54ad23ce9dfe":2,"eaea38c13ab7c6536ee3b92bf8ad9b8ff436c599":1,"78f606f2fcb74467962bb582cd70f65c2d35104e":1,"03b558c1fc0947d6994f0c71d5ae002f50e52123":1,"07ac325593718ec9fee3a57aadcc6fabd07a8c2e":1,"76736b785091873534770d4806572f2641f20adf":0,"025895508326602066d1badf741182a91988ab26":1,"9e666f95ea6044b855f423c980f0db2090f6ff5f":1,"f2a7536298965fd77d83ba74e4af83750b7143bf":1,"9b02e1f74e180c906a7b0f13cde1cfb3c38904de":1,"446c61fac6fe71e4f9ef4d424153eae7d7860456":1,"63aca6ea37115a506ff24824d4f856f93364c744":2,"2eeb09719467e9ba74bc9d72c2a0f278ec91caa4":2,"4652392c71e5510c31f491d5c15197efd5c14011":0,"d7e09abde36af13ce6d8ded99c335a2bf61d4625":0,"a9a705f118e7832f8d49cfb71b78aa82bc0e893a":1,"5ff8a5b1d59dd95ae8c0a79decb2714ee38e9cf8":1,"7664944ff265febcd9192deb6e434626d3a8efda":1,"5695200940bd3a9be104661731d2dd1ee4584bff":2,"e50a2772f82392234eb1389e3fad8b01dfae3e3d":1,"f1ae421853dadd503663b1cd717d8c6e4b0dd73f":1,"130033cf4b8f302537c969fba4a4529b2b93f0d2":1,"89505fce307c1ab7b5ad8dacfe69f97656a7f5e4":0,"5b0a30774e711fececa2088316657cc9338e01c8":1,"a412c7978a5b15d0f9f086f4496179c7eff3bfab":1,"b297f3d3a3aaca7bcc1869aaee6d53206f8c08ed":23,"83cab764a125b328367e84d9df36191f85fe57ba":1,"3690042d2c5438854a82f6fe87e94f515712796e":19,"a7c67bbb35b2ab49778b534867c196d46661fe09":2,"769179d04b48f06c3998942c83020a56fd5be6aa":1,"bb1dfcde9b9072169bd34a04187987ab4ab21018":73,"8e80c3bde60a903a05ec970a3147680ccac79af6":44,"34257cad6077e0203bea23dee8a7ef225ca61518":0,"649b142b46b3c8f49b3c92f2a2b71a993e7e1f0b":37,"fb4da697a20aebb5c07ef88d765a7d0e509ee898":14,"013622a2a784d19d7009e7238db61f7ed47a92fa":6,"7e7f85352b23e68e82da7e46683bea2f1f2dc7fe":1,"befcc9b37c40e469120483ee296eaad2950e4626":0,"d511872c0094878918b33b75bd636b779b80bb1a":0,"3b3a59fd6266364814913d684c3455597aa831bc":5,"a90c787b4ad2eb3bb6a936e7c2a209beea536403":1,"baa3a690a309e6694106776fa6cc217372e0dbc3":1,"8e4f7258ffa44ab82bf3b25e05b2cb78a2b52ff3":0,"dca90916fe41ef290baffc37616430c4cd7febae":0,"984b3dabdc7fd0e31afb0b52e2a79f359efe6dc6":0,"319db64393dde56afa3b06f83e7700fa84dc07b6":0,"531b45210ae2c5d8b68db3e0770b0fa8d00f14df":10,"a406eb83e1618c7f95510b27b55e87d3731d6d0c":19,"1779987bb8014fec56881db04620da185cb07d22":0,"d0c30dfcb5721f62cc3e8a1ea19b591acd3bb7b7":4,"53702650b5d3bca1ebae2f9cf71d2fc5907f086e":5,"2bd6e9a6512b4714f61e5068c16e3597bd6bd7b1":91,"de36eaf07495ca59e62a1c42410577beac6bfeb1":68,"a1665c7b2ebb7809dc6f53285c6ec10059747afd":48,"cec3489afada141f0a25595cf654bad5e75ebca7":31,"85db10dda8cc4ba3af3081c759f1963a42ea9867":160,"410db08f184085717c5f38d718b199dfe8f6a481":70,"f9ac9b76e9301a7c4a2523712b12ee561588707b":8,"0059c8ec0282df178fa697b4aff971542853a2d0":90,"a81157fa833340545dd213c59109ef40eeb1daf5":0,"b76d2698be7d6a35ba14fa32c648beee7a1b5094":130,"2c31b06a2641a01b2aa4b12243010c27908f92f4":1,"aa09301761867579604e0ee2164bc5224b2135ad":52,"f15de6272b7cfe7feaac6b433fdf778b464515bd":179,"65e58344839fa01c08d6a8583abae060c84a110a":5,"e02ee631e883f6d10a5ad5c64c2de60bf90dca50":0,"56719cb8b221117df2ad341eec2ddb6474676f8f":956,"44127bf898c4853e630941c3e03f6bd23450ae64":1,"a637c8244faac0fe3c2db021df6524522763c399":0,"4e7adb8ab7551d2026abb4644ece7b7c8eb57540":4,"518ace52c2d01f83c338a2778746fcb5c432223b":1,"233f797f351749f98a6069cdd6f686e8abd0b9dc":39,"8a3eb137f180e481d8f22bb48af13d840a4cfd46":4,"3aa61ccb1be2ae919d24c0cfa9af97d6f1df8dff":7,"2ed6e165cde57384a8db8985a1a631afa32f0b17":14,"77addf268d5970cdeadd933b9c63e422d89b820c":20,"a1672b8dcd9c50d83328018e40ca0bc96dde1b80":145,"774cb30d081dcb370a0a3c4774948eeffd6dc4b1":121,"f1449af072c4dfc141479e014eac74a7b6de5d33":120,"ecfc33585aa54744f56ec0bf3b426a15f270ee82":5,"e56b8b84ce0702c38e8e3e04e9aefc522c8edcc3":130,"1df3d59508efe2b6ee97f78ddda2a835f16d5768":0,"947ba49f4f05d06843f9dc7114bc6c207a9c4fde":14},"tools":{"github-copilot":{"name":"GitHub Copilot coding agent","commits":71,"loc":1668,"first_seen":1743237534,"last_seen":1789904130},"openai-codex":{"name":"OpenAI Codex","commits":16,"loc":1052,"first_seen":1782233721,"last_seen":1792996776},"claude-code":{"name":"Claude Code","commits":8,"loc":103,"first_seen":1790207787,"last_seen":1793640346}},"monthly":{"2013-12":{"loc":83787,"attributed_loc":0},"2014-01":{"loc":23253,"attributed_loc":0},"2014-02":{"loc":2340,"attributed_loc":0},"2014-03":{"loc":8130,"attributed_loc":0},"2014-04":{"loc":842,"attributed_loc":0},"2014-05":{"loc":3269,"attributed_loc":0},"2014-06":{"loc":472,"attributed_loc":0},"2014-07":{"loc":287671,"attributed_loc":0},"2014-08":{"loc":453,"attributed_loc":0},"2014-09":{"loc":122,"attributed_loc":0},"2014-10":{"loc":2912,"attributed_loc":0},"2014-11":{"loc":275,"attributed_loc":0},"2014-12":{"loc":1930,"attributed_loc":0},"2015-01":{"loc":15050,"attributed_loc":0},"2015-02":{"loc":3244,"attributed_loc":0},"2015-03":{"loc":12,"attributed_loc":0},"2015-04":{"loc":86,"attributed_loc":0},"2015-05":{"loc":71,"attributed_loc":0},"2015-06":{"loc":99,"attributed_loc":0},"2015-07":{"loc":49,"attributed_loc":0},"2015-08":{"loc":49,"attributed_loc":0},"2015-09":{"loc":36,"attributed_loc":0},"2015-10":{"loc":316,"attributed_loc":0},"2015-11":{"loc":3408,"attributed_loc":0},"2015-12":{"loc":246,"attributed_loc":0},"2016-01":{"loc":830,"attributed_loc":0},"2016-02":{"loc":3397,"attributed_loc":0},"2016-03":{"loc":1132,"attributed_loc":0},"2016-04":{"loc":1570,"attributed_loc":0},"2016-05":{"loc":3967,"attributed_loc":0},"2016-06":{"loc":1081,"attributed_loc":0},"2016-07":{"loc":414,"attributed_loc":0},"2016-08":{"loc":1627,"attributed_loc":0},"2016-09":{"loc":257,"attributed_loc":0},"2016-10":{"loc":4,"attributed_loc":0},"2016-11":{"loc":638,"attributed_loc":0},"2017-01":{"loc":525,"attributed_loc":0},"2017-02":{"loc":646,"attributed_loc":0},"2017-03":{"loc":448,"attributed_loc":0},"2017-04":{"loc":322,"attributed_loc":0},"2017-10":{"loc":67,"attributed_loc":0},"2017-12":{"loc":33,"attributed_loc":0},"2018-01":{"loc":0,"attributed_loc":0},"2018-02":{"loc":3,"attributed_loc":0},"2018-03":{"loc":213,"attributed_loc":0},"2018-04":{"loc":0,"attributed_loc":0},"2018-07":{"loc":33,"attributed_loc":0},"2018-08":{"loc":5,"attributed_loc":0},"2018-12":{"loc":248,"attributed_loc":0},"2019-02":{"loc":30,"attributed_loc":0},"2019-03":{"loc":6,"attributed_loc":0},"2019-06":{"loc":2,"attributed_loc":0},"2019-07":{"loc":4,"attributed_loc":0},"2019-08":{"loc":623,"attributed_loc":0},"2019-09":{"loc":832,"attributed_loc":0},"2019-10":{"loc":1079,"attributed_loc":0},"2019-11":{"loc":381,"attributed_loc":0},"2019-12":{"loc":1485,"attributed_loc":0},"2020-01":{"loc":1054,"attributed_loc":0},"2020-02":{"loc":1074,"attributed_loc":0},"2020-03":{"loc":1060,"attributed_loc":0},"2020-04":{"loc":1464,"attributed_loc":0},"2020-05":{"loc":2454,"attributed_loc":0},"2020-06":{"loc":1470,"attributed_loc":0},"2020-07":{"loc":1065,"attributed_loc":0},"2020-08":{"loc":231,"attributed_loc":0},"2020-09":{"loc":102,"attributed_loc":0},"2020-10":{"loc":513,"attributed_loc":0},"2020-11":{"loc":947,"attributed_loc":0},"2020-12":{"loc":2672,"attributed_loc":0},"2021-01":{"loc":2629,"attributed_loc":0},"2021-02":{"loc":1375,"attributed_loc":0},"2021-03":{"loc":342,"attributed_loc":0},"2021-04":{"loc":283,"attributed_loc":0},"2021-05":{"loc":720,"attributed_loc":0},"2021-06":{"loc":5867,"attributed_loc":0},"2021-07":{"loc":1306,"attributed_loc":0},"2021-08":{"loc":277,"attributed_loc":0},"2021-09":{"loc":656,"attributed_loc":0},"2021-10":{"loc":1578,"attributed_loc":0},"2021-11":{"loc":2595,"attributed_loc":0},"2021-12":{"loc":1285,"attributed_loc":0},"2022-01":{"loc":685,"attributed_loc":0},"2022-02":{"loc":166,"attributed_loc":0},"2022-03":{"loc":1113,"attributed_loc":0},"2022-04":{"loc":78,"attributed_loc":0},"2022-05":{"loc":166,"attributed_loc":0},"2022-06":{"loc":3679,"attributed_loc":0},"2022-07":{"loc":1156,"attributed_loc":0},"2022-08":{"loc":1039,"attributed_loc":0},"2022-09":{"loc":3886,"attributed_loc":0},"2022-10":{"loc":3377,"attributed_loc":0},"2022-11":{"loc":3455,"attributed_loc":0},"2022-12":{"loc":2368,"attributed_loc":0},"2023-01":{"loc":1021,"attributed_loc":0},"2023-02":{"loc":291,"attributed_loc":0},"2023-03":{"loc":1063,"attributed_loc":0},"2023-04":{"loc":741,"attributed_loc":0},"2023-05":{"loc":254,"attributed_loc":0},"2023-06":{"loc":905,"attributed_loc":0},"2023-07":{"loc":416,"attributed_loc":0},"2023-08":{"loc":42,"attributed_loc":0},"2023-09":{"loc":155,"attributed_loc":0},"2023-10":{"loc":7,"attributed_loc":0},"2023-11":{"loc":1842,"attributed_loc":0},"2023-12":{"loc":109,"attributed_loc":0},"2024-01":{"loc":485,"attributed_loc":0},"2024-02":{"loc":562,"attributed_loc":0},"2024-03":{"loc":107,"attributed_loc":0},"2024-04":{"loc":5342,"attributed_loc":0},"2024-05":{"loc":4012,"attributed_loc":0},"2024-06":{"loc":1528,"attributed_loc":0},"2024-07":{"loc":87,"attributed_loc":0},"2024-08":{"loc":38,"attributed_loc":0},"2024-09":{"loc":85,"attributed_loc":0},"2024-10":{"loc":14,"attributed_loc":0},"2024-11":{"loc":660,"attributed_loc":0},"2024-12":{"loc":1021,"attributed_loc":0},"2025-01":{"loc":1428,"attributed_loc":0},"2025-02":{"loc":2866,"attributed_loc":0},"2025-03":{"loc":9800,"attributed_loc":1},"2025-04":{"loc":5270,"attributed_loc":17},"2025-05":{"loc":4109,"attributed_loc":8},"2025-06":{"loc":4349,"attributed_loc":2},"2025-07":{"loc":6724,"attributed_loc":8},"2025-08":{"loc":355,"attributed_loc":0},"2025-09":{"loc":3245,"attributed_loc":5},"2025-10":{"loc":3178,"attributed_loc":45},"2025-11":{"loc":556,"attributed_loc":0},"2025-12":{"loc":685,"attributed_loc":120},"2026-01":{"loc":834,"attributed_loc":58},"2026-02":{"loc":3300,"attributed_loc":7},"2026-03":{"loc":820,"attributed_loc":197},"2026-04":{"loc":785,"attributed_loc":48},"2026-05":{"loc":1920,"attributed_loc":0},"2026-06":{"loc":2501,"attributed_loc":359},"2026-07":{"loc":738,"attributed_loc":0},"2026-08":{"loc":3698,"attributed_loc":1324},"2026-09":{"loc":1778,"attributed_loc":89},"2026-10":{"loc":871,"attributed_loc":521},"2026-11":{"loc":797,"attributed_loc":14}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"work_units":3608.0,"flagged_units":2.0,"pre_ai_era_bursts":4.0,"pre_ai_era_measured_loc":104132.0,"pre_ai_era_burst_loc":13919.0,"measured_loc":214394.0,"flagged_loc":4423.0,"flagged_loc_share":0.020630241517952928,"max_loc_per_hour":2127.548441449031,"median_loc_per_hour":49.69502981040658,"pr_timed_units":87.0,"excluded_import_loc":381211.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"3,391 lines of first-party code in ~4.4h (771 lines/hour, 3 commit session)","ref":"b2090bc80830836f1b909a98db409bff281e196e","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/b2090bc80830836f1b909a98db409bff281e196e","weight":0.2312629451881788},{"kind":"velocity-burst","description":"1,032 lines of first-party code in ~1.5h (679 lines/hour, 6 commit session)","ref":"0bcc187b5defe11d79054bcb64816d5054f6b4b7","url":"https://github.com/Flow-Launcher/Flow.Launcher/commit/0bcc187b5defe11d79054bcb64816d5054f6b4b7","weight":0.20379594075699395}],"data":{"flagged_loc_by_commit":{"0dcf2ba52204886e0e269797d3c7d2df56e6c47f":3356,"959b5f558b029c75de83d4d4481628e81155466d":25,"b2090bc80830836f1b909a98db409bff281e196e":10,"2cd16837419d8f82612881c7c718658a0005e003":406,"a98a0335b3c49f0875f7e68972329418afb26edb":16,"7d62dedece537152dbb76035aeba99f42001ef2d":480,"49f1d7979843845d22ad90ad45bcce568b699f30":40,"bf5591c9a84c6cf58f0b5be162729626c8681e23":3,"0bcc187b5defe11d79054bcb64816d5054f6b4b7":87},"excluded_import_commits":["2a86b06e0cd70ee66e6a1ac3a369ab44c02a45bf","2d339ba00a0b06a9d4035c95deb66129bdacc742","6c61f5ddecb5c6c8560fe3c136749d5ddd0dab1e","76009ca6eb9514f6ce3433683ca4a3a28e4f77c1","f1ce98eb07f6c95222f7ed591ecfef712bef48ba"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"releases":61.0,"flagged_releases":0.0,"max_loc_per_day":237.5},"findings":[],"evidence":[],"data":{"releases":[{"from":"v0.9.0","to":"v0.9.2","loc":76,"days":11.85,"loc_per_day":6.4,"flagged":false},{"from":"v0.9.2","to":"v0.10.3","loc":2628,"days":20.34,"loc_per_day":129.2,"flagged":false},{"from":"v0.10.3","to":"v0.10.4","loc":86,"days":7.44,"loc_per_day":11.6,"flagged":false},{"from":"v0.10.4","to":"v1.0.0","loc":273,"days":4.46,"loc_per_day":61.2,"flagged":false},{"from":"v1.0.0","to":"v1.1.0","loc":501,"days":6.25,"loc_per_day":80.2,"flagged":false},{"from":"v1.1.0","to":"v1.1.1","loc":3,"days":1.02,"loc_per_day":2.9,"flagged":false},{"from":"v1.1.1","to":"v1.1.2","loc":21,"days":0.13,"loc_per_day":162.1,"flagged":false},{"from":"v1.1.2","to":"v1.2.0","loc":703,"days":42.92,"loc_per_day":16.4,"flagged":false},{"from":"v1.2.0","to":"v1.2.1","loc":25,"days":10.38,"loc_per_day":2.4,"flagged":false},{"from":"v1.2.1","to":"v1.3.0","loc":107,"days":47.41,"loc_per_day":2.3,"flagged":false},{"from":"v1.3.0","to":"v1.3.1","loc":12,"days":6.21,"loc_per_day":1.9,"flagged":false},{"from":"v1.3.1","to":"v1.4.0","loc":514,"days":24.93,"loc_per_day":20.6,"flagged":false},{"from":"v1.4.0","to":"v1.5.0","loc":61,"days":7.92,"loc_per_day":7.7,"flagged":false},{"from":"v1.5.0","to":"v1.6.0","loc":2187,"days":39.02,"loc_per_day":56.0,"flagged":false},{"from":"v1.6.0","to":"v1.7.0","loc":4100,"days":33.82,"loc_per_day":121.2,"flagged":false},{"from":"v1.7.0","to":"v1.7.1","loc":62,"days":10.46,"loc_per_day":5.9,"flagged":false},{"from":"v1.7.1","to":"v1.7.2","loc":126,"days":8.88,"loc_per_day":14.2,"flagged":false},{"from":"v1.7.2","to":"v1.8.0","loc":4619,"days":146.72,"loc_per_day":31.5,"flagged":false},{"from":"v1.8.0","to":"v1.8.1","loc":314,"days":10.01,"loc_per_day":31.4,"flagged":false},{"from":"v1.8.1","to":"v1.8.2","loc":94,"days":13.2,"loc_per_day":7.1,"flagged":false},{"from":"v1.8.2","to":"v1.8.3","loc":30,"days":24.65,"loc_per_day":1.2,"flagged":false},{"from":"v1.8.3","to":"v1.9.0","loc":6098,"days":95.4,"loc_per_day":63.9,"flagged":false},{"from":"v1.9.0","to":"v1.9.1","loc":190,"days":23.11,"loc_per_day":8.2,"flagged":false},{"from":"v1.9.1","to":"v1.9.2","loc":24,"days":31.8,"loc_per_day":0.8,"flagged":false},{"from":"v1.9.2","to":"v1.9.3","loc":77,"days":28.79,"loc_per_day":2.7,"flagged":false},{"from":"v1.9.3","to":"v1.9.4","loc":127,"days":142.94,"loc_per_day":0.9,"flagged":false},{"from":"v1.9.4","to":"v1.9.5","loc":203,"days":65.92,"loc_per_day":3.1,"flagged":false},{"from":"v1.9.5","to":"v1.10.0","loc":18087,"days":76.14,"loc_per_day":237.5,"flagged":false},{"from":"v1.10.0","to":"v1.10.1","loc":173,"days":5.07,"loc_per_day":34.1,"flagged":false},{"from":"v1.10.1","to":"v1.11.0","loc":1767,"days":12.37,"loc_per_day":142.9,"flagged":false},{"from":"v1.11.0","to":"v1.12.0","loc":1433,"days":24.72,"loc_per_day":58.0,"flagged":false},{"from":"v1.12.0","to":"v1.12.1","loc":24,"days":1.15,"loc_per_day":20.9,"flagged":false},{"from":"v1.12.1","to":"v1.13.0","loc":57,"days":12.88,"loc_per_day":4.4,"flagged":false},{"from":"v1.13.0","to":"v1.14.0","loc":290,"days":23.51,"loc_per_day":12.3,"flagged":false},{"from":"v1.14.0","to":"v1.14.1","loc":40,"days":49.16,"loc_per_day":0.8,"flagged":false},{"from":"v1.14.1","to":"v1.15.0","loc":823,"days":14.39,"loc_per_day":57.2,"flagged":false},{"from":"v1.15.0","to":"v1.16.0","loc":807,"days":66.13,"loc_per_day":12.2,"flagged":false},{"from":"v1.16.0","to":"v1.16.1","loc":8,"days":29.92,"loc_per_day":0.3,"flagged":false},{"from":"v1.16.1","to":"v1.16.2","loc":78,"days":47.03,"loc_per_day":1.7,"flagged":false},{"from":"v1.16.2","to":"v1.17.0","loc":3511,"days":131.74,"loc_per_day":26.7,"flagged":false},{"from":"v1.17.0","to":"v1.17.1","loc":21,"days":1.15,"loc_per_day":18.3,"flagged":false},{"from":"v1.17.1","to":"v1.17.2","loc":95,"days":7.14,"loc_per_day":13.3,"flagged":false},{"from":"v1.17.2","to":"v1.18.0","loc":1744,"days":68.64,"loc_per_day":25.4,"flagged":false},{"from":"v1.18.0","to":"v1.19.0","loc":10363,"days":116.92,"loc_per_day":88.6,"flagged":false},{"from":"v1.19.0","to":"v1.19.1","loc":1,"days":20.61,"loc_per_day":0.0,"flagged":false},{"from":"v1.19.1","to":"v1.19.2","loc":85,"days":18.8,"loc_per_day":4.5,"flagged":false},{"from":"v1.19.2","to":"v1.19.3","loc":1,"days":21.84,"loc_per_day":0.0,"flagged":false},{"from":"v1.19.3","to":"v1.19.4","loc":40,"days":21.07,"loc_per_day":1.9,"flagged":false},{"from":"v1.19.4","to":"v1.19.5","loc":19,"days":81.89,"loc_per_day":0.2,"flagged":false},{"from":"v1.19.5","to":"v1.20.0","loc":24548,"days":127.34,"loc_per_day":192.8,"flagged":false},{"from":"v1.20.0","to":"v1.20.1","loc":776,"days":10.86,"loc_per_day":71.5,"flagged":false},{"from":"v1.20.1","to":"v1.20.2","loc":976,"days":29.15,"loc_per_day":33.5,"flagged":false},{"from":"v1.20.2","to":"v2.0.0","loc":10435,"days":54.58,"loc_per_day":191.2,"flagged":false},{"from":"v2.0.0","to":"v2.0.1","loc":674,"days":15.34,"loc_per_day":43.9,"flagged":false},{"from":"v2.0.1","to":"v2.0.2","loc":836,"days":22.94,"loc_per_day":36.5,"flagged":false},{"from":"v2.0.2","to":"v2.0.3","loc":171,"days":37.01,"loc_per_day":4.6,"flagged":false},{"from":"v2.0.3","to":"v2.1.0","loc":2691,"days":96.04,"loc_per_day":28.0,"flagged":false},{"from":"v2.1.0","to":"v2.1.1","loc":5,"days":12.65,"loc_per_day":0.4,"flagged":false},{"from":"v2.1.1","to":"v2.1.2","loc":511,"days":62.17,"loc_per_day":8.2,"flagged":false},{"from":"v2.1.2","to":"v2.1.3","loc":910,"days":28.9,"loc_per_day":31.5,"flagged":false},{"from":"v2.1.3","to":"v2.1.4","loc":1113,"days":104.03,"loc_per_day":10.7,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":66590.0,"index":0.195,"count:narrated_steps":7.0,"per_kloc:narrated_steps":0.105,"files:narrated_steps":5.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":12.0,"per_kloc:emoji_in_code":0.18,"files:emoji_in_code":3.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # First, get all PRs to find the release PR and determine the milestone","ref":".github/update_release_pr.py:196","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/.github/update_release_pr.py#L196","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: //  First, find the setters to remove and store them in a list","ref":"Flow.Launcher.Core/Resource/Theme.cs:197","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Resource/Theme.cs#L197","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, try to find by full name, and if not found, fallback to prefix","ref":"Flow.Launcher.Infrastructure/Win32Helper.cs:768","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Infrastructure/Win32Helper.cs#L768","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, try to delete all files in the directory tree","ref":"Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs:153","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs#L153","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Then, try to delete all empty directories (from deepest to shallowest)","ref":"Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs:202","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs#L202","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Finally, try to delete the root directory itself","ref":"Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs:223","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs#L223","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Then, delete plugin directory","ref":"Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs:343","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs#L343","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":5.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"Flow.Launcher/ViewModel/MainViewModel.cs","line":501,"fingerprint":"Flow.Launcher/ViewModel/MainViewModel.cs:generic-api-key:501"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit b7f0fc9912); removed from the current tree but still retrievable","path":"Flow.Launcher.Test/PythonDependencies/DependencyInstallMarkerTest.cs","line":161,"fingerprint":"b7f0fc9912aedfc2a23692695f97429335ab0550:Flow.Launcher.Test/PythonDependencies/DependencyInstallMarkerTest.cs:generic-api-key:161"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit ad84b222a5); removed from the current tree but still retrievable","path":".vs/config/applicationhost.config","line":127,"fingerprint":"ad84b222a52eda09b5dbfea8e45df80c04675045:.vs/config/applicationhost.config:generic-api-key:127"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit f1ce98eb07); removed from the current tree but still retrievable","path":"PythonHome/Lib/distutils/msvccompiler.py","line":42,"fingerprint":"f1ce98eb07f6c95222f7ed591ecfef712bef48ba:PythonHome/Lib/distutils/msvccompiler.py:generic-api-key:42"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit b2081dcbc9); removed from the current tree but still retrievable","path":"Plugins/WinAlfred.Plugin.Fanyi/Main.cs","line":30,"fingerprint":"b2081dcbc97917ffa47b5f713482ac949abd04d0:Plugins/WinAlfred.Plugin.Fanyi/Main.cs:generic-api-key:30"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"findings_high":2.0,"findings_medium":0.0,"findings_low":0.0,"weighted_findings":2.55,"scanned_lines":66453.0,"parse_errors":1.0},"findings":[{"rule_id":"opengrep/csharp.lang.security.injections.os-command-injection","severity":"high","message":"The software constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component. [confidence low]","path":"Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs","line":34,"fingerprint":"csharp.lang.security.injections.os-command-injection:Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs:34"},{"rule_id":"opengrep/csharp.lang.security.sqli.csharp-sqli","severity":"high","message":"Detected a formatted string in a SQL statement. This could lead to SQL injection if variables in the SQL statement are not properly sanitized. Use a prepared statements instead. You can obtain a PreparedStatement using 'SqlCommand' and 'SqlParameter'. [confidence medium]","path":"Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/WindowsIndex.cs","line":27,"fingerprint":"csharp.lang.security.sqli.csharp-sqli:Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/WindowsIndex.cs:27"}],"evidence":[],"data":{"rulesets":["csharp","python"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":5.0,"vulnerabilities":18.0,"vulns_critical":0.0,"vulns_high":6.0,"vulns_medium":12.0,"vulns_low":0.0,"vulns_unknown":0.0,"penalty":30.0},"findings":[{"rule_id":"osv/GHSA-2x83-8g95-xh59","severity":"high","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-2x83-8g95-xh59; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-2x83-8g95-xh59"},{"rule_id":"osv/GHSA-hv8m-jj95-wg3x","severity":"high","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-hv8m-jj95-wg3x; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-hv8m-jj95-wg3x"},{"rule_id":"osv/GHSA-v72x-2h86-7f8m","severity":"high","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-v72x-2h86-7f8m; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-v72x-2h86-7f8m"},{"rule_id":"osv/GHSA-vh6j-jc39-fggf","severity":"high","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-vh6j-jc39-fggf; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-vh6j-jc39-fggf"},{"rule_id":"osv/GHSA-7jgj-8wvc-jh57","severity":"high","message":"System.Net.Http@4.3.0 (NuGet) is affected by GHSA-7jgj-8wvc-jh57; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"System.Net.Http@4.3.0 (NuGet):GHSA-7jgj-8wvc-jh57"},{"rule_id":"osv/GHSA-cmhx-cq75-c4mj","severity":"high","message":"System.Text.RegularExpressions@4.3.0 (NuGet) is affected by GHSA-cmhx-cq75-c4mj; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"System.Text.RegularExpressions@4.3.0 (NuGet):GHSA-cmhx-cq75-c4mj"},{"rule_id":"osv/GHSA-2f33-pr97-265q","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-2f33-pr97-265q; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-2f33-pr97-265q"},{"rule_id":"osv/GHSA-cj9g-3mj2-g8vv","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-cj9g-3mj2-g8vv; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-cj9g-3mj2-g8vv"},{"rule_id":"osv/GHSA-cxmj-83gh-fp49","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-cxmj-83gh-fp49; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-cxmj-83gh-fp49"},{"rule_id":"osv/GHSA-q2h6-ghwm-5qm8","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-q2h6-ghwm-5qm8; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-q2h6-ghwm-5qm8"},{"rule_id":"osv/GHSA-qhmf-xw27-6rqr","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-qhmf-xw27-6rqr; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-qhmf-xw27-6rqr"},{"rule_id":"osv/GHSA-qhrr-8q5h-9q3h","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-qhrr-8q5h-9q3h; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-qhrr-8q5h-9q3h"},{"rule_id":"osv/GHSA-w567-gjr2-hm5j","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-w567-gjr2-hm5j; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-w567-gjr2-hm5j"},{"rule_id":"osv/GHSA-wfr3-xj75-pfwh","severity":"medium","message":"MessagePack@2.5.192 (NuGet) is affected by GHSA-wfr3-xj75-pfwh; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"MessagePack@2.5.192 (NuGet):GHSA-wfr3-xj75-pfwh"},{"rule_id":"osv/GHSA-6c8g-7p36-r338","severity":"medium","message":"SharpCompress@0.17.1 (NuGet) is affected by GHSA-6c8g-7p36-r338; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"SharpCompress@0.17.1 (NuGet):GHSA-6c8g-7p36-r338"},{"rule_id":"osv/GHSA-fxh6-w476-hgr4","severity":"medium","message":"SharpCompress@0.17.1 (NuGet) is affected by GHSA-fxh6-w476-hgr4; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"SharpCompress@0.17.1 (NuGet):GHSA-fxh6-w476-hgr4"},{"rule_id":"osv/GHSA-jp7f-grcv-6mjf","severity":"medium","message":"SharpCompress@0.17.1 (NuGet) is affected by GHSA-jp7f-grcv-6mjf; also in Flow.Launcher/packages.lock.json","path":"Flow.Launcher.Core/packages.lock.json","line":null,"fingerprint":"SharpCompress@0.17.1 (NuGet):GHSA-jp7f-grcv-6mjf"},{"rule_id":"osv/GHSA-23fw-v26w-5fgq","severity":"medium","message":"Microsoft.Build.Tasks.Git@10.0.300 (NuGet) is affected by GHSA-23fw-v26w-5fgq","path":"Flow.Launcher.Plugin/packages.lock.json","line":null,"fingerprint":"Microsoft.Build.Tasks.Git@10.0.300 (NuGet):GHSA-23fw-v26w-5fgq"}],"evidence":[],"data":{"ecosystems":["NuGet"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":9.0,"findings":69.0,"findings_high":43.0,"findings_medium":11.0,"findings_low":15.0,"penalty":536.9},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":13,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:13"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":15,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:15"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":38,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:38"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":50,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:50"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":61,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:61"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":73,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:73"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":84,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:84"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":96,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:96"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":107,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:107"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":119,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:119"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":130,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:130"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":142,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:142"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":153,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:153"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":165,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:165"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":176,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:176"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":188,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:188"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":199,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:199"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":211,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:211"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":222,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:222"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":234,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:234"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":245,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:245"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":257,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:257"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":268,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:268"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":280,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:280"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":291,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:291"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/default_plugins.yml","line":303,"fingerprint":"unpinned-uses:.github/workflows/default_plugins.yml:303"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":23,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:23"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":26,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:26"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":32,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:32"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":57,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:57"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":64,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:64"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":71,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:71"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":78,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:78"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":86,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:86"},{"rule_id":"zizmor/dangerous-triggers","severity":"high","message":"use of fundamentally insecure workflow trigger [confidence medium]","path":".github/workflows/pr_assignee.yml","line":4,"fingerprint":"dangerous-triggers:.github/workflows/pr_assignee.yml:4"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pr_assignee.yml","line":17,"fingerprint":"unpinned-uses:.github/workflows/pr_assignee.yml:17"},{"rule_id":"zizmor/dangerous-triggers","severity":"high","message":"use of fundamentally insecure workflow trigger [confidence medium]","path":".github/workflows/pr_milestone.yml","line":6,"fingerprint":"dangerous-triggers:.github/workflows/pr_milestone.yml:6"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pr_milestone.yml","line":18,"fingerprint":"unpinned-uses:.github/workflows/pr_milestone.yml:18"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release_pr.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/release_pr.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release_pr.yml","line":16,"fingerprint":"unpinned-uses:.github/workflows/release_pr.yml:16"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/stale.yml","line":21,"fingerprint":"unpinned-uses:.github/workflows/stale.yml:21"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/top-ranking-issues.yml","line":13,"fingerprint":"unpinned-uses:.github/workflows/top-ranking-issues.yml:13"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/winget.yml","line":10,"fingerprint":"unpinned-uses:.github/workflows/winget.yml:10"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":8,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:8"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":19,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:19"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/default_plugins.yml","line":9,"fingerprint":"excessive-permissions:.github/workflows/default_plugins.yml:9"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/dotnet.yml","line":15,"fingerprint":"excessive-permissions:.github/workflows/dotnet.yml:15"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/release_deploy.yml","line":3,"fingerprint":"excessive-permissions:.github/workflows/release_deploy.yml:3"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/release_deploy.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/release_deploy.yml:11"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/release_deploy.yml","line":24,"fingerprint":"excessive-permissions:.github/workflows/release_deploy.yml:24"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/release_deploy.yml","line":37,"fingerprint":"excessive-permissions:.github/workflows/release_deploy.yml:37"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/release_pr.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/release_pr.yml:11"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/top-ranking-issues.yml","line":8,"fingerprint":"excessive-permissions:.github/workflows/top-ranking-issues.yml:8"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/winget.yml","line":7,"fingerprint":"excessive-permissions:.github/workflows/winget.yml:7"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/default_plugins.yml","line":13,"fingerprint":"artipacked:.github/workflows/default_plugins.yml:13"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/dotnet.yml","line":23,"fingerprint":"artipacked:.github/workflows/dotnet.yml:23"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release_pr.yml","line":14,"fingerprint":"artipacked:.github/workflows/release_pr.yml:14"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":50,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:50"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":73,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:73"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":96,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:96"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":119,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:119"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":142,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:142"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":165,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:165"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":188,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:188"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":211,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:211"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":234,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:234"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":257,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:257"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":280,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:280"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/default_plugins.yml","line":303,"fingerprint":"superfluous-actions:.github/workflows/default_plugins.yml:303"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":1.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.295,"unpinned_manifests":0.0},"findings":[],"evidence":[{"kind":"posture","description":"Dependency updates: .github/dependabot.yml","ref":".github/dependabot.yml","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":2.0,"binary_assets":20.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v2.1.4 ships Flow-Launcher-Portable.zip (11634 downloads)","ref":"Flow-Launcher-Portable.zip","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.4/Flow-Launcher-Portable.zip","weight":0.0},{"kind":"binary-release-asset","description":"release v2.1.4 ships Flow-Launcher-Setup.exe (55276 downloads)","ref":"Flow-Launcher-Setup.exe","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.4/Flow-Launcher-Setup.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v2.1.3 ships Flow-Launcher-Portable.zip (18422 downloads)","ref":"Flow-Launcher-Portable.zip","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.3/Flow-Launcher-Portable.zip","weight":0.0},{"kind":"binary-release-asset","description":"release v2.1.3 ships Flow-Launcher-Setup.exe (118733 downloads)","ref":"Flow-Launcher-Setup.exe","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.3/Flow-Launcher-Setup.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v2.1.2 ships Flow-Launcher-Portable.zip (6481 downloads)","ref":"Flow-Launcher-Portable.zip","url":"https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v2.1.2/Flow-Launcher-Portable.zip","weight":0.0},{"kind":"readme-download-lure","description":"links directly to a downloadable archive or installer","ref":"README.md","url":null,"weight":0.0}],"data":{"signals":["binary-release-assets","readme-download-lure"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":2384.0,"function_nloc":34299.0,"mean_ccn":2.77,"p90_ccn":6.0,"complex_functions":29.0,"long_functions":16.0,"many_param_functions":1.0,"risky_nloc_share":0.1104},"findings":[],"evidence":[{"kind":"complex-function","description":"MainWindow::OnLoaded in Flow.Launcher/MainWindow.xaml.cs: complexity 44, 184 lines","ref":"Flow.Launcher/MainWindow.xaml.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher/MainWindow.xaml.cs#L128","weight":0.7333333333333333},{"kind":"complex-function","description":"StringMatcher::FuzzyMatch in Flow.Launcher.Infrastructure/StringMatcher.cs: complexity 39, 133 lines","ref":"Flow.Launcher.Infrastructure/StringMatcher.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Infrastructure/StringMatcher.cs#L61","weight":0.65},{"kind":"complex-function","description":"JsonRPCPluginSettings::CreateSettingPanel in Flow.Launcher.Core/Plugin/JsonRPCPluginSettings.cs: complexity 34, 279 lines","ref":"Flow.Launcher.Core/Plugin/JsonRPCPluginSettings.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/JsonRPCPluginSettings.cs#L156","weight":0.5666666666666667},{"kind":"complex-function","description":"Flow.Launcher.ViewModel::MainViewModel::QueryResultsAsync in Flow.Launcher/ViewModel/MainViewModel.cs: complexity 32, 177 lines","ref":"Flow.Launcher/ViewModel/MainViewModel.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher/ViewModel/MainViewModel.cs#L1537","weight":0.5333333333333333},{"kind":"complex-function","description":"ContextMenu::LoadContextMenus in Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs: complexity 32, 254 lines","ref":"Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs#L30","weight":0.5333333333333333},{"kind":"complex-function","description":"EverythingApiV3::TryConvertSortOption in Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingApiV3.cs: complexity 27, 114 lines","ref":"Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingApiV3.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingApiV3.cs#L387","weight":0.45},{"kind":"complex-function","description":"PluginsManager::RequestUpdateAsync in Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs: complexity 25, 255 lines","ref":"Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs#L244","weight":0.4166666666666667},{"kind":"complex-function","description":"struct::IsPrintableCharacter in Flow.Launcher.Infrastructure/Hotkey/HotkeyModel.cs: complexity 24, 24 lines","ref":"Flow.Launcher.Infrastructure/Hotkey/HotkeyModel.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Infrastructure/Hotkey/HotkeyModel.cs#L199","weight":0.4},{"kind":"complex-function","description":"DialogJump::SetupDialogJump in Flow.Launcher.Infrastructure/DialogJump/DialogJump.cs: complexity 23, 146 lines","ref":"Flow.Launcher.Infrastructure/DialogJump/DialogJump.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Infrastructure/DialogJump/DialogJump.cs#L149","weight":0.38333333333333336},{"kind":"complex-function","description":"ResultsQuerySelection::switch in Flow.Launcher/ViewModel/MainViewModel.cs: complexity 23, 69 lines","ref":"Flow.Launcher/ViewModel/MainViewModel.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher/ViewModel/MainViewModel.cs#L92","weight":0.38333333333333336}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":38893.0,"duplicated_lines":1907.0,"duplicated_share":0.049,"files":399.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/ExternalPlugins/Environments/AbstractPluginEnvironment.cs:161 and Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs:358","ref":"Flow.Launcher.Core/ExternalPlugins/Environments/AbstractPluginEnvironment.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/ExternalPlugins/Environments/AbstractPluginEnvironment.cs#L161","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/ExternalPlugins/Environments/AbstractPluginEnvironment.cs:166 and Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginStoreViewModel.cs:158","ref":"Flow.Launcher.Core/ExternalPlugins/Environments/AbstractPluginEnvironment.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/ExternalPlugins/Environments/AbstractPluginEnvironment.cs#L166","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/ExternalPlugins/Environments/TypeScriptEnvironment.cs:18 and Flow.Launcher.Core/ExternalPlugins/Environments/TypeScriptV2Environment.cs:18","ref":"Flow.Launcher.Core/ExternalPlugins/Environments/TypeScriptEnvironment.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/ExternalPlugins/Environments/TypeScriptEnvironment.cs#L18","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/Plugin/ExecutablePlugin.cs:15 and Flow.Launcher.Core/Plugin/NodePlugin.cs:19","ref":"Flow.Launcher.Core/Plugin/ExecutablePlugin.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/ExecutablePlugin.cs#L15","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs:1 and Flow.Launcher.Core/Plugin/JsonRPCPluginBase.cs:1","ref":"Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/Plugin/PluginConfig.cs:149 and Flow.Launcher.Core/Plugin/PluginInstaller.cs:511","ref":"Flow.Launcher.Core/Plugin/PluginConfig.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/PluginConfig.cs#L149","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/Plugin/PluginInstaller.cs:58 and Flow.Launcher.Core/Plugin/PluginInstaller.cs:223","ref":"Flow.Launcher.Core/Plugin/PluginInstaller.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/PluginInstaller.cs#L58","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/Plugin/PluginInstaller.cs:437 and Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs:218","ref":"Flow.Launcher.Core/Plugin/PluginInstaller.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/PluginInstaller.cs#L437","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/Plugin/PluginManager.cs:420 and Flow.Launcher.Core/Plugin/PluginManager.cs:486","ref":"Flow.Launcher.Core/Plugin/PluginManager.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/PluginManager.cs#L420","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Flow.Launcher.Core/Plugin/PluginManager.cs:863 and Plugins/Flow.Launcher.Plugin.PluginsManager/Utilities.cs:46","ref":"Flow.Launcher.Core/Plugin/PluginManager.cs","url":"https://github.com/Flow-Launcher/Flow.Launcher/blob/236c847977abfe72d73de8cd8d2d0e4896c53647/Flow.Launcher.Core/Plugin/PluginManager.cs#L863","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":11.0,"weighted_findings":10.25,"scanned_lines":66453.0,"category:best-practice":5.0,"category:correctness":6.0},"findings":[{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":".github/update_release_pr.py","line":40,"fingerprint":"python.requests.best-practice.use-timeout:.github/update_release_pr.py:40"},{"rule_id":"opengrep/python.lang.correctness.use-sys-exit","severity":"medium","message":"Detected use of `exit`. Use `sys.exit` over the python shell `exit` built-in. `exit` is a helper for the interactive shell and may not be available on all Python implementations.","path":".github/update_release_pr.py","line":53,"fingerprint":"python.lang.correctness.use-sys-exit:.github/update_release_pr.py:53"},{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":".github/update_release_pr.py","line":170,"fingerprint":"python.requests.best-practice.use-timeout:.github/update_release_pr.py:170"},{"rule_id":"opengrep/python.lang.correctness.use-sys-exit","severity":"medium","message":"Detected use of `exit`. Use `sys.exit` over the python shell `exit` built-in. `exit` is a helper for the interactive shell and may not be available on all Python implementations.","path":".github/update_release_pr.py","line":180,"fingerprint":"python.lang.correctness.use-sys-exit:.github/update_release_pr.py:180"},{"rule_id":"opengrep/python.lang.correctness.use-sys-exit","severity":"medium","message":"Detected use of `exit`. Use `sys.exit` over the python shell `exit` built-in. `exit` is a helper for the interactive shell and may not be available on all Python implementations.","path":".github/update_release_pr.py","line":188,"fingerprint":"python.lang.correctness.use-sys-exit:.github/update_release_pr.py:188"},{"rule_id":"opengrep/python.lang.correctness.use-sys-exit","severity":"medium","message":"Detected use of `exit`. Use `sys.exit` over the python shell `exit` built-in. `exit` is a helper for the interactive shell and may not be available on all Python implementations.","path":".github/update_release_pr.py","line":201,"fingerprint":"python.lang.correctness.use-sys-exit:.github/update_release_pr.py:201"},{"rule_id":"opengrep/python.lang.correctness.use-sys-exit","severity":"medium","message":"Detected use of `exit`. Use `sys.exit` over the python shell `exit` built-in. `exit` is a helper for the interactive shell and may not be available on all Python implementations.","path":".github/update_release_pr.py","line":209,"fingerprint":"python.lang.correctness.use-sys-exit:.github/update_release_pr.py:209"},{"rule_id":"opengrep/python.lang.correctness.use-sys-exit","severity":"medium","message":"Detected use of `exit`. Use `sys.exit` over the python shell `exit` built-in. `exit` is a helper for the interactive shell and may not be available on all Python implementations.","path":".github/update_release_pr.py","line":217,"fingerprint":"python.lang.correctness.use-sys-exit:.github/update_release_pr.py:217"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"Flow.Launcher/Themes/ThemeBuilder/ThemeConvertor.py","line":5,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:Flow.Launcher/Themes/ThemeBuilder/ThemeConvertor.py:5"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"Flow.Launcher/Themes/ThemeBuilder/ThemeConvertor.py","line":10,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:Flow.Launcher/Themes/ThemeBuilder/ThemeConvertor.py:10"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Plugins/Flow.Launcher.Plugin.Program/Logger/ProgramLogger.cs","line":96,"fingerprint":"csharp.lang.best-practice.structured-logging:Plugins/Flow.Launcher.Plugin.Program/Logger/ProgramLogger.cs:96"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.0073,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.05,"test_lines":244.0,"source_lines":66590.0,"test_ratio":0.0037,"ci_files":10.0,"cochange_share":0.0125,"cochange_commits":240.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/default_plugins.yml","ref":".github/workflows/default_plugins.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/dotnet.yml","ref":".github/workflows/dotnet.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/pr_assignee.yml","ref":".github/workflows/pr_assignee.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/pr_milestone.yml","ref":".github/workflows/pr_milestone.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/release_deploy.yml","ref":".github/workflows/release_deploy.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/release_pr.yml","ref":".github/workflows/release_pr.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/stale.yml","ref":".github/workflows/stale.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/top-ranking-issues.yml","ref":".github/workflows/top-ranking-issues.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/winget.yml","ref":".github/workflows/winget.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: azure-pipelines.yml","ref":"azure-pipelines.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (dotnet test)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["dotnet test"],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":310.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":2440.0,"other_lines":64150.0,"files_blamed":399.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":11.0,"quality:other_per_kloc":0.171,"quality:ratio":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":3.0,"security:other_per_kloc":0.047,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}