kyleduo/TinyPNG4Mac
44.8
Weak · 30 September 2026
2.8k
lines of production code
Swift
primary language
2
measurements over time
What this system is
Tiny Image is a macOS application designed for batch image compression and format conversion, leveraging the TinyPNG API to reduce file sizes. It allows users to process images via Finder integration or the app interface, supporting output formats such as PNG, JPEG, WebP, and AVIF with options to overwrite originals or save to a separate directory. The system manages concurrent compression tasks with detailed progress tracking, error handling, and metadata preservation, requiring macOS 13 Ventura or newer.
Features
Introduce background image compression client with concurrency control
The application now includes a dedicated client layer (TPClient) for handling image compression tasks via the TinyPNG API. This implementation introduces configurable concurrency limits to manage parallel upload and download requests, ensuring efficient resource usage. It supports detailed task status tracking (uploading, processing, downloading) with progress updates, automatic directory creation for output folders, and the ability to preserve image metadata. The client also handles API errors, retries, and mock mode for testing, providing a robust backend for the compression feature.
TinyPNG4Mac/TinyPNG4Mac/client · high confidence
New reusable settings row component
A new SwiftUI view component, SettingsItem, has been introduced to standardize the layout of settings rows. This component provides a consistent structure with a fixed-width title column, a flexible content area for controls, and an optional description text, improving the visual consistency of the application's settings interface.
TinyPNG4Mac/TinyPNG4Mac/views/settings · high confidence
New utility helpers for file management, UI formatting, and session caching
This change introduces a new set of utility modules in the app's utils directory to support core application logic. FileUtils now manages session-based cache directories, handles file operations (copy, move, permission checks), and identifies valid image files including the newly supported AVIF format. AppUtils provides a mechanism to detect Xcode Preview mode, which influences how sandbox cache directories are cleaned up. UIUtils adds helpers for converting hex color strings to SwiftUI colors and simplifies view padding, while Extensions.swift adds convenient methods for formatting byte sizes and checking array emptiness. URLUtils extends URL with methods for path shortening, existence checks, and file operations.
TinyPNG4Mac/TinyPNG4Mac/utils · high confidence
Release 2.2.1: Format conversion and compression caching
This update introduces support for image format conversion, allowing users to convert images to specific formats (PNG, JPEG, AVIF, WEBP) or automatically select the smallest file size among supported formats. Additionally, the app now caches the number of compressed images, and the release notes clarify that version 2.0.0 and later require macOS 13 Ventura or newer. The application has also been renamed to 'Tiny Image' to address intellectual property concerns regarding the previous name.
(repo-wide) · high confidence
Behavioural changes
Added localization strings for the Finder Services menu
The application now includes localized string resources for the Finder Services integration in both English and Simplified Chinese. These files define the display name "Compress with Tiny Image" and its description, enabling the OS-level context menu service to present the correct text to users in their preferred language.
TinyPNG4Mac/TinyPNG4Mac/en.lproj, TinyPNG4Mac/TinyPNG4Mac/zh-Hans.lproj · high confidence
App renamed to Tiny Image with Finder integration and new save modes
The application has been renamed from TinyPNG4Mac to Tiny Image, visible in the main window title and the About dialog. A new Finder Quick Action service has been added, allowing users to right-click images or folders in Finder and select 'Compress with Tiny Image' to send them directly to the app. The compression behavior now supports two distinct modes: 'Overwrite' (replacing original files) and 'Save As' (saving to a configurable output directory, which defaults to a 'tinyimage\_output' folder in Downloads). Existing users will have their previous 'replace mode' setting automatically migrated to the new 'Overwrite' mode, and the old 'output file path bookmark' setting is migrated to the new 'output directory' setting.
TinyPNG4Mac/TinyPNG4Mac · high confidence
App renamed to Tiny Image with updated project structure
The application bundle and target have been renamed from TinyPNG4Mac to Tiny Image, a change reflected in the Xcode project file (project.pbxproj) and workspace configuration. This update includes the addition of the Alamofire framework as a dependency and configures the project for macOS development with Swift 5.9 and Xcode 16.1 toolchain settings.
TinyPNG4Mac/TinyPNG4Mac.xcodeproj · high confidence
Enhanced task row UI with detailed status, file size, and action controls
The task list rows now display the original and compressed file sizes, the output format type, and specific error messages for failed tasks. Users can directly reveal the compressed image in Finder from the row, access a context menu to open or reveal origin/compressed images, retry failed tasks, or restore original files, providing more immediate control and visibility into the compression process.
TinyPNG4Mac/TinyPNG4Mac/views · high confidence
Introduces 'Tiny Image' branding with new About, Settings, and Main views
The application window now displays the name 'Tiny Image' in the main content area and the About view. Users can configure the app via a new Settings view, which allows them to set an API key, choose between Overwrite and Save As modes, specify an output directory, adjust concurrent task counts, and toggle metadata preservation options. The main interface also includes a menu for selecting image format conversion targets (e.g., WebP, PNG, JPEG) and displays task progress statistics.
TinyPNG4Mac/TinyPNG4Mac/windows · high confidence
Introduction of debug view model and enhanced main view model logic
The application now includes a dedicated DebugViewModel to expose debug messages for troubleshooting, alongside significant updates to the MainViewModel. The main view model now supports configurable image conversion types (including auto-detection and specific format preservation), validates output directories and settings before task creation, and implements logic to skip duplicate tasks. It also manages task states more robustly, including retry and restore capabilities, and tracks quota usage and task statistics for the user interface.
TinyPNG4Mac/TinyPNG4Mac/vms · high confidence
Structured error handling and configurable image conversion types
The application now introduces a structured error model (Errors.swift) that distinguishes between API errors and general file errors, providing users with clearer error messages during compression tasks. Additionally, a new ImageType enum (ImageType.swift) allows users to configure the output format for converted images, supporting PNG, JPEG, WebP, and AVIF, with an 'auto' mode to let the system select the optimal type. The TaskInfo model (TaskInfo.swift) has been updated to track these conversion types, output types, and detailed task statuses (such as uploading, processing, downloading, and restored), enabling better progress tracking and state management for image compression jobs.
TinyPNG4Mac/TinyPNG4Mac/model · 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 48 → 45 (-3.0)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 98 → 95 (-3.6)
- Architecture 93 → 95 (+1.7)
- Maturity 50 → 53 (+2.9)
- Readiness 17 → 12 (-5.3)
- Security 100 → 100 (+0.0)
Resolved (1)
- Documentation: no licence statement (README.md)
New (5)
- Duplicated block (10 lines × 2) (TinyPNG4Mac/TinyPNG4Mac/views/TaskRowView.swift)
- MainContentView.body (cognitive 25) (TinyPNG4Mac/TinyPNG4Mac/windows/MainContentView.swift)
- MainContentView.body (cyclomatic 18) (TinyPNG4Mac/TinyPNG4Mac/windows/MainContentView.swift)
- MethodTooLong: MainContentView.body (TinyPNG4Mac/TinyPNG4Mac/windows/MainContentView.swift)
- MethodTooLong: TaskRowView.body (TinyPNG4Mac/TinyPNG4Mac/views/TaskRowView.swift)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
kyleduo/TinyPNG4Mac 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 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit ce113256a1634a28bb807b8937bed43cf87e2093 — 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-cb25ca4feafa.