Unreleased
[0.0.5] - 2026-02-27
Added
- Dedicated
/release-notespage serving only the current version’s changelog as lightweight HTML — Sparkle update dialog no longer loads the full website - Sparkle EdDSA signing step in
release.sh(local builds) — signs the DMG and prints theedSignature+sizeforrelease.json SPARKLE_PRIVATE_KEYGitHub Actions secret for CI Sparkle signing
Fixed
- Sparkle updates failed after download because
edSignatureinrelease.jsonwas"PLACEHOLDER"— CI now signs the DMG withsign_updateusing the EdDSA private key - CI
sign_updatediscovery used incorrect search paths that missed the SPM artifacts directory; now searchesbuild/DerivedData/SourcePackages/artifacts/first - Appcast
releaseNotesLinkpointed to/changelog(full website); now points to/release-notes(clean, minimal page)
[0.0.4] - 2026-02-27
Added
ExternalLinksconstants struct centralising GitHub, Issues, Buy Me a Coffee, website, and developer website URLs (Constants.swift)- “Buy Me a Coffee” link in the About tab alongside GitHub and Report an Issue links
- Developer credit (“Made by 0xdps”) with links to
dps.codesanddefaulttamer.appin the About tab - Activity Log toggle in Preferences → General → Diagnostics (previously hidden as “coming soon”)
- App icon hover effect in
MenuHeaderView— spring scale animation with accent color glow - Hover highlight on the routing toggle row in
MenuHeaderView - “Buy Me a Coffee” link in website footer Community column
- Buy Me a Coffee CTA banner on the website Download page (“What’s Next” section)
- Buy Me a Coffee floating widget (BMC-Widget) in
BaseLayout.astrowith Umami analytics tracking
Changed
- Replaced
Toggle+ customActiveSwitchStyleinMenuHeaderViewwith a direct Capsule-based toggle view (36×20 with 16px knob) to fix vertical alignment issues inside NSMenu-hosted SwiftUI views - Routing toggle row in
MenuHeaderViewis now full-width with edge-to-edge hover highlight - About tab links (GitHub, Report an Issue) now use
ExternalLinksconstants instead of hardcoded strings Info.plistversion strings now use$(MARKETING_VERSION)/$(CURRENT_PROJECT_VERSION)build settings instead of hardcoded values
Removed
showRoutingFeedbackproperty fromSettingsmodel — routing toast notifications were never visible to users because they only rendered inside the popover/preferences window, which is closed when URLs are routedtoggleRoutingFeedback()method fromAppState- All toast notification calls from
executeRouteAction()andopenURLFromChooser()inAppState ActiveSwitchStylecustomToggleStylefromMenuHeaderView
Fixed
- Deploy script (
quick-deploy.sh) now preserves sandbox entitlements during ad-hoc re-signing — previouslycodesign --force --deep --sign -stripped entitlements, causing the app to read UserDefaults from the wrong location and lose all rules
[0.0.3] - 2026-02-25
Changed
- Replaced custom GitHub-based update checker with Sparkle (
SPUStandardUpdaterController) — automatic background update checks, delta updates, and native macOS update UI are now handled by the Sparkle framework - Update preferences in the About tab now use Sparkle’s
CheckForUpdatesViewModelinstead of a custom alert flow - Release data (
release.json) now includesedSignatureandsizefields required for Sparkle appcast signature verification - Font loading in the website simplified to a standard blocking
<link>(removed non-critical CSS lazy-load pattern) - JSON-LD structured data script tag fixed to use
is:inlineto prevent Astro from processing it - Split developer documentation out of
README.mdintoDEVELOPER.md
Added
- Sparkle appcast endpoint (
/appcast.xml) served from the website forSPUUpdaterto consume - “Danger Zone” section in Preferences → General with a factory-reset button (
AppState.resetToDefaults()) that clears all rules, settings, and first-run state
Removed
- Custom
UpdateManagerimplementation (GitHub Releases API polling, rate limiting, manual version comparison,AvailableUpdate/UpdateErrormodels) UpdateNotificationView— superseded by Sparkle’s native update UIrelease.tsdata module replaced byrelease.json- Removed inaccurate claim in README that default rules (Slack → Chrome, Cursor → Chrome) are created on first launch — no default rules have ever been created by the app
[0.0.2] - 2026-02-23
Changed
- First-run setup state is now stored as a file sentinel in Application Support instead of UserDefaults, so it survives app updates and only resets on a full uninstall
- Diagnostics and routing feedback settings temporarily hidden from Preferences (coming soon)
Fixed
- Migrates existing
hasCompletedFirstRunUserDefaults flag to the new file-based sentinel on first launch after update
[0.0.1] - 2026-02-22
Added
- Initial release of Default Tamer
- Smart URL routing based on source app and URL/domain rules
⌥Option key browser chooser override- Configurable fallback browser
- Rule management UI with drag & drop reordering
- Optional activity logging (privacy-first, URLs sanitized before storage)
- Launch at login support
- First-run setup wizard
- Menu bar integration with popover interface