Skip to content

v1.36.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 17:50
· 13 commits to master since this release

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).

The same brief on the old prompts and the new ones

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).

A failed send shows the server's message and keeps the prompt

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).

Saving a shared script as a copy for this page

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).

Script changed elsewhere prompt Unsaved edits prompt

  • 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).

Filter popover with Created by, Access and Status

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).

The whole canvas selected

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).

No Find and Replace in a version preview

New text blocks are ready to type in. A block drawn with the Text tool no longer needs a double-click first (#937).

A new text block in edit mode

Script editor on short windows. The page script editor fits the window instead of jumping when you scroll to the end (#949).

The script editor fitting a short window

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)

Performance Improvements

  • ai: stop the hidden orb, cache chat markdown, batch scrolls (faede6b)
  • sitemap: match plain redirect paths directly, build URLs from one base (ab23f9b)