# rohanpoudel2/capsule — Changelog All notable changes to this project. ## v0.1 — Demo Beta _2026-05-05_ Capsify v0.1 launches with notifications, discovery feed, profiles, comments, and realtime sync. ### New Features - Rebrand app to Capsify (#19) — We've updated the app's name and visual identity to Capsify. All your data and saved information remain exactly the same. - Add push notifications with granular preferences (#17) — Users can now receive push notifications for likes, comments, and new items, with per-category toggles to tune delivery. Notifications ride Postgres triggers → Edge Function → Expo Push fanout. - Add in-app notification center with unread bell (#15) — New Notifications tab shows activity feed (likes, comments, new items) with real-time sync. Unread count badges the bell icon. - Add link unfurling and rich content types (#14) — Paste a URL into items and it auto-unfurls into a rich preview card. Auto-detects YouTube/Vimeo (video), Spotify/Apple Music/SoundCloud (music with Odesli cross-links), and generic links. - Overhaul Discover feed with location-aware big cards (#20) — Replaced small Fresh + duplicated Trending rows with a full-width ~300pt card feed ranked by proximity and trend, with persisted query cache for instant cold-launch paint. - Add avatar upload and expanded profile editing (#21) — Users can now upload custom avatars, edit bio and profile details, and see a larger profile hero with bio text. - Redesign Create hub with 2×2 grid and brand hero (#23) — Replaced vertical settings-menu-like layout with a branded 2×2 grid of content type tiles (photo, pin, note, list) and hero for new capsules. Fixes flex layout on iOS. - Unify button and settings primitives across UI (#22) — Consolidated three inconsistent button styles (Edit profile, Notification settings, Log out) into unified Button and SettingsRow primitives. Polish notification and profile screens. - Add Sentry crash and error reporting (#26) — Every JS exception, render error, failed query, and rejected mutation now surfaces in Sentry with stack traces, breadcrumbs, and context. Eliminates silent failure debugging. - Set up EAS build profiles and hosted deploy runbook (#24) — Configures EAS with three build profiles (dev, preview, production) and Apple Team ID. Documents Supabase + EAS secrets wiring for TestFlight. - Add native build pipeline with expo-dev-client (#16) — Enables custom native modules via expo-dev-client while keeping Expo Go functional for JS-only changes. Switches to Continuous Native Generation (CNG) with gitignored ios/ and android/. - Add UI polish pass with depth, parallax, toasts, and drafts (#11) — Broad visual and interaction polish across every screen: expanded design tokens (shadows, gradients, animations), parallax scrolling, toast notifications, draft state indicators, and branded empty states. - Polish authentication screens with branded states (#12) — Refreshes Welcome, Login, and SignUp screens with branded hero imagery and improved visual hierarchy. - Add search and discovery with FTS and filters (#10) — Server-side full-text search with four sort modes, tag filtering, nearby location filtering, and local recents. Replaces client-side filtering. - Add comments, realtime sync, and share (#9) — Users can reply to contributions, share capsules out to any app, and see new items appear live as others post them. Fixes photo rendering regression from M7. - Add content creation: capsules and contributions (#8) — Users can now create capsules and contribute photos, pins, and notes. The Create tab and capsule-detail FAB are fully functional. - Migrate from mock data to live Supabase queries (#7) — Every screen now reads from the live Supabase schema. Component code is unchanged; queryFn moved from mock fetchers to typed Supabase client. - Add authentication with email/password and SSO stubs (#6) — Email/password login is fully functional. Google and Apple SSO show UI stubs pending OAuth credential setup. - Add foundation: Expo Router, design tokens, state architecture (#1) — Bootstraps the app with Expo SDK 54, file-based routing, dark-first design tokens, TanStack Query for server state, and Zustand for global state. ### Bug Fixes - Fix realtime stale-channel crash on capsule screen (#27) — Supabase channel registration was throwing when re-subscribing after navigation. Evict stale channels before re-registering. - Make push notification dispatch trigger fail-safe (#25) — Webhook errors in the push-dispatch Edge Function no longer kill the items INSERT operation. - Fix multiline text field overflow — TextField component no longer overflows its wrapper when multiline. ### Maintenance - Use gen_random_uuid() instead of deprecated uuid_generate_v4() — Update database migrations to use the current UUID generation function. - Expand .gitignore for native builds and editors (#13) — Add patterns for package managers, editors, OS junk, and native build outputs to prevent accidental commits. - Add EAS Update for over-the-air updates — Install expo-updates and wire EAS Update for OTA delivery of JS bundles. - Update EAS CLI commands for deprecations — Rename eas secret:create to env:create in deploy runbook to match current CLI.