Editor guide

When Desde says no

What a refusal means, why it happens, and what to try instead: the short version of every case you're likely to hit.

Most edits in Desde write straight into your source file, with no AI involved. That is what makes them instant and exact. It also means there is a line around what can be done that way. When a change falls outside it, Desde stops rather than guess, and tells you why.

You will see a refusal as a toast in the bottom-left corner, and sometimes as a Save failed dialog with the full reason.

How to read a refusal#

Three questions, in order:

  1. Is it asking you to be more specific? ("matches multiple elements", "needs a scope choice") Pick a narrower target and try again.
  2. Is it warning you the obvious change would quietly be wrong? ("would stop being conditional", "affects every row") Read it. It is showing you something you could not see on screen.
  3. Is it saying the change belongs somewhere else? (a library, another file) That is not a bug. The change has a correct home, and this is not it.

In every case, chat is the way through. Ask there, and the AI can read across your files and make the change a direct edit cannot.

Not a refusal: some changes go to the AI automatically#

A setting written as a formula, or a two-way-bound field, cannot be changed by a direct edit at all. Desde queues it and hands it to the AI without asking. You will see Apply N with AI in the top bar, or the chat tab opening with your change already described. This is normal, not a failure. See Making changes.

Changing text#

"Change the text on this item or all items?" You edited text on one card in a repeated list. Choose This item or All items. Desde can only change one item's text when it is a plain value straight from that item's data.

"Iteration edit refused." The text you edited is computed, nested inside another value, or wrapped in other content, so Desde cannot find one field to change for a single item. Choose All items, or ask chat to change one entry's data directly.

"Iteration edit refused" (a list's data, not its text). The list this item comes from is not simple data sitting nearby: it is a nested path, or it comes from another file. Ask chat, which can trace where the data actually lives.

Changing a setting#

"The class/style is dynamically composed, so adjust it via chat." The style or class is built from a small formula rather than written plainly. Ask chat.

"The clicked element's selector matches multiple elements..." You selected part of a design-system component, and Desde could not tell which part you meant. Design-system components ship with a manifest: a map the component's own author records, from "this setting" to "this part of what you see." When the map does not point at one clear answer, Desde refuses rather than guess. Select something more specific, or ask chat.

"No rendering hint matched the clicked element..." You clicked something the component draws internally, which none of your settings control. There is nothing in your project to change here.

Marked uneditable on purpose. Some parts of a design-system component (an icon it owns, a structural wrapper) are marked off-limits by the component's own author. The reason is shown with the refusal.

"Cannot save: N edits still need a scope choice." Two of your changes landed on the same repeated item in different ways, and Desde needs to know which one you meant before it can save either. Resolve the dialog, or dismiss it to discard those edits.

Style: a color or spacing value from a library#

"Can't edit this token: it's defined in <package>." A token is a named value, like a color or a spacing size, that a design system defines once and reuses everywhere. When it is defined inside a library your project installed, Desde will not change it there. The next install would silently undo you, and nobody reviewing your work would ever see the change. Set your own value in one of your project's own stylesheets instead. Yours will win.

Moving, adding and deleting#

Moving something into another file. The element you are dragging likely depends on data or logic that only exists where it started. Ask chat to move it and wire it up, or move it in your code editor.

Dragging one card out of a repeated row. Dragging normally moves the one template that produces every card in the row, not just the one you grabbed. Use the Structure tree instead: it asks which you mean before doing anything.

Dropping something into a repeating container. The same problem in reverse: it would add your new element to every repeat, not just one. Drop it outside the repeat, or ask chat to add it to the underlying list instead.

Dropping onto or dragging something Desde cannot place. The element was not authored in your project (it comes from a library, or from a part of the page Desde does not tag), so there is no known spot in your files to write to. Select the nearest element that does belong to your project, or ask chat.

Dropping something into itself. Not possible: it would need to contain itself.

Moving something out of a condition or a loop you cannot see. Some things on screen are wrapped in an invisible condition or repeat: nothing about how they look tells you that. Moving the thing itself out of that wrapper would quietly drop the condition, so it would start showing all the time, or stop repeating, with no warning anywhere. Move the whole wrapped block instead, or ask chat.

Deleting the last thing on a page. A page cannot be left with nothing on it.

Removing a wrapper but keeping what's inside (Unwrap). This does not work on an element with nothing inside it, or one that carries a condition or a repeat (use Flatten conditional instead, or delete it). It also does not work on the single top-level element of a component.

Adding more than one thing at once. An insert has to be a single element. Wrap several new things in one parent first.

Moving something written in a mixed code block. A few projects write markup two different ways in the same file. Desde can edit, delete and add inside either, but it cannot move something from one to the other. Move it in your code editor.

Moving a whole if/else chain as one unit. Supported on one of the two frameworks Desde edits so far, not the other yet.

Good to know#

  • Some refusals are just Desde protecting itself, not you. If the page has changed since you clicked, if a file changed underneath Desde while it was writing, or if the result would not be valid code, Desde refuses and leaves your file untouched rather than risk a bad write. Re-select the element and try again.
  • If Desde cannot write its backup copy first, it changes nothing. Every write copies the file's previous contents to a backup first. If that copy fails, the edit does not happen, and Desde tells you so rather than risk a change you cannot take back.
  • A change that would not actually change the file is skipped. If the result would be byte-for-byte identical to what was already there, Desde does not report it as saved.
  • Desde edits Vue 3 and React projects. Astro is supported too, in a more limited way; see Attach mode. Vue 2 is refused, and is not on the roadmap. Other frameworks are not supported either.
  • Desde is for one person on one machine at a time. To share work, use git, or use the Viewer for comments.
  • The canvas and screenshot-plan tools are off by default.
  • Detach, Swap and the icon picker are off by default too. lanes.detach and lanes.swap turn them back on. See Select and inspect for what they do, and editor configuration for where those settings go.
  • There is no install from npm. See Editor on your Mac for the ways to run Desde today.

Next#