# Release Notes

**PHP User Registration** — https://rskworld.in  
**Developer:** Molla Samser | RSK World  
**Contact:** help@rskworld.in | +91 93305 39277  
© 2026 RSK World. Licensed under [LICENSE.md](LICENSE.md) (MIT).

---

## [1.1.1] – 2026

### Fixed

- **Contact form**: "Unable to send message" when the `contact_messages` table was missing. The app now creates the table automatically on first contact submission when it does not exist.

---

## [1.1.0] – 2026

### Added

- **Failed login tracking** — Every failed login is recorded (email, IP, time). Admins can view the list under **Admin → Failed Logins**.
- **Admin activity log** — Role changes, suspend/unsuspend, and verify actions are logged. View under **Admin → Activity Log**.
- **Sortable users list** — In **Admin → Users**, column headers (ID, Name, Email, Joined, Last Login) are clickable to sort ascending/descending.
- **Profile avatar** — Users can upload a profile picture (JPG, PNG, GIF, or WebP, max 2 MB) and remove it. The avatar is shown on the dashboard and in the admin users table.
- **Migration** — `sql/migrate-add-new-features.sql` adds `failed_login_attempts`, `admin_activity_log`, and the `users.avatar_path` column.

### Upgrade from 1.0.x

1. Run the new migration (optional if you want manual control):
   ```bash
   mysql -u root -p your_database < sql/migrate-add-new-features.sql
   ```
2. If you skip the migration, the app will create the new tables and the avatar column when they are first used.
3. Ensure the web server can create and write to `uploads/avatars/` for profile pictures.

---

## [1.0.0] – 2026

### Initial release

- **Registration & auth** — Sign up, email verification (24h link), resend verification, login with “Remember me”, logout.
- **Password** — Forgot password and reset via email (1h link). Change password and password strength indicator on profile.
- **Profile** — Update name, change password, delete account.
- **Dashboard** — Last login time and IP; links to profile and (for admins) admin panel.
- **Admin area** — Dashboard with counts; users list (search, filter by verified, pagination, export CSV); set user role (user, moderator, admin, superadmin); suspend/unsuspend; mark verified; contact messages (search, pagination, delete, export CSV).
- **Roles** — user, moderator, admin, superadmin. See `config/roles.php` and `sql/migrate-add-roles.sql`.
- **Demo accounts** — Demo user, demo admin, and demo super admin (credentials on home and login).
- **Pages** — Terms of Service, Privacy Policy, Contact form, custom 404.
- **Docs** — README, LICENSE (MIT), CONTRIBUTING, CHANGELOG, CODE_OF_CONDUCT, SECURITY.

### Requirements

- PHP 7.4+ (8.x recommended)
- MySQL 5.7+ or MariaDB
- Web server (e.g. Apache/Laragon) with PHP

---

For a compact change history, see [CHANGELOG.md](CHANGELOG.md).
