mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-23 02:45:38 -06:00
b953cb2597
* fix(ui): rename and delete session groups in owned dialogs The sidebar group menu was the last session surface still asking browser chrome: Rename group opened window.prompt and Delete group opened window.confirm. Both are unthemed, unvalidated and unavailable in the webviews the Control UI also ships in, where they answer silently. Rename now uses the owned input dialog, prefilled with the name it is changing and titled with it. showInputDialog gains requireChange, which holds submission closed while the entry still equals defaultValue, so the no-op rename the caller used to discard after the fact is not submittable in the first place. That replaces the caller-side "next === group" bail and puts the empty check on one predicate shared by the button state and the submit path. Delete now uses the owned danger confirm, beside the other destructive session mutations in the lazily loaded operations module, with Cancel focused and no opt-out. Its copy said the sessions move to "Ungrouped", a section id no operator ever sees; the list is labelled Sessions, so it now says they move back to the session list. Deleting a group really does keep them: session-groups clears the category on every member rather than removing anything. The confirm follows the access check so nobody is asked about a delete the Gateway would refuse, and the mutation scope is reproven once they answer. * test(ui): freeze animations in Control UI proof captures A dialog capture taken during its fade-in shows a half-transparent card over the page behind it, which proves nothing about the state it was taken for. Playwright can settle running transitions before the shot. * fix(ui): stop repeating the group name in the delete confirm The title said Delete group and the message repeated it with the name, so the operator read the same three words twice before reaching what actually happens. The title now carries the group it is about and the message is left to state the outcome. * fix(ui): keep stale group deletes retryable * fix(ui): match the stale delete notice to its sibling The retry notice led with the negation and used curly quotes the rest of this dialog family does not, so it read as a different product's copy. It now states the cause and the next step the same way newGroupStale does for the same replaced connection.