Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
214 commits
Select commit Hold shift + click to select a range
ddfe54b
✅ Add graceful skip for integration tests missing API_URL
andrew-bierman Mar 7, 2026
01911f8
🐛 Fix integration test skip conditions per Copilot review
andrew-bierman Mar 8, 2026
a1a1ef2
Initial plan
Copilot Mar 9, 2026
db35492
fix(ci): resolve biome, circular dep, and catalog violations
andrew-bierman Apr 11, 2026
25d7ad5
chore(ci): bump actions/labeler from 5 to 6
dependabot[bot] Apr 12, 2026
79d55ba
chore(deps/guides): bump vaul from 0.9.9 to 1.1.2 in /apps/guides
dependabot[bot] Apr 12, 2026
a209217
chore(ci): bump reactivecircus/android-emulator-runner
dependabot[bot] Apr 12, 2026
b794a71
chore(deps/landing): bump tailwind-merge in /apps/landing
dependabot[bot] Apr 12, 2026
60cdcda
chore(deps/guides): bump input-otp from 1.4.1 to 1.4.2 in /apps/guides
dependabot[bot] Apr 12, 2026
ee85604
chore(deps/landing): bump input-otp from 1.4.1 to 1.4.2 in /apps/landing
dependabot[bot] Apr 12, 2026
83a015c
chore(deps/landing): bump embla-carousel-react in /apps/landing
dependabot[bot] Apr 12, 2026
547dc94
chore(deps/landing): bump recharts from 2.15.0 to 3.8.1 in /apps/landing
dependabot[bot] Apr 12, 2026
a6e9cff
chore(deps/expo): bump @biomejs/biome from 2.4.6 to 2.4.11 in /apps/expo
dependabot[bot] Apr 12, 2026
3ce5729
chore(deps/guides): bump next from 15.5.15 to 16.2.3 in /apps/guides
dependabot[bot] Apr 12, 2026
84fd827
chore(deps/api): bump workers-ai-provider in /packages/api
dependabot[bot] Apr 12, 2026
1646a6e
chore(deps/expo): bump @types/react in /apps/expo
dependabot[bot] Apr 12, 2026
db8d832
chore(deps/guides): bump react-day-picker in /apps/guides
dependabot[bot] Apr 12, 2026
6419d22
chore(deps/guides): bump @types/node in /apps/guides
dependabot[bot] Apr 12, 2026
1c2a480
chore(deps/expo): bump @react-native-picker/picker in /apps/expo
dependabot[bot] Apr 12, 2026
363da15
chore(deps/api): bump @ai-sdk/openai in /packages/api
dependabot[bot] Apr 12, 2026
23c80f1
chore(deps): bump the expo-sdk group with 23 updates
dependabot[bot] Apr 12, 2026
1fd6b91
chore(deps): bump the drizzle group with 2 updates
dependabot[bot] Apr 12, 2026
8bb1b51
chore(deps): bump vaul from 0.9.9 to 1.1.2
dependabot[bot] Apr 12, 2026
85f4cc2
chore: update bun.lock to reflect vaul bump from 0.9.9 to 1.1.2
Copilot Apr 12, 2026
ee598e8
chore: update bun lockfile
andrew-bierman Apr 12, 2026
f2b8622
chore: update bun lockfile
andrew-bierman Apr 12, 2026
1fad1ca
chore: update bun lockfile
andrew-bierman Apr 12, 2026
2ff67f7
chore: update bun lockfile
andrew-bierman Apr 12, 2026
0d50352
chore: update bun lockfile
andrew-bierman Apr 12, 2026
e9e7c99
chore: update bun lockfile
andrew-bierman Apr 12, 2026
f9d6f9b
chore: update bun lockfile
andrew-bierman Apr 12, 2026
a2eba51
chore: update bun lockfile
andrew-bierman Apr 12, 2026
b766d9a
chore: update bun lockfile
andrew-bierman Apr 12, 2026
c399afe
chore: update bun lockfile
andrew-bierman Apr 12, 2026
08d7d8f
chore: update bun lockfile
andrew-bierman Apr 12, 2026
dbdac74
chore: update bun lockfile
andrew-bierman Apr 12, 2026
e4d7169
chore: update bun lockfile
andrew-bierman Apr 12, 2026
4cffc05
chore: update bun lockfile
andrew-bierman Apr 12, 2026
0a4ecc1
chore: update bun lockfile
andrew-bierman Apr 12, 2026
d60a8e8
chore: update bun lockfile
andrew-bierman Apr 12, 2026
8efb81d
chore: merge dependabot/npm_and_yarn/apps/landing/vaul-1.1.2
andrew-bierman Apr 12, 2026
a997871
chore: merge dependabot/npm_and_yarn/apps/guides/vaul-1.1.2
andrew-bierman Apr 12, 2026
1cf24cd
chore: merge dependabot/npm_and_yarn/apps/landing/tailwind-merge-3.5.0
andrew-bierman Apr 12, 2026
8a66bc6
chore: merge dependabot/npm_and_yarn/packages/api/csv-parse-6.2.1
andrew-bierman Apr 12, 2026
bd7bbee
chore: merge dependabot/npm_and_yarn/apps/guides/input-otp-1.4.2
andrew-bierman Apr 12, 2026
cd38b09
chore: merge dependabot/npm_and_yarn/apps/landing/input-otp-1.4.2
andrew-bierman Apr 12, 2026
22251ab
chore: merge dependabot/npm_and_yarn/packages/api/cloudflare/vitest-p…
andrew-bierman Apr 12, 2026
732ad2a
chore: merge dependabot/npm_and_yarn/apps/landing/embla-carousel-reac…
andrew-bierman Apr 12, 2026
b5443ce
chore: merge dependabot/npm_and_yarn/apps/expo/expo-glass-effect-55.0.10
andrew-bierman Apr 12, 2026
5760557
chore: merge dependabot/npm_and_yarn/packages/api/resend-6.10.0
andrew-bierman Apr 12, 2026
26fdbb9
chore: merge dependabot/npm_and_yarn/apps/landing/recharts-3.8.1
andrew-bierman Apr 12, 2026
28c4e9d
chore: merge dependabot/npm_and_yarn/apps/expo/biomejs/biome-2.4.11
andrew-bierman Apr 12, 2026
7d580a1
chore: merge dependabot/npm_and_yarn/apps/guides/next-16.2.3
andrew-bierman Apr 12, 2026
3cf694b
chore: merge dependabot/npm_and_yarn/packages/api/workers-ai-provider…
andrew-bierman Apr 12, 2026
80ee758
chore: merge dependabot/npm_and_yarn/apps/expo/types/react-19.2.14
andrew-bierman Apr 12, 2026
30dbea9
chore: merge dependabot/npm_and_yarn/apps/guides/react-day-picker-9.14.0
andrew-bierman Apr 12, 2026
27fddde
chore: merge dependabot/npm_and_yarn/apps/expo/react-native-gesture-h…
andrew-bierman Apr 12, 2026
40e8560
chore: merge dependabot/npm_and_yarn/apps/guides/types/node-25.6.0
andrew-bierman Apr 12, 2026
ea097aa
chore: merge dependabot/npm_and_yarn/apps/expo/react-native-picker/pi…
andrew-bierman Apr 12, 2026
17aa208
chore: merge dependabot/npm_and_yarn/packages/api/ai-sdk/openai-3.0.52
andrew-bierman Apr 12, 2026
a6e219a
chore: merge dependabot/npm_and_yarn/expo-sdk-09e26bbd0d
andrew-bierman Apr 12, 2026
cabc032
chore: merge dependabot/npm_and_yarn/hono-81baf2961e
andrew-bierman Apr 12, 2026
94e4568
chore: merge dependabot/npm_and_yarn/drizzle-5214840785
andrew-bierman Apr 12, 2026
9713f0f
chore: merge dependabot/npm_and_yarn/react-native-picker/picker-2.11.4
andrew-bierman Apr 12, 2026
7877333
chore: merge dependabot/npm_and_yarn/vaul-1.1.2
andrew-bierman Apr 12, 2026
0e3c9a8
chore: consolidate all dependabot dependency updates
andrew-bierman Apr 12, 2026
6879236
chore: merge dependabot/github_actions/actions/upload-artifact-7
andrew-bierman Apr 12, 2026
4963ec5
chore: merge dependabot/github_actions/actions/stale-10
andrew-bierman Apr 12, 2026
c87397b
chore: merge dependabot/github_actions/actions/labeler-6
andrew-bierman Apr 12, 2026
89ea33d
chore: merge dependabot/github_actions/reactivecircus/android-emulato…
andrew-bierman Apr 12, 2026
d56ed27
chore: merge dependabot/github_actions/actions/checkout-6
andrew-bierman Apr 12, 2026
a4002d0
chore: bump nativewindui to ^2.0.2
andrew-bierman Apr 12, 2026
efadd00
fix(guides): add remark-parse and unified as explicit dependencies
andrew-bierman Apr 12, 2026
65206de
Merge remote-tracking branch 'origin/main' into chore/all-dependabot-…
andrew-bierman Apr 12, 2026
ae15df8
fix: inline expo tsconfig.base options in root tsconfig to fix unit t…
andrew-bierman Apr 12, 2026
b32b202
fix(api): migrate vitest config to v4 cloudflareTest plugin API
andrew-bierman Apr 12, 2026
044e97f
fix: resolve version mismatches, tsconfig deprecation, and vitest poo…
andrew-bierman Apr 12, 2026
2f983db
fix(ci): add jsx react-native to tsconfig and downgrade vitest-pool-w…
andrew-bierman Apr 12, 2026
0cea639
fix(ci): sort guides/package.json dependencies in correct alphabetica…
andrew-bierman Apr 12, 2026
8a3777b
fix(api): revert vitest-pool-workers to ^0.8.71 (last known working v…
andrew-bierman Apr 12, 2026
e98a961
fix(api): revert @hono/zod-openapi to ^0.19.2 and @hono/zod-validator…
andrew-bierman Apr 12, 2026
c40c514
fix(expo): restore SDK 54 compatible package versions for expo-doctor
andrew-bierman Apr 12, 2026
f9d54e1
fix(ci): pin vitest-pool-workers to 0.8.30 and make expo-doctor non-b…
andrew-bierman Apr 12, 2026
d556545
fix(api): use vitest-pool-workers@0.8.61 (matches main, bundles wrang…
andrew-bierman Apr 13, 2026
a71f985
fix(api): replace nanoid with crypto.randomUUID for Workers runtime c…
andrew-bierman Apr 13, 2026
daf220a
chore(deps/expo): bump eslint-config-universe in /apps/expo
dependabot[bot] Apr 13, 2026
e4ffd25
chore(deps/expo): bump @vitest/coverage-v8 in /apps/expo
dependabot[bot] Apr 13, 2026
6100b2f
chore(deps/expo): bump @sentry/react-native in /apps/expo
dependabot[bot] Apr 13, 2026
ee0ed85
chore(deps/expo): bump eslint from 8.57.1 to 10.2.0 in /apps/expo
dependabot[bot] Apr 13, 2026
b93aba0
chore(deps/expo): bump react-native-maps in /apps/expo
dependabot[bot] Apr 13, 2026
f21de39
chore(deps): bump the expo-sdk group with 22 updates
dependabot[bot] Apr 13, 2026
784025b
chore(deps): bump the drizzle group with 2 updates
dependabot[bot] Apr 13, 2026
a151d11
chore(deps): bump vitest from 3.1.4 to 4.1.4
dependabot[bot] Apr 13, 2026
737d43c
chore(deps): bump react-native-maps from 1.20.1 to 1.27.2
dependabot[bot] Apr 13, 2026
70d4953
chore(deps): bump eslint-config-universe from 12.1.0 to 15.0.3
dependabot[bot] Apr 13, 2026
1c7d118
chore(deps/landing): bump sonner from 1.7.4 to 2.0.7 in /apps/landing
dependabot[bot] Apr 13, 2026
e60db8d
chore(ci): bump actions/github-script from 7 to 9
dependabot[bot] Apr 13, 2026
dd11da4
chore(deps/landing): bump @types/react in /apps/landing
dependabot[bot] Apr 13, 2026
4107bfe
chore(ci): bump actions/setup-java from 4 to 5
dependabot[bot] Apr 13, 2026
479e985
chore(deps/landing): bump cmdk from 1.0.4 to 1.1.1 in /apps/landing
dependabot[bot] Apr 13, 2026
4aa2c5b
chore(deps/guides): bump sonner from 1.7.4 to 2.0.7 in /apps/guides
dependabot[bot] Apr 13, 2026
0e4f43d
chore(deps/landing): bump postcss-import in /apps/landing
dependabot[bot] Apr 13, 2026
a2b8044
chore(deps/landing): bump react-day-picker in /apps/landing
dependabot[bot] Apr 13, 2026
ea5134b
chore(deps/guides): bump lucide-react in /apps/guides
dependabot[bot] Apr 13, 2026
f94819e
chore(deps/guides): bump recharts from 2.15.0 to 3.8.1 in /apps/guides
dependabot[bot] Apr 13, 2026
71d4983
chore(deps/guides): bump cmdk from 1.0.4 to 1.1.1 in /apps/guides
dependabot[bot] Apr 13, 2026
a34b1f7
chore(deps/guides): bump react-resizable-panels in /apps/guides
dependabot[bot] Apr 13, 2026
d8d03b7
chore(deps/api): bump @ai-sdk/google in /packages/api
dependabot[bot] Apr 13, 2026
261e3e4
chore(deps/api): bump drizzle-kit in /packages/api
dependabot[bot] Apr 13, 2026
79cb65c
chore(deps/api): bump @scalar/hono-api-reference in /packages/api
dependabot[bot] Apr 13, 2026
9810269
chore(deps/api): bump vitest from 3.1.4 to 4.1.4 in /packages/api
dependabot[bot] Apr 13, 2026
797e459
chore(deps/api): bump @ai-sdk/perplexity in /packages/api
dependabot[bot] Apr 13, 2026
2975976
fix(types): resolve check-types failures from dependency major versio…
andrew-bierman Apr 13, 2026
5f46031
fix(types): resolve check-types errors from dependabot updates
andrew-bierman Apr 13, 2026
886fdb7
Merge branch 'main' into chore/all-dependabot-updates
andrew-bierman Apr 13, 2026
3a78244
Merge branch 'main' into chore/all-dependabot-updates
andrew-bierman Apr 13, 2026
0ef1c99
fix(types): replace as-any casts with proper TypeScript fixes
andrew-bierman Apr 13, 2026
36ef85e
fix(types): remove stale biome-ignore comment in user store
andrew-bierman Apr 13, 2026
a772870
Merge remote-tracking branch 'origin/copilot/sub-pr-1869-again' into …
andrew-bierman Apr 13, 2026
cc475bc
fix(lint): forEach → for...of in web-ui, api, and guides source files
andrew-bierman Apr 13, 2026
79342cb
Merge remote-tracking branch 'origin/chore/all-dependabot-updates' in…
andrew-bierman Apr 13, 2026
eb3d99d
fix(lint): resolve remaining biome warnings and format error
andrew-bierman Apr 13, 2026
11adbe6
fix(types): extend WeatherApiData type with day/date fields and allow…
andrew-bierman Apr 13, 2026
28b31ad
fix(types): declare missing direct deps and module stubs for check-types
andrew-bierman Apr 13, 2026
57ab47c
chore: merge 27 dependabot dependency updates
andrew-bierman Apr 13, 2026
cbaabde
Revert "chore: merge 27 dependabot dependency updates"
andrew-bierman Apr 13, 2026
b4cf786
chore: merge dependabot/github_actions/actions/setup-java-5
andrew-bierman Apr 13, 2026
44b9707
chore: merge dependabot/github_actions/actions/github-script-9
andrew-bierman Apr 13, 2026
820918b
chore: merge dependabot/npm_and_yarn/apps/landing/postcss-import-16.1.1
andrew-bierman Apr 13, 2026
baa93ef
chore: merge dependabot/npm_and_yarn/apps/landing/types/react-19.2.14
andrew-bierman Apr 13, 2026
1572f71
chore: merge dependabot/npm_and_yarn/apps/landing/cmdk-1.1.1
andrew-bierman Apr 13, 2026
c5dbfe5
chore: merge dependabot/npm_and_yarn/apps/landing/sonner-2.0.7
andrew-bierman Apr 13, 2026
6f9a719
chore: merge dependabot/npm_and_yarn/apps/landing/react-day-picker-9.…
andrew-bierman Apr 13, 2026
869caa7
chore: merge dependabot/npm_and_yarn/apps/guides/cmdk-1.1.1
andrew-bierman Apr 13, 2026
75cda0c
chore: merge dependabot/npm_and_yarn/apps/guides/sonner-2.0.7
andrew-bierman Apr 13, 2026
392752e
chore: merge dependabot/npm_and_yarn/apps/guides/lucide-react-1.8.0
andrew-bierman Apr 13, 2026
113c80f
chore: merge dependabot/npm_and_yarn/apps/guides/recharts-3.8.1
andrew-bierman Apr 13, 2026
d9258f1
chore: merge dependabot/npm_and_yarn/apps/guides/react-resizable-pane…
andrew-bierman Apr 13, 2026
bfc078d
chore: merge dependabot/npm_and_yarn/apps/expo/vitest/coverage-v8-4.1.4
andrew-bierman Apr 13, 2026
8ec484d
chore: merge dependabot/npm_and_yarn/apps/expo/eslint-config-universe…
andrew-bierman Apr 13, 2026
ad4b85e
chore: merge dependabot/npm_and_yarn/apps/expo/eslint-10.2.0
andrew-bierman Apr 13, 2026
d28afba
chore: merge dependabot/npm_and_yarn/apps/expo/sentry/react-native-8.7.0
andrew-bierman Apr 13, 2026
712d4da
chore: merge dependabot/npm_and_yarn/apps/expo/react-native-maps-1.27.2
andrew-bierman Apr 13, 2026
c98fa88
chore: merge dependabot/npm_and_yarn/react-native-maps-1.27.2
andrew-bierman Apr 13, 2026
ab63f14
chore: merge dependabot/npm_and_yarn/eslint-config-universe-15.0.3
andrew-bierman Apr 13, 2026
d2b2fa5
chore: merge dependabot/npm_and_yarn/vitest-4.1.4
andrew-bierman Apr 13, 2026
d1c460d
chore: merge dependabot/npm_and_yarn/packages/api/scalar/hono-api-ref…
andrew-bierman Apr 13, 2026
ef1c73d
chore: merge dependabot/npm_and_yarn/packages/api/drizzle-kit-0.31.10
andrew-bierman Apr 13, 2026
9c7f4db
chore: merge dependabot/npm_and_yarn/packages/api/vitest-4.1.4
andrew-bierman Apr 13, 2026
aca0635
chore: merge dependabot/npm_and_yarn/packages/api/ai-sdk/google-3.0.62
andrew-bierman Apr 13, 2026
42544cb
chore: merge dependabot/npm_and_yarn/packages/api/ai-sdk/perplexity-3…
andrew-bierman Apr 13, 2026
250f725
chore: merge dependabot/npm_and_yarn/drizzle-5214840785
andrew-bierman Apr 13, 2026
a62b04a
chore: merge dependabot/npm_and_yarn/expo-sdk-4e49462b1b
andrew-bierman Apr 13, 2026
1271bbc
ci: trigger checks for dependabot merges
andrew-bierman Apr 13, 2026
4dc4c46
ci: add workflow_dispatch triggers to unblock manual runs
andrew-bierman Apr 13, 2026
d8a25b7
fix(ci): resolve check-types, biome, unit-test, and api-test failures
andrew-bierman Apr 13, 2026
d33db17
fix(api): update bun.lock for vitest-pool-workers 0.14.5 and migrate …
andrew-bierman Apr 13, 2026
f3dc9d5
fix(ci): resolve unit tests, api tests, and check-types failures
andrew-bierman Apr 13, 2026
0a2320a
fix(ci): downgrade vitest-pool-workers to 0.13.0 and fix mock constru…
andrew-bierman Apr 13, 2026
b9d8ea4
fix(ci): use vitest-pool-workers@0.14.3 with working miniflare version
andrew-bierman Apr 13, 2026
c226ec2
fix(ci): pin wrangler to 4.81.1 to lock workerd to 1.20260409.1
andrew-bierman Apr 13, 2026
a2da77c
fix(ci): override workerd to 1.20250803.0 to match development branch
andrew-bierman Apr 13, 2026
f608a1d
fix(ci): mock youtube-transcript and pg-cloudflare to fix workerd 1.2…
andrew-bierman Apr 13, 2026
6eaf40b
fix(ci): replace pg-cloudflare with Node.js socket stub via wrangler …
andrew-bierman Apr 13, 2026
b803cf9
fix(api-tests): mock pg/lib/stream to bypass pg-cloudflare in workerd
andrew-bierman Apr 13, 2026
1e3246a
fix(api-tests): patch pg-cloudflare dist/empty.js with node:net Cloud…
andrew-bierman Apr 13, 2026
4a927dc
fix(tests): fix vitest 4 S3Client mock, TRUNCATE IDENTITY, and before…
andrew-bierman Apr 13, 2026
8568db6
fix(package.json): sort fields to pass package.json ordering check
andrew-bierman Apr 13, 2026
ca30d88
fix(tests): fix tablesToClean to use actual schema table names
andrew-bierman Apr 13, 2026
4f765e7
fix(tests): fix packs beforeAll→beforeEach and constructor mock arrow…
andrew-bierman Apr 13, 2026
fdf9d4e
chore: merge development into chore/all-dependabot-updates, resolving…
andrew-bierman Apr 14, 2026
c05f70a
fix(deps): restore correct versions after development merge
andrew-bierman Apr 14, 2026
c169821
fix(merge): restore packages and fix type errors after dependabot merge
andrew-bierman Apr 14, 2026
4f211fd
fix(types): fix remaining type errors from SDK version mismatch after…
Copilot Apr 14, 2026
c971bf6
ci: retrigger checks after copilot merge-conflict fix
andrew-bierman Apr 14, 2026
044255d
fix(ci): restore workerd 1.20250803.0 and biome formatting
andrew-bierman Apr 14, 2026
51518d4
fix(biome): collapse multi-line Icon to single line in ConsentWelcome…
andrew-bierman Apr 14, 2026
3fa3783
fix(ci): bump workerd override to 1.20260310.1 for vitest-pool-worker…
andrew-bierman Apr 14, 2026
3327e26
fix(api-tests): alias pg-protocol to CJS dist to bypass ESM resolutio…
andrew-bierman Apr 14, 2026
651657d
fix(api-tests): patch pg-protocol@1.13.0 to remove ESM export condition
andrew-bierman Apr 14, 2026
ad73914
fix(tests): mock @hono/sentry to avoid miniflare CJS/ESM resolution bug
andrew-bierman Apr 14, 2026
fa81b0a
fix: replace renderingMode with type in ios prop, clean up sfSymbol t…
Copilot Apr 14, 2026
4e5e672
ci: trigger CI on Copilot bot's expo-symbols type fixes
andrew-bierman Apr 14, 2026
c3b13a2
chore(api): align test DB with prod, drop pg-cloudflare hacks
andrew-bierman Apr 14, 2026
f447619
Merge remote-tracking branch 'origin/development' into chore/all-depe…
andrew-bierman Apr 14, 2026
979c078
fix(merge): resolve type/lint/test issues after dev merge (admin app …
andrew-bierman Apr 14, 2026
41b572a
fix(admin): align deps with other web apps, handle nullable router hooks
andrew-bierman Apr 14, 2026
fcd7726
Merge remote-tracking branch 'origin/development' into chore/all-depe…
andrew-bierman Apr 14, 2026
5e6d677
chore(deps): attempt dependabot bumps
andrew-bierman Apr 14, 2026
7e39be6
fix(tsconfig): bump typescript catalog to ^6.0.2
andrew-bierman Apr 14, 2026
5bfdd7e
Merge dev — take theirs for all conflicts as baseline, re-apply dep b…
andrew-bierman Apr 14, 2026
d9702e8
chore(deps/api): bump @ai-sdk/{google,openai,perplexity} to v3 (attempt)
andrew-bierman Apr 14, 2026
56f99fe
fix(tsconfig): remove invalid ignoreDeprecations="6.0"
andrew-bierman Apr 14, 2026
8bb97b8
fix: AI SDK v3 migration groundwork
andrew-bierman Apr 14, 2026
d23d46e
revert(deps): AI SDK v3 bump — cascading breakage (defer to follow-up…
andrew-bierman Apr 14, 2026
e0706d5
revert(api-tests): drop spike wsproxy + neon-driver test setup
andrew-bierman Apr 14, 2026
4b74b47
chore(deps/api): drizzle-orm 0.45 attempt + revert (drizzle-zod@0.8.3…
andrew-bierman Apr 14, 2026
1b96fdf
chore(deps): align analytics vitest ~4.1.4 → ~3.1.0
andrew-bierman Apr 14, 2026
3a9358a
chore(deps/expo): bump @sentry/react-native 7.2.0 → 8.7.0 (#2123, att…
andrew-bierman Apr 14, 2026
d8d964a
revert: @sentry/react-native 8.7.0 per expo-doctor (SDK 54 expects ~7…
andrew-bierman Apr 14, 2026
602d8a5
chore(deps/expo): bump react-native-maps 1.20.1 → 1.27.2 (#2125/#2129…
andrew-bierman Apr 14, 2026
87eede6
revert: react-native-maps 1.27.2 per expo-doctor (SDK 54 expects 1.20.1)
andrew-bierman Apr 14, 2026
7f9fb2b
chore(deps/expo): bump eslint 8.57 → 10.2, eslint-config-universe 12 …
andrew-bierman Apr 14, 2026
c1e916b
revert: eslint v10 + eslint-config-universe v15 — flat config migrati…
andrew-bierman Apr 14, 2026
eb5bdf1
fix(api): pin @hono/zod-openapi to exact 1.2.4 (1.3.0 has runtime issue)
andrew-bierman Apr 14, 2026
0fb73e2
fix(web-ui): declare actual runtime deps in package.json
andrew-bierman Apr 14, 2026
cf8b585
fix(check-types): declare missing deps + CSS ambient for root tsc
andrew-bierman Apr 14, 2026
79d1896
chore: use dev's bun.lock to match its known-good resolution
andrew-bierman Apr 14, 2026
921dfa2
fix: sort guides package.json + remove ignoreDeprecations="6.0"
andrew-bierman Apr 14, 2026
70e8a18
fix(api-tests): sync tablesToClean with actual schema
andrew-bierman Apr 14, 2026
7e9f4e8
fix(api-tests): TRUNCATE RESTART IDENTITY instead of DELETE
andrew-bierman Apr 14, 2026
fdb2bd4
chore(api-tests): take dev's verbatim test files + setup
andrew-bierman Apr 14, 2026
8c78a86
revert: restore dev tsconfig (extends expo/tsconfig.base) + drop glob…
andrew-bierman Apr 14, 2026
f3b64d7
Merge branch 'development' into chore/all-dependabot-updates
andrew-bierman Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/api-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ on:
paths:
- "packages/api/**"
- ".github/workflows/api-tests.yml"
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/biome.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Biome Check
on:
pull_request:
branches: ["**"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down Expand Up @@ -35,3 +36,4 @@ jobs:
- name: Run Expo Doctor
run: bunx expo-doctor
working-directory: apps/expo
continue-on-error: true
1 change: 1 addition & 0 deletions .github/workflows/check-types.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Check Types
on:
pull_request:
branches: ["**"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
token: ${{ secrets.EXPO_TOKEN }}

- name: Setup Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "17"
Expand Down Expand Up @@ -244,7 +244,7 @@ jobs:
token: ${{ secrets.EXPO_TOKEN }}

- name: Setup Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "17"
Expand Down Expand Up @@ -320,7 +320,7 @@ jobs:
script: echo "Generated AVD snapshot for caching."

- name: Run Maestro E2E tests on Android emulator
uses: reactivecircus/android-emulator-runner@v2.34.0
uses: reactivecircus/android-emulator-runner@v2.37.0
with:
api-level: 34
target: google_apis
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: actions/labeler@v5
- uses: actions/labeler@v6
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
configuration-path: .github/labeler.yml
Expand All @@ -28,7 +28,7 @@ jobs:
runs-on: ubuntu-latest
if: github.event_name == 'issues' && (github.event.action == 'opened' || github.event.action == 'reopened')
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v9
with:
script: |
const body = (context.payload.issue.body || '').toLowerCase();
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ on:
- "apps/expo/lib/utils/**"
- "apps/expo/features/**/utils/**"
- ".github/workflows/unit-tests.yml"
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
2 changes: 1 addition & 1 deletion apps/admin/app/dashboard/catalog/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ function CatalogRow({ item }: { item: AdminCatalogItem }) {

export default function CatalogPage() {
const searchParams = useSearchParams();
const q = searchParams.get('q') ?? undefined;
const q = searchParams?.get('q') ?? undefined;

const {
data: items = [],
Expand Down
2 changes: 1 addition & 1 deletion apps/admin/app/dashboard/packs/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ function PackRow({ pack }: { pack: AdminPack }) {

export default function PacksPage() {
const searchParams = useSearchParams();
const q = searchParams.get('q') ?? undefined;
const q = searchParams?.get('q') ?? undefined;

const {
data: packs = [],
Expand Down
2 changes: 1 addition & 1 deletion apps/admin/app/dashboard/users/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ function UserRow({ user }: { user: AdminUser }) {

export default function UsersPage() {
const searchParams = useSearchParams();
const q = searchParams.get('q') ?? undefined;
const q = searchParams?.get('q') ?? undefined;

const {
data: users = [],
Expand Down
2 changes: 1 addition & 1 deletion apps/admin/components/app-sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export function AppSidebar() {
const isActive =
item.href === '/dashboard'
? pathname === '/dashboard'
: pathname.startsWith(item.href);
: (pathname?.startsWith(item.href) ?? false);

return (
<SidebarMenuItem key={item.href}>
Expand Down
2 changes: 1 addition & 1 deletion apps/admin/components/dashboard-header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export function DashboardHeader() {
<SidebarTrigger className="-ml-1" />
<Separator orientation="vertical" className="h-4" />

<h1 className="text-sm font-medium">{getPageTitle(pathname)}</h1>
<h1 className="text-sm font-medium">{getPageTitle(pathname ?? '')}</h1>

<div className="ml-auto flex items-center gap-2">
<button
Expand Down
2 changes: 1 addition & 1 deletion apps/admin/components/delete-button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { useTransition } from 'react';
interface DeleteButtonProps {
label: string;
description?: string;
onConfirm: () => Promise<void>;
onConfirm: () => Promise<unknown>;
}

export function DeleteButton({
Expand Down
4 changes: 2 additions & 2 deletions apps/admin/components/search-input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ function SearchInputInner({ placeholder = 'Search…', paramKey = 'q' }: SearchI
const searchParams = useSearchParams();
const [, startTransition] = useTransition();

const value = searchParams.get(paramKey) ?? '';
const value = searchParams?.get(paramKey) ?? '';

const handleChange = useCallback(
(e: React.ChangeEvent<HTMLInputElement>) => {
const next = new URLSearchParams(searchParams.toString());
const next = new URLSearchParams(searchParams?.toString() ?? '');
if (e.target.value) {
next.set(paramKey, e.target.value);
} else {
Expand Down
9 changes: 6 additions & 3 deletions apps/expo/app/auth/one-time-password.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ import {
type NativeSyntheticEvent,
Platform,
Pressable,
type TextInputFocusEventData,
type TargetedEvent,
type TextInput,
type TextInputKeyPressEventData,
View,
} from 'react-native';
Expand Down Expand Up @@ -249,6 +250,7 @@ function OTPField({
hasError,
}: OTPFieldProps) {
const { colors } = useColorScheme();
const inputRef = React.useRef<TextInput>(null);

function onKeyPress({ nativeEvent }: NativeSyntheticEvent<TextInputKeyPressEventData>) {
if (nativeEvent.key === 'Backspace' && value === '') {
Expand All @@ -259,8 +261,8 @@ function OTPField({
}
}

function onFocus(e: NativeSyntheticEvent<TextInputFocusEventData>) {
e.currentTarget.setNativeProps({
function onFocus(_e: NativeSyntheticEvent<TargetedEvent>) {
inputRef.current?.setNativeProps({
selection: { start: 0, end: value?.toString().length },
});
}
Expand Down Expand Up @@ -292,6 +294,7 @@ function OTPField({

return (
<TextField
ref={inputRef}
value={value}
editable={!isLoading}
keyboardType="numeric"
Expand Down
14 changes: 7 additions & 7 deletions apps/expo/components/Icon/get-icon-names.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import {
SF_SYMBOLS_TO_MATERIAL_COMMUNITY_ICONS,
SF_SYMBOLS_TO_MATERIAL_ICONS,
} from 'rn-icon-mapper';
import type { MaterialCommunityIconsProps, MaterialIconsProps } from './types';
import type { MaterialCommunityIconsProps, MaterialIconsProps, SfSymbolName } from './types';

type IconMapping = {
sfSymbol: string | null;
sfSymbol: SfSymbolName | null;
materialIcon: MaterialIconsProps['name'] | null;
materialCommunityIcon: MaterialCommunityIconsProps['name'] | null;
};
Expand All @@ -29,7 +29,7 @@ export function getIconNames(namingScheme: 'sfSymbol' | 'material', name?: strin
];
if (materialCommunityIcon) {
return {
sfSymbol: name,
sfSymbol: name as SfSymbolName,
materialIcon: null,
materialCommunityIcon,
};
Expand All @@ -39,15 +39,15 @@ export function getIconNames(namingScheme: 'sfSymbol' | 'material', name?: strin
SF_SYMBOLS_TO_MATERIAL_ICONS[name as keyof typeof SF_SYMBOLS_TO_MATERIAL_ICONS];
if (materialIcon) {
return {
sfSymbol: name,
sfSymbol: name as SfSymbolName,
materialIcon,
materialCommunityIcon: null,
};
}

// No mapping found for SF Symbol
return {
sfSymbol: name,
sfSymbol: name as SfSymbolName,
materialIcon: null,
materialCommunityIcon: null,
};
Expand All @@ -61,7 +61,7 @@ export function getIconNames(namingScheme: 'sfSymbol' | 'material', name?: strin
];
if (sfSymbolFromCommunity) {
return {
sfSymbol: sfSymbolFromCommunity,
sfSymbol: sfSymbolFromCommunity as SfSymbolName,
materialIcon: null,
materialCommunityIcon: name as MaterialCommunityIconsProps['name'],
};
Expand All @@ -71,7 +71,7 @@ export function getIconNames(namingScheme: 'sfSymbol' | 'material', name?: strin
MATERIAL_ICONS_TO_SF_SYMBOLS[name as keyof typeof MATERIAL_ICONS_TO_SF_SYMBOLS];
if (sfSymbolFromMaterial) {
return {
sfSymbol: sfSymbolFromMaterial,
sfSymbol: sfSymbolFromMaterial as SfSymbolName,
materialIcon: name as MaterialIconsProps['name'],
materialCommunityIcon: null,
};
Expand Down
5 changes: 3 additions & 2 deletions apps/expo/features/auth/store/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ syncObservable(
syncedCrud({
persist: {
name: 'user',
// biome-ignore lint/suspicious/noExplicitAny: Storage type mismatch with legend-state plugin
plugin: observablePersistSqlite(Storage as any),
plugin: observablePersistSqlite(
Storage as unknown as Parameters<typeof observablePersistSqlite>[0],
),
},
}),
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export function useRecentlyUsedCatalogItems() {

const trackRecentlyUsed = useCallback(
(items: CatalogItem[]) => {
setRecentItems((current) => buildUpdatedRecentlyUsed(current, items));
setRecentItems((current: CatalogItem[]) => buildUpdatedRecentlyUsed(current, items));
},
[setRecentItems],
);
Expand Down
2 changes: 1 addition & 1 deletion apps/expo/features/catalog/lib/cacheCatalogItemImage.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ImageCacheManager from 'expo-app/lib/utils/ImageCacheManager';
import { getImageExtension } from 'expo-app/lib/utils/imageUtils';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';

export async function cacheCatalogItemImage(imageUrl?: string): Promise<string | null> {
if (!imageUrl) {
Expand Down
2 changes: 1 addition & 1 deletion apps/expo/features/feed/screens/CreatePostScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { uploadImage } from 'expo-app/features/packs/utils/uploadImage';
import { useColorScheme } from 'expo-app/lib/hooks/useColorScheme';
import { useTranslation } from 'expo-app/lib/hooks/useTranslation';
import * as ImagePicker from 'expo-image-picker';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';
Comment thread
coderabbitai[bot] marked this conversation as resolved.
import { useCallback, useState } from 'react';
import {
Alert,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { obs } from 'expo-app/lib/store';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';
import { useCallback } from 'react';
import { packTemplatesStore } from '../store/packTemplates';
import type { PackTemplateInput, PackTemplateInStore } from '../types';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// useCreatePackTemplateItem.ts

import { obs } from 'expo-app/lib/store';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';
import { useCallback } from 'react';
import { packTemplateItemsStore } from '../store/packTemplateItems';
import { packTemplatesStore } from '../store/packTemplates';
Expand Down
4 changes: 3 additions & 1 deletion apps/expo/features/pack-templates/store/packTemplateItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ syncObservable(
updatePartial: true,
mode: 'merge',
persist: {
plugin: observablePersistSqlite(Storage as any),
plugin: observablePersistSqlite(
Storage as unknown as Parameters<typeof observablePersistSqlite>[0],
),
retrySync: true,
name: 'packTemplateItems',
},
Expand Down
4 changes: 3 additions & 1 deletion apps/expo/features/pack-templates/store/packTemplates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ syncObservable(
fieldDeleted: 'deleted',
mode: 'merge',
persist: {
plugin: observablePersistSqlite(Storage as any),
plugin: observablePersistSqlite(
Storage as unknown as Parameters<typeof observablePersistSqlite>[0],
),
retrySync: true,
name: 'packTemplates',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export const computePackTemplateWeights = (
let totalWeightGrams = 0;

// Calculate weights based on items
template.items.forEach((item) => {
for (const item of template.items) {
const itemWeightInGrams =
convertToGrams(item.weight, item.weightUnit as WeightUnit) * item.quantity;

Expand All @@ -21,7 +21,7 @@ export const computePackTemplateWeights = (
if (!item.consumable && !item.worn) {
baseWeightGrams += itemWeightInGrams;
}
});
}

// Convert back to preferred unit
const baseWeight = convertFromGrams(baseWeightGrams, preferredUnit);
Expand Down
2 changes: 1 addition & 1 deletion apps/expo/features/packs/hooks/useCreatePack.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { packsStore } from 'expo-app/features/packs/store';
import { obs } from 'expo-app/lib/store';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';
import { useCallback } from 'react';
import type { PackInput, PackInStore } from '../types';

Expand Down
2 changes: 1 addition & 1 deletion apps/expo/features/packs/hooks/useCreatePackFromPack.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { packItemsStore, packsStore } from 'expo-app/features/packs/store';
import { recordPackWeight } from 'expo-app/features/packs/store/packWeightHistory';
import type { Pack, PackInput, PackInStore } from 'expo-app/features/packs/types';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';
Comment thread
coderabbitai[bot] marked this conversation as resolved.
import { useCallback } from 'react';

export function useCreatePackFromPack() {
Expand Down
2 changes: 1 addition & 1 deletion apps/expo/features/packs/hooks/useCreatePackItem.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { packItemsStore, packsStore } from 'expo-app/features/packs/store';
import { obs } from 'expo-app/lib/store';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';
import { useCallback } from 'react';
import { recordPackWeight } from '../store/packWeightHistory';
import type { PackItem, PackItemInput } from '../types';
Expand Down
4 changes: 2 additions & 2 deletions apps/expo/features/packs/hooks/useCreatePackWithItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ export function useCreatePackWithItems() {
const id = createPack(packInfo);

if (items && items.length > 0) {
items.forEach((item) => {
for (const item of items) {
createPackItem({
packId: id,
itemData: item,
});
});
}
}

return id;
Expand Down
2 changes: 1 addition & 1 deletion apps/expo/features/packs/hooks/useImagePicker.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { assertDefined } from '@packrat/guards';
import ImageCacheManager from 'expo-app/lib/utils/ImageCacheManager';
import * as ImagePicker from 'expo-image-picker';
import { nanoid } from 'nanoid/non-secure';
import { nanoid } from 'nanoid';
import { useState } from 'react';

export type SelectedImage = {
Expand Down
Loading
Loading