Repository navigation
v1.36.0
Bob's / commands, a skill that lets your own coding agent work in Builder, and a preview that opens in its own tab lead this release, alongside client script editing that no longer loses work or changes other pages by surprise.
Bob
/ commands for models, providers and credits. AI setup moved out of Settings and into Bob's composer. /model switches models and shows each provider's balance, /providers connects, switches or removes a provider, /chats reopens a chat on this page and /new starts a fresh one. Connecting is pick a provider, paste a key (#946).
Latest models. Setup offers Claude Sonnet 5.5, Opus 5.5 and Fable 5.1, GPT-6.1 Sol, GPT-6 Astra and Gemini 3.8 Flash, and drops the cheap tiers. On migrate, existing sites move each retired model to its successor (#927).
Pages that look less like AI made them. Bob avoids the usual tells (an eyebrow over every section, icon-card grids, gradient text, glass panels), writes lists like a menu as editable blocks instead of a data script, and asks before deleting things it didn't make (#942).
Your permissions, not more. Bob acts with the signed-in user's own permissions, DocTypes it creates no longer get Guest read, and its Python runs without network, mail or raw SQL (#940).
Steadier chats. Autosave no longer writes over Bob's edits, each Bob step is one undo step, a chat is created only when you send its first message, and a failed send puts your prompt back (#941).
Work on your site from your own coding agent
Settings > AI Agents gives you one prompt to paste into Claude Code, Codex, OpenCode or a similar agent. It installs the frappe-builder skill, connects once you click Allow, and can then pull, edit, check and publish your pages and components (#906). Agents keep components lean (#945), and assistants without a shell, like Flow's, can follow the skill too (#965).
Preview in its own tab
The preview can open in a separate browser tab. Ctrl+P switches between the editor and the preview, full screen floats a small toolbar over the page, and the preview keeps its scroll position when it reloads (#874).
Screen.Recording.2026-09-27.at.6.28.34.PM.mp4
Navbar links
A nav item can link to a page, a section on the same page or an external URL. Link To lists your pages, Scroll To lists the IDs on the page, and section links can scroll smoothly (#944).
Recording.926716894.mp4
Client scripts
Shared scripts ask first. Saving a script that other pages also use now asks whether to update every page or save a copy for this page only. Before, a draft page's edit could quietly change live pages (#936).
No more lost edits. Text typed during a save stays, a save from an older tab asks before overwriting a newer one, switching scripts asks before discarding edits, and a new order shows on the live page right away (#938).
- Copied pages give their scripts one short fresh name instead of piling up hashes (#933)
- Opening a Builder Client Script in Desk no longer throws an error (#934)
Dashboard filters
Status and Sort are now a compact Filter popover and Sort menu, with new filters for Created by, Access (public or protected) and Unpublished changes (#947).
Editor
Save a version with Cmd/Ctrl+S. Pages autosave, so Cmd/Ctrl+S used to do nothing. It now saves a version you can go back to (#931), and works from property inputs instead of opening the browser's Save As dialog (#968).
Screen.Recording.2026-10-05.at.12.26.14.PM.mp4
Handles follow the active state. With a state like hover selected, dragging canvas handles (resize, spacing, radius, rotation, moving) edits that state's styles (#684).
variant-preview-demo.mp4
Edit from More Styles. Searching More Styles for a property that already has a control shows Edit, which takes you to that control (#914).
Screen.Recording.2026-09-29.at.2.25.21.PM.mp4
Select all. Cmd/Ctrl+A selects the whole canvas instead of highlighting the editor's labels (#948).
Sitemap
sitemap.xml lists only the Builder pages search engines should index. Noindex, login-only, redirecting and 404 pages are left out, the home page sits at /, and lastmod uses the publish date (#928, #929).
Fixes
Find and Replace while previewing a version. Replace could change blocks during a version preview. It is now hidden there (#919, #922).
New text blocks are ready to type in. A block drawn with the Text tool no longer needs a double-click first (#937).
Script editor on short windows. The page script editor fits the window instead of jumping when you scroll to the end (#949).
Back to Home in the preview. On a 404 inside the preview, Back to Home goes back instead of loading Builder inside the preview (#950).
Recording.2026-10-09.222218.mp4
- Pasting a page with several images keeps all of them (#939)
- Undo and redo keep working after an error inside a grouped change (#918)
- Bob's live updates reach the editor on benches served on a custom port (#969)
- Number props show one Default Value input, the shadow control no longer errors on click, and standard tokens are written to the app only in developer mode (#964)
Upgrading
- Builder now needs Frappe 16.36.1 or newer. Sites on Frappe v15 stay on v1.35 (#963).
- Run
bench migrate. It moves AI models to the new list, removes empty Bob chats and applies Bob's permission changes. Website Managers can no longer create DocTypes through Bob (#927, #940, #941).
Full generated changelog
Bug Fixes
- activate the state a number arrow steps (e3545e8)
- ai: a finished sign-in closes only its own menu (df1105d)
- ai: address the second review (7d31af1)
- ai: answer run_python value, exists and count reads per record (2a5dec4)
- ai: apply Bob's edits to the page canvas without autosaving them back (f1793a4)
- ai: apply confirmed actions with the confirming user's own permissions (9dfb24b)
- ai: bind a blank chat only to the session its own send created (45d250c)
- ai: check data script names in code only, and say get_all ignores the viewer (b69ed39)
- ai: check form and DocType permissions only for what an action creates (a816aaf)
- ai: commit a confirm's claim before its action runs (c764e3e)
- ai: create Bob's DocTypes without Guest read (b835976)
- ai: create chat sessions on the first message, not on editor load (cdd3bcf)
- ai: decide each pending action once under a row lock (ffff83b)
- ai: decline confirm cards the user couldn't apply (31f5415)
- ai: deleting a provider takes its models along (f7f288b)
- ai: disable provider Test until an edited base URL is saved (aa8f7ba)
- ai: draw menu rows the way frappe-ui's Dropdown does (abbb0a3)
- ai: drop an autosave queued before one of Bob's server edits (1b6d46e)
- ai: hold provider Import, and a Test clicked straight from the field, until the base URL is saved (29ff6ae)
- ai: keep a draft that only starts with a slash (6446527)
- ai: keep a resume failure from rolling back an applied action (3e4d073)
- ai: keep Bob's panel wide enough, and no flash on send (8202d4d)
- ai: keep stale timers and other chats out of the running turn (195fe36)
- ai: keep the Code tab on the row being edited when typing races a reload (2c95629)
- ai: leave the saving flag to a save still in flight (a5e4d86)
- ai: lend the Builder Settings key only to OpenRouter providers (cd1da3f)
- ai: let a failed action be applied again, and skip resuming without a key (0170aec)
- ai: limit update_script to scripts attached to the open page (297f967)
- ai: limit Website Managers to their own Bob chats (0ab68ed)
- ai: make run_python list reads always return rows, drop file-reading utils (ddcf4b5)
- ai: match the composer to Espresso's input, tidy the settings nav (7225618)
- ai: mute the composer placeholder, line up the provider switch (5448085)
- ai: point failed turns at / commands, keep the composer whole while busy (64280d5)
- ai: queue the gateway sync after the request commits (465bbf4)
- ai: record a new chat's early canvas edits once its session is known (c222a5c)
- ai: refuse a page data script that doesn't parse (78e406e)
- ai: reload the Code tab once unsaved script edits are saved or discarded (eb4b465)
- ai: reload the Code tab when Bob changes page scripts (edbc272)
- ai: require Builder Page write for improve_prompt (bbcf7f1)
- ai: resolve the API key inside the agent job, not in its kwargs (dcf2be0)
- ai: run jobs queued before the key moved out of their arguments (e77d831)
- ai: run run_python on the render-safe namespace with user-scoped reads (60b49d3)
- ai: show server error text and test the key being typed (d9cb425)
- ai: show the send shortcut and fold token steps into one row (44fde96)
- ai: show the server's message when AI setup fails (4012aa0)
- ai: sync gateways side by side, share the key with credits (d6076f3)
- ai: write page data scripts that run with server scripts disabled (1fc5e23)
- analytics: snapshot every row without sorting (7d6d425)
- avoid stale preview refreshes (af10403)
- cancel a drag on the state the drag wrote to (1559bc4)
- dashboard: let Escape close menus on the dashboard (2d2c211)
- dashboard: wrap the page list header on narrow screens (12066f3)
- deps: bump litellm to 1.95.1 (8ec0663)
- do not save the page before a version save (02c341c)
- docker: start the dev bench on frappe version-16 (cffb247)
- drop the scroll script (61bcd54)
- drop the stale Builder Component connection on client scripts (c2a5edb)
- editor: keep canvas history tracking resumed if a batched change throws (76aa03c)
- end the state preview on a real focus loss (47daa4c)
- end the state preview when Escape closes a menu or popover (899f1b5)
- end the state preview when the canvas is used (b7a41f3)
- end the state preview when the popover closes on a click away (6c323f4)
- fall back when the server message is empty after stripping tags (c196018)
- focus the owning control from More Styles Edit (173c24f)
- give copied client scripts a fresh hash instead of appending one (574c40b)
- Give every pasted image its own file name (4bc4260)
- hide find & replace in read-only mode (1214dc0)
- ignore Cmd/Ctrl+S while a quick save is running (4e8c5c1)
- keep a block with margins in place when it is moved or resized (8bbaedb)
- keep buttons, inputs and links in the Tab order after a smooth link focuses them (93fc08d)
- keep image styles off the image URL control (506e72a)
- keep install and analytics working when Web Page View lives in SQLite (1a1941a)
- keep newly drawn text block in edit mode (7a533da)
- keep resized client script editor within the viewport (da2d8c3)
- keep the focused field while dragging a canvas handle (4313685)
- keep the property search bar above autocomplete options (47e2b1d)
- keep the state active while its label drags (ac57ae6)
- keep the state preview when a swatch reopens its popover (e249d22)
- keep the state previewed while its popover is open (0dec3b4)
- keep the user's script selection and typing when a reload lands late (4b680cb)
- leave a model alone when the site switched its successor off (fc3f55b)
- let Ctrl/Cmd+S save from property inputs instead of opening browser Save As (cbefedf)
- let escape reach a drag from a focused control (bc0ffa3)
- make client script editing reliable (a4487b2)
- make the unchanged check atomic on the server (50a15b6)
- minor ui changes (4f20eec)
- move keyboard focus to the section a smooth link scrolls to (9c82e15)
- only repoint the page that saved the copy (e1d6659)
- prevent find & replace in read-only mode (9133d0c)
- preview state styles during canvas drags (4f80dc6)
- preview: center the fullscreen toolbar at the top on first show (bdfe655)
- preview: disable publish until the active page loads (7437a38)
- preview: drop the timeout before the iframe overlay clears (9697912)
- preview: keep ctrl+P working after a click in the iframe (e9afa22)
- preview: keep one detached preview tab per editor tab (fa78936)
- preview: keep the detached preview linked after an editor reload (63ecf50)
- preview: keep the detached preview's window name (f922106)
- preview: keep the publish button in step across tabs (368a8ad)
- preview: let the editor load its canvas when it has none (23f6d8e)
- preview: load the canvas when a stand-alone preview opens the editor (63b6d66)
- preview: load the editor canvas on back after a refresh (7cc4fa9)
- preview: load the page when the preview opens on its own (1c15751)
- preview: name the tab when a stand-alone preview becomes the editor (7aacb6c)
- preview: open a new detached tab when the old one left this origin (183b8d0)
- preview: remove the view transition from the dark mode toggle (4983b5f)
- preview: scope detached tab names per page and keep preview open on blocked popup (0c7d5dd)
- preview: unsubscribe a stand-alone preview on its own (273a0df)
- props: drop the duplicate Default Value input from number options (390954c)
- put the server's script order back when a reorder fails (6e3d3b2)
- read drag start values through the default unit (ca33bc2)
- realtime: connect the socket on the page's own origin (e6a8086)
- remove cssUtils tests (a927469)
- require the frappe release that ships @framework/ui telemetry (9b3d6fb), closes #952
- save the script that was edited and keep the page's links in step (4e5a144)
- save the value still being typed in an input when pressing Ctrl/Cmd+S (e0e3ec3)
- scroll to the section on every navbar click (a2ba2a4)
- select the entire canvas on Ctrl/Cmd+A (1746e91)
- settings: a compact, autosaving robots.txt editor (50e2172)
- settings: show the agent prompt as prose with code spans (91747ae)
- show a value that the autocomplete gets from outside (8f92821)
- show Go Back on the 404 inside the preview instead of overriding its home link (b117cc7)
- sitemap: judge shared routes by the served page, render canonical templates (00b14aa)
- sitemap: keep pages with a templated canonical listed, without rendering it (27a7a7d)
- sitemap: list only indexable Builder Pages, the home page at the site root (1ff14f0)
- sitemap: skip routes that redirect, trim whitespace from page routes (1c7ba92)
- skill: act on the independent review (5b43cae)
- skill: copy downloads every file before writing anything (6146bd0)
- skill: copy refuses others' drafts and unresolved assets (81affbf)
- skill: count only real prop reads in scripts (1acaa10)
- skill: keep components lean, edit instance content in place (f485130)
- skill: keep create out of the source folder, lint duplicate block ids (aa0a6ce)
- skill: props only for what the editor can't edit or a script needs (7459917)
- skill: reuse fonts the target has; warn on skeletons lint can't check (913638e)
- skill: satisfy semgrep rules in builder.py (0aebec9)
- stop 404 Back to Home from opening Builder in the preview (b4a7afa)
- stop page client script modal from shifting on scroll (847684e)
- stop the shadow control click handler from throwing (45fc8b2)
- tokens: export standard tokens only in developer mode (c9cf2f1)
- types: clear the remaining editor type errors (598c48f)
- types: repair the global type declarations (7d8fa29)
- version the page where Cmd/Ctrl+S was pressed, after a confirmed save (8dc023a)
Features
- add frappe-builder agent skill (9dafed7)
- ai: build authored lists as editable blocks, not data scripts (2033c3b)
- ai: move AI settings into Bob's / commands (ca77524)
- ai: move saved models on existing sites to their successors (bdd53f8)
- ai: offer the latest models in AI setup, drop the cheap tiers (f65c3f4)
- ai: pick up the models a gateway adds or retires (61b990d)
- ai: show the balance a gateway reports next to its provider (67cba29)
- ai: split progress bar for the AI setup steps (654178c)
- ask before saving a client script shared by other pages (8c926d9)
- dashboard: compact Filter and Sort, with Created by, Access and Unpublished changes filters (c4e6fd7)
- focus the field of the state the canvas previews (7103968)
- make navbar items link to pages, sections or external URLs (eaf0877)
- name quick saves with a timestamp and queue them (d11ef89)
- preview: detach the preview into its own tab (d959413)
- preview: keep the scroll position and share the toolbar actions (9606cc0)
- preview: return to the editor with ctrl+P (a442afe)
- save a version with Cmd/Ctrl+S (edc0051)
- settings: connect an agent with one prompt (5a4aa3c)
- settings: guide to connect a coding agent (f42e79d)
- show Edit for properties that have a control in More Styles (77bd521)
- show one toast that changes from Saving to the result (624d719)
- skill: components, verified traps and a leaner frappe-builder skill (fd931e0)
- skill: one-command connect, page copy and safer push (1b8e728)
- skip Cmd/Ctrl+S version when nothing changed (587e004)
- skip unchanged versions for every save (e05c962)





