FileRouter · Changelog
Changelog
1.0.22
CHANGED
- Editor pickers return editor or utility choices so copy/reveal work without selecting an app.
NEW
- Select All and Deselect All on the Settings Editors tab enable or disable every offered app for the current file type in one step.
- Copy POSIX Path, Reveal in Finder, and Open Parent in Terminal appear as first-class rows in the list and radial pickers, configurable per file type.
- Open Parent in Terminal uses a choosable terminal app (default Terminal.app) and opens each file’s unique parent folder.
- Settings Editors tab includes a Utilities section with offer toggles and a terminal app popup plus Other…
- Settings Utilities offers Run Shortcuts, Run Services, and Run AppleScripts checklists (all off by default) to choose which items appear per file type
- Enabled Shortcuts, Services, and AppleScripts appear under those submenus in the list picker and status menu, and as named slices in the radial picker
- Shortcuts and Services receive the current files; AppleScripts get POSIX paths as argv, and workflows use Automator-style file input
- Open Scripts Folder reveals ~/Library/Scripts (Direct/Setapp) or Application Scripts (Mac App Store)
FIXED
- Xcode Debug builds resolve KeyboardShortcuts again by building only the active architecture instead of arm64+x86_64.
- Xcode builds include PickerUtility sources and tests so Settings and the editor picker compile again after the utility-rows change.
1.0.19
CHANGED
- Editor open uses a custom URL template when set
NEW
- Editor URL templates expand filepath, folder, filename, tilde,
- Open URL templates can be edited from a gear on each Editors
FIXED
- URL template encoding now percent-encodes query delimiters
- Open URL template sheet clears the field’s first responder
- Xcode Debug builds resolve KeyboardShortcuts again by building only the active architecture instead of arm64+x86_64.
1.0.18
CHANGED
- Clarified the Automation permission prompt so it explains Finder selection for rule hotkeys
- Updated the Setapp framework to 5.3.3 with the matching public key
- Rotated the Direct Sparkle update signing public key (existing Direct installs need one manual reinstall before auto-updates resume)
NEW
- x-filerouter URL scheme opens now route through the app, optionally forcing a specific rule’s action via a rule id or name parameter.
- Forced-rule opens bypass When matching but still respect the file’s route; unresolved rule references beep and skip that file instead of falling back to first-match or Always Open.
- Rules table - right-click a conditional rule to copy its rule ID or a ready-to-use URL scheme link for forcing that rule.
IMPROVED
- Onboarding screenshot for the menu bar menu step
FIXED
- Direct builds crashing at launch with no menu bar icon after XcodeGen stripped framework rpaths
- License window not appearing after a successful Paddle purchase (and long pause before any UI)
- App staying in the Dock/menu bar after closing Settings instead of returning to menu-bar-only
- Mac App Store Settings still showing the Accessibility permissions tile
- Mac App Store Automation status looking denied when consent was already granted via Application Scripts
1.0.17
2026-08-03 12:04
CHANGED
- Clarified the Automation permission prompt so it explains Finder selection for rule hotkeys
- Updated the Setapp framework to 5.3.3 with the matching public key
- Rotated the Direct Sparkle update signing public key (existing Direct installs need one manual reinstall before auto-updates resume)
- Onboarding screenshot for the menu bar menu step
- Direct builds crashing at launch with no menu bar icon after XcodeGen stripped framework rpaths
- License window not appearing after a successful Paddle purchase (and long pause before any UI)
- App staying in the Dock/menu bar after closing Settings instead of returning to menu-bar-only
- Mac App Store Settings still showing the Accessibility permissions tile
- Mac App Store Automation status looking denied when consent was already granted via Application Scripts
1.0.14
CHANGED
- Mac App Store builds no longer use Accessibility for rule hotkeys (App Store guideline 2.4.5); hotkeys rely on Automation instead
- Settings Permissions omits the Accessibility tile in Mac App Store builds and clarifies that hotkeys use Finder Automation
- Mac App Store rule hotkeys read Finder, Path Finder, and Bloom selection through Application Scripts (NSUserAppleScriptTask) instead of a Finder temporary-exception.apple-events entitlement
- MAS file access entitlement is user-selected read-write to support that install panel plus Open With and drop
- Clarified the Automation permission prompt so it explains Finder selection for rule hotkeys
- Updated the Setapp framework to 5.3.3 with the matching public key
NEW
- Rule hotkeys can read selections from Path Finder and Bloom via AppleScript Automation, with Finder as fallback
- Settings Install Scripts flow asks once for write access to Application Scripts so helper scripts can be installed under the sandbox
IMPROVED
- Frontmost file manager routing picks the matching Automation script by bundle id before falling back to Finder
- Automation Request prompts off the main thread and refreshes status after consent, while still using the Application Scripts probe on Mac App Store builds
1.0.13s
CHANGED
- Mac App Store builds no longer use Accessibility for rule hotkeys (App Store guideline 2.4.5); hotkeys rely on Automation instead
- Settings Permissions omits the Accessibility tile in Mac App Store builds and clarifies that hotkeys use Finder Automation
NEW
- Rule hotkeys can read selections from Path Finder and Bloom via AppleScript Automation, with Finder as fallback
IMPROVED
- Frontmost file manager routing picks the matching Automation script by bundle id before falling back to Finder
1.0.12
NEW
- Onboarding wizard that teaches Menu Bar Settings, the
- Live status-item arrow during the find-icon step that
- Open Menu Bar Settings deep link from the first onboarding
- Show Onboarding replay from the status menu and Settings
FIXED
- Radial and list editor pickers so they stay on top at screensaver level during multi-file opens
- Editor pickers so they keep focus instead of dismissing when other apps open underneath
1.0.11
CHANGED
- Direct licensing back to a one-time Paddle purchase (SDK product) with a 7-day trial; routing and Check for Updates share the same entitlement
- License… management window shows code, email, activation date, and Deactivate — no updates countdown, cancel subscription, or renew
- Radial and list editor pickers so they stay on top at screensaver level during multi-file opens
- Editor pickers so they keep focus instead of dismissing when other apps open underneath
NEW
- Direct trial & licensing via Paddle Classic (7-day trial; one-time license)
- License… menu on the Direct build
- Celebration overlay after purchase/activation and when opening License while already licensed
1.0.7
2026-07-22 07:39
CHANGED
- Sandbox so only the Mac App Store build is sandboxed
- Built-in routes so only Markdown and Plain Text ship by default
- Menu bar editor pick updates fallback only and keeps interactive mode
- Unmatched opens honor the Default Rule mode, with HUD pick or fallback
- HUD Cancel on the Default Rule opens nothing, same as other HUDs
- VoiceOver auto-uses the list picker unless forced to radial
- Window menu to add Close (Cmd-W) and drop Zoom
- Settings window so the Zoom title-bar button is disabled
- Version to 1.0.7 with a dedicated BuildNumber for CFBundleVersion
- Direct updates via Sparkle (updates.filerouter.app) and unsandboxed packaging
- Setapp build with Setapp Framework and com.brettterpstra.FileRouter-setapp
- Make FileRouter default on each route submenu for extension-based claiming
- Default Rule modes for always this editor, select from all, or select from running
- Radial editor picker for Select from all / running, cursor-centered with slice click, arrows, and Cmd-1-9
- Editor picker preference for radial (default) or list in Settings General
- Hardened Runtime on Direct and Setapp builds for notarization
- Sparkle public EdDSA key for Direct auto-updates
- Sparkle update deploy script to zip, note, appcast, and publish to S3
- Settings editing with Dock icon and Edit menu only while Settings is open
- Add Type / drop docs clarifying confirm-then-claim still applies
- Radial accessibility with per-editor VoiceOver buttons
- Radial icon sizing that keeps readable spacing as the candidate count increases
- Local signing via optional Signing.xcconfig so XcodeGen keeps the Development Team
- mkapp.sh to regenerate the Xcode project only when inputs change, with –regenerate
- mkapp.sh so the direct app builds via Xcode with a real bundle ID and Sparkle
- Select from running with no running apps opens the fallback editor
- Radial picker so large editor lists grow the ring instead of overlapping icons
- Preference seeding only puts the active editor first when the order list is empty; an existing order is preserved and never auto-promotes active.
- Radial picker so clicking outside the disc, leaving the panel, or activating another app cancels
- Direct licensing to an annual auto-renewing updates subscription after the 7-day trial
- Check for Updates so an expired updates plan opens purchase/renew instead of Sparkle
- License menu item appears when
manageLicensehandler is set AppDelegate.setManageLicenseHandlermirrors Check for Updates wiring- Confetti celebration overlay shows brief full-screen confetti with centered message; auto-dismisses after 2 seconds
- Direct builds now bundle Paddle Classic licensing support.
- Direct licensing adds the Paddle trial, purchase, and activation flow.
- Direct trial & licensing via Paddle Classic (7-day trial; routing blocked after expiry until purchase/activation)
- License menu on the Direct build
- Celebration overlay after purchase/activation and when opening License while already licensed
- Order tab lets you drag-reorder enabled editors per route for interactive Select from all/running and Best running when a rule has no override.
- Check for Updates on the status menu when Sparkle is available
- Edit Rules on each file-type submenu to open Settings on the Rules tab
- Licensed menu action celebrates activation without reopening the purchase dialog.
- Picker candidates (radial and list) follow the route preference order after filtering.
- Accessibility labels and tooltips across Settings, rule sheets, editor HUDs, and the drop zone
- Drop zone contrast so the teach-a-type target is easier to see
- Sparkle deploy so the release zip is also copied to the site download folder
- Paid installs so file routing keeps working after the updates subscription lapses
- Offline access honors the verification grace period and explains when reconnection is required.
- Online license expiry blocks routing even when recent offline grace exists.
- Offline grace verification is preserved only for an active license or trial.
- Blocked-route licensing refreshes state before opening the purchase dialog.
1.0.6
2026-07-21 11:40
CHANGED
- Replace the crowded route segmented control with a dropdown in Settings.
- Rename the default handler action to “Make Default for all types”.
- Replace Path Rules with a Rules editor supporting names, enable toggles, AND/OR conditions, editing, removal, and drag reordering.
- Add 15 file type routes for TextBundle, web, office, media, archives, code, email, calendar, and general documents.
- Include viewer-only apps such as Marked as disabled routing choices until explicitly enabled.
- Recognize alternate Markdown UTIs and route Quarto .qmd files under Markdown.
- Add ordered routing rules with file name, extension, parent folder, creator app, held modifier, and running editor conditions.
- Add routing actions for specific or default editors, preference-ranked running editors, and interactive selection from all or running editors.
- Show an editor selection HUD for rules that require an interactive choice.
- Refresh installed app discovery at launch while preserving editor choices, folder settings, manual apps, active selections, and path rules.
- Preserve legacy path rules through versioned migration and leave unreadable settings untouched.
- Keep the Add Rule sheet responsive and release it correctly after saving or cancelling.
- Restrict rule checkbox clicks to the checkbox so row whitespace selects and starts dragging.
- Rename the Settings window from tinrouter to filerouter.
- Teach filerouter custom file types by opening an unrouted file or choosing a sample with “Add Type…” in Settings.
- Merge overlapping extensions and UTIs into an existing route instead of creating duplicate file types.
- Remove custom routes from Settings while protecting built-in file types.
- Persist custom routes and merged type identifiers across launches.
- Claim newly added file types as filerouter defaults and open Settings at the affected route.
- Show each route’s extensions and UTI in Settings.
- Deduplicate unrouted type prompts when opening multiple files of the same type.
- Move routing settings into FileRouter’s sandbox container and automatically migrate existing tinrouter data.
- Rename the package, executable, app bundle, and bundle identifier from tinrouter to FileRouter.
- Sort file types alphabetically in the Settings popup and menu bar.
- Brand assets replace placeholder mark with official icon, logo, and favicon set from the logo mascot.
- Accent color to logo coral for Free Trial and site accents.
- Rule editor records hotkeys with KeyboardShortcuts; Cancel restores the previous chord.
- Settings shows Accessibility and Automation permission status with System Settings links.
- Modifier held criteria are removed; legacy modifierHeld leaves are dropped on load.
- Make Default / add-type so URL and internet-location UTIs are never claimed
- Sandbox so only the Mac App Store build is sandboxed
- Built-in routes so only Markdown and Plain Text ship by default
- Menu bar editor pick updates fallback only and keeps interactive mode
- Unmatched opens honor the Default Rule mode, with HUD pick or fallback
- HUD Cancel on the Default Rule opens nothing, same as other HUDs
- Provide a generated native Xcode project for building, running, and testing FileRouter.
- Protect routed files with App Sandbox and read-only access to files explicitly opened or selected by the user.
- Display a custom Retina-ready menu bar icon that adapts to light, dark, and highlighted menu bar states.
- Reveal a translucent Route File Type drop palette when dragging a file onto the menu bar icon, then run the add-type confirmation flow.
- Show a permanent Default Rule at the bottom of each route’s Rules list that mirrors the menu bar fallback editor.
- Ship a Finder app icon from Icon Composer with a full ICNS including the App Store-required 512pt @2x image.
- Set the App Store application category to Utilities.
- Company site for Exuberant Trash Panda at extrapanda.co with FileRouter product and help pages.
- Distribution CTAs for Free Trial, Mac App Store, and Setapp on the FileRouter page.
- About, Privacy, and Legal company pages for extrapanda.co; privacy/legal cover hosted apps only.
- Rule hotkeys replace open-time modifier criteria with recorded global shortcuts that route the current file selection.
- Selection prefers Accessibility, then Finder Automation as a fallback.
- Browser targets for HTML and Web routes via http/https handler discovery
- Direct updates via Sparkle (updates.filerouter.app) and unsandboxed packaging
- Setapp build with Setapp Framework and com.brettterpstra.FileRouter-setapp
- Make FileRouter default on each route submenu for extension-based claiming
- Default Rule modes for always this editor, select from all, or select from running
- Balance security-scoped file access across routing, editor selection, cancellation, failures, and asynchronous app launches.
- Expand macOS compatibility by lowering the minimum deployment target from macOS 15 to macOS 13.
- Keep the Default Rule and menu bar editor selection in sync when either one changes.
- Editor rescan so scheme-only apps like Choosy keep enabled state and templates
- Settings editing with Dock icon and Edit menu only while Settings is open
- Add Type / drop docs clarifying confirm-then-claim still applies
- Favicon generated from extrapanda-icon.png instead of the wordmark logo.
- Web link opens so http(s) URLs no longer trigger No file extension
- mkapp.sh so the direct app builds via Xcode with a real bundle ID and Sparkle
- Select from running with no running apps opens the fallback editor