What problem does it solve? Frappe Desk's default UI often lacks the custom buttons, dynamic field behavior, and interactive dialogs that real business workflows require, and writing client-side scripts without framework knowledge leads to broken events and stale UI state. ## Core Features & Use Cases - Form Scripts: Hook into form events like refresh, validate, and field changes to add custom buttons, filter Link fields, and toggle field visibility. - List View Customization: Add colored status indicators, bulk actions, and custom list behavior via frappe.listview_settings. - Dialogs and Server Calls: Build multi-field dialogs, prompts, and confirmations that call whitelisted server methods with frappe.call or frappe.xcall. - Use Case: Add a "Submit for Review" button to a custom DocType form that only appears in Draft status, calls a server-side API method, and reloads the document on success. ## Quick Start Add a custom button to the Sales Order form in Frappe Desk that calls a server method and shows a confirmation dialog.