Version 1.15.1
Coming Soon New April 2026
Daily reminder — get a gentle nudge at a time you choose to keep your spending in check. Set it up under Settings → Notifications
The Price Scanner now warns you when a detected price uses a different currency than your profile — no more silent mismatches
Settings now shows a warning when your entered expenses exceed your income, so you always know if your hourly rate makes sense
Gross/net income hint added to the onboarding income step and Settings — so you always know which number to enter
If the app ever has trouble saving your data, you'll now see a brief notice instead of losing changes silently
If notification permission was denied, Earned takes you straight to iPhone Settings to re-enable it
Insights freedom hours row now has an ⓘ button explaining the 4% rule and 25× multiplier
Fixed Quick Buy banner appearing for purchases over 30 minutes — it now only shows for genuinely quick, guilt-free buys
Fixed a rare crash at startup when the app's data store couldn't be created — recovers gracefully instead of shutting down
Fixed number formatting in charts and time labels on non-English devices — commas and decimals now always match your locale
Fixed result card plural agreement on Slovak and Czech devices
Fixed Insights labels overflowing on Slovak and other longer locales
"Big Decision" and "Sleep On It" rule banners now show accurate descriptions of their hour ranges
Stability improvements to the Price Scanner and daily streak tracking
Version 1.13.1
Latest Fixes April 2026
Fixed legal text errors in Slovak and Hungarian translations — several mistranslated and nonsense phrases corrected
Sample data now appears in your device language across all 13 supported locales
Sample data redesigned to populate all eight Insights cards so you get a realistic preview of the app from the first launch
Version 1.13.0
New April 2026
Try it instantly — a "Try with sample data" button on the welcome screen loads a demo profile with realistic purchases so you can explore before setting up
Daily streak — a 🔥 flame in the Calculator counts how many days in a row you've used Earned; miss a day and it resets
Sample data now shows in your device language across all 13 supported locales
"Big Decision" rule banner message: now reads "A full work week or more" instead of "A full work week", correctly reflecting that the rule covers any purchase ≥ 40 hours of work, not exactly one week (reported by user in Slovak locale)
Slovak legal text: Cyrillic character in terms title, "Nesbierame"→"Nezbierame" (7×), Czech words mixed in (součty, kdykoľvek, těžiť), nonsense words (neintelercujeme, vykňažať, Vyhadzujeme), spelling errors (framevorku, šifrowania, Stiahnnutím), wrong gender (záväzný zmluvu), wrong title (Duševný vlastník)
Plus 15 additional bug fixes and improvements.
Version 1.12.0
New March 2026
Onboarding redesigned — setup screens now fit on screen without scrolling on most devices
Cleaner empty states throughout the app
Version 1.11.0
New March 2026
price cap: input is limited to 10 working years at the user's effective rate (adapts to income and currency); when the ceiling is hit, the currency symbol pulses orange and a 2-second caption "That's already 10 years of your work." appears — translated into all 13 locales
ⓘ exchange rate info button from price input area into the conversion row ("⇄ €7,93 EUR ⓘ") where it belongs semantically; ✕ clear button stands alone in its own slot
Version 1.10.0
New Fixes March 2026
ⓘ info button to the currency conversion row in Calculator — tapping it explains that today's rate is used, rates refresh daily, and how to change the home currency in Settings; translated into all 13 locales
Shorten conversion info tip to two short lines: "Today's rate, updated daily." and "Tap the currency symbol to change it."
✕ / ⓘ alignment: move InfoButton into the same trailing VStack as the clear button so both icons share the same right edge by construction; remove ⓘ from conversion row
✕ and ⓘ right-edge alignment in Calculator price card — remove trailing padding from ✕ so both icons sit at the same horizontal position
Plus 2 additional bug fixes and improvements.
Version 1.9.0
New Fixes March 2026
live income teaser card to onboarding: after entering a valid income, show 3 concrete examples (coffee, grocery run, streaming) with their time cost at the user's effective hourly rate — payoff is immediate, before any further steps
BudgetCard calculator mode: constrain trailing label to 130 pt with multilineTextAlignment(.trailing) so "39 hours left after this purchase" wraps into two right-aligned lines matching the two-row left side
Restore "X left after this purchase" trailing label in BudgetCard calculator mode; keep two-row layout so context caption sits below and never causes the main row to wrap
BudgetCard calculator mode: remove trailing "X left after this purchase" label — left side (bold item hours + context caption) is sufficient; bar fill communicates the proportion
BudgetCard calculator mode footer: right-side label ("39 hours left after this purchase") now sits in its own trailing-aligned column so any wrapping is right-aligned and intentional, matching the two-column layout of the left side
BudgetCard calculator mode footer alignment — split into two rows: bold pending hours + trailing label on top, context caption ("this item · 40 hours total") below; prevents text wrapping when hours string is long (e.g. "48 minutes")
Plus 4 additional bug fixes and improvements.
Version 1.8.0
New Fixes March 2026
Animation extension with five named spring constants (earnedStandard, earnedSnappy, earnedGentle, earnedHeroReveal, earnedEntrance)
AppTheme.Timing with five named sleep durations (autosaveDebounce, savedBadge, keyboardDismiss, scanConfirmation, launchOverlay)
AppTheme.Spacing scale (micro 4pt through xxl 32pt)
AppTheme.Size with named component dimensions (icon badges, comparison chip, insight ring, progress bar, rate card)
nine ViewModifier-backed font helpers to AppTheme: earnedHeroFont, earnedResultFont, earnedInputFont, earnedInputFieldFont, earnedStatFont, earnedSymbolFont, earnedWordmarkFont, earnedStepTitleFont, earnedCompactWordmarkFont — each owns its @ScaledMetric internally so call sites need zero boilerplate
AppTheme.Typography token namespace with nine base point sizes for use with @ScaledMetric
25 animation call sites across CalculatorView, CalculatorViewModel, HistoryView, OnboardingView, DecisionButtonRow, LabeledSlider, PriceScannerViewModel, SettingsView, and TimeResultCard
5 Task.sleep call sites in CalculatorView, HistoryView, PriceScannerView, and SettingsView
all call sites in TimeResultCard, ShareCardView, CalculatorView, InsightsView, OnboardingView, PriceScannerView, and RateHeroCard to use the shared helpers; remove all per-view @ScaledMetric declarations for these roles
build error: move rateDisplaySize @ScaledMetric from SettingsView to RateHeroCard where it is actually used
build error: add @ScaledMetric heroSize and wordmarkSize to ShareCardView (they were declared on TimeResultCard but used in a separate struct)
Version 1.7.0
New Fixes March 2026
decision-based motivation line to share card: "Smart call. Your time stays yours." (skipped, green), "Worth every minute." (bought, rose), "Good things come to those who wait." (delayed, orange); hidden when no decision is set; localized in all 13 languages
share preview sheet — tapping Share now shows a live preview of the share card before presenting the iOS share sheet
Polish info (ⓘ) popups: icon now shown in a colored rounded-square badge (indigo for general tips, orange for Budget, green for Worth It insights); height adjusted to 240 pt to accommodate the larger badge
Refine share card motivation line to factor in Worth It rating:
Polish share card typography: item name → .callout .semibold (was .subheadline .medium); price → .title2 .semibold (was .title3); hero time → 72 pt .heavy (was 68 pt .bold); "of your life" → .title3 .semibold (was regular); adjusted vertical spacing for tighter hierarchy
Calculator logical ordering: share button moved after label + decision row so item name and motivation line are set before sharing; stat row (workdays/hours/rate) now appears before investment/FI projection row; BudgetCard no longer hidden after saving a purchase
silence "onChange(of: String) action tried to update multiple times per frame" warning — price field now uses .task(id:) instead of .onChange so calculate() runs after the render cycle completes
Plus 5 additional bug fixes and improvements.
Version 1.6.0
New Fixes March 2026
Built-in comparison rows in the picker now use individual accent colors matching the style of custom comparison rows (gym → orange, sleep → blue, movie → purple, concert → pink, etc.)
Strip chips on the Calculator screen now also show each built-in's own color instead of uniform indigo
comparison picker: all built-in comparisons (Time + Price) now appear in a single "Showing in strip" list — visible items have a drag handle and filled checkmark, hidden items are dimmed with an empty circle; no more separate Time/Price sections
Share button no longer flashes black on first tap — 50ms yield between ImageRenderer and sheet presentation lets UIKit prepare the activity controller before animating in
Backup export uses scene.keyWindow instead of deprecated scene.windows.first
Plus 20 additional bug fixes and improvements.
Version 1.5.0
New Fixes March 2026
drag-to-reorder for custom comparisons in the "Showing in strip" section
drag-to-reorder "Selected" section at the top of the comparison picker
Extract LaunchScreenView into Features/Launch/LaunchScreenView.swift, remove inline duplicate from EarnedApp.swift
Cleanup: Delete EarnedLogoMark.swift and ShareCardView.swift stub comment files
Cleanup: Fix EarnedWidget scheme — remove broken test plan reference pointing to non-existent container
Release build Swift optimization was -Onone (no optimization) — corrected to -O
Register all EarnedTests source files in build phase
Plus 9 additional bug fixes and improvements.
Version 1.4.0
New Fixes March 2026
`localizedInputString()` and `localizedDouble()` shared helpers; replace all `String(format:)` & `replacingOccurrences` hacks
ⓘ info button to "That's also…" comparison strip — explains what the cards mean
ⓘ info button to Monthly Budget card in History and Calculator
Quick Scan lock screen widget: a dedicated circular icon that opens Earned's calculator with one tap directly from the Lock Screen
Custom Comparisons: users can create their own "That's also…" items with a name, SF Symbol icon, accent color, reference price, and frequency (once / monthly / yearly)
custom comparisons to the front of the comparison strip (shown before built-in items)
Locale-aware decimal & grouping separators for all price/amount input fields and display (income, expenses, custom comparison price)
comparison picker rows: consistent coloured icon containers for built-in and custom items
missing currency symbol in My Comparisons price labels
info tips: switch from popover to bottom sheet style (matches "If invested" & "Freedom" sheets, fixes text truncation)
Version 1.3.0
New Fixes March 2026
budget teaser line to "How It Works" step
ⓘ info tip popovers to Settings sliders (tax rate, hours/day, days/week, budget limit), iCloud Sync toggle, Worth-It rating buttons in Check Details, and Worth-It Rate card in Insights
`InfoButton` reusable component to Shared/Components
optional `infoTip` parameter to `LabeledSlider`
in-app Privacy Policy (12 sections, GDPR + CCPA compliant)
in-app Terms of Service (9 sections, Slovak Republic / California governing law)
developer identity: replace "Ambja" with JAAM Group International LLC throughout all legal text
privacy contact to privacy@jaam.group and website to https://jaam.group/earned across all 13 locales
onboarding "How It Works" step: replace Scan card with History card ("Log & rate every buy"), update Insights card subtitle to "Worth-it rate & spend trends"
`LegalSection` build error caused by stored property `body` conflicting with `View.body`
Version 1.2.0
New March 2026
Insights tab: Worth-It Rate ring chart and Monthly Spend Trend bar chart (Swift Charts)
Budget History sheet: tap the budget card to see past 12 months with spend breakdown and top items
share functionality (already present in TimeResultCard, now wired through EditCheckView)
History budget card now refreshes immediately when switching to the History tab
Budget card unified across Calculator and History into shared `BudgetCard` component — same card style, same two-tone progress bar
Version 1.1.0
New March 2026
custom currency display order (drag to reorder in Settings)
Price-to-time calculator with hourly rate derived from income, tax, and schedule
Purchase history with bought / skipped / delayed decision tracking
Monthly budget with progress bar

Always up to date

Enable automatic updates in the App Store to get new features as soon as they're released.

Download on the App Store