262 Commits
Author SHA1 Message Date
soconnor f0b1a7355e Improve dashboard sidebar layout 2026-08-18 00:44:48 -04:00
soconnor 57a985bcd5 chore: bump iOS build to 29 2026-08-17 22:54:18 -04:00
soconnor 7be4bb2abe feat: add business brand assets and health checks 2026-08-17 20:33:04 -04:00
soconnor 5c9fbe6dc2 Fix worker domain dependency 2026-08-17 18:44:11 -04:00
soconnor 70c08054fb Make scheduling and dates timezone-safe 2026-08-17 18:15:39 -04:00
soconnor 1853eaa963 Add Mailpit email transport 2026-08-17 16:35:14 -04:00
soconnor 67ab6b78bd Add scheduled invoice delivery 2026-08-17 13:54:45 -04:00
soconnor 29589c1f32 Render signup policy dynamically 2026-08-17 01:55:41 -04:00
soconnor dafa62b9bb Make Coolify service ports configurable 2026-08-17 01:14:39 -04:00
soconnor 24a1307a96 Add PostgreSQL-backed background worker 2026-08-17 01:02:44 -04:00
soconnor 9929d7321d Polish mobile and web experience 2026-08-17 00:18:55 -04:00
soconnor 6c74436092 Convert Beenvoice to a Turborepo monorepo 2026-08-16 22:13:42 -04:00
soconnor d057ba208d Add 'apps/mobile/' from commit '5fa30f365f21531094cd4d2045042bb4f1370ac3'
git-subtree-dir: apps/mobile
git-subtree-mainline: 86f8987dff
git-subtree-split: 5fa30f365f
2026-08-16 21:42:59 -04:00
soconnor 86f8987dff Add 'apps/web/' from commit '1e7174fa604b11e7c3983cd8ad01c596f6e77e96'
git-subtree-dir: apps/web
git-subtree-mainline: 068a51b46b
git-subtree-split: 1e7174fa60
2026-08-16 21:42:59 -04:00
soconnor 068a51b46b Initialize Beenvoice workspace 2026-08-16 21:42:57 -04:00
soconnor 5fa30f365f Make iOS release signing deterministic 2026-08-15 14:18:09 -04:00
soconnor b9c7fb325a Add in-app account deletion 2026-08-15 13:46:47 -04:00
soconnor 1e7174fa60 Add permanent account deletion 2026-08-15 13:46:42 -04:00
soconnor 9eadb0d7fb Document public App Store demo login 2026-08-15 00:17:57 -04:00
soconnor 5f6987b84b Restore public demo review password 2026-08-15 00:17:57 -04:00
soconnor fa42ffb767 Add App Store review screenshots 2026-08-14 19:48:21 -04:00
soconnor d2fa050c05 Bump iOS build to 27 2026-08-14 18:51:49 -04:00
soconnor 66a53f25f2 Harden demo access and restore clean checks 2026-08-14 16:45:02 -04:00
soconnor f493fd20f2 Upgrade to Expo 57 and add parity smoke tests 2026-08-14 16:45:02 -04:00
soconnor 29d7b498ae Add business logo branding support 2026-08-14 16:26:43 -04:00
soconnor 31ae51cf9e Add offline caching and refine Live Activity 2026-08-14 16:26:43 -04:00
soconnorandClaude Opus 4.8 3f3b1362a9 Fix clock-in failing when no client is selected
clockIn and create used `input.clientId?.trim() ?? null`, but clients
always send `""` (not undefined) for no-client. `??` doesn't catch the
empty string, so `""` was inserted into time_entries.client_id,
violating the foreign key to clients.id. Use `|| null` to normalize a
blank string to null, matching updateRunning.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 15:43:21 -04:00
soconnor fa3b9bf6a0 update app.json 2026-07-06 21:12:22 -04:00
soconnor ae7350dae6 Prevent swipe rows from opening items 2026-07-02 00:52:50 -04:00
soconnor 40624f6e6f Document recurring invoice scheduler setup 2026-07-02 00:49:48 -04:00
soconnorandClaude Sonnet 5 d589b94580 Make CRON_SECRET optional; fix docker env validation failure
CRON_SECRET was required (min 32 chars) in production by env.js, but
neither docker-compose.yml nor docker-compose.coolify.yml passed it
through. Since the release container isn't covered by
SKIP_ENV_VALIDATION (build-stage only), bun run start failed env
validation on every docker deploy unless CRON_SECRET was manually
configured — even though it only gates the optional recurring-invoice
cron endpoint, which already handles being unset gracefully.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-01 14:43:20 -04:00
soconnor da219b287e Support mobile home and live activity data 2026-07-01 02:55:16 -04:00
soconnor 530d0dc34d Refresh home and more navigation 2026-07-01 02:46:39 -04:00
soconnor 6497ee4dec Wire live activity widget patches 2026-07-01 02:45:30 -04:00
soconnor 107b593002 Center live activity timer layout 2026-07-01 02:37:58 -04:00
soconnor 316edb4b3e Prefer mobile auth cookie for app requests 2026-06-29 22:01:41 -04:00
soconnor b7eef743bd Fix mobile account session selection 2026-06-29 22:01:41 -04:00
soconnor 9498a09b5b Bump iOS build number 2026-06-29 18:40:11 -04:00
soconnor 0aa1b0b431 Send Better Auth session token with tRPC 2026-06-29 18:38:47 -04:00
soconnor 8866335c50 Accept mobile Better Auth session token header 2026-06-29 18:38:35 -04:00
soconnor 57e1aa658a Stabilize mobile auth session handling 2026-06-29 17:58:50 -04:00
soconnor fb731885de Support chunked Better Auth session cookies 2026-06-29 17:57:38 -04:00
soconnor 1605322bc9 Improve expense dialog button layout 2026-06-29 15:30:19 -04:00
soconnor ef826dffa9 Harden auth and mobile session handling 2026-06-29 15:21:31 -04:00
soconnor 477459edd4 Fix iOS Podfile generation for receipt OCR 2026-06-29 01:44:12 -04:00
soconnor 21268ddd39 Refine receipt item expense selection 2026-06-29 01:38:00 -04:00
soconnor 7bc8559b44 Expose mobile More tools 2026-06-29 01:38:00 -04:00
soconnor 8ad4210908 Add mobile expenses and receipt OCR 2026-06-29 01:35:00 -04:00
soconnor d0c916d659 Polish expenses dashboard 2026-06-29 01:30:20 -04:00
soconnor a66d05f24f Remove default access and secret keys for S3 in Docker Compose files for security enhancement 2026-06-29 01:15:05 -04:00