Updated daily

What's New in Frappe

Every notable change across the Frappe ecosystem.

Loading updates…

Yesterday — Wednesday, July 8

ERPNext 36.6k 4 updates
fix accounting 1 day ago

Precision issue causing reconciliation error

Fixes floating-point precision errors that blocked account reconciliation. Backported to #56937, #56938.

@rtdany10 #54043 Read
fix accounting 1 day ago

Validate template and its variant in the same Pricing Rule

Prevents false "Multiple Price Rules exist" error when both a template and its variant are added to the same rule, with a save-time validation block.

@Shllokkk #56926 Read
fix accounting 1 day ago

Added permission checks on various whitelisted functions

Adds read permission validation to payment entry detail lookups, bank account, and party account whitelisted functions.

@diptanilsaha #56745 Read
fix accounting 1 day ago

Get_terms_and_conditions render_template with safe_exec

Hardens terms and conditions rendering against code injection by using safe_exec instead of bare render_template.

@diptanilsaha #56944 Read
HR 8.2k 1 update
fix hr-payroll 1 day ago

Include carry forwarded leaves in allocation calculations

Leave allocations now correctly include carry-forwarded leaves from prior periods in the balance calculation.

@krishna-254 #4861 Read
LMS 3k 1 update
fix other-apps 1 day ago

Emit images inside pasted list items as image blocks

Images pasted into list items are no longer silently dropped; they're emitted as standalone blocks after the list. Backported to #2551.

@raizasafeel #2550 Read
CRM 2.9k 1 update
fix crm-sales 1 day ago

ERPNext Item sync fails in ERPNext v15

Handles v15's tuple-based and v16+'s dict-based price query results for seamless ERPNext integration across versions. Backported to #2420.

@shahzeelahmed #2419 Read
b Builder 2.1k 1 update
fix ui-ux 1 day ago

Update frappe-ui to v1.0.0-beta.21

Upgrades frappe-ui submodule with 20 typography token migrations across 16 files and Popover component adaptations. Backported to #662.

@surajshetty3416 #659 Read
p Press 531 6 updates
fix other-apps 1 day ago

Remove unnecessary validation in Release Group doctype

Removes an overly restrictive validation check in Release Group. Backported to #6918.

@AyshaHakeem #6917 Read
feat other-apps 1 day ago

Add Plan History tab to site detail page

Shows chronological log of all plan changes with plan details, who changed it, and colour-coded change type (Initial/Upgrade/Downgrade).

@huzan-kazi #6834 Read
feat other-apps 1 day ago

Add a Subscriptions tab to view the team's subscriptions

Adds consolidated Subscriptions view under Billing, grouped by type (sites, servers, marketplace apps), showing plan and installed-site tracking. Backported to #6915.

@Shariqk3 #6836 Read
fix other-apps 1 day ago

Add missing dependent apps to release group

Automatically appends required dependent apps to release groups if missing, preventing manual configuration gaps. Backported to #6916.

@AyshaHakeem #6892 Read
feat other-apps 1 day ago

Sync app source versions from repo on branch change

Automatically syncs app source versions when branches are switched. Backported to #6920.

@siduck #6919 Read
fix other-apps 1 day ago

Only hand out standby sites on the latest bench

Trial sites now receive the latest app builds instead of potentially weeks-old deployments waiting on async migrations. Backported to #6914.

@regdocs #6905 Read
o Other 3 updates
fix other-apps 1 day ago

Generate preview from HTML body

Enables preview generation from HTML body content in email and calendar exports.

@s-aga-r #173 Read
fix other-apps 1 day ago

Mail and calendar export

Restores export functionality for mail and calendar items.

@s-aga-r #172 Read
fix other-apps 1 day ago

Update erpnext helper imports to their new mapper and service modules

Updates imports to ERPNext develop's relocated modules and resolves test suite failures for v17 compatibility.

@Bhavathariniya #445 Read

Monday, July 6

ERPNext 36.6k 11 updates
fix stock-manufacturing 3 days ago

Keep bom_no/is_phantom_item pair coherent in get_bom_items_as_dict

When a BOM lists the same item via both phantom and non-phantom sub-BOMs, independent Max() aggregations could pair one line's phantom flag with another line's bom_no, exploding the wrong sub-BOM.

@mihir-kandoi #56893 Read
fix accounting 3 days ago

