Portal Loading & Usability Follow-up
- Admin Theme Loading: The Admin page now loads only the saved theme on first paint, removing the duplicate Classic stylesheet and eager downloads of unused themes. Alternate themes are prefetched only when the theme menu is opened, and prefetching is skipped on data-saving or slow mobile connections.
- Dashboard Query Reduction: Staff and Student dashboards now reuse the birthday count between the notification menu and sidebar. Mailbox headers and sidebars reuse a single unread count for each rendered area instead of repeating the same query multiple times.
- Dashboard Accessibility: Improved keyboard focus visibility and reduced-motion handling. Short pages now fill the viewport without the previous fixed 1,200-pixel minimum height.
Full Portal UI, Theme Stability & WhatsApp Blaster
- Theme Stability: The selected admin theme loads without depending on remote Google Fonts. Follow-up work now serves the saved theme on first paint and delays alternate-theme downloads until the theme menu is opened.
- Portal-Wide UI Polish: Refined shared admin navigation, cards, forms, tables, alerts, login and registration screens, and responsive layouts across Admin, Staff, Student, and Parent portals, preserving each portal's existing theme colors and workflows.
- Staff, Student & Parent Dashboards: Added consistent spacing and visual treatment for headers, navigation, cards, tables, forms, messages, and mobile dashboard layouts across the three signed-in portals.
- WhatsApp Result Blaster: Added a guided create, generate, review, and send workflow; CSV number-import template and preview; searchable/printable missing-contact list; per-job PDF regeneration and resend; bulk regeneration and failed-job retry; plus responsive dialogs, status summaries, and delivery history.
- Recipient Phone Visibility: Blast rows now fall back to the current WhatsApp number in student contact records when the saved blast snapshot is empty. Admins can open a number in WhatsApp for a manual check before sending.
- Result Message Greeting: Added a Nigeria-time greeting template variable (“Good Morning”, “Good Afternoon”, or “Good Evening”) for approved WhatsApp result templates. When Meta confirms that an upgraded template expects one extra parameter, the sender retries once with the greeting before reporting failure, preserving existing three-variable templates.
- Blast PDF Rebuild: Added a per-blast Rebuild PDFs action to the recent WhatsApp blasts list. It regenerates unsent jobs while keeping already-sent messages unchanged, so one class batch can be refreshed without clearing other classes.
- Rebuild Feedback & Locking: Rebuild now starts on the first click without an extra confirmation step, keeps the batch action locked until generation finishes, and reports empty or failed rebuilds clearly.
- Live PDF Build Progress: Added per-blast PDF progress bars and live ready, pending, and in-progress counts. PDF builds now advance in batches of up to 10 so the history list updates while documents are being generated; sent students count as already generated.
- WhatsApp Blast Batch Size: PDF generation and message sending now process up to 10 students per request, within the server endpoint limits, reducing request overhead for larger class blasts.
- Result PDF Batch Size: PDF generation now processes at most five students per request across the admin screen, API, and background workers. WhatsApp sending keeps its existing batch size.
- Create-Only WhatsApp Blasts: Creating a blast queues recipients without generating PDFs or sending messages. Background PDF work begins only after an admin starts generation; WhatsApp delivery remains a separate class or individual action.
- Historical Result Blasts: Graduates with result records in the selected academic year can now be included in class blasts. The create dialog also reads server errors correctly with the portal's older jQuery version, so an ineligible class no longer appears as a generic connection failure.
- Blast Recipient List: Opening a saved blast now explicitly loads that batch, ignores late responses from previously selected batches, reports load failures with a retry action, and paginates recipient lists in groups of 50 for large classes.
- WhatsApp Result Eligibility: Blast counts, recipient queues, and missing-number lists now require a subject score row matching the selected student, session, term, class, and class arm. Report-card placeholders with mismatched score records are excluded before PDF generation.
- Blast Details Dialog: The Open action now shows the batch summary and searchable student list in a wide dialog. Fixed a JavaScript error that left the list stuck on its loading message; display and request failures now show a retry action.
- Blast Creation Feedback: The creation dialog now shows eligibility checks, recipient counts, elapsed time, class-by-class progress, detailed failures, safe retry after a stalled request, and a direct link to the completed batch. Recipient queueing uses batched database inserts; history refreshes avoid repeated counter writes; blast requests no longer run unnecessary table alterations.
- Result Blast Delivery Safety: The automatic worker now prepares PDFs only; sending requires an explicit admin action or a targeted send worker command. Individual sends claim jobs before contacting WhatsApp to prevent overlapping requests, and batch operations remain tied to the selected blast even if an admin opens another class. Processing batches return compact summaries instead of repeatedly transferring the entire recipient list.
- Result PDF Protection: Generated PDFs now receive unique filenames and are saved only after the full file is written. Regeneration preserves the old PDF until replacement succeeds, shared files are not removed while referenced, and Apache direct access to the result PDF directory is blocked in favor of authenticated downloads.
- Admin Table Search: Standardized admin DataTables search fields to a responsive 220px width and 32px height, with a “Search records…” placeholder across Users, Staff, Parents, and other admin lists.
- Admin Staff and Parent Profile Editing: Standardized field widths and heights across the staff basic, contact, next-of-kin, bank, and school-profile dialogs, with clear input prompts. The parent admin profile editor also uses consistent field sizing and input prompts in a responsive two-column layout.
- Parent Child Link Management: Added a confirmed Remove Link action to the parent profile edit page. It removes only the selected parent-child relationship and preserves the student's account and school records.
Configuration Center UI Refresh
- Configuration Cards: Replaced the dense settings-button grid with responsive setting cards that explain each area and provide a clear Open Settings action. Existing configuration panels and modal navigation remain unchanged.
- Payment Access: Corrected the legacy payment module's role check so authorized administrators, principals, vice principals, and bursars can access it.
- Receipt Confirmation: Unconfirmed school-fee receipts no longer reduce the amount due; balances and payment status now reflect confirmed receipts only.
- Manual Payment Validation: The School Fees Manager now validates payment amounts and confirms the student is enrolled in the selected grade and current session/term before recording payment.
Configurable Grade Progression & Session Rollover
- Flexible Grade Order: Schools can set an explicit grade order and next-grade destination, so adding a missed grade later no longer shifts students based on database IDs.
- Rollover Preview: Session switching now previews promotions, repeaters and graduates by grade, and blocks switching when a destination is missing or invalid.
- Optional Arm Retention: Arms/classrooms continue to reset by default during rollover. Administrators can opt in to retaining each student's current arm when that matches the school's policy.
Result Pin Batch History & Export
- Result Pin Batches: Admins can browse generated result checker pins grouped by description, review the full batch, export it as an Excel-compatible CSV, or print/save it as PDF from the browser.
- Unified Logo: Introduced a school-neutral open-book and learning-star logo shared by the mobile app and website, with contrasting transparent wordmarks for light and dark backgrounds.
- Mobile Branding: Updated the mobile app icon and splash screen to use the shared School Portal identity. Adjusted the Android adaptive-icon safe area so the full book-and-star mark remains visible on system splash screens.
- Mobile Result Position: Added the class position to parent and student mobile result screens when the school has enabled result-position display.
- Parent Results Loading: The parent app now loads children and result-period filters first, and fetches detailed result data only after a parent taps View Result.
CBT Multi-Select & Private School-Code Connection
- CBT Multi-Select: Staff and administrators can create “select all that apply” questions. Students can select multiple answers on web and mobile, with exact-set grading and offline answer sync.
- Mobile School Connection: The mobile app now connects by a school-issued code instead of showing a searchable school directory. Add a unique
codeto each school object in the mobile registry JSON; the selected school configuration is saved on the device until the user changes school or clears app data.
HISP v5.5: LMS, WhatsApp Result Delivery & Admin Enhancements
- Learning Management System (LMS): A full course and lesson platform is now available across the Admin, Staff, Student and Parent portals. Teachers can create courses tied to a class/subject, add lessons with materials, and build quizzes (single choice, true/false, short answer) with student submissions tracked per course.
- WhatsApp Result Delivery: Schools can now send student result PDFs directly to parents on WhatsApp. Admins import parents' WhatsApp numbers, select a session/term/class, generate the result PDFs, review them, and send in one guided workflow with per-student delivery status and history. Requires the school's own WhatsApp Business API credentials to be configured under School App settings.
- Grading Configuration: Replaced the browser-native cognitive-domain removal prompt with a Bootstrap confirmation modal and prevented rows from disappearing before confirmation.
- Result View, Print & WhatsApp PDFs: Matched the standalone result view and generated documents to the browser layout by placing Cognitive Ratings on the left and Result Summary on the right, while keeping the summary full-width when ratings are disabled.
- Student Documents: New module for uploading and managing per-student documents (PDF or Word) from both the Admin panel and Staff dashboard, with optional session/term tagging. The document category label is fully customizable per school (e.g. can be renamed to "Report Sheets", "Certificates", or any label a school prefers).
- CBT Bulk Question Import: Staff can now import exam questions in bulk from a spreadsheet directly into the CBT question bank, instead of adding questions one at a time.
- Principal Auto-Comments: Admins can configure automatic report-card remarks that get applied based on a student's score range, reducing manual comment entry.
- Activity Log Viewer: New admin screen for reviewing a filterable audit trail of admin actions (by username, context, and level) across the portal.
- Configurable Cognitive Domains: Schools are no longer limited to 4 cognitive domain ratings (Punctuality, Neatness, etc.) on the result sheet. Admins can now add, label, and remove as many domains as their school needs directly from Grading Configuration, with existing historical ratings fully preserved.
Security Hardening: API & Update Packager
- API Security: Mobile API JWT signing now supports deployment-specific secrets and rejects malformed or incomplete tokens.
- CORS: API browser access now uses an explicit origin allowlist instead of allowing every origin by default.
- Update Packager: Removed the hardcoded package password and stopped exposing it in generated download links. The packager now uses a server environment secret and a session grant.
- Security Headers: Added defensive API response headers and no-store download caching.
HISP v5.4: Mobile App API, Grades & System Enhancements
- Mobile App API: Mobile App API now fully included. Application is ready for deployment.
- Grades Definition: Grades definition has been moved to the Admin UI, including configuration for number of CA, comments and grading structure.
- Principal Signature: Principal and Headmaster signature fields have been added to the Admin UI.
- Grade Comments: Principal comments for each score grade are now configurable directly from the UI.
- Student Panel Parent Assignment: Added the ability to create and assign parents directly from the Students panel using the Assign Now button.
- System Stability: Portal stabilized with multiple bug fixes (approximately 8 issues resolved).
HISP v5.3: School Fees, CBT & System Improvements
- System Stability: General system stability improvements across Fees, Results, Attendance, Wallet and Profiles.
- School Fees Upgrade: Partial payment of school fees added to the student portal. Student fees payment page fully redesigned with status banner, summary cards, tabbed wallet/card system and quick-fill amounts (25%, 50%, 75%, Full).
- Card Payments: Pay with Card (Paystack) fully implemented end-to-end for school fees.
- School Fees Manager: New manager introduced for Admins, Principals and Bursars to track unpaid, part payments and completed payments.
- Manual Payments: Added manual recording for school-side payments including cash, bank transfer and POS with full activity logging.
- Receipt Confirmation: Pending school fees receipts can now be confirmed directly from the School Fees Manager.
- Admin Filters: School fees filter toolbar redesigned with grade chips, “All Grades” reset and improved layout.
- CBT Improvements: CBT question management improved across admin and staff panels, including updates to question bank, assignment management and exam engine stability.
- CBT Image Support: Image upload added for CBT questions and images now display properly during exams.
- Results Update: Student result view improved with updated grade calculation logic and proper grading definition handling.
- Report Card Fixes: Fixed duplicate subject display and corrected academic year switching issues.
- Staff Access: Principals (X) and Vice Principals (Xp) can now access the staff portal after promotion.
- Role Permissions: Promoted principals now have full access to results upload, broadsheet, student management, exams and academic tools.
- Bug Fixes: Staff/Admin account conversion login issues resolved and “Add Fee Component” modal fixed.
- Interface Upgrade: Changed the Online Exam Interface to be Grid instead of List. Questions now appear one at a time without having to reload from the database with questions randomized and answered questions visualized in the Sidebar.
- Bug Fix: Exams were auto submitting due to timezone issues. Fixed!
- Bug Fixes: Fixed over 24 Bugs, Improved Stability and Fixed timezone issues around the portal.
- Full Platform Refresh: Introduced protected_core support for sensitive portal logic and deployment-safe stubs. Improved version control and SQL upgrade flow, and cleaned major legacy runtime issues for PHP 8+ compatibility.
- CBT Module Completion: Completed the online exam (CBT) module across admin, staff, and student flows, including exam creation, editing, question management, audience configuration, results handling, and Excel/CSV import support.
- UI & System Improvements: Refreshed admin login page, upgraded dashboard layout, and rebuilt the configuration hub into a cleaner modal-based workspace. Standardized buttons, dropdowns, modals, and tables across the portal.
- Activity Logs: Added richer activity logging for admin and staff actions with detailed payloads. Includes admission actions, result operations, and improved log viewing experience.
- Results & Reports: Strengthened report card and result handling by moving sensitive logic into protected_core. Optimized queries, added database indexes, fixed runtime issues, and improved report generation (FPDF fixes, fonts, deprecated functions).
- CBT Enhancements: Added student CBT marking scheme view after exams are closed and improved report launcher with Bootstrap modal-based flows.
- User & Financial Modules: Improved student and staff management interfaces, added full parent management, introduced Current School Fees menu, and enhanced wallet system with create-and-credit flow for all students.
- Admissions: Refreshed admission management interface with better filters, cards, and applicant listing. Replaced scattered action icons with cleaner dropdown actions.
- Portal Entry & Security: Refreshed login and registration screens across student, parent, and staff portals. Centralized styling, improved mobile responsiveness, and hardened legacy scripts by removing unsafe patterns and improving query handling.
- Fixed admin sign-in behavior when student and staff portal lock states interfered.
- Fixed multiple headers already sent cases in admin question and bank actions.
- Fixed teacher upload, fees loader, report generator, and CBT schema runtime fatals.
- Fixed deprecated dynamic property warnings and several undefined index and property notices.
- Fixed null-fetch and property-on-bool warnings in several admin and result pages.
- Fixed several redirect issues sending users to broken base URLs.
- Admin Portal Bug Fixed (50+)
- Student Portal Bug Fixed (38+)
- Staff Portal Bug Fixed (40+)