What frappe/frappe shipped
Written by FoxPlug from the repository's own releases; not affiliated with Frappe. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/frappe/frappe; Frappe did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- The Flow assistant gains
find_apis,describe_apiand call tools for whitelisted APIs, API Server Scripts and document methods. Pull request #46737 - Document actions that change data, such as resetting module onboarding or resyncing a knowledge source, now require write access instead of only read access. Pull request #46714
- Optimizing a file now checks write access on the stored file before anything is written to disk. Pull request #46698
- Optimizing a file whose result matches another stored file now always writes the result, so the record and the bytes on disk stay in step. Pull request #46697
- Print formats can include CODE128 and CODE39 barcodes, printed through PlutoPrint and Typst. Pull request #46529
- Bench build installs and builds apps that ship a pnpm-lock.yaml with pnpm instead of failing under Yarn. Pull request #46693
- Deleting a user now clears their saved defaults so a later user with the same email no longer inherits them. Pull request #46696
- Mail fetching now reopens the mailbox after the server drops the connection instead of restarting the whole fetch, so fetched mails are not marked read and lost. Pull request #46669
- Version 16.55.2 released, including a fix that lists the domains panel's CNAME and A DNS records separately. Release
Why it matters
This week closes several security gaps that let template authors, file readers and document readers do more than their permissions allow. It also adds API discovery and calling tools to the Flow assistant, and barcode printing to print formats. Mail fetching and file optimization are more reliable, and build now works for apps on pnpm.
Changelog entry
- Flow assistant tools add
find_apis,describe_apiand API calls for whitelisted APIs, API Server Scripts and document methods. Pull request #46737 - Document actions that change data now require write access. Pull request #46714
- File optimize checks write access on the stored file before writing. Pull request #46698
- File optimize always writes its result, including when a duplicate exists. Pull request #46697
- Print formats support CODE128 and CODE39 barcodes via PlutoPrint and Typst. Pull request #46529
- Bench build installs and builds apps with pnpm-lock.yaml using pnpm. Pull request #46693
- Deleting a user clears their saved defaults. Pull request #46696
- Mail fetch reopens the mailbox after a dropped connection instead of restarting and losing mails. Pull request #46669
- Sender names from contacts use the contact's full name with a space. Pull request #46680
- Background job lists and checks match a site's jobs by its exact name. Pull request #46723
- Release v16.55.2 lists the domains panel's CNAME and A DNS records separately. Release
Week of October 26, 2026
What shipped
- Email Account's record page on desk v2 now does what its desk v1 form script does, filling servers on service selection and making the Authorize and Frappe Mail buttons work. Pull request #46050
- A report can add formatter(value, column, data,
default_formatter) to its Python file so the pdf built on the server styles each cell and large reports no longer fail with a 413 error. Pull request #45313 - The Profile pane of the settings dialog now has a Password block with current, new and confirm fields that calls
update_password, and a wrong current password no longer signs the user out. Pull request #46074 - A wrong current password in
update_passwordnow counts toward the same login lockout tracker that login uses. Pull request #46092 - A record page can rename a record from its menu with a New name and Merge dialog, for a doctype with Allow Rename that is not a single. Pull request #46036
- An app's shell hook can call shell.window(component, { icon, width }) to open, minimise and close one standing window per app in a row at the bottom right of the shell. Pull request #46075
- View types are now View Type records that apps ship and List goes through one, so an app can add a type without changing frappe. Pull request #46041
- A unique index now holds each saved view's key, so two people saving one label at the same moment get open and open-2 on every database. Pull request #46040
- New frappe.concurrency_limiter.web_tier_settings exposes gunicorn's web tier settings, and a busy answer from
concurrent_limitno longer writes an Error Log row. Pull request #46061 - A doctype's record.js is now a dynamic import fetched only when a record or new-record page of that doctype loads, instead of shipping with the shell. Pull request #46077
Why it matters
This week the desk v2 work reached everyday record actions: email account setup, password changes, renaming records, button and child table scripts, and status badges. Reports gained a server-side pdf formatter for cells, and views gained a database-level guarantee that two people saving one view label still get distinct keys. Password changes now count toward the login lockout, and the concurrency limiter stops logging a row for every busy answer.
Changelog entry
- Email Account's desk v2 record page does the jobs of its desk v1 form script. Pull request #46050
- Reports can add a Python formatter to style pdf cells built on the server. Pull request #45313
- The Profile pane of the settings dialog gets a Password block that calls
update_password. Pull request #46074 - A wrong current password counts toward the same login lockout tracker as login. Pull request #46092
- Records can be renamed from the record page menu on a doctype with Allow Rename. Pull request #46036
- A shell hook can open one standing window per app with shell.window. Pull request #46075
- View types are View Type records that apps ship, and List goes through one. Pull request #46041
- A unique index holds each saved view's key, so simultaneous saves get open and open-2. Pull request #46040
- Web_tier_settings exposes gunicorn's web tier settings, and a busy answer no longer writes an Error Log row. Pull request #46061
- A doctype's record.js loads only when that doctype's record or new-record page opens. Pull request #46077
- A Button field on a desk v2 record page runs the script handler named by its fieldname when clicked. Pull request #46055
- The Add Column dialog's From Document Type options and the new column header show in the user's language. Pull request #46042
This week in frappe/frappe: Email Account record page on desk v2 now matches its v1 form script, the Profile pane gets a password change block, records can be renamed from the record page, reports get a Python cell formatter for server pdfs, and saved views hold their key with a
This week in frappe/frappe, desk v2 filled in everyday record work. Email Account's record page now does what its desk v1 form script does, including filling servers and the Authorize and Frappe Mail buttons. The Profile pane of the settings dialog gained a Password block, and a wrong current password now counts toward the login lockout. A record can be renamed from its record page. Reports can add a Python formatter so the pdf built on the server styles each cell. View types became records that apps ship, and a unique index now holds each saved view's key so two people saving one label get open and open-2.
Week of October 19, 2026
What shipped
- Sites on Frappe Cloud can add a Gmail, Yahoo Mail or Yandex Mail mailbox in one click, and a provider only appears when Frappe Cloud has it turned on. Pull request #45002
- An editable Text Editor field in desk-v2 now shows a rich-text editor with a fixed toolbar and table menu instead of a one-line input holding raw HTML. Pull request #45146
- In desk-v2, a save the record page refuses now marks each empty mandatory field and stops before sending. Pull request #45145
- Large query reports can now be downloaded as PDF because the report runs again on the server instead of the browser sending the whole rendered report. Pull request #38902
- PDFs with a header or footer are now saved compressed, cutting an 810-page text report from 35.3MB to 3.9MB. Pull request #45117
- An email to several recipients now builds its attached PDF once and reuses it for each person instead of rendering it per recipient. Pull request #45161
- Several PDFs generated at the same time no longer time out, because each render now catches requests on its own Chrome tab only. Pull request #45086
- An image uploaded into a Text Editor field now follows the doctype's
make_attachments_publicsetting instead of always being private. Pull request #45157 - Typst print formats now draw a rating field as stars with the same rounding as Chrome print, instead of printing the stored fraction. Pull request #45174
- Reset to default in a child table's column settings now restores the table immediately, including dragged widths, the Sticky column and added columns, without a page reload. Pull request #44923
Why it matters
This week touched both how documents get made and how records get edited. Print and PDF work brought smaller files, fewer repeated queries, correct landscape and page numbering, and bulk prints that name the documents they left out. On the editing side, desk-v2 field controls can now show save errors, and small grids, layout and query filter bugs were fixed without reloads.
Changelog entry
- Email OAuth: add Gmail, Yahoo and Yandex mailboxes in one click when Frappe Cloud has the provider turned on. Pull request #45002
- Desk-v2: an editable Text Editor field uses a rich-text editor with a fixed toolbar and table menu. Pull request #45146
- Desk-v2: a refused save marks each empty mandatory field and stops before sending. Pull request #45145
- Desk-v2: Text Editor image uploads now honour
make_attachments_public. Pull request #45157 - Desk-v2: field controls draw the error their host passes, so the record page can mark a refused field. Pull request #45109
- Query report: large reports can be downloaded as PDF because the report re-runs on the server. Pull request #38902
- PDF: pages with a header or footer are compressed before saving, making files several times smaller. Pull request #45117
- Email: the attached PDF is built once and reused for every recipient, CC and BCC included. Pull request #45161
- Print: Typst print formats draw a rating field as stars with the same rounding as Chrome. Pull request #45174
- Grid: Reset to default restores column widths, the Sticky column and added columns without a reload. Pull request #44923
- List: switching saved layouts now shows each layout's own column widths. Pull request #44882
- PDF: the Chrome renderer honours landscape orientation in print formats. Pull request #45179
This week: PDFs with headers and footers are much smaller, bulk prints say which documents they left out, and several PDFs can render at once without timing out. Plus one-click Gmail, Yahoo and Yandex mailboxes on Frappe Cloud and a rich-text Text Editor field in desk-v2.
This week's changes are mostly about printing and editing. PDFs with a header or footer are now saved compressed: an 810-page text report went from 35.3MB to 3.9MB. Bulk prints show which documents were left out, emailed and bulk prints now run the on_print_pdf hooks and write the access log, landscape is honoured in the Chrome renderer, and renders running at the same time no longer take each other's page requests. Large query reports can be downloaded as PDF again. Sites on Frappe Cloud can add a Gmail, Yahoo Mail or Yandex Mail mailbox in one click. In desk-v2, an editable Text Editor field is a rich-text editor and a refused save marks the fields it refused, and child table column settings reset without a reload.
Week of October 12, 2026
What shipped
- Adds content-addressed blobs, pluggable storage backends and signed file URLs as an experimental Storage v2 file storage option. Pull request #42407
- Chrome now runs GPU and network services inside the browser process, cutting PDF generation from 4 processes to 2 and peak Chrome memory from about 252 MB to 194 MB with unchanged output. Pull request #44616
- Skips PDF image optimization for large PDFs that contain no images. Pull request #44672
- Fixes Chrome PDF and print view bugs: Chromium no longer stays running behind a wrapper script path, and print format page sizes are applied to the PDF. Pull request #44648
- Desk links now work for documents whose names contain # or?, such as a role named Warehouse Lead #2. Pull request #44658
- Portal and web form links no longer break on document names containing #,? or &. Pull request #44665
- Preloads the logger before forking the worker pool so bench worker-pool no longer hangs when a job starts during the first logger import. Pull request #44669
- Bench set-password now records the reset date so users with password expiry are no longer asked to reset again. Pull request #44657
- The RQ Job list and scheduled email pull skip queued jobs whose function no longer imports after a rename or move. Pull request #44610
- The sidebar toggle keeps working when the window is resized, fixing the stuck shade on small screens and a broken toggle after widening and narrowing. Pull request #44289
Why it matters
This week fixed a wide range of everyday paper cuts: links to documents with special characters, exports losing sort order, multiselect dropdowns suggesting values already picked, and the session expired dialog on logout. It also brought a large performance improvement to PDF generation and an experimental new way to store files.
Changelog entry
- Adds experimental Storage v2 with content-addressed blobs, pluggable storage backends and signed file URLs. Pull request #42407
- Runs Chrome GPU and network services in the browser process, using 2 processes and less peak memory per PDF. Pull request #44616
- Skips PDF image optimization for large PDFs that have no images. Pull request #44672
- Fixes Chromium staying alive behind wrapper script paths and applies print format page sizes to PDFs. Pull request #44648
- Fixes desk links for documents whose names contain # or?. Pull request #44658
- Fixes portal and web form links for document names containing #,? or &. Pull request #44665
- Preloads the logger before forking the worker pool to stop bench worker-pool hangs. Pull request #44669
- Bench set-password records the reset date so expired passwords are not reset again. Pull request #44657
- Skips queued jobs whose function no longer imports instead of failing the RQ Job list. Pull request #44610
- Keeps the sidebar toggle working when the window is resized. Pull request #44289
- Keeps the on-screen sort order when exporting a query report after filtering a column. Pull request #44671
- Setup wizard no longer fails on servers without the deprecated Asia/Calcutta time zone name. Pull request #44267
This week: Storage v2 lands as experimental content-addressed blobs with signed URLs. Chrome PDF generation now uses 2 processes instead of 4 and about 194 MB peak instead of 252 MB. Plus fixes for links with # or?, sort order in exports, and the logout session expired dialog.
This week in Frappe: an experimental Storage v2 adds content-addressed blobs, pluggable storage backends and signed file URLs. PDF generation got lighter, with Chrome running as 2 processes instead of 4 and peak Chrome memory dropping from about 252 MB to 194 MB for a Sales Invoice PDF, and large PDFs without images now skip image optimization. We also fixed desk and portal links for documents whose names contain # or?, export losing the on-screen sort order after filtering, multiselect fields suggesting values already picked, and the session expired dialog appearing on logout.
Week of October 5, 2026
What shipped
- Every PDF now renders with Chrome, and the PDF Generator setting is removed from Print Settings. Pull request #44253
- Report View can now group by multiple fields and show multiple aggregate columns such as Count, Sum, Average, Minimum and Maximum. Pull request #44219
- The Chrome PDF stream is now read in 1 MB chunks and joined once, which speeds up downloads of PDFs with many large images. Pull request #44258
- The composer gains an allowedFileTypes prop and an attachments slot, forwarded through EmailComposer and CommentComposer. Pull request #43059
- Share previews now show the page image when its file name has spaces or non-ASCII characters, by percent-encoding the og:image and twitter:image URL. Pull request #44248
- Creating a private workspace from My Space and saving an edited workspace work again after accepting form-encoded
new_pageandsave_pagearguments. Pull request #44225 - Exporting DocTypes with an import provider now includes the provider's extra tables and an ID column, so the export can be re-imported as an update. Pull request #44074
- The field picker lists all fields on focus, and keyboard focus is kept in the filter and group by popovers. Pull request #44218
- A form no longer opens blank after a row inside a table multiselect field is changed and saved. Pull request #44207
- The wkhtmltopdf notices on the Print Format form and in Print Settings now say it will be removed in version 17. Pull request #44273
Why it matters
The main change this week is that all PDFs - prints, email attachments, report PDFs and auto email reports - now render with Chrome, with the PDF Generator setting removed and wkhtmltopdf formats switched on migrate. Print previews and downloaded PDFs also line up better on page margins, and Typst PDFs gained matching page breaks and empty-field handling. Alongside that, Report View gained multiple group by fields and aggregate columns, and several everyday UI and export fixes landed.
Changelog entry
- Every PDF renders with Chrome; the PDF Generator setting is removed from Print Settings and wkhtmltopdf formats switch on migrate. Pull request #44253
- Report View can group by multiple fields and show multiple aggregate columns. Pull request #44219
- Chrome PDFs are read from the browser in 1 MB chunks instead of 4 KB, so large PDFs download faster. Pull request #44258
- The composer adds an allowedFileTypes prop and an attachments slot, forwarded through EmailComposer and CommentComposer. Pull request #43059
- Share previews show the page image when its file name has spaces or non-ASCII characters. Pull request #44248
- Creating a private workspace from My Space and saving an edited workspace work again. Pull request #44225
- Exporting a DocType with an import provider includes the provider's extra tables and an ID column for re-import. Pull request #44074
- The field picker lists all fields on focus, with keyboard focus kept in the filter and group by popovers. Pull request #44218
- A form no longer opens blank after a table multiselect row is changed and saved. Pull request #44207
- The wkhtmltopdf notices now say it will be removed in version 17. Pull request #44273
- Chrome PDFs use the print format's @page margin, with values that cannot be converted falling back to 15mm. Pull request #44263
- Pressing Esc on a message popup shown over a dialog closes only the popup. Pull request #44234
Every PDF now renders with Chrome: prints, email attachments, report PDFs and auto email reports. The PDF Generator setting is gone, and print previews match downloaded PDFs on @page margins. Report View also groups by several fields with several aggregate columns.
This week PDF rendering moved fully to Chrome. Prints, email attachments, report PDFs and auto email reports all render with Chrome, the PDF Generator setting is removed from Print Settings, and print formats set to wkhtmltopdf switch to Chrome on migrate. Print previews and downloaded PDFs now agree on @page margins, and the PDF stream is read in larger chunks so big PDFs download faster. Typst PDFs also honour page breaks and Print if empty, matching Chromium output. Elsewhere, Report View can group by multiple fields and show multiple aggregate columns, the field picker lists all fields on focus, and exporting DocTypes with an import provider now includes the provider's extra tables and an ID column for re-import.
Week of September 28, 2026
What shipped
- Restored Sidebar Item Group and Sidebar Item Group Link doctypes on version-16 to prevent data loss during migration. Pull request #43814
- Fixed sidebar conversion to handle Spacer and Sidebar Item Group rows without aborting migration on v16 sites. Pull request #43813
- Restored frappe's desktop icons on version-16 to prevent orphan deletion during migrate. Pull request #43812
- Added server-side Jinja rendering for report print formats alongside existing JS formats. Pull request #40344
- Pages now declare their shell type to open system pages without shell and shared pages in any shell. Pull request #43771
- Redesigned onboarding to display as a block on workspaces with steps that tick only when work is done. Pull request #43789
- Improved setup wizard with redesigned interface and per-step analytics tracking. Pull request #43713
- Fixed markdown to nest sublists indented by 2-3 spaces like CommonMark instead of requiring 4+ spaces. Pull request #43804
- Fixed session validation to treat cached sessions without a user as invalid to prevent errors. Pull request #43750
- Added accessible names to unlabelled controls and images for screen reader support. Pull request #43770
Why it matters
This week focused on stabilizing version-16 by fixing migration issues that caused data loss and aborting builds, while adding developer features like Jinja report rendering and improving user experience with redesigned onboarding and setup wizard. Accessibility improvements ensure the framework works for all users.
Changelog entry
- Fix(desk): keep Sidebar Item Group on version-16 Pull request #43814
- Fix(sidebar): keep spacers and skip item groups in the v16 conversion Pull request #43813
- Fix(desktop): restore frappe's desktop icons on version-16 Pull request #43812
- Feat: server-side jinja rendering for report printing Pull request #40344
- Feat(page): shared pages open in any shell, system pages in none Pull request #43771
- Feat(workspace): onboarding on workspaces, calmer cards, chart empty states Pull request #43789
- Feat: improved setup wizard Pull request #43713
- Fix(markdown): nest sublists indented by 2-3 spaces Pull request #43804
- Fix(session): treat cached session without user as invalid Pull request #43750
- Fix(a11y): add accessible names to unlabelled controls and images Pull request #43770
- Fix: number card shows NaN for a zero value when currency is set Pull request #43802
- Fix(list): show Import on an empty list even when filters are set Pull request #43797
Frappe now supports server-side Jinja rendering for report prints, improved onboarding on workspaces, and fixes to stabilize v16 migrations that were causing data loss.
This week we stabilized version-16 migrations that were deleting data, added server-side Jinja rendering for report print formats, redesigned onboarding to appear as workspace blocks, and improved the setup wizard with per-step analytics. We also enhanced accessibility across the framework and fixed critical issues that were aborting builds on existing v16 sites.
Week of September 21, 2026
What shipped
- New print format builder backported as the primary renderer, with WeasyPrint marked deprecated. Pull request #43250
- Record pages now paint from the shared in-memory cache on return visits, then refresh in the background. Pull request #43382
- Record page paints once on cold load, waiting for customizations behind skeletons with a 500ms timeout for slow scripts. Pull request #43321
- Shared data cache added to @framework/ui for records and lists, fed by API v2 wrapper on every response. Pull request #43309
- DocTypes can now declare replacement pages that open at their main address instead of the standard page. Pull request #43313
- Date and Datetime fields in the print format builder get per-field date format options in the inspector. Pull request #43373
- Data imports now parse numbers using the user's number format, preventing silent corruption of decimal-comma values. Pull request #43308
- Data Import dialog now includes a selector to choose between Insert New, Update Existing, and Insert or Update. Pull request #43312
- Postgres now supports ordering grouped queries by arithmetic expression aliases. Pull request #43411
- Background job errors and cron check-ins now reach Sentry by flushing the SDK before exit. Pull request #43036
Why it matters
Print format builder maturity and infrastructure modernization are the week's themes. The cache and page replacement systems enable faster desk loads and app-specific record pages. Data import and query fixes address edge cases that corrupted data or blocked workflows.
Changelog entry
- Feat!: backport new print format builder with WeasyPrint deprecated Pull request #43250
- Feat(desk): paint a returning record from the shared cache Pull request #43382
- Feat(desk-v2): record page paints once Pull request #43321
- Feat(ui): shared data cache for records and lists, fed by the API wrapper Pull request #43309
- Feat(desk-v2): open a DocType's declared replacement page at its main address Pull request #43313
- Feat(pfb): per-field date format for Date and Datetime fields Pull request #43373
- Feat(DataImport): let users choose the import type Pull request #43312
- Fix(data-import): parse numbers using the user's number format Pull request #43308
- Fix(query): allow ordering by expression aliases on postgres Pull request #43411
- Fix(sentry): errors and cron check-ins from jobs never reach sentry Pull request #43036
- Feat(desk): refetch meta, form layouts and list settings after a DocType change Pull request #43311
- Feat(desk): find and resolve replacement page declarations Pull request #43310
- Feat(desk): second addresses for the standard list and record page Pull request #43307
- Feat(desk-v2): the page name-clash check in the router, the build and the server Pull request #43317
- Fix(sidebar): open a page route in the shell that lists it Pull request #43405
- Fix(attach): child table row closes after uploading or clearing a file Pull request #43387
- Fix(print): mirror the remaining print fixes from develop Pull request #43372
Print format builder ships as primary renderer. Record pages now paint from cache on return visits. Data imports parse numbers per user format. Postgres grouped queries support expression aliases.
This week brings three infrastructure improvements to Frappe's desk: the new print format builder becomes the standard renderer, record pages now paint instantly from a shared cache on return visits, and DocTypes can declare app-specific replacement pages. Data import gains a UI selector for import types and fixes silent corruption of decimal-comma numbers. Background job errors now reliably reach Sentry.
Week of September 14, 2026
What shipped
- Record page reads and saves now route through the v2 REST API wrapper, advancing the Desk v2 migration. Pull request #42990
- Collaboration writes (assign, share, tag, favourite, follow, comment) moved to /api/v2 document sub-resources. Pull request #43004
- Lists, counts and link search endpoints migrated to /api/v2. Pull request #43002
- Print format builder now tracks version history with restore, undo and redo buttons. Pull request #42995
- SQLite support hardened with safe transaction boundaries, lock timeout distinction, and automated retries for background jobs. Pull request #42986
- Activity timeline fixed double fetch calls on email send and socket reconnection loss. Pull request #42988
- Print format builder inspector spacing and stepper design refined. Pull request #43008
- Added
never_skip_patcheshook to prevent migration continuation after critical patch failures. Pull request #42961 - Composer UI now allows dragging recipient chips between To, CC and BCC rows. Pull request #42966
- Web Form edit mode no longer overwrites saved values with field defaults. Pull request #42912
Why it matters
The Desk v2 REST API migration continues with record pages, collaboration, and list operations now routed through the new endpoints. Print format builder gains version history and usability improvements. SQLite support receives significant hardening for production use.
Changelog entry
- Record page reads and saves now route through /api/v2 wrapper with include parts and children metadata Pull request #42990
- Collaboration operations (assign, share, tag, favourite, follow, comment) moved to /api/v2 sub-resources Pull request #43004
- List views, record counts and link search migrated to /api/v2 Pull request #43002
- Print format builder version history with save, bookmark, restore, undo and redo capabilities Pull request #42995
- SQLite runtime hardened with safe transaction boundaries and lock contention handling; CI now runs pull request tests Pull request #42986
- Activity timeline fixed to share socket per document instead of per caller; reconnection now preserves message history Pull request #42988
- Activity timeline socket subscription moved to shared resource to eliminate double fetches Pull request #43001
- Never_skip_patches hook added to stop migration on critical patch failure Pull request #42961
- Web Form edit mode preserves saved field values instead of overwriting with defaults Pull request #42912
- Composer UI supports dragging recipient chips between To, CC and BCC rows Pull request #42966
Desk v2 expands: record pages, collaboration, and lists now on /api/v2. Print format builder adds version history. SQLite support hardened with better transaction handling and retries.
This week Frappe advances the Desk v2 REST API migration with record pages, collaboration features, and list operations now routing through /api/v2 endpoints. The print format builder gains version history with restore, undo and redo capabilities. SQLite support receives hardening improvements including safe transaction boundaries, lock timeout distinction, and automated retry logic for background jobs.