# Skulitech Blank-Screen and Student Profile Tabs Fix

Release date: 31 July 2026

## Problems corrected

1. Marks Entry, Marksheet, and Enrollment Report rendered CSS before authentication and PHP session startup. On cPanel this could prevent the existing session from being restored, fail redirects/headers, and leave an apparently blank page.
2. Student links from the dashboard opened the profile search list (`q=`) instead of a selected student profile (`admission_no=`), so the Fee Records, Statement, Transcripts, Disciplinary, and Clearance tabs did not appear.
3. The Exam Results page existed but was missing from the Examinations sidebar menu.
4. Several profile data sources could throw an uncaught database exception when a related optional/upgrade table was absent.
5. Production PHP failures had no safe browser fallback, so hosting configurations with `display_errors=Off` showed an empty page.

## Changes

- Moved all CSS/HTML after authentication/session bootstrap on the three affected pages.
- Added a production-safe runtime failure page with a reference code and server-side logging.
- Added `storage/logs/application.log` support with web access blocked by `.htaccess`.
- Made common dropdown queries schema-safe instead of allowing an uncaught PDO exception.
- Hardened Exam Results class-catalogue loading and added a visible database-upgrade warning.
- Added **Exam Results** to the Examinations menu.
- Dashboard student links now open the selected student's detailed profile.
- A profile search returning one student automatically opens the detailed tabbed profile.
- Student names and the **Full Profile & Tabs** button open the tabbed record directly.
- Added a student **My Profile Records** menu item.
- Made profile tabs horizontally scrollable on small screens.
- Made Fee Records, Billings, Marks, Disciplinary, Clearance, and ILO snapshots degrade safely when an optional table is unavailable.

## Database

No database import is required for this code-only fix. Existing `config/local.php` must not be replaced.

## Deployment

1. Back up the application files and database.
2. Upload the update-only ZIP into the existing Skulitech application root.
3. Extract and overwrite the matching files.
4. Keep the current `config/local.php` unchanged.
5. Clear the browser cache or use a private tab.
6. Test Marks Entry, Marksheet, Exam Results, Enrollment Report, and a selected Student Profile.
