# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

---

## [1.6.1] - 2026-04-04

Phase 4 — animation polish and final feature gaps. Flutter app reaches full feature parity with Consumer Web App v1.4.9.

### Added
- **BouncingLoader widget** (`lib/widgets/bouncing_loader.dart`): 3-dot bouncing animation with staggered 200 ms delays using `Curves.bounceOut`. Replaces `CircularProgressIndicator` in home, contribute, and review screens. Accepts `color`, `dotSize`, and `spacing` parameters.
- **DiceBear Notionists avatars on review cards** (REV-001): `CachedNetworkImage` fetches `api.dicebear.com/9.x/notionists/svg?seed={username}`. Falls back to coloured initial letter `CircleAvatar` on error or while loading.
- **Server-side event search** (HOME-007): Search modal now sends `q` param to `EventsByPincodeView`; client-side filter stays for instant `onChanged` feedback while server results load on submit. Cache is bypassed for search queries. Django backend updated with `Q(title__icontains=q) | Q(description__icontains=q)` OR filter.
- **`flutter_staggered_animations: ^1.1.1`** added to pubspec.

### Changed
- **Review list stagger animation** (REV-003): `AnimationLimiter` + `AnimationConfiguration.toStaggeredList` wraps review cards with 375 ms slide-up + fade-in per item.
- **Review submit success spring animation** (REV-004): Checkmark icon now animates with `ScaleTransition` driven by `Curves.elasticOut` (600 ms) instead of a static icon swap.
- **Hero transitions on event cards** (UX-005): `Hero(tag: 'event-hero-{id}')` wraps event images in home screen and matching destination in learn more screen — enabling shared-element transitions.
- **FadeTransition on learn more screen** (UX-005): Screen body fades in with `Curves.easeIn` (350 ms) after event data loads.
- **AnimatedList stagger on leaderboard** (UX-005): `SliverList` entries animate with `AnimationConfiguration.staggeredList` — 375 ms slide-up + fade-in per row.

---

## [1.6.0] - 2026-04-04

Phase 3 — 26 medium-priority gaps. Profile editing, contributor profiles, share cards, booking promo codes, and UX system components.

### Added
- **Eventify ID badge** (AUTH-003): Verified badge displayed on profile and contributor cards for accounts with confirmed identity.
- **DiceBear TierAvatarRing** (`lib/widgets/tier_avatar_ring.dart`): Tier-coloured ring around profile avatars using DiceBear seed — Bronze/Silver/Gold/Platinum/Diamond colours.
- **Profile photo upload to server** (AUTH-006 / PROF-002): `PATCH /api/user/update-profile/` multipart endpoint; photo picker + crop flow integrated.
- **District picker** (PROF-004): 14 Kerala districts selectable from a bottom sheet; stored against user profile.
- **183-day profile cooldown lock** (AUTH-005): Username and display name locked for 183 days after last change; countdown shown in edit form.
- **Kerala pincodes JSON** (`assets/data/kerala_pincodes.json`) (LOC-003): Full offline pincode dataset covering all 14 districts; powers location-aware event discovery without API round trips.
- **Promo code input on booking** (BOOK-003): `POST /bookings/apply-promo/` endpoint; inline validation with success/error state in booking bar.
- **Contributor profile screen** (`lib/screens/contributor_profile_screen.dart`) (CTR-004/005): Public view of any contributor's stats, tier, events submitted, and achievements.
- **Share rank card** (`lib/features/share/share_rank_card.dart`) (SHARE-001/002): Generates a shareable tier/EP card image; `share_plus` used for native share sheet.
- **Share status button on contributor dashboard** (CTR-003): `OutlinedButton.icon` with `Share.share()` near tier/EP display.
- **GlassCard widget** (`lib/widgets/glass_card.dart`) (UX-003): Reusable frosted-glass surface used across gamification and profile screens.
- **EventifyBottomSheet** (`lib/widgets/eventify_bottom_sheet.dart`) (UX-004): Standardised bottom sheet with drag handle, rounded corners, and safe-area inset.
- **Featured events carousel** (HOME-004): Auto-scrolling hero carousel for featured/sponsored events on home screen.
- **Event image gallery** (EVT-001): Full-screen `PageView` carousel inside learn more screen with dot indicator.

### Changed
- **Real gamification data** (GAM-003/004/006): EP/RP transaction history, tier progression, and leaderboard all wired to live Node.js API — mock data removed.
- **Leaderboard card district display** (LDR-003): District badge shown per rank row; district filter pill row added above leaderboard.
- **Achievement badge display + unlock animation** (ACH-002/003): Badges rendered from API; confetti-style animation plays on first unlock.
- **Review responses** (REV-002): Organiser reply thread displayed below each review card.
- **Profile bio and social links** (PROF-001): Edit form includes bio textarea and links for Instagram, Twitter, LinkedIn.

---

## [1.5.1] - 2026-04-04

Phase 2 — 11 high-priority gaps. Authentication hardening, location services, real gamification data hookup, skeleton loading, and booking flow fixes.