Compute budget requested amount per row

Budget checking was computing Sum(qty) × Max(rate) over all matched Material Request items, fabricating totals when items had different rates; now sums per-row (qty × rate).

@mihir-kandoi #56895 Read
fix accounting 3 days ago

Dark theme shop floor

Dark theme styling fix for shop floor.

@rohitwaghchaure #56887 Read
fix accounting 3 days ago

Make Procurement Tracker rows coherent PO lines

Multi-line POs with blank material request items were fabricating rows by pairing one line's item with another line's qty and amount; now uses a subquery to pick the representative line per group.

@mihir-kandoi #56894 Read
fix accounting 3 days ago

Show earliest schedule date as required date

When a Material Request lists the same item on multiple rows with different schedule dates, the consolidated Requested Items report now shows the earliest date instead of the latest, correctly reflecting urgency.

@mihir-kandoi #56897 Read
fix accounting 3 days ago

Campaign with a naming series breaks the UTM Campaign link

When a Campaign uses a naming series, linking to the mirrored UTM Campaign would fail because the link pointed to `campaign_name` instead of the actual document `name`.

@nabinhait #56881 Read
fix accounting 3 days ago

Use transaction-currency outstanding on Dunning for foreign-currency invoices

When a Sales Invoice is posted in a foreign currency against a receivable account in the company currency, creating a Dunning now shows the correct outstanding amount in the transaction currency instead of the party account currency.

@nabinhait #56883 Read
fix stock-manufacturing 3 days ago

Stock Closing Entry duplicate check misses contained date ranges

The duplicate-date validation had a logically inert third condition that never fired, allowing a new date range fully contained within an existing entry to slip through.

@nabinhait #56849 Read
fix stock-manufacturing 3 days ago

Close postgres locking races; gate batch valuation with a txn advisory lock

Fixes two phantom-insert races where concurrent operations could create duplicate stock entries on postgres; gates batch valuation with transaction-scoped advisory locks.

@mihir-kandoi #56905 Read
fix accounting 3 days ago

Scope Production Planning arrival qty to open POs

The report's Arrival Quantity was summing every submitted PO line ever created including fully received ones, overstating incoming stock; now sums only open POs.

@mihir-kandoi #56896 Read
fix accounting 3 days ago

Guard empty group-by detail row in trends

After adding an explicit GROUP BY, a zero-match detail query returns no rows instead of one all-NULL row, which would raise IndexError when accessed; now skipped safely.

@mihir-kandoi #56898 Read
Frappe 10.4k 9 updates
feat framework Editor's pick 3 days ago

Add v2 discovery API

Internal (WIP, no-docs) API v2 endpoints for programmatic endpoint discovery; OpenAPI compatibility left for external apps.

@ankush #40600 Read
feat framework Editor's pick 3 days ago

Add transaction-scoped advisory lock

`frappe.db.transaction_advisory_lock(key)` for postgres: released on transaction commit/rollback, participates in deadlock detection, re-entrant, and shared polling timeout with session-scoped locks.

@mihir-kandoi #40621 Read
fix framework 3 days ago

Print view crash on direct load

Opening `/app/print//` directly threw TypeError because a method reference no longer exists, aborting `print_view.show()` and leaving the page half-rendered.

@iamejaaz #40608 Read
fix framework 3 days ago

Wrap write_only inner fn

Internal function wrapping fix for write_only decorator.

@ankush #40603 Read
fix framework 3 days ago

Avoid field masking when permissions are ignored

Field masking now respects when permissions are explicitly ignored in queries, returning unmasked data where intended.

@ankush #40613 Read
fix framework 3 days ago

Limit to system manager

Permission restriction to system manager role.

@ankush #40616 Read
feat framework 3 days ago

Image and barcode blocks with width option

Print Format Builder now supports Image and Barcode blocks; linear barcodes via JsBarcode (browser print), QR codes via pyqrcode server-side as data-URI PNG.

@iamejaaz #40612 Read
fix framework 3 days ago

Skip error log for expected exceptions

Adds `skip_error_log` flag to exception classes so expected/benign errors don't clutter the Error Log.

@ankush #40610 Read
fix framework 3 days ago

Don't probe external links with a nonexistent fieldname in get_open_count

On postgres sites, opening the Connections tab on a form would 500 with "current transaction is aborted" due to probing links with a nonexistent fieldname.

