Release Notes

Version 1.4.0

Bug Fixes

  • Project icon updated from folder emoji to SVG folder icon throughout the app
  • Timer no longer resets to zero after pausing and resuming from the menu bar
  • Timer correctly accumulates across multiple pause/resume cycles
  • Timer indicator play button now resumes a paused timer
  • Updated favicon to magenta theme color
  • Updated menu bar timer pill to magenta theme color

Improvements

  • Fixed Project Profitability Report – Lists all flat-fee projects with logged hours, effective hourly rate, and color-coded delta vs. your target rate
  • Profitability card strip on project detail (Details tab) for flat-fee projects: shows fixed fee, hours logged, effective rate, and target comparison

Version 1.3.0

Bug Fixes

  • Fixed blank screen after waking from sleep — the app now silently refreshes your session when the Mac wakes up. If the session has fully expired, it shows the login screen cleanly instead of a blank screen
  • Fixed auto-timer defaulting to off — the automatic timer-on-drag feature is now enabled by default for new users; existing preferences are preserved
  • Fixed deep link handling on cold launch — the aeto:// protocol is now registered earlier, so opening a magic link when the app isn’t running works reliably

Design

  • New magenta accent color throughout the app, replacing the previous purple
  • Calendar day columns are now equal width — long task names no longer push individual columns wider
  • Logged time on Kanban cards is now brighter and easier to read

Version 1.2.6–1.2.8

Security

  • Remove .env bundling from app
  • Hardcode Supabase/PostHog keys in main process

Auto-Update

  • Add ZIP target for macOS electron-updater delivery
  • Fix quitAndInstall not relaunching after update
  • Cap PostHog shutdown at 2s so it doesn’t block relaunch

Analytics

  • Add PostHog Node SDK in main process
  • Add PostHog JS snippet in renderer
  • Capture events: timer, client, project, invoice, auth, account

Bug Fixes

  • Fix wake-from-sleep blank screen
  • Fix window.resolveFaviconForClient not a function
  • Fix toggle slider thumb overflow on profile page
  • Fix tray menu task switch resetting timer to 0
  • Fix PostHog main process crash on launch
  • Revert “Unbilled This Month” to done-only tasks

Version 1.2.2-1.2.5

1.2.5 — Wake from sleep & staged releases

  • Added 2-second delay on system resume before re-fetching data (gives network time to reconnect)
  • Removed sample data fallback on load error — keeps existing data displayed instead of replacing with placeholder content
  • Re-renders current view (dashboard, workload, client detail) after data reload, not just kanban 
  • Staged release pipeline: npm run release:staging creates a draft, npm run release:promote makes it live 

1.2.4 — Login & system wake fix

  • Fixed isElectron() returning false in production: VITE_APP_PLATFORM=electron was accidentally removed from .env during cleanup, causing login button to do nothing and system-resume handler to not register

1.2.3 — Auto-update format fix

  • Added ZIP as a build target alongside DMG — electron-updater on macOS requires a ZIP file for updates, not a DMG

Auto-update & security fixes

  • Fixed auto-update hash mismatch: removed manual codesign step that was invalidating latest-mac.yml after electron-builder generated it         
  • Removed GH_TOKEN from .env; stored in ~/.aeto-secrets (never bundled in the app)  
  • Removed .env from the distributed app bundle entirely                       
  • Hardcoded Supabase credentials in main process instead of reading from bundled .env  

Profile Screen

  • Added in-app content panel (420×420) on the right side, loading from aeto.app/in-app 
  • Panel is right-aligned, borderless, sticky while the profile scrolls  
  • On mobile, panel stacks below the profile form
  • Profile form fields capped at 520px so they don’t stretch too wide

Version 1.2.1

Kanban

  • Add Task buttons now appear in every column on both the client kanban and the global Tasks board
  • Add Task buttons stay pinned below the last card — dragging a task to a new  column no longer drops it below the button
  • Fixed Add Task buttons disappearing after creating a new task

Profile Screen

  • Added in-app content panel (420×420) on the right side, loading from aeto.app/in-app 
  • Panel is right-aligned, borderless, sticky while the profile scrolls  
  • On mobile, panel stacks below the profile form
  • Profile form fields capped at 520px so they don’t stretch too wide

Version 1.2.0

Improvements

  • Add Task buttons now appear in each kanban column on both client and global task boards
  • Add Task buttons sit directly below each column’s cards, not at the bottom of the tallest column
  • Fixed Add Task buttons disappearing after creating a new task
  • Sync overlay with animated logo when the app wakes from sleep
  • Fixed screen flash on app load — goes straight to last-used view
  • Removed stale placeholder content that appeared briefly on refresh
  • Drag-over column highlight now has proper spacing from text
  • Full release build pipeline: sign, notarize, staple, verify, and publish in one command (npm run release)
  • XSS security fixes across all views 

Version 1.2.1

Security

  • Hardened the app against XSS injection across all views — client names, task titles, project names, invoice numbers, business info, and error messages are now safely escaped before rendering into the UI

Web App

  • Fixed the favicon not turning red during an active timer session on the web version
  • Version number now displays correctly on the web version (previously only showed in the Mac app)

Mobile

  • Full mobile-responsive layout matching the sidebar, dashboard, kanban, and client views
  • Sidebar opens as an off-canvas drawer with a hamburger menu; closes automatically when a client is selected
  • Kanban board scrolls horizontally with snap-to-column behavior and a tab strip for navigating between columns
  • Client view is responsive on mobile
  • Task detail panel shows a shadow overlay when open
  • Safe area insets added for notched devices (iPhone home indicator, Dynamic Island)
  • Touch targets meet minimum 44px sizing

Terms of Service

  • New Terms of Service acceptance gate shown on first login — users must scroll through and accept before using the app
  • Acceptance is recorded in the database with timestamp and version; gate re-appears if terms are updated

Stripe & Billing

  • Checkout flow now tracks whether the user subscribed from the Mac app or web, enabling correct post-checkout redirect
  • Webhook handler records trial end date and plan name from Stripe price lookup key
  • New user profiles are automatically created on signup with a 30-day trial