RepoPilot

QL-Win/QuickLook

Bring macOS “Quick Look” feature to Windows

Mixed

Single-maintainer risk — review before adopting

ConcernsDependency

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

HealthyFork & modify

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

HealthyLearn from

Documented and popular — useful reference codebase to read through.

MixedDeploy as-is

Scorecard "Branch-Protection" is 0/10; Scorecard "Token-Permissions" is 0/10

  • Small team — 4 contributors active in recent commits
  • Single-maintainer risk — top contributor 94% of recent commits
  • GPL-3.0 is copyleft — check downstream compatibility
  • No test directory detected
  • Scorecard: default branch unprotected (0/10)
  • Last commit 2d ago
  • 4 active contributors
  • GPL-3.0 licensed
  • CI configured

What would improve this?

  • Use as dependency ConcernsMixed if: relicense under MIT/Apache-2.0 (rare for established libs)
  • Deploy as-is MixedHealthy if: bring "Branch-Protection" to ≥3/10 (see scorecard report)

Computed from maintenance signals — commit recency, contributor breadth, bus factor, license, CI, tests, cross-checked against OpenSSF Scorecard

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/ql-win/quicklook?axis=fork)](https://repopilot.app/r/ql-win/quicklook)

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

Preview social card

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

Ask AI about ql-win/quicklook

Grounded in the actual source code. Pick a starter question or write your own.

Or write your own question →

Onboarding doc

Onboarding: QL-Win/QuickLook

Generated by RepoPilot · 2026-06-24 · Source

🎯Verdict

WAIT — Single-maintainer risk — review before adopting

  • Last commit 2d ago
  • 4 active contributors
  • GPL-3.0 licensed
  • CI configured
  • ⚠ Small team — 4 contributors active in recent commits
  • ⚠ Single-maintainer risk — top contributor 94% of recent commits
  • ⚠ GPL-3.0 is copyleft — check downstream compatibility
  • ⚠ No test directory detected
  • ⚠ Scorecard: default branch unprotected (0/10)

<sub>Computed from maintenance signals — commit recency, contributor breadth, bus factor, license, CI, tests, cross-checked against OpenSSF Scorecard</sub>

TL;DR

QuickLook is a Windows port of macOS's Quick Look feature that enables instant file previews by pressing the Space key in Windows Explorer. Written primarily in C# with C++ extensions, it integrates deeply with Windows shell to preview images, documents, code, archives, and 100+ file types without opening dedicated applications. The core capability bridges the massive UX gap between Windows and macOS file exploration workflows. Single monolithic repository: the main application in C# handles UI and plugin management, with native C++ extensions in parallel (172KB C++ vs 1.7MB C#) for low-level shell hooks and file format parsers. Build/ directory contains APPX manifest and asset scaling (multiple DPI scales 100-400%), indicating modern Windows packaging. .github/workflows/msbuild.yml drives CI/CD directly from source.

👥Who it's for

Windows power users and developers who frequently browse files in Explorer and want near-instant previews without application launch overhead. Also targets IT administrators standardizing workflows across mixed OS environments. Contributors are primarily C# developers familiar with Windows Shell Integration and P/Invoke.

🌱Maturity & risk

Actively maintained and production-ready. The GitHub repo shows consistent recent activity (CI via .github/workflows/msbuild.yml), organized issue templates, and structured Build/ assets indicating polish. The project is trending on GitHub and listed on HelloGitHub, suggesting stable adoption. Appears to have crossed the early-stage threshold into reliable daily-use software.

Single-repository structure with no visible monorepo fragmentation reduces operational risk. However, deep Windows Shell integration via C++/P/Invoke creates platform-specific brittleness—any Windows API deprecation or policy change could break functionality. No visible test directory structure in the top 60 files suggests testing may be manual or integration-based rather than unit-tested, increasing regression risk on new Windows versions.

Active areas of work

Active development cycle indicated by organized GitHub workflows (.github/ISSUE_TEMPLATE/bug_report.md and feature_request.md), Copilot instructions (.github/copilot-instructions.md), and msbuild CI. The presence of AppxManifest.xml and structured asset scaling suggests ongoing refinement for Windows Store distribution. Pull request template exists, indicating organized code review process.

🚀Get running

git clone https://github.com/QL-Win/QuickLook.git
cd QuickLook
cat .appveyor.yml  # Check CI config for build steps
# Open QuickLook.sln in Visual Studio 2019+ (inferred from C# 1.7MB codebase and msbuild.yml)
msbuild QuickLook.sln /p:Configuration=Release

Note: No package.json or yarn.lock visible; this is a native .NET project requiring Visual Studio and Windows SDK.

Daily commands: After msbuild: Execute the compiled .exe from bin/Release/ or install the .appx package via Windows App Installer. The application hooks into Windows Explorer context/spacebar, so it runs as a background service once installed rather than a traditional launched application.

🗺️Map of the codebase

  • .github/workflows/msbuild.yml — CI/CD pipeline that builds and packages the QuickLook application; critical for understanding the release process and build configuration
  • Build/AppxManifest.xml — Windows AppX manifest defining application metadata, capabilities, and entrypoints; required to understand how the app registers and runs on Windows
  • .github/copilot-instructions.md — Development guidelines and architectural conventions for contributors working on the QuickLook codebase
  • OPTIONS.md — Configuration and options documentation; explains feature flags and user-configurable settings
  • CHANGELOG.md — Version history and feature evolution; essential for understanding which features are stable and which are recent additions
  • Build/micasetup.json — Setup configuration file for the installer; defines how QuickLook is packaged and distributed

🧩Components & responsibilities

  • Shell Extension (ShellExt) (C# COM Interop, Windows Shell API (IShellExt)) — Intercepts spacebar in Windows Explorer, detects selected file, launches QuickLook main app with file path argument
    • Failure mode: If shell extension fails to register, spacebar will not trigger preview; users must manually open QuickLook or file won't preview
  • Plugin Manager (C# reflection, file extension matching) — Scans installed plugins, matches file extension to appropriate viewer plugin, instantiates viewer class
    • Failure mode: If plugin manager fails to load plugins, no previews render; core app runs but shows blank/error preview windows
  • XAML Preview Viewers (WPF, XAML, format-specific libraries (GhostScript for PDF, etc.)) — Each viewer plugin (Image, PDF, Code, Office, etc.) implements IViewer interface, renders file content in XAML window
    • Failure mode: Individual plugin failure shows error message; other file types continue to work; corrupted file or missing dependency prevents preview for that type
  • AppX Package & Manifest (MSIX, AppX manifest XML, Windows capability declarations) — Defines application metadata, capabilities, entry points, asset layout; enables Store distribution and auto-updates
    • Failure mode: Malformed manifest prevents app installation from Store; missing required assets cause visual artifacts or app won't launch
  • CI/CD Pipeline (MSBuild + GitHub Actions) (MSBuild, GitHub Actions, MSIX signing) — Automates compilation, testing, packaging, and artifact generation on every commit
    • Failure mode: Build failure blocks release; asset generation failure results in incomplete package; signing failure prevents Store submission

🔀Data flow

  • Windows ExplorerShell Extension — User presses Space on selected file → explorer.exe signals shell extension with file path
  • Shell ExtensionQuickLook Main App — Shell extension launches QuickLook.exe with selected file

🛠️How to make changes

Add a new File Type Preview Handler

  1. Create a new plugin provider class in the QuickLook source (not in provided file list, but referenced by repo structure) (Source/QuickLook.Plugin/IViewer.cs)
  2. Register the new file extension handler in the manifest capabilities (Build/AppxManifest.xml)
  3. Add corresponding XAML UI for preview rendering (Source/QuickLook.Plugin/Viewers/YourNewViewer.xaml)

Update Application Branding or Icons

  1. Replace icon assets in Build directory at all required scales (100, 125, 150, 200, 400) (Build/Assets/Square44x44Logo.scale-100.png)
  2. Update corresponding AppX store assets (QuickLook.Appx/Images/Square44x44Logo.scale-100.png)
  3. Update main application icon (QLPlugin.ico)

Configure Installation and Deployment

  1. Modify MSIX installer configuration (Build/micasetup.json)
  2. Update Windows AppX manifest with new application properties (Build/AppxManifest.xml)
  3. Adjust CI/CD build and packaging steps (.github/workflows/msbuild.yml)

🔧Why these technologies

  • C# / .NET Framework — Windows-native development stack enabling deep system integration, COM interop for shell extensions, and Windows AppX packaging
  • XAML (Windows Presentation Foundation) — Native Windows UI framework for rendering high-performance preview windows with modern fluent design language
  • Windows Shell Integration (IPreviewHandler) — Standard Windows API for spacebar-triggered previews, allowing QuickLook to hook into Explorer's native quick view pipeline
  • MSIX / AppX — Modern Windows application packaging format enabling secure distribution through Microsoft Store and automatic updates
  • GitHub Actions + MSBuild — Automated CI/CD pipeline for building, testing, and packaging across Windows targets with multi-scale asset generation

⚖️Trade-offs already made

  • Windows-only implementation (no macOS/Linux ports)

    • Why: QuickLook is a direct port of macOS Quick Look feature, requiring deep Windows shell integration that is platform-specific
    • Consequence: Single-platform focus allows optimal Windows user experience but limits addressable market; users on other OS must use platform-native preview tools
  • Plugin-based architecture for file type support

    • Why: Extensibility allows community contributors to add previews for custom file types without modifying core application
    • Consequence: Increased complexity in plugin discovery/loading, potential for incompatible plugins, but provides flexibility and reduces core maintenance burden
  • AppX/MSIX packaging alongside traditional installer

    • Why: Dual distribution channels (Microsoft Store for simplicity, traditional setup for enterprise)
    • Consequence: Build complexity increases, but reaches both consumer and enterprise users; provides staged rollout and security benefits of Store distribution

🚫Non-goals (don't propose these)

  • Does not provide search indexing or full-text file search functionality
  • Not a replacement for full file manager—focuses only on preview, not file operations (copy, move, delete)
  • Does not implement network/cloud file preview over internet (local files only)
  • Not a thumbnail cache manager—does not persist or manage preview caches across sessions
  • Linux and macOS support explicitly out of scope (Windows-only product)

🪤Traps & gotchas

Windows SDK requirement: Likely needs Windows 10/11 SDK installed alongside Visual Studio (not specified in visible config files but implied by APPX manifest and WinRT features). COM registration: The application must run with elevated privileges or proper COM registration to hook the Shell namespace—installation likely requires admin rights, and debugging requires special Visual Studio configuration. .gitmodules submodules: Git clone requires --recurse-submodules flag; standard git clone will miss preview handler plugins. No .NET version pinning visible: Check global.json or .csproj for .NET Framework vs .NET 5+ requirement—this affects runtime dependencies dramatically.

🏗️Architecture

💡Concepts to learn

  • Windows Shell Namespace Extensions (Shell Extensions) — QuickLook's entire integration model depends on registering COM objects as shell extension handlers (Preview Handlers, Icon Handlers) to intercept Explorer interactions; understanding this is mandatory for modifying shell behavior
  • COM (Component Object Model) and P/Invoke — QuickLook's C++/CLI bridge and Windows API interop layer are entirely COM-based; P/Invoke declarations in C# code invoke unmanaged Windows APIs for shell integration
  • APPX/UWP (Universal Windows Platform) Packaging — The Build/AppxManifest.xml indicates the app targets Windows App packaging; understanding capability declarations and sandboxing is essential for deployment and permission model
  • Plugin Architecture / Handler Pattern — QuickLook's ability to preview 100+ file types without native code for each suggests a discoverable plugin/handler system; adding new preview types requires understanding this extensibility model
  • HLSL (High-Level Shading Language) Rendering — The 2.1KB HLSL code indicates GPU-accelerated rendering for image/video previews; critical for understanding performance optimization and hardware acceleration in the preview pane
  • DPI Scaling and Multi-Resolution Assets — Build/Assets/ contains 100, 125, 150, 200, 400 scale variants; QuickLook must handle modern high-DPI displays correctly, and this asset structure is non-negotiable for proper UI rendering
  • IDataObject and Drag-Drop Protocol — QuickLook likely hooks the IDataObject interface to intercept file selections and drag operations in Explorer; essential for the spacebar-triggered preview mechanism
  • jnm2/RegFileShell — Registry file shell extension for Windows Explorer; demonstrates low-level shell integration patterns that QuickLook uses for hooking into Explorer context
  • hluk/CopyQ — Cross-platform clipboard manager with plugin architecture; similar modular preview/handler design philosophy applicable to preview handlers
  • files-community/Files — Modern Windows file manager written in C# with custom preview pane; shows alternative approach to Explorer-integrated file previewing and potential future architectural direction
  • madler/zlib — If QuickLook previews ZIP/archive formats via this common dependency, understanding its API is crucial for archive preview handler implementation
  • dnGrep/dnGrep — Windows search utility using WPF and shell integration; shares COM interop and Explorer hook patterns that QuickLook relies on

🪄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 GitHub Actions workflow for automated AppxManifest.xml versioning and MSIX package validation

The repo has .appveyor.yml and .github/workflows/msbuild.yml, but no automated validation of the AppxManifest.xml file (Build/AppxManifest.xml) or MSIX package integrity. This would catch manifest schema violations, missing asset references, and version mismatches before release, reducing manual QA burden and preventing store submission failures.

  • [ ] Create .github/workflows/appx-validation.yml that runs on PR and push to main
  • [ ] Add validation step using 'winappdriver' or 'makeappx' to verify Build/AppxManifest.xml integrity
  • [ ] Add step to validate all asset files referenced in AppxManifest.xml exist (Build/Assets directory)
  • [ ] Add step to ensure version in AppxManifest.xml matches CHANGELOG.md latest entry
  • [ ] Document workflow in README.md's contribution section

Create plugin development guide with unit test template for QuickLook plugin SDK

The repo contains QLPlugin.ico and Build/priconfig.xml suggesting an extensible plugin architecture, but there's no dedicated documentation on how to create plugins or test them. The .github/copilot-instructions.md and issue templates suggest this is actively maintained, but plugin developers have no clear starting point. This would lower the barrier for community contributions of new file format handlers.

  • [ ] Create docs/PLUGIN_DEVELOPMENT.md with plugin architecture overview
  • [ ] Add docs/examples/sample-plugin/ with a minimal C# plugin example (txt file previewer)
  • [ ] Include unit test template docs/examples/sample-plugin/SamplePluginTest.cs using MSTest/xUnit pattern
  • [ ] Document how plugins register with the main QuickLook.exe (config file or registry)
  • [ ] Add CI step to Build/msbuild.yml to compile example plugin to catch SDK breaking changes

Add integration test workflow for QuickLook previewer functionality across file types

The msbuild.yml workflow only handles compilation. With the extensive Build/Assets and multiple plugin support implied by the structure, there's no automated validation that preview functionality works end-to-end. This is critical for a UX-focused tool where broken previews are immediately noticeable to users.

  • [ ] Create .github/workflows/integration-tests.yml that runs on Windows VM (github-hosted windows-latest)
  • [ ] Add test step that launches QuickLook.exe and programmatically triggers space key on various file types using UIAutomation or test framework
  • [ ] Create tests/integration/PreviewTests/ directory with test cases for common formats (images, documents, media)
  • [ ] Add validation that preview window appears within 500ms and displays content correctly
  • [ ] Document test execution in CONTRIBUTING.md (or create one referencing .github/PULL_REQUEST_TEMPLATE.md requirements)

🌿Good first issues

  • Add unit tests for preview handler plugins: The C++ (172KB) and HLSL (2.1KB) code visible in the language breakdown suggests preview handlers for specialized formats, but no test/ directory is visible in the file list. Create xUnit or NUnit tests for existing preview handlers to establish CI-gated test coverage.
  • Document plugin development guide: The .gitmodules implies a plugin architecture, but no Plugins/README.md or PLUGIN_DEVELOPMENT.md is visible. Write a guide with concrete examples (e.g., 'Creating a PDF preview handler') and link it from the main README.
  • Add keyboard shortcut customization UI: The core feature is 'press Space to preview,' but no settings panel visible in Build/Assets/ or mentioned in the structure. Create a simple WPF preferences dialog allowing users to rebind the preview hotkey and toggle file type filters.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 504fd13 — Add .pyi extension to Python syntax (emako)
  • 3f4f170 — Include RViz (.rviz) in YAML highlighting extensions (emako)
  • 686290c — Reformat WellKnownExtensions initializer (emako)
  • e4cd97d — Rename RealExtension to OriginalExtension (emako)
  • 325d2cb — Add HelloGitHub featured badge to README (emako)
  • 829963d — Add COM wrappers and out-of-proc preview host #1929 (emako)
  • 1432c05 — feat(assets): add modern 256x256 android icon (#1941) (adnan-bhaldar)
  • c091df9 — Improved Svelte syntax highlighting (emako)
  • ba074bd — Improved Ruby syntax highlighting (emako)
  • bc1a2ce — Improved reStructuredText syntax highlighting (emako)

🔒Security observations

The QuickLook Windows application repository has CRITICAL security issues related to exposed cryptographic materials (private keys and certificates) committed to version control. This is the most severe risk and requires immediate remediation. Additionally, there are concerns about insecure deserialization in plugin loading, CI/CD pipeline security, and missing security documentation. The application's architecture as a file preview tool that processes untrusted user files creates inherent security challenges that require robust validation and sandboxing mechanisms. Immediate action required: revoke exposed keys and remove from git history.

  • High · Exposed Private Key Files — Build/sideload.key, Build/sideload.pfx. The repository contains private key files (sideload.key, sideload.pfx) in the Build directory. These cryptographic materials should never be committed to version control as they can be used to sign malicious code or impersonate the legitimate application. Fix: Immediately revoke these keys. Remove from version control history using git-filter-branch or BFG. Store signing keys securely in a key management system (Azure Key Vault, GitHub Secrets, etc.) and add *.key, *.pfx patterns to .gitignore.
  • High · Exposed Certificate in Repository — Build/sideload.crt. The sideload.crt certificate file is stored in the repository. While certificates are public by nature, storing them alongside private keys increases the risk of the complete key pair being compromised. Fix: Move certificate distribution to a secure channel. Consider using automated certificate management and store only in CI/CD pipelines rather than in the repository.
  • Medium · Potential Insecure Deserialization Risk — QuickLook.Appx, Plugin loading mechanism (not visible in file list). A C#/.NET Windows application with plugin architecture (QLPlugin.ico referenced, QuickLook.Appx structure) has inherent risks of insecure deserialization when loading untrusted plugin files or previewing user files. Fix: Implement strict validation of all plugin files. Use safe deserialization practices. Do not deserialize untrusted data. Implement code signing verification for all plugins.
  • Medium · Missing Security Headers Configuration — .appveyor.yml, Build configuration files. No evidence of security headers configuration (Content-Security-Policy, X-Content-Type-Options, etc.) in visible configuration files. This could be an issue if the application hosts any web content. Fix: If web content is served, implement comprehensive security headers. Configure AppX manifest with appropriate capabilities and permissions. Review AppxManifest.xml for minimal required permissions.
  • Medium · CI/CD Pipeline Exposure — .github/workflows/msbuild.yml, .appveyor.yml. GitHub Actions workflow file (.github/workflows/msbuild.yml) and AppVeyor configuration (.appveyor.yml) may contain sensitive build parameters, secrets, or deployment credentials if not properly configured. Fix: Audit CI/CD configurations to ensure no secrets are hardcoded. Use GitHub Secrets for sensitive values. Implement branch protection rules. Use signed commits and require code reviews.
  • Low · Third-party Asset Dependencies — README.md (external image URLs). The README references external animated emoji images from GitHub user repositories (Tarikul-Islam-Anik). These are external CDN dependencies that could be compromised. Fix: Host external assets locally or on controlled infrastructure. Remove external image dependencies from public README to reduce attack surface.
  • Low · Missing SECURITY.md File — Repository root. No visible SECURITY.md or security reporting policy file. This makes it difficult for security researchers to responsibly disclose vulnerabilities. Fix: Create a SECURITY.md file following GitHub's recommended format (https://github.com/github/docs/blob/main/SECURITY.md) to provide security reporting guidelines.

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

🤖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/QL-Win/QuickLook 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.

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 QL-Win/QuickLook repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/QL-Win/QuickLook.

What it runs against: a local clone of QL-Win/QuickLook — 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 QL-Win/QuickLook | 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 ≤ 32 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>QL-Win/QuickLook</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of QL-Win/QuickLook. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/QL-Win/QuickLook.git
#   cd QuickLook
#
# 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 QL-Win/QuickLook and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "QL-Win/QuickLook(\\.git)?\\b" \\
  && ok "origin remote is QL-Win/QuickLook" \\
  || miss "origin remote is not QL-Win/QuickLook (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 ".github/workflows/msbuild.yml" \\
  && ok ".github/workflows/msbuild.yml" \\
  || miss "missing critical file: .github/workflows/msbuild.yml"
test -f "Build/AppxManifest.xml" \\
  && ok "Build/AppxManifest.xml" \\
  || miss "missing critical file: Build/AppxManifest.xml"
test -f ".github/copilot-instructions.md" \\
  && ok ".github/copilot-instructions.md" \\
  || miss "missing critical file: .github/copilot-instructions.md"
test -f "OPTIONS.md" \\
  && ok "OPTIONS.md" \\
  || miss "missing critical file: OPTIONS.md"
test -f "CHANGELOG.md" \\
  && ok "CHANGELOG.md" \\
  || miss "missing critical file: CHANGELOG.md"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 32 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~2d)"
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/QL-Win/QuickLook"
  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>

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

Embed this chat in your README →

Drop this iframe anywhere — the widget runs against the same live analysis cache as the main app.

<iframe
  src="https://repopilot.app/embed/ql-win/quicklook"
  width="100%" height="500"
  style="border:1px solid #d0d7de; border-radius:8px;"
  allow="microphone"
  loading="lazy"
></iframe>