ealeksandrov/ProvisionQL
58.0
Adequate · 1 October 2026
3.6k
lines of production code
Swift
primary language
2
measurements over time
What this system is
ProvisionQL is a macOS application and Quick Look extension designed to inspect iOS development assets, including IPA files, Xcode archives, and provisioning profiles. It provides native file previews and thumbnails in Finder, extracting detailed metadata such as app information, certificates, entitlements, and device lists. The system processes these files locally without network connections, offering a modern SwiftUI interface for viewing and validating iOS app contents.
How it got here
2014 — SwiftUI migration and v2.0 preparation
7 changes.
The project underwent a comprehensive overhaul to prepare for version 2.0.0, centering on rewriting the host application in SwiftUI and migrating the Xcode project to a modern build system with extension targets. This period also involved removing legacy components such as iOS 7-style helpers, HTML preview templates, and automatic installation scripts, while updating documentation and tooling to reflect new capabilities like TrollStore support.
2018–2026 — Swift 6 migration and preview expansion
10 changes.
The project migrated to Swift 6 and macOS 15, introducing a dedicated PreviewUI module with SwiftUI-based components for app archives and provisioning profiles. This period focused on expanding Quick Look support to include thumbnails and detailed previews for iOS development assets, alongside a comprehensive rewrite of the core parsing engine to extract richer metadata and improve stability.
Features
Automated build number updates via script
A new shell script, autoupdate-revision.sh, has been added to the Scripts directory. This script automatically updates the CFBundleVersion in the application's Info.plist file by counting the total number of commits in the current Git repository, ensuring the build number reflects the repository's history.
Scripts · high confidence
Introduce dedicated PreviewUI module for app archives and provisioning profiles
A new shared PreviewUI module has been added to ProvisionQLCore, introducing a SwiftUI-based preview system for app archives (including IPA, TrollStore IPA, Xcode archives, and app extensions) and provisioning profiles (mobileprovision, provisionprofile, and legacy formats). The module provides a PreviewModel that handles security-scoped resource access and concurrent parsing, and a PreviewRootView that renders the appropriate UI for loading, success, or failure states. This change establishes the core UI components and content-type support logic for previewing these specific file types within the host application.
ProvisionQLCore/PreviewUI · high confidence
Introduce new SwiftUI-based preview UI components
The preview interface now uses a new set of SwiftUI views to display app and provisioning profile details. This includes a structured header with app icons and metadata, collapsible sections for certificates and device lists, and dedicated views for entitlements, diagnostics, and file information. App Store metadata is now displayed with a clickable link to the App Store, and status badges use adaptive system colors to indicate validity and expiration.
ProvisionQLCore/PreviewUI/Views · high confidence
New Quick Look preview extension for iOS app archives and provisioning profiles
A new macOS Quick Look extension has been added to the Preview module, enabling native file previews for iOS-related assets directly in Finder. The extension is configured to support IPA files (including TrollStore .tipa), iOS provisioning profiles (including legacy .mobileprovision formats), and Xcode archives. It utilizes a SwiftUI-based view controller to render these previews, allowing users to inspect the contents of these files without opening the main application.
Preview · high confidence
New Quick Look thumbnail extension for IPA, xcarchive, and provisioning profiles
A new Quick Look thumbnail extension has been added to generate visual previews for iOS development assets. The extension supports standard IPA and xcarchive files, as well as TrollStore-specific .tipa files and legacy mobileprovision profiles. For provisioning profiles, the thumbnails now display a colored status badge (green for valid, orange for expiring, red for expired) and show a status dot instead of a zero-count badge for profiles without a device list. This change introduces the Thumbnail target, its provider implementation, and the necessary UTI declarations to handle these file types.
Thumbnail · high confidence
Removals
Removal of HTML preview template
The HTML preview template file (template.html) has been removed from the Resources directory. This change eliminates the static HTML structure previously used to render provisioning profile details, including app information, profile metadata, certificates, devices, and entitlements, in the preview pane.
ProvisionQL/Resources · high confidence
Removal of automatic QuickLook plugin installation script
The \install.sh\ script, which previously handled the automatic installation of the QuickLook generator plugin into the user's \\~/Library/QuickLook/\ directory, has been removed. Users will no longer have the plugin installed automatically via this script upon build or execution.
ProvisionQL/Scripts · high confidence
Removal of iOS 7-style rounded rectangle helper
The \NSBezierPath+IOS7RoundedRect\ category, which provided a \bezierPathWithIOS7RoundedRect:cornerRadius:\ method for drawing iOS 7-style rounded rectangles on macOS, has been removed. Users relying on this specific helper for creating paths with the characteristic iOS 7 corner curvature will no longer have access to this utility.
NSBezierPath+IOS7RoundedRect · high confidence
Behavioural changes
Added Xcode workspace configuration files
The project now includes the standard Xcode workspace data file (contents.xcworkspacedata) and the IDE workspace checks plist (IDEWorkspaceChecks.plist). These files establish the basic workspace structure and suppress the 32-bit warning in Xcode, ensuring the workspace is correctly recognized and configured by the IDE.
ProvisionQL.xcodeproj/project.xcworkspace · high confidence
Comprehensive app archive parsing and metadata extraction
The core parsing engine has been rewritten to support extracting detailed metadata from IPA, .tipa, .xcarchive, and .appex files. Users will now see richer information including App Store metadata (such as Apple ID and developer name) for App Store IPAs, explicit app extension types (e.g., Siri Intents, Widgets), and direct Mach-O entitlements read from the binary. The system also provides more accurate version display by falling back between real version fields instead of inventing values, and includes improved icon extraction that handles various asset catalog formats. Additionally, memory usage for archive extraction is now capped at 100 MB to prevent crashes from hostile zip bombs, and the parser now correctly handles edge cases like missing directory entries in IPAs and macOS archive bundle structures.
ProvisionQLCore/Sources · high confidence
Migrated project to modern Xcode build system with new extension targets
The Xcode project has been upgraded to object version 77, enabling modern build-system features like file-system synchronization and updated build phases. This structural change introduces two new application extensions, Thumbnail.appex and Preview.appex, which are now embedded via a dedicated Copy Files build phase. The project also shifts from manual file references to using PBXFileSystemSynchronizedRootGroup for the main targets, simplifying source management and removing legacy build artifacts like the install script and manual framework linking in favor of the new extension-based architecture.
ProvisionQL.xcodeproj · high confidence
Project documentation and tooling overhaul for version 2.0.0
This change introduces a comprehensive update to the project's documentation and development tooling. A new CHANGELOG.md has been added, documenting the significant behavioral changes in version 2.0.0, including macOS 15 compatibility, improved provisioning profile validation, support for TrollStore IPA (.tipa) files, and App Store metadata display. The README.md has been completely refreshed to reflect the new supported file types (including .tipa and .appex), updated installation instructions for macOS 15+, and new development setup using mise. Additionally, a PRIVACY.md file has been added to clarify that the app processes files locally without network connections, and the LICENSE file has been renamed to LICENSE.md with an updated copyright year. Development tooling is standardized with the addition of .mise.toml and .swiftformat configuration files.
(repo-wide) · high confidence
ProvisionQL host app rewritten in SwiftUI
The ProvisionQL host application has been completely rewritten from Objective-C to SwiftUI, replacing the legacy QuickLook generator implementations (GeneratePreviewForURL.m, GenerateThumbnailForURL.m, Shared.h/m) with a modern Swift architecture. This change introduces a new SwiftUI-based user interface (ContentView, AboutPanel) and a dedicated preview model (HostAppModel, PreviewModel) to manage file opening, window routing, and preview generation, while updating the app's Info.plist to support new file types like TrollStore IPA and Xcode archives.
ProvisionQL · high confidence
Remove support for .app bundle previews
The Quick Look generator no longer provides previews for iOS application bundles (com.apple.application-bundle). This change removes the file type registration for .app bundles from the plugin's Info.plist, meaning users will no longer see generated thumbnails or previews for these specific files.
ProvisionQL/Supporting-files · high confidence
Updated Xcode scheme configuration for testing and installation
The Xcode scheme for ProvisionQL has been updated to direct the test action to the ProvisionQLCoreTests target, ensuring tests run against the correct package. Additionally, a post-build shell script has been added to automatically copy the built ProvisionQL.app to the /Applications directory, and the launch action is configured to run the application from this location.
ProvisionQL.xcodeproj/xcshareddata · high confidence
Test coverage
Added unit tests for provisioning profile parsing and UI preview logic
Added comprehensive test suites in ProvisionQLCore/Tests to verify the correctness of the core parsing and preview components. AppArchiveTests cover AppInfo model initialization, display version formatting, embedded profile detection, and the AppArchiveParser's handling of invalid files, missing Info.plist, IPAs without directory entries, and nested app bundles. CoreTests validate BadgeInfo and CertificateInfo models, as well as ProvisioningInfo initialization and profile type detection logic based on device lists, entitlements, and enterprise flags. PreviewUITests ensure that App Store links are validated for ASCII decimal IDs and that unsupported file types are correctly rejected during the preview request process.
ProvisionQLCore/Tests · high confidence
Dependencies
Migrate to Swift 6 and ZIPFoundation 0.9.20
The project now requires Swift 6 language mode and macOS 15, and explicitly depends on ZIPFoundation version 0.9.20. This change introduces a new local Swift package structure for the core framework, which includes a shared PreviewUI module and updated test targets that rely on the new dependency version.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 68 → 58 (-9.6)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 97 → 98 (+0.3)
- Architecture 100 → 99 (-1.5)
- Maturity 49 → 39 (-9.7)
- Readiness 67 → 51 (-15.8)
- Security 100 → 100 (+0.0)
Resolved (4)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Hotspot: ProvisionQLCore/Sources/AppArchiveParser.swift (ProvisionQLCore/Sources/AppArchiveParser.swift)
- Hotspot: ProvisionQLCore/Sources/MachOEntitlementsReader.swift (ProvisionQLCore/Sources/MachOEntitlementsReader.swift)
New (4)
- Coverage not measured — Swift suite
- Inconsistent naming pattern for related operations. 'parse' returns a basic object, while 'parseWithResources' explicitly mentions the resource aspect. However, the return type 'AppArchiveParseResult' contains 'AppInfo' plus an icon. A more consistent pattern would be 'parseBasic' vs 'parseWithResources' or simply 'parse' vs 'parseFull'.
- Off the main sequence: ProvisionQLCore
- Two methods with similar names ('extractIcon' vs 'extractIconSource') returning different types (NSImage vs IconSource). This creates confusion about which method to use when an icon is needed. 'IconSource' is a wrapper around Data, while 'NSImage' is the rendered image.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ealeksandrov/ProvisionQL was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5dc7e9c443949d9d7850fbba2fb07122b613cf4c — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.