fix(web): start a new preset blank instead of copying the default
Copying is already its own action, offered on the row being copied, so the two routes now arrive at the same editor by whichever one the author chose. **New preset** starting from some preset nobody named put a composition in the editor that the author had to recognise as unwanted before deleting it — and the preset it copied was the deployment default, which is the one least likely to be what someone reaching for "new" wanted. A blank draft has no source, so it names none and makes no read: the editor's "copied from" line and header clause appear only when there is a source.
This commit is contained in:
@@ -32,7 +32,7 @@ The row re-reads on `settings/changed` for its own namespace and on `connection/
|
||||
|
||||
A fourth surface, its own settings page (`settings.section` id `agent-presets`, ordered after Models — choosing a model is routine, composing an agent is the deployment-shaping act behind it): the roster as rows, and one composition open in a YAML editor at a time.
|
||||
|
||||
A shipped preset opens read-only. It is the known-good composition a local one is written against, so reading it is the point and overwriting it is not — the deployment's copy is what a broken local preset is compared against. Authoring therefore starts by duplicating: **New preset** copies the current default, and **Duplicate** copies any row, because a copy always lands in the local root regardless of where the text came from.
|
||||
A shipped preset opens read-only. It is the known-good composition a local one is written against, so reading it is the point and overwriting it is not — the deployment's copy is what a broken local preset is compared against. **Duplicate** copies any row, because a copy always lands in the local root regardless of where the text came from; **New preset** starts blank, since copying is already offered on the row being copied and a composition nobody named is text the author has to recognise as unwanted before deleting it.
|
||||
|
||||
An id becomes a directory name, so the editor mirrors the host's own containment rule (`[a-z0-9][a-z0-9-]*`) and refuses a name already in use — a create landing on an existing name would overwrite a preset the user never opened. Both checks are conveniences: the host re-applies them, along with the composition's shape, and its answer is what the editor reports on failure. A save that parses is still only a save; a composition naming a plugin that does not exist fails at the next session that selects it.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user