release: bump version to 1.4(p) (versionCode 14)

- Update versionCode 12 → 14, versionName 1.3(p) → 1.4(p)
- Update pubspec.yaml version to 1.4.0+14
- Add CHANGELOG.md with full version history
- Update README.md: version badge + changelog section
- Desktop Contribute Dashboard rebuilt to match web version
  - Contributor Dashboard title, 3-tab nav (Contribute/Leaderboard/Achievements)
  - Two-column submit form, tier milestone progress bar
  - Desktop leaderboard with podium, filters, rank table (green points)
  - Desktop achievements 3-column badge grid
  - Inline Reward Shop with RP balance
- Gamification feature module (EP, RP, leaderboard, achievements, shop)
- Profile screen redesigned to match web app layout with animations
- Home screen bottom sheet date filter chips
- Updated API endpoints, login/event detail screens, theme colors
- Added Gilroy font suite, responsive layout improvements

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-18 11:10:56 +05:30
parent 5b98f41596
commit 97245e01c4
16 changed files with 3219 additions and 921 deletions

View File

@@ -10,7 +10,10 @@ import 'profile_screen.dart';
import 'booking_screen.dart';
import 'settings_screen.dart';
import 'learn_more_screen.dart';
import 'contribute_screen.dart';
import '../core/app_decoration.dart';
import '../features/gamification/providers/gamification_provider.dart';
import 'package:provider/provider.dart';
class HomeDesktopScreen extends StatefulWidget {
final bool skipSidebarEntranceAnimation;
@@ -978,35 +981,9 @@ class _HomeDesktopScreenState extends State<HomeDesktopScreen> with SingleTicker
case 3:
return BookingScreen(onBook: () {}, image: '');
case 4:
// Contribute placeholder (kept simple)
return SingleChildScrollView(
padding: const EdgeInsets.all(28),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text('Contribute', style: Theme.of(context).textTheme.headlineSmall?.copyWith(fontWeight: FontWeight.bold)),
const SizedBox(height: 14),
const Text('Submit events or contact the Eventify team.'),
const SizedBox(height: 24),
Card(
elevation: 1,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
child: Padding(
padding: const EdgeInsets.all(18),
child: Column(children: [
TextField(decoration: InputDecoration(labelText: 'Event title', border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)))),
const SizedBox(height: 12),
TextField(decoration: InputDecoration(labelText: 'Location', border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)))),
const SizedBox(height: 12),
TextField(maxLines: 4, decoration: InputDecoration(labelText: 'Description', border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)))),
const SizedBox(height: 12),
Row(children: [
ElevatedButton(onPressed: () {}, child: const Text('Submit')),
const SizedBox(width: 12),
OutlinedButton(onPressed: () {}, child: const Text('Reset')),
])
]),
),
),
]),
return ChangeNotifierProvider(
create: (_) => GamificationProvider(),
child: const ContributeScreen(),
);
case 5:
return const SettingsScreen();