@mihir-kandoi #40585 Read
CRM 2.9k 1 update
fix crm-sales 3 days ago

Remove orphaned crm.api.event scheduler hooks

Removes scheduler hooks that were accidentally pushed in main-hotfix, fixing "No module named 'crm.api.event'" errors on every `bench migrate`.

@ps173 #2405 Read
p Press 531 3 updates
feat other-apps 3 days ago

For OCI, revert the VNIC route table in static IP allocation

OCI cleanup: reverts VNIC route table after static IP allocation.

@20vikash #6909 Read
feat other-apps 3 days ago

Extend NAT into OCI

Extends NAT (private IP) support from AWS/Hetzner/DO/Frappe Compute into OCI; upgrades OCI SDK from 2.116.0 to 2.180.0 to support VNIC route table attachment.

@20vikash #6830 Read
fix other-apps 3 days ago

Change team owner icon color to gray

Dashboard styling fix.

@ssiyad #6911 Read
o Other 16 updates
feat other-apps 3 days ago

Add API method discovery commands

`frappe-cli method search|list|show` backed by Frappe's API v2 discovery endpoints; supports `--json` for raw payload or human-readable output.

@ankush #17 Read
feat other-apps 3 days ago

Meet mail integration

Meet app now integrates with mail functionality.

@BreadGenie #166 Read
feat other-apps 3 days ago

Require explicit site for non-interactive multi-profile runs

When multiple profiles are authenticated and the CLI runs non-interactively (piped output), it now requires explicit `-s/--site` or env vars instead of silently falling back to the configured default.

@ankush #10 Read
feat other-apps 3 days ago

Enhance event logging and delivery mechanism

Adds "queued" and "rolled_back" event statuses, implements retry logic for committed events, and enhances logging with timestamps.

@prathameshkurunkar7 #27 Read
feat other-apps 3 days ago

Replayable fixture for demo data

Replaces imperative demo generator with deterministic fixture: same forum every seed, timestamps re-anchored to "now", requires no LLM or network.

@netchampfaris #517 Read
feat other-apps 3 days ago

Don't make newly authenticated sites the default

`frappe-cli auth login` now defaults to `--no-default`, so new sites don't automatically become the default; pass `--default` to opt in.

@ankush #12 Read
feat other-apps 3 days ago

Resolve VM image from frappe_version

VM provisioning now resolves the OS image based on frappe_version.

@prathameshkurunkar7 #25 Read
feat other-apps 3 days ago

Host dashboard shipped under socket activation

Per-host read-only dashboard: Vite/Vue SPA with a stdlib-only backend serving live `/api/state`, organized around Overview/Machines/Images/Storage/Network/Firewall/System sections.

@adityahase #26 Read
feat other-apps 3 days ago

Resize_capacity — per-host headroom for an in-place resize

In-place VM resize now gates on per-host free room (ceiling = host.free + vm.own_footprint), not fleet best-host headroom; includes `placement.resize_headroom()` and whitelisted `provision.resize_capacity()`.

@saurabh6790 #21 Read
feat other-apps 3 days ago

Reconfigure sites with a shorthand name and description

New `frappe-cli auth configure ` to rename and/or describe existing authenticated sites without re-entering credentials.

@ankush #18 Read
fix ai 3 days ago

Remove em-dashes and other AI-speak from demo content

Removed 46 em-dashes and related AI-generated phrasing from demo fixture and seeding docs, replacing with natural alternatives (46 in fixture, 27 in docs, 8 in code).

@netchampfaris #518 Read
fix other-apps 3 days ago

Respect theme in meet home and shortcut dialog changes

Meet home and shortcut dialogs now respect the user's theme setting.

@BreadGenie #169 Read
fix other-apps 3 days ago

Follow redirects instead of hard-failing

FrappeClient now follows 3xx redirects (like trailing-slash normalization) safely, since httpx strips Authorization headers on cross-origin redirects.

@ankush #11 Read
fix other-apps 3 days ago

Remove limit for doctypes

Removes artificial doctype limit in the CLI.

@ankush #19 Read
feat other-apps 3 days ago

Operate the Desk frontend from the Flow panel

Adds client tools (read_screen, navigate, fill, submit, etc.) so the panel agent can drive the Desk frontend directly — reads the current route and form state, then manipulates fields and submits.

