* claim: #8517
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* web: editing embed for host pages (?embed=editor, #8517)
A host page that keeps the files itself and frames SolidCraft for modelling needs
the modelling UI without the application chrome. `?embed=editor` runs the web app
as such an embed:
- no application bar (logo, File menu, document tabs, update, help, report a bug)
and no start page; the layout is docked;
- the ribbon, browser, timeline and properties stay; Ctrl+Z and Ctrl+Y still undo
and redo;
- Ctrl+N, Ctrl+O, Ctrl+S, Ctrl+W and Ctrl+, are left to the host;
- nothing is kept in the browser (no stored designs, autosave, recovery prompt,
preferences or leave-page prompt), as with the existing viewer embed.
The existing `?embed&open=` viewer embed is unchanged. SolveApp gets one flag,
`embed_editor`, for desktop and test hosts too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* control: document.export / document.import / document.saved for a host (#8517)
An editing embed's host keeps the design itself. Three control methods
(window.solidcraft.request in the browser; the desktop control channel too; not
the agent chat's, whose method list is unchanged):
- `document.export` -> {name, revision, dirty, format: "json", text}: the active
design as a `.json` design file holds it. `revision` is the one
`document.revision` answers, so a host that follows the design compares one number.
- `document.import {text, name?}`: replaces the active design with that text,
timeline and parameters as saved, opened saved with a new `document_id`. It runs
as a design opened in a tab of its own, with the old tab closed without asking,
so whatever was open in the old design leaves with it. A text that does not read
leaves the design as it was. Waits behind a file loading or a design change, as
commands do, and evaluates on the window thread.
- `document.saved {revision}`: the host saved that revision; refused when the
design has changed since.
They are control methods, not commands: they act on the app's open design. The
browser API test gets a round trip through all three.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: aduijs <7501203+aduijs@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #5227
* Web: leave Ctrl+Tab and Ctrl+Shift+Tab to the browser (#5227)
eframe cancels the default action of every Tab keydown on its canvas
(egui moves focus with Tab), so browsers that let a page cancel their
shortcuts, such as Vivaldi, could not switch tabs while SolidCraft had
the keyboard. A capture listener on the window now stops Ctrl+Tab and
Ctrl+Shift+Tab before they reach the canvas, without cancelling them,
so the browser acts on them as usual. Plain Tab and Shift+Tab still
move between the app's fields. Desktop builds are unchanged.
web-api-test checks it in headless Chrome: Ctrl+Tab and Ctrl+Shift+Tab
keydowns are not cancelled, Tab still is.
---------
Co-authored-by: MateuszSychXpl <151755914+MateuszSychXpl@users.noreply.github.com>