github frappe/frappe v16.32.0

latest release: v15.119.0
4 hours ago

Features

  • Form fields now report committed changes, including edits inside child tables, so scripts can identify the changed field and row without comparing the entire document. New child-table rows also use their configured field defaults when created. (#41894)
  • Adds per-render tab controls to FormLayout, allowing tabs to be hidden or renamed without changing the underlying layout. Reports the tab actually displayed when the requested tab is hidden. (#41910)
  • Allows installed apps to add custom results to the main search dropdown, including documentation and results from external search services. (#41932)
  • Adds the "Attachment Gallery" form control for viewing, uploading, previewing, and deleting attachments directly from a form.
    Allows galleries to filter displayed files using link_filters and attached_to_field settings. (#40964)

Bug Fixes

  • Adds HTTP method validation to document API calls, rejecting requests that use a method not allowed for the requested action. (#40821)
  • Fixes an issue where documents loaded on demand could not be safely saved and restored during background processing, including their already-loaded child records. (#41189)
  • Allows users to update the Columns or Filters of a custom Report when it has no saved report data. (#41818)
  • Displays report filter suggestion lists above sticky table headers when collapsible filters are enabled. (#41833)
  • Limits the number of simultaneous PDF generation requests for document printouts and reports, reducing server strain when many PDFs are requested at once. (#41842)
  • Applies Ignore User Permissions to custom searches for Link fields when enabled, allowing them to show records outside the current user's usual permissions. (#41840)
  • Fixes user-configured table columns so dependency-based fields are shown or hidden based on each row’s values instead of one row affecting all rows. (#41850)
  • Translates autocomplete status messages, including search prompts, result counts, and the selected item's position, according to the user's language and custom translations. (#41860)
  • Displays rich text editor table and heading picker labels in the user’s language, including custom translations, instead of fixed English text. (#41859)
  • Updates print views to render Barcode fields as barcodes instead of showing only the barcode number, including for read-only fields and submitted documents. (#41861)
  • Checks user access before applying an Assignment Rule to a specified document. (#41871)
  • Allows users to view and edit their own ToDo records even when they are not listed as the assignee or assigner. (#41873)
  • Updates data exports to respect field permissions in child tables, excluding restricted fields and their values from the exported data. (#41802)
  • Report views display the document name when a linked document no longer exists, instead of showing a "Not found" dialog and redirecting. (#41879)
  • Changes Kanban column indicators from full-column background colors to small colored dots in the column headers. (#41835)
  • New child-table rows now include every field with an appropriate empty value, such as zero for numeric fields and false for checkboxes. The row editor writes changes directly to the selected row and closes when that row is removed or cannot be uniquely identified, preventing edits from being applied to another row. (#41897)
  • Corrects an internal reference to the Page Script save event from before_save to beforeSave; this updates a code comment only and does not change behavior. (#41907)
  • Preserves the selected tab when other tabs appear or disappear or the form reloads, instead of switching to another tab or returning to the first one. (#41904)
  • Adds the originating Comment to mention entries in Notification Log, so users can open the related document at the exact comment. Fixes mentions created in other editors displaying as undefinedundefined in the Desk comment editor, including mentions already stored. (#41899)
  • Updates report views to add the derived Status column only for record types that use status indicators. This prevents values from shifting into the wrong columns and avoids incorrect missing-record messages when the report loads. (#41912)
  • Updates the OAuth UserInfo endpoint to authenticate valid bearer tokens in GET and POST requests and return information for the linked User. Rejects tokens linked to missing or disabled User records. (#41919)
  • Rejects Web Form Request keys that are not text, preventing list or tuple values from being used as search conditions for an unrelated request. (#41977)
  • Preserves all URL parameters when a login-required Web Form sends users to sign in and raises the deletion limit from 10 to 999 requests per minute for bulk deletions. (#41982)
  • Limits the document information displayed on a Web Form to the fields included in that form when users access it with a request key, including signed-in users. (#41984)
  • Excludes published pages with dynamic routes from sitemap.xml, so invalid placeholder URLs such as /project/<name> do not appear in the sitemap. (#41987)
  • CSV and XLSX exports treat values that look like spreadsheet formulas as literal text, so spreadsheet applications display them instead of calculating them. CSV imports remove the export marker when these values are brought back in. (#42002)
  • Limits child item selection to rows belonging to parents that match the active filters, so a filter with no matching parents shows no child rows instead of rows from all parents. (#42064)
  • Updates the error shown when a field type cannot be changed to include the affected field name and its DocType, so users can identify the field that caused the error. (#42080)
  • Skips title lookups for blank Link columns in report views, so empty cells no longer trigger requests for a document named null. (#42036)
  • Applies the parent DocType’s role permissions when masking fields in child tables, so users with the Mask permission can view the original values while others see masked values. The same permission check applies when child-table records are loaded through queries. (#42059)
  • Adds missing link-selection permissions for relevant roles on Domain, Role, Dashboard Chart Source, Email Account, Currency, Help Category, and Web Template, so users can find and choose these records in linked fields. (#42018)
  • Fixes the RQ Job list so ID, Job Name, and Status filters return the correct jobs, use each job’s current status, and show all jobs when a filter is cleared. Prevents the ID search box from crashing and makes list pages show the correct number of available, non-duplicate jobs. (#41995)
  • Keeps the saved number of rows per page when loading more rows in Report Builder reports. (#41972)
  • Preserves OAuth authorization details when guest users are redirected to log in, including form-submitted requests, and rejects unsupported POST formats. (#41921)

Authors: @safwansamsudeen, @Abdeali099, @shariquerik, @RitvikSardana, @AarDG10, @barredterra, @Shllokkk, @krishna-254, @surajshetty3416, @ShrihariMahabal, @iamkhanraheel, @Nihantra-Patel, @ankush, @iamejaaz, @kaulith
Reviewers: @shariquerik, @RitvikSardana, @AarDG10, @barredterra, @surajshetty3416, @ShrihariMahabal, @NagariaHussain, @ankush, @iamejaaz

AI content

For these release notes, we used an LLM (OpenAI gpt-5.6-luna) 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.

Changes with the following labels were excluded:

  • skip-release-notes

Changes with the following types were excluded:

  • style
  • ci
  • docs
  • build
  • test
  • refactor
  • chore

Don't miss a new frappe release

NewReleases is sending notifications on new releases.