Release Notes
Version 1.4.1
Fixed
- Session no longer lost on wake from sleep (token refresh conflict between main/renderer processes)
- Invoice line items now group all slips per task, rounding hours once — fixes inflated unbilled totals and duplicate line items
- Invoice line items now show the task name instead of "Task work"
- Auto-starting a timer from a kanban card now uses the task title for the slip name
- Done column kanban cards no longer show the due date / overdue badge
- Favicon auto-fetch no longer crashes on the web app
- Web app login now correctly detects the platform (was erroneously running Electron-only code on web)
Changed
- Client empty state (no projects yet) shows a curved arrow pointing to the New Project button
- Favicon images in client list have slightly rounded corners
- Login screen app icon is now white with a purple/pink glow
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