v16.14.0

frappe/hrmsv16.14.0Jul 21, 2026by frappe-pr-bot

AI Summary

A comprehensive update adding HR analytics features, replacing the 'Create Interview' button with a scheduling dialog, and fixing numerous bugs related to push notifications, leave date handling, and payroll calculations.

Key Highlights

  • Adds anonymous HR tracking and daily attendance summaries in System Settings.
  • Replaces 'Create Interview' with a 'Schedule Interview' dialog for better control.
  • Fixes MariaDB 12.3 errors in leave date checks.
  • Fixes Overtime Slip calculations for employees with relieving dates.
  • Removes lambda expressions from payroll formulas to prevent errors.

New Features

  • Anonymous HR tracking and setup steps
  • Schedule Interview dialog
  • Restricts approver lists to System Users

Full Release Notes

## Features
* Adds **Holiday List Assignment** to the Leave section of the **Employee** Connections tab, so HR users can check the assigned holiday list without leaving the employee record. (https://github.com/frappe/hrms/pull/4938)
* Adds anonymous tracking for HR features and early setup steps on new sites if enabled in **System Settings**. It also records daily attendance summaries and HR page visits, without employee details. (https://github.com/frappe/hrms/pull/4941)
* Replaces the "Create Interview" button on **Job Applicant** with "Schedule Interview", which opens a dialog for _Interview Type_, _Scheduled On_, _From Time_, _To Time_, and _Interviewers_. The interview is created directly from the dialog, and interviewers are filled from the selected interview type when available. (https://github.com/frappe/hrms/pull/4947)
* The _Approver_ field in the **Department** form’s Leave Approvers, Expense Approvers, and Shift Request Approver tables now lists only System Users. (https://github.com/frappe/hrms/pull/4972)

## Bug Fixes
* When push notifications are not configured, the app now skips push notification setup and avoids the related error message. (https://github.com/frappe/hrms/pull/4922)
* Updates leave date checks in **Leave Allocation**, **Leave Application**, **Leave Ledger Entry**, and **Leave Period** to treat _From Date_ and _To Date_ as field names. This avoids MariaDB 12.3 errors when leave dates are checked. (https://github.com/frappe/hrms/pull/4920)
* Cancelled **Shift Assignment** records are marked as Inactive. The Roster view creates a new **Shift Assignment** for the next date range instead of changing the cancelled one. (https://github.com/frappe/hrms/pull/4925)
* Half-yearly earned leave schedules in **Leave Policy Assignment** now use the employee's _Joining Date_ instead of the calendar year. This adjusts the leave dates and amounts for assignments that use _Joining Date_ and avoids extra leave entries. (https://github.com/frappe/hrms/pull/4927)
* **Overtime Slip**s created from **Payroll Entry** now use an employee’s _Relieving Date_ when it is earlier than the payroll entry’s _End Date_. This lets overtime for employees who leave partway through the month be submitted with payroll. (https://github.com/frappe/hrms/pull/4933)
* The image build now passes the list of apps as a secret file, so the published images include the apps selected for that build. (https://github.com/frappe/hrms/pull/4936)
* Makes _Payable Account_ required in **Expense Claim** when the claim is not marked as paid, so the form asks for it before the claim is submitted. (https://github.com/frappe/hrms/pull/4940)
* The check-in button stays unavailable while the last check-in loads, so it does not default to `IN` before the current status is shown. (https://github.com/frappe/hrms/pull/4954)
* Payroll formulas no longer accept `lambda` expressions. (https://github.com/frappe/hrms/pull/4957)
* Disabled users no longer appear in the approver list for **Leave Application**, **Expense Claim**, and **Shift Request**, whether they are assigned directly or through a department. (https://github.com/frappe/hrms/pull/4962)
* The **Employee** timeline now excludes cancelled **Attendance** records, so they no longer affect the timeline count. (https://github.com/frappe/hrms/pull/4973)
* The "Vehicle Expenses" report now uses only submitted **Vehicle Log** records when totaling service expenses. Cancelled logs no longer add to the reported amount. (https://github.com/frappe/hrms/pull/4976)
* Skips cancelled **Leave Allocation** records during the expiration process, leaving them unchanged instead of marking them as expired again. (https://github.com/frappe/hrms/pull/4975)

## Performance Improvements
* The "Employee Hours Utilization Based on Timesheet" report now looks up each employee’s name and department in a single step instead of two separate lookups. This can make it quicker to generate for reports with many employees. (https://github.com/frappe/hrms/pull/4911)

**Authors**: @nareshkannasln, @pratheep-bit, @tank-bohr, @Dr-Blank, @deepeshgarg007, @iamkhanraheel, @ankush, @DanielRadlAMR, @akhtarmohsin
**Reviewers**: @asmitahase, @deepeshgarg007, @iamkhanraheel

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

 For these release notes, we used an LLM (OpenAI gpt-5.4-mini) 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:
- build
 - chore
 - refactor
 - docs
 - test
 - style
 - ci

</details>