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>