### Added
- **Email OTP verification** (AUTH-004): 6-digit OTP sent on registration; verification screen blocks app access until confirmed.
- **Password reset flow** (AUTH-002): Forgot-password → OTP → new password screens; Django `POST /accounts/password-reset/` endpoint integrated.
- **Location permission + haversine distance sorting** (LOC-001/002): `geolocator` requests permission at startup; events sorted by straight-line distance from user's GPS coordinate.
- **Skeleton loading with shimmer** (UX-001): `shimmer: ^3.0.0` added; event feed, leaderboard, and profile screens show shimmer placeholders while data loads.
- **Contributor stats real API** (CTR-001): EP/RP balance and tier fetched from Node.js gamification endpoint on dashboard load.
- **Achievement progress tracking** (ACH-001): Progress bars and completion state fetched from API; local mock removed.
- **Profile stats row** (PROF-003): Likes / Posts / Views counts fetched from user profile API and displayed in profile header.

### Changed
- **Search modal with server pincode detection** (HOME-001/002/003): Search bottom sheet auto-detects user pincode; category filter chips filter from API results.
- **Real tier and EP display** (GAM-002/005): Contributor dashboard shows live tier and EP from Node.js API; tier badge in profile header updated to match.
- **District filter on leaderboard** (LDR-002): Leaderboard district pills populated from API; selecting filters rank table in real time.
- **Booking bar fixes** (EVT-003/BOOK-004): Fixed ticket-count stepper; booking confirmation screen correctly shows booking reference.

---

## [1.5.0] - 2026-04-04

Phase 1 — critical gaps. Live backend integration replacing all mock/stub data, payment checkout, and OAuth.

### Added
- **Gamification API integration**: EP, RP, leaderboard, and achievements wired to live Node.js endpoints at `app.eventifyplus.com/api/v1/` — all mock `GamificationService` data replaced.
- **Razorpay checkout** (BOOK-001): Native Razorpay SDK integrated; `POST /bookings/create/` → order creation → Razorpay payment sheet → `POST /bookings/verify/` webhook.
- **Google OAuth login** (AUTH-001): `google_sign_in` flow; tokens exchanged with Django `POST /accounts/google-auth/` endpoint.
- **Notification panel** (NOTIF-002/003/004): `DraggableScrollableSheet` notification drawer with 4 colour-coded notification types (booking, event, system, promo); mark-individual-read and mark-all-read actions.

---

## [1.4.0] - 2026-03-18

### Added
- **Desktop Contribute Dashboard**: Full desktop layout for the Contribute screen, matching the web version at eventifyplus.com/contribute
  - "Contributor Dashboard" title with 3-tab navigation (Contribute, Leaderboard, Achievements)
  - Two-column submit event form — Event Title + Category side-by-side, Date + Location side-by-side
  - Contributor Level gradient card with 5-tier milestone progress bar (Bronze → Silver → Gold → Platinum → Diamond)
  - Sub-navigation row: My Events / Submit Event / Reward Shop
  - Desktop Leaderboard with All Time / This Month toggle, district pills, podium, and full rank table
  - Desktop Achievements with 3-column badge grid, progress bars, and lock icons
  - Inline Reward Shop with RP balance badge and shop item cards
- **Gamification Feature Module** (`lib/features/gamification/`):
  - `GamificationProvider` — ChangeNotifier-based state management
  - `GamificationService` — mock data for EP, RP, leaderboard entries, achievements, and shop items
  - Models: `LeaderboardUser`, `Achievement`, `ShopItem`, `ContributorStats`
- **Bottom Sheet Date Filters**: Home screen event-category filter chips now open in a modal bottom sheet on mobile
- Web runner script (`run_web.sh`) for local Flutter web development server

### Changed
- **Profile Screen**: Completely redesigned to match the web app layout — gradient header card, avatar, stats row (Likes / Posts / Views), and tabbed content
- **Profile Card Animations**: Smooth entrance animations matching the React web component
- **Contribute Screen (Mobile)**: Full 4-tab rebuild — Contribute, Leaderboard, Achievements, Shop — with animated glass-glider tab bar indicator
- **Login Screen**: Updated UI design aligned with the web version
- **Event Detail Screen**: Layout updates and improved API data binding
- **Theme**: Refreshed dark/light mode colour palette and surface colours
- **API Client**: Updated base URL and endpoint paths in `lib/core/api/api_endpoints.dart`
- **Fonts**: Integrated full Gilroy font family (Light, Regular, Medium, SemiBold, Bold, ExtraBold — with italic variants)
- **Responsive Layout**: Improved breakpoint handling; desktop threshold set at 820 px

### Fixed
- Profile card pixel-perfect alignment with the web version
- Calendar screen date-range filter and location search integration
- District dropdown naming conflict in leaderboard (`_lbDistricts` vs. `_districts`)
- Green points colour (#16A34A) on desktop leaderboard matching web (was blue #0F45CF on mobile)

---

## [1.3.0] - 2026-02-xx

### Added
- Leaderboard tab and Achievements tab added to the Contribute screen
- Bouncy sliding glass-glider animation for Contribute tab bar

---

## [1.2.0] - 2026-01-xx

### Added
- Responsive dual-layout system with 820 px breakpoint
- Date filtering on the Home screen event feed
- Location search integration
- Calendar screen bug fixes and improvements

---

## [1.1.0] - 2025-12-xx

### Added
- Initial screens: Login, Home, Events, Profile, Calendar, Search, Booking
- Desktop variants: `DesktopLoginScreen`, `HomeDesktopScreen`
- Flutter launcher icons and native splash screen
- Gilroy font integration (initial)
- `shared_preferences` session caching
