RepoPilotOpen in app →

indiff/qttabbar

QTTabBar is a small tool that allows you to use tab multi label function in Windows Explorer. https://www.yuque.com/indiff/qttabbar

Mixed

Single-maintainer risk — review before adopting

worst of 4 axes
Use as dependencyConcerns

copyleft license (GPL-3.0) — review compatibility; top contributor handles 95% of recent commits…

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit 2mo ago
  • 4 active contributors
  • GPL-3.0 licensed
Show 5 more →
  • CI configured
  • Small team — 4 contributors active in recent commits
  • Single-maintainer risk — top contributor 95% of recent commits
  • GPL-3.0 is copyleft — check downstream compatibility
  • No test directory detected
What would change the summary?
  • Use as dependency ConcernsMixed if: relicense under MIT/Apache-2.0 (rare for established libs)

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Forkable" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Forkable
[![RepoPilot: Forkable](https://repopilot.app/api/badge/indiff/qttabbar?axis=fork)](https://repopilot.app/r/indiff/qttabbar)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/indiff/qttabbar on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: indiff/qttabbar

Generated by RepoPilot · 2026-05-10 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/indiff/qttabbar shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

WAIT — Single-maintainer risk — review before adopting

  • Last commit 2mo ago
  • 4 active contributors
  • GPL-3.0 licensed
  • CI configured
  • ⚠ Small team — 4 contributors active in recent commits
  • ⚠ Single-maintainer risk — top contributor 95% of recent commits
  • ⚠ GPL-3.0 is copyleft — check downstream compatibility
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live indiff/qttabbar repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/indiff/qttabbar.

What it runs against: a local clone of indiff/qttabbar — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in indiff/qttabbar | Confirms the artifact applies here, not a fork | | 2 | License is still GPL-3.0 | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 100 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>indiff/qttabbar</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of indiff/qttabbar. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/indiff/qttabbar.git
#   cd qttabbar
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of indiff/qttabbar and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "indiff/qttabbar(\\.git)?\\b" \\
  && ok "origin remote is indiff/qttabbar" \\
  || miss "origin remote is not indiff/qttabbar (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(GPL-3\\.0)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"GPL-3\\.0\"" package.json 2>/dev/null) \\
  && ok "license is GPL-3.0" \\
  || miss "license drift — was GPL-3.0 at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "BandObjectLib/BandObject.cs" \\
  && ok "BandObjectLib/BandObject.cs" \\
  || miss "missing critical file: BandObjectLib/BandObject.cs"
test -f "BandObjectLib/Interop/ExplorerGUIDs.cs" \\
  && ok "BandObjectLib/Interop/ExplorerGUIDs.cs" \\
  || miss "missing critical file: BandObjectLib/Interop/ExplorerGUIDs.cs"
test -f "BandObjectLib/Dpi/DpiManager.cs" \\
  && ok "BandObjectLib/Dpi/DpiManager.cs" \\
  || miss "missing critical file: BandObjectLib/Dpi/DpiManager.cs"
test -f "01build_release.bat" \\
  && ok "01build_release.bat" \\
  || miss "missing critical file: 01build_release.bat"
test -f "Installer/Installer.wxs" \\
  && ok "Installer/Installer.wxs" \\
  || miss "missing critical file: Installer/Installer.wxs"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 100 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~70d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/indiff/qttabbar"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

QTTabBar is a Windows Explorer shell extension that adds Firefox/IE7-style tabbed browsing to the native file manager, enabling multi-tab navigation, folder previews, and a plugin ecosystem (tree directory, file operations, status bar). It's a .NET 3.5 COM-based BandObject that integrates directly into Windows Explorer's rebar control via IDeskBand. Monolithic architecture: BandObjectLib/ contains the core shell extension framework (COM interfaces in Interop/, DPI awareness in Dpi/, attribute definitions); main application likely in a sibling directory (not shown in top 60 files); I18N/ holds XML language files for 8+ localizations. Build orchestrated by batch scripts (01build_release.bat, 02build_sonar.bat).

👥Who it's for

Windows power users and file management enthusiasts who want tabbed folder navigation in Explorer; domestic Chinese users (this is an optimized fork of the abandoned sf.net original, actively maintained since 2012). Contributors should understand COM interop, Windows shell extensions, and C# WinForms.

🌱Maturity & risk

Actively maintained but niche: ~5.5k GitHub stars, last release 1.5.6.1-beta in 2024, CI/CD pipeline in place (.github/workflows/QTTabBar.yml). However, it's beta-versioned and targets legacy .NET 3.5, suggesting stability concerns and limited modern platform support. Production-ready for Windows 7-10, but Windows 11 support is still being stabilized (see wiki references).

Single-maintainer risk (indiff) with no visible contributor guidelines beyond CONTRIBUTING.md. Depends on Windows COM APIs and old .NET Framework (3.5), creating compatibility risk as Windows evolves (Windows 11 dark mode adaptation was recent work). No automated test suite visible in file list (no Tests/ directory), and BandObjectLib COM interop is tightly coupled to Explorer internals.

Active areas of work

Recent work focused on Windows 11 compatibility (dark mode adaptation, DPI scaling fixes) and bug fixes (auto-select regression in 1.5.6.1-beta, text encoding in preview 1.5.5.9-beta). GitHub Actions workflows (ql.yml, QTTabBar.yml) suggest automated builds and quality scanning (SonarQube integration via 02build_sonar.bat).

🚀Get running

git clone https://github.com/indiff/qttabbar.git
cd qttabbar
batch 01build_release.bat

Requires Visual Studio (for .NET 3.5 C# projects, BandObjectLib.csproj), Windows SDK for COM/shell headers, and .NET Framework 3.5 installed.

Daily commands: No traditional 'run' command—this is a shell extension DLL that registers as a COM object and loads into Explorer at startup. Build with 01build_release.bat, then install via the built installer (implied; actual installer not in top 60 files). Debug by registering the DLL (regsvr32) and restarting Explorer or using VS debugger attached to explorer.exe.

🗺️Map of the codebase

  • BandObjectLib/BandObject.cs — Core Windows Explorer integration point—implements IDeskBand interface that hooks QTTabBar into Explorer's rebar; all UI interaction flows through this class
  • BandObjectLib/Interop/ExplorerGUIDs.cs — Defines GUIDs for Windows Explorer COM interfaces; critical for identifying and registering the band object in the system
  • BandObjectLib/Dpi/DpiManager.cs — Handles DPI scaling across all UI components; Windows 10/11 high-DPI support depends on this being correctly extended
  • 01build_release.bat — Primary build automation script for release builds; contributors must understand the build pipeline to properly version and package releases
  • Installer/Installer.wxs — WiX installer definition that configures COM registration, file placement, and uninstall hooks; breaking changes here affect deployment
  • I18N/Lng_QTTabBar_en.xml — Master English localization file; template for all UI strings and the reference for translation consistency

🛠️How to make changes

Add Support for a New Language

  1. Copy the English master file and translate all string values (I18N/Lng_QTTabBar_en.xml → I18N/Lng_QTTabBar_<lang_code>.xml)
  2. Add a lang_<lang_code>.wxl file to both Installer and InstallerMini for installer UI (Installer/lang.wxl (duplicate and translate))
  3. Register the new language code in the installer configuration (Installer/Installer.wxs (add Culture element))
  4. Run resgen.bat to compile XML localization into binary resources (I18N/resgen.bat)

Extend DPI Support for a New Control Type

  1. Create a new class inheriting from DpiAwareControl or DpiAwareForm (BandObjectLib/Dpi/DpiAware<ControlType>.cs (new file))
  2. Implement OnDpiChanged() to scale fonts, spacing, and image resources (BandObjectLib/Dpi/IDpiAwareObject.cs (reference interface))
  3. Register the new control with DpiManager in BandObject initialization (BandObjectLib/BandObject.cs (add to DpiManager subscription))

Add a COM-Accessible Feature to BandObject

  1. Define the new COM interface in the Interop folder (BandObjectLib/Interop/INewFeature.cs (new file with [ComVisible(true)]))
  2. Implement the interface in BandObject and add a new GUID attribute (BandObjectLib/BandObject.cs (add class inheritance and [Guid] attribute))
  3. Export the GUID constant to ExplorerGUIDs for registry lookups (BandObjectLib/Interop/ExplorerGUIDs.cs (add public static readonly Guid))
  4. Add installer registry entries for COM registration (Installer/Installer.wxs (add RegistryKey element under BandObject))

Update the Release Build Pipeline

  1. Modify version numbers in AssemblyInfo and installer configuration (BandObjectLib/Properties/AssemblyInfo.cs + Installer/Installer.wxs (Product Version))
  2. Update build scripts with new signing keys or output paths (01build_release.bat (modify MSBuild flags and signing commands))
  3. Configure the GitHub Actions workflow to upload to releases/SourceForge (.github/workflows/QTTabBar.yml (modify release steps))
  4. Document changes in release notes (Installer/release.md or CHANGES.txt)

🔧Why these technologies

  • C# / .NET Framework 3.5+ — Enables managed COM interop with Windows Explorer while maintaining compatibility with older Windows systems (XP–11)
  • Windows COM/Interop (IDeskBand, IDockingWindow) — Only standard API for deep Explorer integration as a toolbar band; no alternative exists short of shell extensions
  • WiX Toolset (Windows Installer XML) — Declarative MSI generation with built-in COM registration and registry management; reduces custom installer logic
  • DPI Manager abstraction — Abstracts Windows DPI change events and scaling math from UI controls; mandatory for modern multi-monitor and 4K support
  • XML-based localization (I18N) — Simple, non-code translation model allowing community contributors to localize without rebuilding binaries

⚖️Trade-offs already made

  • Tight coupling to Windows Explorer via COM band object

    • Why: Only way to integrate directly into Explorer's toolbar without shell hooks or DLL injection
    • Consequence: Breaks immediately on Explorer major updates or COM API changes; requires regression testing per Windows version
  • Target .NET Framework 3.5 (2007 baseline) for maximum compatibility

    • Why: Ensures installation on older systems and corporate machines stuck on legacy .NET
    • Consequence: Cannot use modern C# features (async/await, LINQ expressions added post-3.5); code is more verbose
  • Store localization in XML; compile with resgen.bat at build time

    • Why: Avoids runtime string parsing and keeps binaries self-contained
    • Consequence: Translator workflow requires developer involvement to rebuild installer; CI/CD must run resgen
  • Dual installer (full + mini) with separate WiX projects

    • Why: Accommodates users on systems without .NET Framework pre-installed vs. those who have it
    • Consequence: Maintenance burden: two nearly-identical installer configs that must stay in sync

🚫Non-goals (don't propose these)

  • Does not support Linux or mac

🪤Traps & gotchas

COM Registration: the DLL must be registered via regsvr32 or installer; no manual registration = no Explorer integration. Framework lock: .NET 3.5 is EOL; modern Windows may not have it installed by default—check BUILD.txt for install instructions. Explorer restart: changes require Explorer.exe restart or COM re-registration; changes don't auto-hot-reload. CLSID hardcoding: BandObject COM GUID is likely hardcoded in Interop/ExplorerGUIDs.cs; changing it breaks existing registrations. 32 vs 64-bit: shell extension must match Explorer bitness (not visible in file list but common trap). Batch script encoding: build scripts use .bat; ensure Windows line endings (CRLF) and run from Command Prompt with admin rights.

🏗️Architecture

💡Concepts to learn

  • COM (Component Object Model) Interfaces & Aggregation — QTTabBar is a COM object (BandObject) implementing IDeskBand, IDockingWindow, IOleWindow to integrate into Explorer's object model; understanding QueryInterface, reference counting, and interface inheritance is essential to modifying core behavior.
  • Rebar Control & Desk Band Architecture — Explorer embeds the extension as a 'band' (toolbar-like control) in its rebar; REBARBANDINFO.cs and IDeskBand.cs define the sizing, positioning, and lifecycle—critical for tab rendering.
  • DPI Awareness & High-DPI Scaling — Modern Windows (10/11) scales UI based on monitor DPI; QTTabBar's DpiManager.cs and DpiAwareControl.cs handle this. Ignoring DPI leads to blurry UI on 125%, 150%, 200% displays.
  • Windows Shell IInputObject & Message Routing — IInputObject.cs defines how the band receives keyboard/mouse input; Explorer routes messages through TranslateAccelerator and HasFocus—needed for tab switching hotkeys.
  • P/Invoke & Interop Marshaling (C# ↔ C++) — BandObjectLib/Interop/ files contain [DllImport] declarations and struct definitions (MSG, POINT, REBARBANDINFO) to call Windows APIs; marshaling attributes ([MarshalAs]) are critical for correct memory layout.
  • Plugin Architecture via .NET Reflection & Attributes — BandObjectLib/Attributes.cs likely defines custom attributes for plugin discovery; plugins (file ops, tree view) are loaded dynamically—understanding attribute-driven design is key to extending features.
  • XML-based Localization & Resource Management — I18N/*.xml files drive runtime language switching without recompilation; understanding the XML schema and how strings are loaded at runtime is needed to add languages or multi-language support.
  • FancyZones/PowerToys — Microsoft's modern multi-window tiling tool for Windows 11; successor vision to tab-based organization in Explorer
  • Open-Shell/Open-Shell-Menu — Companion shell extension adding Windows XP-style Start Menu to modern Windows; shares COM/shell extension architecture and Windows 11 compatibility pain points
  • aardvark/aardvark — Alternative tabbed file manager for Windows; different approach (standalone app vs Explorer integration) solving same UX problem
  • jaclu/qttabbar-wiki — QTTabBar documentation repository; source for the Yuque wiki and installation guides referenced in README
  • indiff/DBCHM — Author's own repo mentioned in README; generates API documentation from source; used for QTTabBar's own doc generation

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add comprehensive unit tests for BandObjectLib DPI awareness classes

The BandObjectLib/Dpi directory contains critical DPI scaling functionality (DpiManager.cs, DpiAwareControl.cs, DpiAwareForm.cs, DpiAwareTextBox.cs, DpiAwareUserControl.cs) that handles Windows high-DPI scenarios. These classes have no visible test coverage in the repo, yet they're essential for proper UI rendering across different monitor DPI settings. Adding unit tests would prevent regressions and improve reliability for users with multi-monitor or high-DPI setups.

  • [ ] Create BandObjectLib.Tests project in the repo root
  • [ ] Add unit tests for BandObjectLib/Dpi/DpiManager.cs covering DPI detection and notification scenarios
  • [ ] Add unit tests for BandObjectLib/Dpi/DpiAwareControl.cs testing DPI change event handling
  • [ ] Add integration test verifying DpiChangedEventArgs propagation through the DPI-aware control hierarchy
  • [ ] Update .github/workflows/QTTabBar.yml to run these tests in CI/CD pipeline

Create Windows Explorer interop integration tests

The BandObjectLib/Interop directory defines critical COM interfaces for Windows Explorer integration (IDeskBand.cs, IDockingWindow.cs, IOleWindow.cs, IObjectWithSite.cs). Currently there's no visible test coverage verifying these interfaces correctly marshal data to/from Explorer. Adding integration tests that mock Explorer's COM calls would catch breaking changes early and document expected behavior.

  • [ ] Create BandObjectLib.Tests/Interop folder
  • [ ] Add mock implementations for IInputObjectSite.cs and _IServiceProvider.cs interfaces
  • [ ] Write integration tests for REBARBANDINFO.cs structure marshaling with real Explorer COM calls (using COM wrappers)
  • [ ] Add tests for DESKBANDINFO.cs serialization/deserialization
  • [ ] Document test setup in CONTRIBUTING.md for running against Windows Explorer COM interfaces

Add GitHub Actions workflow for building and testing on multiple Windows versions

The repo has .github/workflows/QTTabBar.yml and ql.yml but they appear minimal. QTTabBar is a Windows Explorer shell extension that must work across Windows 10, Windows 11, and potentially older versions. The current CI doesn't show matrix testing across Windows versions or .NET Framework versions (evidenced by Installer451.wixproj suggesting .NET 4.5.1 support). Adding a matrix build workflow would catch Windows version-specific compatibility issues early.

  • [ ] Update .github/workflows/QTTabBar.yml to add matrix strategy for windows-2019 (Windows Server 2019/Win10), windows-2022 (Windows Server 2022/Win11), and windows-latest
  • [ ] Add steps to test against multiple .NET Framework versions (4.5.1, 4.7.2, 4.8) referenced in Installer451.wixproj
  • [ ] Add build step for both BandObjectLib.csproj and Installer.wixproj to catch platform-specific build failures
  • [ ] Add status badge to README.md showing CI results across Windows versions
  • [ ] Document Windows version support matrix in CONTRIBUTING.md

🌿Good first issues

  • Add unit tests for BandObjectLib/Dpi/ DPI scaling logic: no Tests/ directory exists. Create test suite verifying DpiManager.cs handles 96, 120, 144, 192 DPI correctly.: Windows 11 support is recent work; DPI bugs are common in shell extensions and need regression protection.
  • Document COM interface requirements in CONTRIBUTING.md: currently silent on how to extend IDeskBand or add new shell integration. Add example for custom keyboard shortcut handling via IInputObject.: COM is unfamiliar to most modern devs; contributors need a guide to avoid breaking the interface contract.
  • Add missing language files: I18N/ has 8 languages but Windows supports 100+. Create a translation template (e.g., Lng_QTTabBar_ja.xml for Japanese) and set up i18n tooling (Crowdin integration or simple XML schema).: Domestic focus (Chinese) limits reach; low-hanging fruit for community localization contribution.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 599ce3c — Update README_zh.md (indiff)
  • 3a7e1b2 — Update README.md (indiff)
  • 28c649d — 更新 ql.yml (indiff)
  • 34774b3 — 更新 ql.yml (indiff)
  • 7e95e28 — 更新 ql.yml (indiff)
  • ef63b77 — 创建 ql.yml (indiff)
  • 306781f — Update README_zh.md (indiff)
  • 823b100 — Update README.md (indiff)
  • 7ea51f6 — Update README_zh.md (indiff)
  • 8e9aa06 — Update README.md (indiff)

🔒Security observations

The QTTabBar codebase shows moderate security posture. Primary concerns include: (1) configuration files potentially containing sensitive data in version control, (2) C++ custom actions in the installer requiring careful validation, (3) interop code requiring secure marshaling practices, and (4) lack of visible security policy for vulnerability disclosure. The project uses modern CI/CD (GitHub Actions) and appears to be actively maintained. Recommendations focus on tightening build script security, validating configuration management, conducting thorough code review of native interop and installer code, and establishing a security disclosure process.

  • Medium · Potential Hardcoded Configuration in Installer — Installer/config.ini. The file 'Installer/config.ini' is present in the repository. Configuration files committed to version control may contain sensitive information such as API keys, credentials, or internal paths that should not be publicly accessible. Fix: Review the contents of config.ini to ensure no sensitive data is committed. Move sensitive configuration to environment variables or use a .gitignore entry to exclude it from version control.
  • Medium · Missing or Incomplete .gitignore — .gitignore. While a .gitignore file exists, the file structure shows several configuration and build files that may contain sensitive information or build artifacts. The current .gitignore may not be sufficiently comprehensive. Fix: Ensure .gitignore properly excludes: *.user files, build output directories, any .env or local config files, and IDE-specific folders. Add entries for *.exe, *.dll, and other compiled binaries if appropriate.
  • Low · Build Scripts in Repository Root — 01build_release.bat, 02build_sonar.bat. Batch files '01build_release.bat' and '02build_sonar.bat' are present in the repository root. These scripts may contain hardcoded paths, credentials, or sensitive configuration that could be exposed. Fix: Review build scripts for hardcoded credentials, sensitive paths, or API keys. Consider moving build configuration to CI/CD pipeline (GitHub Actions is already in use). Use encrypted secrets for any sensitive build parameters.
  • Low · No Visible Input Validation in C# Interop Components — BandObjectLib/Interop/. The BandObjectLib contains interop code interfacing with Windows Explorer. Without examining source code content, potential risks include inadequate validation of data passed between managed and unmanaged code, which could lead to buffer overflows or injection attacks. Fix: Conduct code review of interop marshaling operations. Ensure all P/Invoke declarations properly validate input sizes and types. Use safe marshaling practices and consider using SafeHandle for unmanaged resources.
  • Low · C++ Custom Action in Installer — InstallerHelper/CustomAction.cpp. InstallerHelper contains C++ code ('InstallerHelper/CustomAction.cpp') that runs with elevated privileges during installation. Custom actions are a common attack vector if not properly secured. Fix: Review CustomAction.cpp for input validation, buffer overflows, and format string vulnerabilities. Ensure all operations are signed and validated. Minimize the scope of elevated privileges required. Consider code signing the installer.
  • Low · No Visible Security Policy or CONTRIBUTING Guidelines — Repository root. While CONTRIBUTING.md exists, there is no visible security policy (SECURITY.md) for responsible disclosure of vulnerabilities in this security-sensitive tool (Windows Explorer integration). Fix: Create a SECURITY.md file with a responsible disclosure policy and contact information for reporting security vulnerabilities. This is especially important for a tool that integrates with Windows Explorer.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Mixed signals · indiff/qttabbar — RepoPilot