- Add StudentCsvEnrollmentModal for bulk-adding multiple enrollment
records across school years for one specific student via CSV input
- CSV format: School Year, Grade Level, Section, Track/Strand
- Features: editable monospace text area, Fill Example, Copy Template,
file upload (.csv/.txt), and live backend progression verification
- Show row-by-row verification results with valid/error status chips
and actionable error messages (section suggestions, available years)
- Admin-only: hidden from teacher role via _isTeacher guard
- Wire Bulk Enroll (CSV) button in edit_student_modal.dart to
StudentCsvEnrollmentModal passing studentId, studentName, studentLrn
- Add Bulk CSV shortcut button in edit_enrollment_modal.dart Current
Enrollments header for admins
- Backend: POST /api/students/:id/verify-enrollments for live per-row
progression and section existence validation
- Backend: POST /api/students/:id/bulk-enrollments for transactional
batch enrollment creation with activity logging and socket events
- Add verifyStudentEnrollments and bulkAddStudentEnrollments repository
methods in student_repository.dart
- Prevent RenderFlex bottom overflow in yearly comparison chart with dynamic height clamping
- Harmonize Missing Documents, Grade Compliance, Status Donut, and Yearly Comparison cards to 480px on desktop
- Optimize logo assets to webp across login, splash, and layout navbars
- Enable resource shrinking and minification in Android release build
- Remove obsolete frontend Excel templates from assets and pubspec
- Hide school year and status filters in student filter dialog on Enrolled tab\n- Remove 'Enrolled' status filter option on All Students tab\n- Sync studentViewTabProvider and studentActiveFilterCountProvider across desktop and mobile layouts
- Fix Android PDF and report export permission denied by adding adaptive storage permission handling (MANAGE_EXTERNAL_STORAGE on Android 11+ and legacy storage on Android 10) and multi-tier fallback to app-specific external storage in DownloadService\n- Update DepEd Transparency Board PDF export and reports export to use DownloadService.saveBytes()\n- Make Settings screen About, Support, and System Information responsive across screen widths\n- Update Student and User screen top headers to segmented tabs design and tighten mobile drawer edge touch area
- Purge heavy and unused packages (syncfusion_flutter_pdfviewer, excel, sheetifye, cupertino_icons, image_picker, lottie, flutter_holo_date_picker, flutter_speed_dial)
- Delegate PDF and spreadsheet preview to system default viewers via open_filex
- Replace excel report generation with pure Dart UTF-8 BOM CSV generator
- Configure NDK debug symbol stripping in build.gradle.kts
- Align Students screen Enrolled/All Students tab switcher with Archives segmented tab design
- Update screen, settings card, and dashboard titles to 'Academic & Class Management'
- Clean and balance Academic Structure toolbar for mobile and desktop
- Remove redundant buttons on section cards in favor of interactive adviser chip
- Modernize teacher action button to OutlinedButton.icon 'Sections'
- Add responsive bulk academic structure import support across backend and frontend
- Reports: Migrate DepEd Transparency Board PDF export to backend Puppeteer service with enlarged layout and per-section downloads
- Settings: Replace dynamic grace period days input with cutoff date picker and calculated days preview; separate schedule date pickers
- Documents: Default requirements section to collapsed/closed state in upload OCR modal with pulsing border container
- Fix contrast on Auto-Graduation trigger button and ensure desktop responsiveness across report buttons
- Add email deliverability verification (MEV) to forgot password flow (lookupResetOptions & sendEmailOtp)
- Validate recipient email format and verify deliverability before sending reset password link in user management
- Convert all backdrops, group photos, and solo avatars to WebP format, drastically reducing asset footprint from >60MB to ~4.6MB
- Add auto-advancing slide preview carousel with 2s cooldown, navigation buttons, and wrapping to Capstone Members screen
- Update Capstone member emails and add individual solo avatar photos
- Split Android release into TIS_RMS_32bit, TIS_RMS_64, and TIS_RMS_Universal APKs in GitHub Actions and INSTALL.md
- Prioritize universal APK in AppUpdateService and update fallback labels
- Refactor settings academic collapse to 'Academic & Graduation' with automatic active school year card and relocated grace period
- Fix persistent loading indicators on student edit/add modals and list background
- Fix DepEd Transparency Board PDF report subheader layout to prevent title and period collision
- Update AGENTS.md backlog with document scanner and PDF processing items
- Fix 1px bottom overflow on Overall Compliance KPI card by adjusting height and padding
- Fix text truncation for Pending Docs KPI card
- Fix 49px bottom overflow on Students Per Year card by adjusting container and chart heights
- Fix LayoutBuilder inside IntrinsicHeight issue on desktop report charts
- Refine security settings, audit trail platform tracking, and document handling
- Clean up unused conversion providers and LibreOffice service
Settings - Delete Account -> Self Deactivate:
- backend: add POST /api/auth/self-deactivate (immediate, no email link)
Guards against last-admin and hidden super-admin. Revokes FCM tokens,
sends notification email, logs activity
- auth.js route: add /self-deactivate route
- auth_repository.dart: add requestSelfDeactivation()
- auth_provider.dart: add requestSelfDeactivation() (calls logout() after)
- settings_screen.dart: 2-step _handleDeactivateAccount: Step 1 confirm,
Step 2 type DEACTIVATE. Danger zone card updated to deactivation theme
Report screen - compliance filter button label overflow:
- Wrap label Text in Flexible to ellipsize instead of clip
Settings - Edit Schedule Dates modal button overflow:
- Column layout on narrow screens so buttons are never squished
Document screen - Open With not working on Windows:
- Use openwith.exe (Windows 8+) with fallback to rundll32 OpenAs_RunDLL
Windows sidebar - Archive tab:
- Move Archives from ACCOUNT group to OVERVIEW group
- Fix audit trail AppPagination infinite width layout crash on Windows and Android
- Fix Android audit trail header 41px horizontal overflow with responsive layout
- Add missing user and history table joins to dashboard and user activity count queries
- Implement StyledFolderIcon matching modern tabbed folder design with internal JHS/SHS chips
- Align bulk operations bar margin to match list and grid widget containers
- Make student screen Add Student button elevated with emerald gradient and shadow
- Move edit student modal close button from leading to actions bar
- Polish Edit Details and Edit Enrollment actions in student profile modal
- Remove recent activities and user history from dashboard; relocate to dedicated History tab
- Fix Document Breakdown overflow and rebalance Bento KPI grid layout
- Fix Android overflow on student profile Edit Details button
- Simplify grid view cards in documents and archives screens with minimal folder styling
- Fix transparency board filter contrast and export button styling in reports
- Default auto-update enrollment to off, add grace period input, and fix settings danger zone
- Exclude hidden super administrator from dashboard active users count
- Rename UPDATE PASSWORD button to UPDATE in change password modal
- Use single-word labels and uniform dimensions for user profile action buttons
- Add separate Edit Details and Edit Enrollment buttons in student profile modal
- Change delete button to Inactive in student profile modal
- Remove Inactive status from edit student modal dropdown
- Remove Set Inactive action from student multi-select bar and context menu
- Require long-press to activate multi-select on mobile student avatar
- Add clean tab switcher and collapsible info boxes to DepEd Transparency Board
- Fix requirements strip to use missingRequirementsProvider (per-student) instead
of global documentRequirementsProvider, so Completed/Archived/Needed states
are accurately reflected for each student
- Fix dropdown 'Select Document Type' status labels (was always [Completed]);
now correctly shows [Needed], [Archived], or [Completed] using ID-based lookup
from missingRequirementsProvider
- Add collapsible/expandable requirements strip with AnimatedCrossFade and
chevron toggle; shows mandatory-needed badge count in collapsed header
- Split needed chips into Mandatory (red) and Optional (orange) sections;
add Archived (blueGrey) section distinct from Completed (green)
- Add JHS/SHS category tag on each chip (muted grey badge)
- Simplify chip styling to neutral background/border; color only on status icon
- Remove tap-to-assign chip interaction; chips are now display-only
- Clean up unused _isRequirementMissing, _isRequirementArchived, and
_assignRequirementToEntry methods
- Update AGENTS.md: move completed Document Screen tasks into commented section