@ShrihariMahabal #55 Read
fix other-apps 3 days ago

Misc hardening fixes for security

Hardening against redirects and http protocol weaknesses.

@ankush #8 Read

Sunday, July 5

ERPNext 36.6k 6 updates
feat accounting Editor's pick 4 days ago

Shop floor interface for operators

Touch- and keyboard-friendly screen for factory floor supervisors and machine operators to view work orders and manage job lifecycle.

@rohitwaghchaure #55551 Read
fix accounting 4 days ago

Warning message for new item standard cost

fix: warning message for new item standard cost

@rohitwaghchaure #56885 Read
fix stock-manufacturing 4 days ago

Item form permission errors

Opening an Item form as a user with read access but no access to Item Price/Warehouse threw unhandled permission error popups instead of hiding restricted sections.

@Pandiyan5273 #56859 Read
fix accounting 4 days ago

Reset_mode_of_payments raises AttributeError on a POS Invoice

Calling reset_mode_of_payments on a draft POS Invoice raises AttributeError because the method checks `doc.is_created_using_pos`, a field that only exists on Sales Invoice.

@nabinhait #56882 Read
fix accounting 4 days ago

Type cast error on postgres

Clicking on cost center field throws error; Postgres doesn't support `like` operator on `smallint` fields.

@mihir-kandoi #56871 Read
fix accounting 4 days ago

Race condition in process pcv

Process PCV gets stuck in Running state when 2 jobs create a race condition on the summarization step; MariaDB 11.6+ has snapshot isolation enabled by default causing lock timeout on PPCVD updates.

@ruthra-kumar #56852 Read
Frappe 10.4k 8 updates
feat ui-ux Editor's pick 4 days ago

Standard helper to render buttons

`frappe.ui.button(opts)` creates Espresso-style button wired with onclick handling, promise handling, and loading states; also available as markup via `.html(opts)`.

@nikkothari22 #40576 Read
fix framework 4 days ago

Preserve tree view expansion state on back-navigation

Opening a tree, expanding nodes, then navigating back always rebuilt the tree from root, collapsing every expanded node.

@kaulith #40530 Read
fix framework 4 days ago

Remove outer table border in plain style print output

Bootstrap's `table-bordered` double-bordered the header in plain table style and didn't match the builder preview; removed outer border and standardized header underline.

@iamejaaz #40589 Read
feat ui-ux 4 days ago

Add section margin support with per-side spacing control in print format builder

Adds margin support for sections rendered in builder preview and print output; replaces four-stepper padding grid with reusable SpacingRow component; adds table border options.

@iamejaaz #40581 Read
fix framework 4 days ago

Show user picker for assignment filter values

Filtering by Assigned To or Liked By required manually entering exact email; now shows a User Link picker for search and selection.

@kaulith #40350 Read
fix framework 4 days ago

Settings dialog panel scroll

Settings dialog scrolling broke when there were multiple entries and some setting was enabled.

@nishkagosalia #40577 Read
feat ui-ux 4 days ago

Make field cards fully draggable in print format builder

Drag fields by the whole card instead of only the grip handle; interactive elements are excluded; shows grab/grabbing cursor; browser back closes preview.

@iamejaaz #40584 Read
fix framework 4 days ago

Dashboard chart crashes when filters_json is a dict

Report-type Dashboard Charts could fail to load when filters_json contained a dict instead of a list; validation now checks `isinstance(filters, list)`.

@kaulith #40563 Read
LMS 3k 1 update
fix other-apps 4 days ago

Commit chapter rename on Enter

Double-clicking a chapter to rename and pressing Enter did not save; Enter keydown bubbled up and toggled the disclosure instead.

@NagariaHussain #2542 Read
CRM 2.9k 1 update
fix crm-sales 4 days ago

Revert "fix(onboarding): trigger FC setup-complete from on_login instead of after_insert"

Existing FC user creating a signup site as admin were unable to access desk; reverts problematic onboarding changes.

@shahzeelahmed #2397 Read
b Builder 2.1k 1 update
fix ui-ux 4 days ago

Canvas rendering of inline text blocks (span/a pills) + text-edit corruption

Inline text blocks rendered broken in the editor canvas while looking perfect on the published page; wrapper elements fragmented the inline box.

@surajshetty3416 #658 Read
o Other 10 updates
fix other-apps 4 days ago

