All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
New capabilities, screens, and test coverage introduced into the build.
docs/changelog-details/2026-06-17-router-dispose-loop-fix.md with detailed notes for the runtime redirect/disposed-controller loop that appeared after the app finally launched.docs/changelog-details/2026-06-17-flutter-apk-output-path-fix.md with detailed notes for restoring Flutter-compatible APK output discovery without reintroducing the cross-drive plugin cache failure.docs/changelog-details/2026-06-17-kotlin-incremental-cache-disable.md with detailed notes for the final Android build-stability workaround after repeated plugin Kotlin cache corruption on Windows.docs/changelog-details/2026-06-17-plugin-cache-regression-fallback.md with detailed notes for the broken Flutter plugin package issue and the dependency fallback used to restore Android builds.docs/changelog-details/2026-06-17-kotlin-cross-drive-cache-fix.md with detailed notes for the Windows Kotlin incremental cache failure affecting Flutter plugin builds.docs/changelog-details/2026-06-17-gradle-daemon-memory-fix.md with detailed notes for the Android Gradle daemon crash investigation and memory tuning fix.lib/features/learn/domain/, lib/features/learn/data/, and lib/features/learn/presentation/ Learn landing files to start Phase 3 with a proper Clean Architecture slice for enrolled courses and catalog loading.test/features/learn/data/learn_repository_impl_test.dart, test/features/learn/presentation/learn_dashboard_controller_test.dart, and test/features/learn/presentation/learn_screen_test.dart to cover Learn repository aggregation, controller state transitions, and main-screen rendering/filter behavior.docs/changelog-details/2026-06-16-phase3-learn-kickoff.md with detailed notes for the Learn Phase 3 kickoff implementation.lib/features/learn/domain/entities/learn_course_detail.dart, learn_lesson.dart, and learn_note.dart plus the related detail models/controllers/screen files to build the Phase 3 course detail slice on top of courseDetail, videosList, and notesList.test/features/learn/presentation/course_detail_controller_test.dart and test/features/learn/presentation/course_detail_screen_test.dart to cover the Learn detail controller states and segmented detail UI.docs/changelog-details/2026-06-16-phase3-learn-course-detail.md with detailed notes for the Learn course detail slice.lib/features/learn/domain/entities/learn_video_session.dart, lib/features/learn/data/models/learn_video_session_model.dart, lib/features/learn/presentation/controllers/course_video_controller.dart, and lib/features/learn/presentation/screens/course_video_screen.dart to implement the Learn video playback slice with streaming-session loading and watch tracking hooks.test/features/learn/presentation/course_video_controller_test.dart and test/features/learn/presentation/course_video_screen_test.dart to cover the Learn video controller and video route UI states.docs/changelog-details/2026-06-16-phase3-learn-video-player.md with detailed notes for the Learn video playback slice.lib/features/learn/data/datasources/learn_local_data_source.dart and lib/features/learn/presentation/controllers/note_download_controller.dart to support app-storage note downloads with per-note state tracking.test/features/learn/presentation/note_download_controller_test.dart to cover Learn note download success/error state transitions.docs/changelog-details/2026-06-16-phase3-learn-note-download.md with detailed notes for the Learn note download slice.lib/features/practice/domain/, lib/features/practice/data/, and lib/features/practice/presentation/ Practice hub files to start Phase 4 with a proper Clean Architecture slice for daily challenge, upcoming exams, and recent results.test/features/practice/data/practice_repository_impl_test.dart, test/features/practice/presentation/practice_hub_controller_test.dart, and test/features/practice/presentation/practice_hub_screen_test.dart to cover Practice repository aggregation, controller state transitions, and main-screen rendering.docs/changelog-details/2026-06-16-phase4-practice-hub.md with detailed notes for the Phase 4 Practice hub kickoff.lib/features/practice/domain/entities/exam_attempt.dart, practice_question.dart, and practice_choice.dart plus the related exam_attempt_model.dart and exam_attempt_controller.dart files to implement the Phase 4 secure exam-taking slice on top of examStart, examAnswerSave, and examSubmit.lib/features/practice/presentation/screens/exam_attempt_screen.dart to render the full-screen exam experience with timer, question navigation, save-on-answer, and submit flow inside ScreenGuard.test/features/practice/presentation/exam_attempt_controller_test.dart and test/features/practice/presentation/exam_attempt_screen_test.dart to cover the exam-taking controller and screen behavior.docs/changelog-details/2026-06-16-phase4-exam-taking.md with detailed notes for the Phase 4 exam-taking slice.lib/features/practice/presentation/screens/exam_report_screen.dart, test/features/practice/presentation/exam_report_controller_test.dart, and test/features/practice/presentation/exam_report_screen_test.dart to complete the Phase 4 post-submit exam report flow with summary, analytics, and answer review coverage.docs/changelog-details/2026-06-17-phase4-exam-report.md with detailed notes for the Phase 4 exam report slice.lib/features/practice/presentation/controllers/practice_submit_controller.dart, lib/features/practice/presentation/screens/practice_result_screen.dart, test/features/practice/presentation/practice_submit_controller_test.dart, and test/features/practice/presentation/practice_result_screen_test.dart to complete the remaining non-exam practice submission flow and close Phase 4.docs/changelog-details/2026-06-17-phase4-practice-submit-completion.md with detailed notes for the final Phase 4 practice-submit slice.lib/core/debug/api_debug_console.dart and lib/core/network/interceptors/api_debug_interceptor.dart to provide a dev-only in-app API debug console that records request, response, error, auth, and router events during runtime reproduction.docs/changelog-details/2026-06-17-api-debug-console.md with detailed notes for the API/runtime debugging instrumentation slice.docs/project-rules.md to capture implementation guardrails distilled from docs/trae-instruction.md, including architecture, API discipline, UI state handling, security, testing, and delivery rules.docs/project-memory.md to preserve stable project context for future sessions, including product identity, technical direction, shared structure, design-system expectations, security baseline, and phase workflow.docs/changelog-details/2026-06-15-project-governance.md with detailed notes for this documentation and governance setup task.docs/progress-tracker.md as the persistent project progress ledger covering phases, modules, features, pages, and cross-cutting release work.docs/changelog-details/2026-06-15-progress-tracker.md with detailed notes for the tracker workflow setup.lib/app.dart, lib/bootstrap.dart, router files, theme files, and first shared widgets to replace the Flutter starter app with a Scholar’s Bestie Phase 0 shell.lib/features/foundation/presentation/screens/foundation_showcase_screen.dart as the first design-system showcase page.docs/changelog-details/2026-06-15-phase0-foundation-kickoff.md with detailed notes for the Phase 0 implementation kickoff.lib/core/constants/api_paths.dart plus core error/result types, storage wrappers, and a Dio client/interceptor skeleton to support upcoming feature development.docs/changelog-details/2026-06-15-phase0-core-layers.md with detailed notes for the Phase 0 core-layer additions.app_loading.dart, app_empty_view.dart, app_error_view.dart) and initial security skeleton files under lib/core/security/.docs/changelog-details/2026-06-15-phase0-ui-states-and-security-stubs.md with detailed notes for these additions.config/*.example.json and conditional certificate pinning support.docs/changelog-details/2026-06-15-phase0-flavors-and-pinning.md with detailed notes for flavor config and pinning.l10n.yaml, English/Malayalam ARB files) and the shared sb_bottom_nav.dart widget.docs/changelog-details/2026-06-15-phase0-localization-and-bottom-nav.md with detailed notes for localization and bottom nav work.assets/fonts/ (Bricolage Grotesque, Plus Jakarta Sans, Space Grotesk) to ensure brand typography ships offline with the app.docs/changelog-details/2026-06-15-phase0-bundled-fonts.md with detailed notes for the bundled fonts task.lib/core/security/rasp_guard.dart to bootstrap freeRASP (Talsec) threat monitoring based on build-time config.docs/changelog-details/2026-06-15-phase0-rasp-and-screen-guard.md with detailed notes for RASP wiring and screen guard behavior.docs/changelog-details/2026-06-15-phase0-app-shell-guard.md with detailed notes for app-wide screen guard wiring and shell navigation cleanup.docs/flavors.md to document --dart-define-from-file usage and expected build-time keys for dev/staging/prod.lib/core/config/flavor.dart to centralize parsing of FLAVOR values.docs/changelog-details/2026-06-15-phase0-completion.md with detailed notes for completing the remaining Phase 0 deliverables.lib/features/auth/ domain/data/presentation scaffolding to start Phase 1 Authentication.lib/features/auth/presentation/screens/login_screen.dart as the initial login UI entry point.docs/changelog-details/2026-06-15-phase1-auth-kickoff.md with detailed notes for Phase 1 kickoff work.test/features/auth/data/auth_repository_impl_test.dart to cover token persistence and logout wipe behavior in the auth repository.docs/changelog-details/2026-06-15-phase1-auth-otp-resend-and-logout.md with detailed notes for OTP resend, logout, and auth test additions.lib/features/auth/presentation/screens/splash_screen.dart to gate routing until the token store is loaded.docs/changelog-details/2026-06-15-phase1-auth-splash-gating.md with detailed notes for splash gating.lib/features/auth/presentation/widgets/otp_code_field.dart to support 6-box OTP entry on the login screen.test/features/auth/presentation/login_screen_test.dart to validate the OTP login section rendering.docs/changelog-details/2026-06-15-phase1-auth-otp-boxes.md with detailed notes for the OTP UI change.lib/features/auth/domain/entities/otp_send_result.dart and lib/features/auth/data/models/otp_send_result_model.dart to capture optional otp_token and resend metadata from the OTP send response.docs/changelog-details/2026-06-15-phase1-auth-otp-token.md with detailed notes for OTP token support.docs/changelog-details/2026-06-15-phase1-auth-login-polish.md with detailed notes for login UX polish.docs/changelog-details/2026-06-15-phase1-auth-phone-input-gating.md with detailed notes for tightening phone input validation and Send OTP gating.lib/core/auth/auth_logout_event.dart to propagate forced logout reasons (session expiry / device unlink) to the UI layer.docs/changelog-details/2026-06-15-phase1-auth-forced-logout-messaging.md with detailed notes for forced logout messaging.docs/changelog-details/2026-06-15-phase1-auth-inline-validation.md with detailed notes for adding inline validation feedback on the login form.lib/features/auth/presentation/screens/device_removed_screen.dart and docs/changelog-details/2026-06-15-phase1-auth-device-removed-route.md to introduce a dedicated device-unlinked route.docs/changelog-details/2026-06-15-phase1-auth-logout-confirmation.md with detailed notes for adding a logout confirmation dialog.docs/user-guide/11-api-flows.md to document mobile authentication endpoints, payload fields, and QA steps.docs/changelog-details/2026-06-15-phase1-auth-completion.md with detailed notes for completing the Phase 1 authentication baseline.docs/changelog-details/2026-06-15-phase1-dev-auth-bypass.md with detailed notes for the dev-only login bypass used for UI testing without OTP/live auth.docs/changelog-details/2026-06-15-auth-release-build-switch-fix.md with detailed notes for the auth compile fix that unblocks release APK generation on newer Dart toolchains.lib/features/home/ (domain entities, remote data source, repository, and controller) to fetch dashboard, profile, timetable, and banners data for the landing screen.lib/features/home/presentation/screens/home_dashboard_screen.dart to render the Phase 2 Home dashboard UI including the animated FirewallRing, quick-jump tiles, timetable section with live-now indicator, continue-learning CTA, and promo banner section.test/features/home/data/home_repository_impl_test.dart and test/features/home/presentation/home_dashboard_screen_test.dart to cover dashboard aggregation and UI state rendering.lib/features/home/domain/entities/continue_learning_item.dart, lib/features/home/data/models/continue_learning_item_model.dart, and lib/features/home/data/models/dashboard_payload_model.dart to support payload-driven continue-learning content on the Home dashboard.test/features/home/presentation/home_dashboard_controller_test.dart to cover Home controller empty/data/error state resolution and refresh behavior.docs/changelog-details/2026-06-15-phase2-home-dashboard.md with detailed notes for the Phase 2 Home dashboard work.docs/changelog-details/2026-06-15-release-compile-cleanup-and-verification.md with detailed notes for the final release compile cleanup, verification run, and Kotlin-plugin warning audit.docs/changelog-details/2026-06-15-localization-null-safety-and-release-gate-hardening.md with detailed notes for the final Home localization null-safety fix and the coding-style hardening added to prevent repeat release-only bugs.docs/changelog-details/2026-06-15-upstream-freerasp-build-isolation.md with detailed notes for isolating the upstream-broken freerasp Android dependency chain from app builds.docs/changelog-details/2026-06-15-android-desugaring-build-fix.md with detailed notes for the Android core library desugaring fix required by flutter_local_notifications.docs/changelog-details/2026-06-15-razorpay-removal-and-build-cleanup.md with detailed notes for removing Razorpay from the app and cleaning the related Android build configuration.docs/changelog-details/2026-06-15-dev-auth-auto-skip.md with detailed notes for temporarily hiding login during development by auto-activating the dev preview session.docs/changelog-details/2026-06-15-phase2-home-completion-verification.md with detailed notes for the final local verification run that closed Phase 2 Home implementation.docs/build-issue-prevention-guide.md as a dedicated build-stability note documenting the real failures faced during development and the exact prevention workflow to follow before future build-sensitive changes.docs/changelog-details/2026-06-16-build-issue-prevention-note.md with detailed notes for the new build-issue prevention reference.Refinements, fixes, and hardening applied to existing functionality.
lib/core/router/app_router.dart, lib/features/auth/presentation/controllers/auth_controller.dart, and lib/features/home/presentation/controllers/home_dashboard_controller.dart to stop router redirects from depending on a disposable UI auth controller and to guard async state writes after notifier disposal, fixing the repeated AuthController / HomeDashboardController after dispose runtime loop seen alongside Dio failures after app launch; verified by a clean focused flutter analyze pass on the touched files.android/build.gradle.kts to restore Flutter-compatible root build-directory wiring only for the :app module after Flutter could no longer discover the generated debug APK, while still leaving external plugin subprojects on their default build paths to avoid the earlier cross-drive Kotlin cache crash; verified by a successful clean flutter build apk --debug run.android/gradle.properties to disable Kotlin incremental compilation and Gradle build caching for Android builds on Windows, then cleared project/plugin build caches (build, .dart_tool, and affected Pub-cache plugin android/build folders) after repeated compileDebugKotlin cache-close failures in device_info_plus and package_info_plus; verified by a successful clean flutter pub get and flutter build apk --debug run.pubspec.yaml and pubspec.lock to pin device_info_plus to 12.4.0 and local_auth to 2.3.0 after the newer resolved plugin cache copies lacked their Android implementation files in Pub cache, which prevented Flutter from finding DeviceInfoPlusPlugin; verified by a successful local flutter build apk --debug run.android/build.gradle.kts to stop redirecting all Android subproject build outputs into the repo-root build/ folder, fixing the Windows cross-drive Kotlin incremental cache crash seen when Pub cache plugins on C: were compiled against project outputs on D:; verified by a successful local flutter build apk --debug run.android/gradle.properties to reduce Gradle daemon heap/metaspace settings and cap worker parallelism after android/hs_err_pid18588.log showed a native JVM out-of-memory crash during assembleDebug; verified by a successful local gradlew.bat assembleDebug --stacktrace run.lib/core/router/app_router.dart to replace the Learn placeholder route with the real LearnScreen so the Phase 3 tab now loads live feature state instead of a static hero header.lib/l10n/app_en.arb and lib/l10n/app_ml.arb to add Learn landing strings for filters, section states, progress labels, and course metadata without hardcoded UI copy.docs/progress-tracker.md to mark Phase 3 Learn as in progress and record the new Learn landing slice plus verification status.lib/core/router/routes.dart, lib/core/router/app_router.dart, lib/features/learn/presentation/screens/learn_screen.dart, and lib/features/learn/presentation/widgets/learn_course_card.dart so Learn cards now navigate into a dedicated course detail route.lib/features/learn/data/datasources/learn_remote_data_source.dart, lib/features/learn/data/repositories/learn_repository_impl.dart, lib/features/learn/domain/repositories/learn_repository.dart, and docs/user-guide/11-api-flows.md to cover the Learn detail endpoints and parsing expectations for course detail, lessons, and notes.docs/progress-tracker.md to record the new Course Detail slice and the expanded Learn verification status.lib/core/router/routes.dart, lib/core/router/app_router.dart, and lib/features/learn/presentation/screens/course_detail_screen.dart so unlocked lessons now open a dedicated full-screen video route.lib/features/learn/data/datasources/learn_remote_data_source.dart, lib/features/learn/data/repositories/learn_repository_impl.dart, lib/features/learn/domain/repositories/learn_repository.dart, and docs/user-guide/11-api-flows.md to support videoStream, videoWatchPing, and videoComplete.docs/progress-tracker.md to record the Learn video slice and the clean flutter build apk verification required for routing/plugin-backed changes.pubspec.yaml to add a direct path_provider dependency so Learn note downloads can save into app documents storage through a stable, explicit plugin dependency.lib/features/learn/data/datasources/learn_remote_data_source.dart, lib/features/learn/data/repositories/learn_repository_impl.dart, lib/features/learn/domain/repositories/learn_repository.dart, lib/features/learn/presentation/providers/learn_providers.dart, and lib/features/learn/presentation/screens/course_detail_screen.dart to resolve notesDownload, save notes locally, log the saved path, and surface download status in the Notes tab.docs/user-guide/11-api-flows.md and docs/progress-tracker.md to record the completed notes download behavior and mark Phase 3 Learn complete after clean verification.lib/core/router/app_router.dart to replace the Practice placeholder route with the real PracticeHubScreen so Phase 4 now starts from a live data screen instead of a static hero header.lib/l10n/app_en.arb, lib/l10n/app_ml.arb, docs/user-guide/11-api-flows.md, and docs/progress-tracker.md to add Practice hub copy, API notes, and tracker status for the first Phase 4 slice.lib/core/router/routes.dart, lib/core/router/app_router.dart, and lib/features/practice/presentation/screens/practice_hub_screen.dart so upcoming-exam cards now open a full-screen secure exam route outside the shell.lib/features/practice/data/datasources/practice_remote_data_source.dart, lib/features/practice/data/repositories/practice_repository_impl.dart, lib/features/practice/domain/repositories/practice_repository.dart, lib/features/practice/presentation/providers/practice_providers.dart, docs/user-guide/11-api-flows.md, and docs/progress-tracker.md to support examStart, examAnswerSave, and examSubmit plus the new exam-taking status tracking.lib/l10n/app_en.arb and lib/l10n/app_ml.arb to add localized copy for the secure exam timer, submission confirmation, answer-saving status, and submitted state.lib/core/router/app_router.dart, lib/features/practice/presentation/screens/exam_attempt_screen.dart, and lib/features/practice/presentation/screens/exam_report_screen.dart so submitted exams now redirect into a dedicated full-screen report route instead of stopping at a placeholder submitted state.lib/features/practice/data/datasources/practice_remote_data_source.dart, lib/features/practice/data/repositories/practice_repository_impl.dart, lib/features/practice/domain/repositories/practice_repository.dart, test/features/practice/data/practice_repository_impl_test.dart, and docs/user-guide/11-api-flows.md to aggregate and verify examResults, examReview, and examAnalytics for the report flow.lib/l10n/app_en.arb, lib/l10n/app_ml.arb, and docs/progress-tracker.md to reflect the finished Phase 4 exam report UI, localized labels, and tracker status after clean flutter gen-l10n, flutter analyze, and flutter build apk verification.lib/features/learn/presentation/screens/learn_screen.dart, lib/features/learn/presentation/screens/course_detail_screen.dart, lib/core/theme/app_typography.dart, and lib/core/theme/app_spacing.dart to fix the current release build break caused by malformed core/widgets import paths and missing shared UI tokens (AppText.eyebrow, AppText.numMedium, Shadows.raised) used by Learn and Practice screens.lib/core/router/routes.dart, lib/core/router/app_router.dart, lib/features/practice/presentation/screens/practice_hub_screen.dart, lib/features/practice/presentation/providers/practice_providers.dart, and docs/progress-tracker.md so the Daily challenge CTA now opens a dedicated non-exam practice result route and marks Phase 4 complete.lib/features/practice/data/datasources/practice_remote_data_source.dart, lib/features/practice/data/repositories/practice_repository_impl.dart, lib/features/practice/domain/repositories/practice_repository.dart, docs/user-guide/11-api-flows.md, and test/features/practice/data/practice_repository_impl_test.dart to support practiceSubmit result parsing and verification.lib/l10n/app_en.arb, lib/l10n/app_ml.arb, and test/features/practice/presentation/practice_hub_screen_test.dart to add localized Daily challenge/result-route copy and navigation coverage for the final Phase 4 slice.lib/app.dart, lib/core/router/app_router.dart, lib/core/network/dio_client.dart, lib/core/network/interceptors/auth_interceptor.dart, lib/features/home/presentation/controllers/home_dashboard_controller.dart, lib/features/learn/presentation/controllers/learn_dashboard_controller.dart, lib/features/practice/presentation/controllers/practice_hub_controller.dart, lib/l10n/app_en.arb, lib/l10n/app_ml.arb, and docs/progress-tracker.md to expose a floating dev-only API debug console and instrument the runtime paths most likely to cause the current auto-refresh issue.docs/project-rules.md to require maintaining docs/progress-tracker.md at the end of each implementation chat.docs/project-memory.md to store the progress-tracker workflow as part of stable project operating context.pubspec.yaml, analysis_options.yaml, lib/main.dart, and test/widget_test.dart to support the new Phase 0 foundation shell and stricter project baseline.pubspec.yaml and lib/core/theme/app_typography.dart to switch typography to bundled fonts and remove the google_fonts dependency.lib/bootstrap.dart and lib/core/config/app_env.dart to support optional RASP initialization via freerasp at startup.android/app/build.gradle.kts to raise minSdk to 23 for freeRASP compatibility.lib/app.dart to apply ScreenGuard at the app level to support inactive-state obscuring.lib/features/shell/presentation/screens/home_shell.dart to use Routes constants and to prevent switch fall-through during tab navigation.config/*.example.json, lib/core/config/app_env.dart, and lib/bootstrap.dart to support build-time flags for optional Firebase init and RASP configuration.lib/core/network/interceptors/auth_interceptor.dart, lib/core/network/dio_client.dart, and lib/core/providers.dart to add a one-time 401 refresh-and-retry flow using a separate refresh Dio client.lib/core/auth/auth_token_store.dart and lib/core/storage/secure_storage.dart to support token persistence and token-only wipe without deleting device_uid.lib/core/router/routes.dart and lib/core/router/app_router.dart to introduce /login and add an auth redirect guard.pubspec.yaml to add package_info_plus for app version reporting in auth payloads.lib/features/auth/presentation/controllers/auth_controller.dart and lib/features/auth/presentation/screens/login_screen.dart to support OTP resend countdown and localized resend copy.lib/features/profile/presentation/screens/profile_placeholder_screen.dart to provide a temporary logout action during Phase 1 development.lib/core/router/app_router.dart, lib/core/router/routes.dart, and lib/features/auth/presentation/controllers/auth_controller.dart to add a /splash route and delay auth redirects until token load completes.lib/features/auth/data/datasources/auth_remote_data_source.dart, lib/features/auth/data/repositories/auth_repository_impl.dart, and lib/features/auth/presentation/controllers/auth_controller.dart to optionally propagate otp_token through the OTP login flow.lib/features/auth/presentation/controllers/auth_controller.dart, lib/features/auth/presentation/screens/login_screen.dart, and ARB strings to improve login gating and OTP change-number behavior.lib/features/auth/presentation/screens/login_screen.dart to enforce digit-only 10-digit phone input and disable Send OTP until input is valid to reduce invalid OTP requests.lib/core/network/interceptors/auth_interceptor.dart, lib/core/network/dio_client.dart, lib/core/providers.dart, and lib/features/auth/presentation/screens/login_screen.dart to surface forced logout reasons via a one-time snackbar message on login.lib/features/auth/presentation/screens/login_screen.dart and test/features/auth/presentation/login_screen_test.dart to ensure forced-logout snackbar events are consistently consumed and covered for both session-expired and device-unlinked cases.lib/features/auth/presentation/screens/login_screen.dart to show inline validation errors for phone, OTP, and missing credentials.lib/core/config/app_env.dart, lib/features/auth/presentation/controllers/auth_controller.dart, lib/features/auth/presentation/screens/login_screen.dart, config/*.example.json, and docs/flavors.md to add a dev-only auth bypass controlled by DEV_AUTH_BYPASS_ENABLED for non-production UI testing.lib/features/auth/presentation/controllers/auth_controller.dart and lib/features/auth/presentation/screens/login_screen.dart to replace auth-mode switch expressions with compile-safe branching for release builds.lib/features/auth/presentation/controllers/auth_controller.dart, lib/features/home/presentation/controllers/home_dashboard_controller.dart, lib/core/auth/auth_logout_event.dart, and pubspec.yaml to use explicit state_notifier imports/dependency after the Riverpod dependency refresh changed legacy notifier behavior.pubspec.yaml, lib/features/auth/presentation/screens/login_screen.dart, lib/features/auth/presentation/screens/device_removed_screen.dart, and lib/features/home/presentation/screens/home_dashboard_screen.dart to pin Riverpod back to the compatible 2.x line and clean stricter compile issues introduced by the dependency refresh.lib/core/router/app_router.dart and lib/core/router/routes.dart to route the DEVICE_REMOVED case to /device-removed instead of the standard login screen.lib/features/profile/presentation/screens/profile_placeholder_screen.dart and ARB strings to add a logout confirmation dialog.lib/features/auth/presentation/controllers/auth_controller.dart to treat logout as best-effort and avoid surfacing logout API failures as blocking UI errors.docs/progress-tracker.md to mark Phase 0 as completed and record the latest implementation status.lib/core/router/app_router.dart to replace the Home placeholder route with the Phase 2 HomeDashboardScreen.lib/l10n/app_en.arb and lib/l10n/app_ml.arb to add Home dashboard strings (greeting, sections, tiles, and timetable labels).docs/user-guide/11-api-flows.md to document Phase 2 Home endpoints and QA checks for dashboard/profile/timetable/banners.docs/progress-tracker.md to mark Phase 2 Home as in progress and record the latest session update.lib/features/home/data/datasources/home_remote_data_source.dart and lib/features/home/data/repositories/home_repository_impl.dart to better tolerate nested Home API payload shapes and sort timetable entries by start time before rendering.test/features/home/data/home_repository_impl_test.dart and test/features/home/presentation/home_dashboard_screen_test.dart to cover timetable sorting, empty-state rendering, and Home tile navigation.lib/features/home/presentation/screens/home_dashboard_screen.dart, docs/user-guide/11-api-flows.md, and docs/progress-tracker.md to make the continue-learning card payload-driven and document the new dashboard response expectation.test/features/home/presentation/home_dashboard_screen_test.dart and docs/progress-tracker.md to cover continue-learning fallback copy and record the expanded controller/widget verification scope.lib/features/home/presentation/screens/home_dashboard_screen.dart, test/features/home/presentation/home_dashboard_screen_test.dart, and docs/progress-tracker.md so the Home promotions area renders multiple banners instead of only the first item.lib/core/router/routes.dart, lib/core/router/app_router.dart, lib/features/profile/presentation/screens/attendance_placeholder_screen.dart, and lib/features/home/presentation/screens/home_dashboard_screen.dart so the Home attendance tile navigates to its own route instead of redirecting to Profile.lib/features/notifications/presentation/screens/notifications_placeholder_screen.dart so the Home notification bell can open a dedicated placeholder route before Phase 6 is implemented.lib/core/router/routes.dart, lib/core/router/app_router.dart, lib/features/home/presentation/screens/home_dashboard_screen.dart, and test/features/home/presentation/home_dashboard_screen_test.dart so the Home top bar actions navigate correctly to notifications and profile..gitignore to ignore local config and secret-bearing files (config JSON, Firebase plist/json, keystores).lib/features/home/presentation/screens/home_dashboard_screen.dart, lib/features/auth/presentation/screens/login_screen.dart, and lib/features/auth/presentation/screens/device_removed_screen.dart to finish release-compile cleanup by restoring the HomeDashboardStatus import, forcing non-null localization access where required, and removing unsupported ref.listen(..., fireImmediately: true) usage.docs/progress-tracker.md and CHANGELOG.md to record that flutter analyze and flutter build apk --release now pass after the compile cleanup, while the Built-in Kotlin plugin notices remain upstream plugin warnings rather than the active build blocker.lib/features/home/presentation/screens/home_dashboard_screen.dart to fix the remaining nullable AppLocalizations.of(context) usage in _ContinueLearningCard, which was still breaking local APK builds on resumeLearning and homeContinueLearningHint.docs/project-rules.md to require non-null localized string access patterns in presentation widgets and to require a real APK build after build-impacting fixes before the work is treated as complete.docs/project-rules.md to require validating native package repositories whenever a Flutter plugin wraps an external Android/iOS SDK.pubspec.yaml, lib/core/security/rasp_guard.dart, and lib/core/security/screen_guard.dart to isolate freerasp from the build after its Android dependency chain failed on JitPack-hosted artifacts (fingerprint-android, truetime-android) with HTTP 403 responses.docs/project-rules.md to require optional native SDKs to be wrapped behind local adapters so upstream plugin or artifact repository failures cannot block app builds again.freerasp is no longer present in pubspec.lock or .flutter-plugins-dependencies; a clean flutter clean, flutter pub get, and flutter build apk pass against the current repo state.android/app/build.gradle.kts to enable core library desugaring and add desugar_jdk_libs, fixing the :app:checkReleaseAarMetadata failure caused by flutter_local_notifications.docs/project-rules.md to require desugaring verification whenever Android plugins depend on Java 8+ APIs.docs/project-rules.md to require pinning wildcard native Android dependencies declared by Flutter plugins before considering the integration stable.pubspec.yaml, android/app/build.gradle.kts, and android/build.gradle.kts to remove razorpay_flutter and the related Android repository/artifact workarounds because the app does not need Razorpay for Middle East deployment.docs/project-rules.md to require payment SDK selection only after region and gateway confirmation, avoiding unused regional payment providers in the app.lib/core/config/app_env.dart, lib/features/auth/presentation/controllers/auth_controller.dart, and lib/core/router/app_router.dart to auto-skip login in development builds by default and bootstrap a local preview session before routing into the app shell.config/dev.example.json and docs/flavors.md so development builds now default to auth bypass and can still opt back into real-login testing when needed.lib/core/config/app_env.dart to repair a malformed bool.fromEnvironment block introduced during the temporary dev-auth bypass change, restoring successful analyze/build verification.docs/progress-tracker.md to mark Home Dashboard and Home tests as completed after local Home test execution and analyzer verification, closing Phase 2 implementation work.docs/project-rules.md to require consulting the new build-issue prevention note before dependency, Android build, auth/router/env, localization-nullability, or plugin-integration changes.Protections added to safeguard student data and the in-app experience.
lib/core/security/screen_guard.dart (powered by freerasp when enabled).