NativePHP desktop app to compose two screenshots into split or overlap thumbnails, with background patterns and PNG, JPG, or wipe-video export.
Heads up: this project is AI-assisted. A lot of the code and docs were written with AI tools (reviewed and steered by me). Pairframe exists first for my own thumbnail workflow; I open-sourced it in case it helps someone else. Issues and pull requests are welcome, just know what you're looking at.
Prebuilt macOS and Windows installers are on the GitHub Releases page.
These builds are unsigned. On macOS, Gatekeeper may block the app until you allow it:
- Open Pairframe (you may see “cannot be opened”, “damaged”, or “unidentified developer”).
- Go to System Settings → Privacy & Security.
- Choose Open Anyway / Allow for the blocked app.
- Confirm again if macOS asks.
Alternatively, build locally instead of using a downloaded installer.
Release builds check GitHub Releases for updates.
- Windows: updates can install without code signing (SmartScreen may still warn).
- macOS: automatic updates only work for signed and notarized builds. Unsigned builds need a manual download from Releases.
- PHP 8.4+
- Composer
- Node.js 22+
- npm
composer install
cp .env.example .env
php artisan key:generate
npm install
npm run build
php artisan native:install --no-interactionOr run composer run setup, then php artisan native:install --no-interaction.
composer run devOpen the app URL and upload two screenshots.
npm run build
php artisan native:runFor a live Vite + NativePHP loop:
composer native:devAfter Setup:
npm run build
php artisan native:buildTarget a specific OS / architecture when supported on your host:
php artisan native:build mac arm64
php artisan native:build mac x64
php artisan native:build win x64Installers land in nativephp/electron/dist/ (for example .dmg / .zip on macOS, .exe on Windows).
Local builds are unsigned unless you configure Apple or Windows code signing. Prefer php artisan native:run for day-to-day development.
- Upload two screenshots (PNG, JPG, WebP)
- Layouts: vertical, horizontal, diagonal, and overlap (cards, side, stack)
- Diagonal styles: straight, wavy, zigzag, scallop, soft (with density)
- Split position, angle, padding, border radius, and optional shadow on overlap
- Theme (light / dark / auto), side labels, badge, and swap sides
- Background patterns with custom colors and density
- Save / load settings presets (images are not stored)
- Export PNG or JPG at optional scale (1×, 1.5×, 2×), or wipe video (MP4 / WebM)