Redirect space URL to first page in sidebar order

Visiting a space URL redirected to the first descendant in NestedSet order, not the first page in sidebar sort order; now walks the same tree the sidebar renders.

@NagariaHussain #696 Read
fix other-apps 4 days ago

Hide model api key/base url when a provider is linked, clarify field help

Model form showed API Key and Base URL fields even when a Provider was linked, though the Provider already supplies both.

@ShrihariMahabal #52 Read
fix other-apps 4 days ago

Undo of an external paste reverts only the anchor cell

Pasting a multi-row text block into a single cell worked, but undo removed only the anchor cell and left every other pasted row.

@AsifMulani1 #168 Read
feat other-apps 4 days ago

Redesign the assistant chat and tool-call UI

Sequential non-approval tool calls collapse into one line; arguments render as a compact table; approval requirement now comes from agent's tools instead of hardcoded frontend.

@ShrihariMahabal #49 Read
feat other-apps 4 days ago

Surface knowledge base descriptions to the agent in the search tool

Flow Knowledge Base `description` field now fed to the model; appends each bound KB's title and description to search_knowledge tool so agent knows what knowledge exists.

@ShrihariMahabal #54 Read
feat other-apps 4 days ago

Paste tables from external apps via the HTML clipboard flavor

Sheets can now paste structured tables from Excel Online, Google Sheets, Gameplan, or web pages; prefers HTML flavor over tab-delimited plain text.

@AsifMulani1 #139 Read
fix other-apps 4 days ago

Right align join button

fix(meet): right align join button

@BreadGenie #165 Read
feat other-apps 4 days ago

Add checkbox cells

Google-Sheets-style checkboxes in Sheets; a new data-validation rule that reuses existing validation engine and renders as canvas chips.

@AsifMulani1 #167 Read
fix other-apps 4 days ago

Delete linked flow runs when a session is deleted

Deleting a Flow Session left its Flow Runs orphaned; now cascade-deletes linked runs in `FlowSession.on_trash`.

@ShrihariMahabal #51 Read
fix other-apps 4 days ago

Commit before model call so concurrent turns don't hit lock timeout

Non-streaming chat held the request's DB transaction open across the model call, causing Flow Session row locks for the run's duration and blocking concurrent turns until lock timeout.

@ShrihariMahabal #50 Read

Saturday, June 13

ERPNext 36.6k 1 update
fix stock-manufacturing 1 month ago

ERPNext makes UOM mandatory in the Item UOM table to stop empty rows

Prevents saving empty UOM rows in the item UOM table.

@SandraFrappe #55838 Read
Frappe 10.4k 5 updates
fix framework 1 month ago

Frappe hardens its test suite with a large batch of new assertions

Adds comprehensive assertions to critical code paths to improve regression detection.

@ankush #39891 Read
feat framework 1 month ago

Frappe ships a native Python SocketIO server, cutting realtime memory use

Adds Python-based SocketIO server replacing Node.js to reduce memory usage by running under the gunicorn master process.

@tanmoysrt #39879 Read
feat framework 1 month ago

Generate preview images from HTML or URLs with bundled Chromium, no external service

Adds native preview-image generation from HTML/URLs using the framework's bundled Chromium, eliminating external service dependencies.

@surajshetty3416 #39882 Read
fix framework 1 month ago

Banker's rounding now handles negative numbers correctly

Fixes sign-blind tie-detection in Banker's rounding that caused -647.325 to incorrectly round to -647.33.

@surajshetty3416 #39576 Read
fix framework 1 month ago

Security fix: lambda expressions disabled in eval to block code injection

Disables lambda expressions in eval to prevent code injection vulnerabilities.

@ankush #39920 Read
CRM 2.9k 1 update
fix crm-sales 1 month ago

CRM annual revenue now syncs into deal value automatically

Fixes the Deals list on Contact pages to show deal_value instead of annual_revenue.

@jagadish-7 #1749 Read
b Builder 2.1k 1 update
feat ui-ux 1 month ago

Builder renders page previews via the framework's bundled Chromium

Uses the framework's bundled Chromium for page preview rendering instead of external services.

@surajshetty3416 #628 Read
o Other 1 update
feat developer-experience 1 month ago

Pick your SocketIO backend at runtime with bench socketio

Enables runtime backend selection for socketio via the bench command.

@tanmoysrt #1716 Read