v16.3.0

frappe/hrmsv16.3.0Feb 3, 2026by frappe-pr-bot

AI Summary

A major feature release adding new capabilities for Employee Self Service, improving payroll validation, and fixing issues with job openings, bulk assignments, and local development servers.

Key Highlights

  • Employee Self Service users can now view Leave Types
  • Prevents submission of Employee Advance records with incorrect account types
  • Fixes doubled numbering in Job Opening records
  • Fixes Bulk Salary Structure Assignment errors in non-English languages

New Features

  • Employee Self Service users can now view Leave Type records
  • Added validation for Additional Salary recurring entries
  • Loan Repayment column visibility based on Lending app installation
  • Local development servers accept connections from any hostname

Full Release Notes

<!-- Release notes generated using configuration in .github/release.yml at v16.3.0 -->

## What's Changed
* Stops submission of **Employee Advance** records when the chosen _Advance Account_ is not of type Receivable, preventing selection of an incorrect account. (https://github.com/frappe/hrms/pull/4018)
* Employee Self Service users can now view **Leave Type** records, letting them see the available leave categories. (https://github.com/frappe/hrms/pull/4020)
* Hides the username/password fields on the HRMS login page when _Disable Username/Password Login_ is enabled in **System Settings**, so users no longer see a disabled login option. (https://github.com/frappe/hrms/pull/4026)
* Hides the HRMS app for Website Users who have the **Employee** role, preventing their login from redirecting to a forbidden Desk page. (https://github.com/frappe/hrms/pull/4029)
* Uses default salary amounts when calculating **Gratuity**, allowing the payout to be saved without error when a departing employee’s full loan balance is settled. (https://github.com/frappe/hrms/pull/4033)
* Fixes incorrect recalculation of compensatory leave when cancelling a **Compensatory Leave Request**; the related **Leave Allocation** now keeps the correct remaining balance instead of resetting to zero. (https://github.com/frappe/hrms/pull/4031)
* Displays the _Loan Repayment_ column in "Salary Register" only when the Lending app is installed, removing the empty column from systems that do not use lending. (https://github.com/frappe/hrms/pull/4037)
* Bulk attendance marking now skips days on each employee’s assigned holiday lists within the chosen date range when "Exclude Holidays" is selected. It also avoids errors if an employee lacks a holiday list for part of that period. (https://github.com/frappe/hrms/pull/4039)
* Adds validation to **Additional Salary**: recurring entries must include both _From Date_ and _To Date_, and non-recurring entries must include a _Payroll Date_; if any required date is missing, a clear error message now appears. (https://github.com/frappe/hrms/pull/4041)
* Allows the local development servers for the frontend and roster modules to accept connections from any hostname, not just `localhost`, letting you preview the site from other devices on the same network. (https://github.com/frappe/hrms/pull/4058)
* Fixes doubled numbering in **Job Opening** records; new openings now receive the next number instead of skipping one. (https://github.com/frappe/hrms/pull/4060)
* Fixes errors that prevent updating records in **Bulk Salary Structure Assignment** when the system language is set to non-English. (https://github.com/frappe/hrms/pull/4063)


**Full Changelog**: https://github.com/frappe/hrms/compare/v16.2.0...v16.3.0
**Authors**: @DanielRadlAMR, @rohitwaghchaure, @iamkhanraheel, @Akshay-Arijentek, @AarDG10, @elshafei-developer, @nareshkannasln, @sarathibalamurugan, @asmitahase
**Reviewers**: @ruchamahabal, @asmitahase

<details>
<summary>AI content</summary>

 For these release notes, we used an LLM (OpenAI o3) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). 

Changes with the following labels were excluded:
- skip-release-notes

Changes with the following types were excluded:
- docs
 - ci
 - style
 - chore
 - build
 - test
 - refactor

</details>