Stage-10 editor-UX follow-up, second half of in-editor script authoring:
- "✏ Edit" button on the Script inspector section (enabled once a
source is assigned) and double-click on any script in the Project
panel open the .rhai in the user's editor. Non-script assets
double-click through xdg-open.
- Resolution order: the new External Editor preference command (spawned
detached as `<command> <file>`, flags allowed), else $VISUAL/$EDITOR
in a new Terminal-panel tab (TUI editors work in-editor via the
existing PTY widget), else xdg-open.
- New `editor.external_editor` settings section (ExternalEditorPrefs)
registered by EditorState, persisted with the preferences file, with
a rich row in the Preferences window; registration covered by a unit
test. Editor crate now depends on serde directly for its own
sections.
Saved edits flow back through the file watcher's live reload, including
into a playing scene. GUI piece — needs an eye-check before promotion.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Stage-10 editor-UX follow-up. The Script component's inspector section
now ends with a name field + "➕ New Script" button (Enter in the field
also submits): it writes a fresh .rhai from the tested template into
assets/scripts/ via create_script_file (sanitized stem, collisions
suffixed), registers it in the asset database, saves the manifest, and
assigns it to the component's `source` through the normal edit path —
so the assignment is one undoable SetFieldCmd. Disabled with a hint
while no project is open; failures land in the Console via the log.
GUI piece — needs an eye-check before promotion to main.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Groundwork for the Stage-10 editor-UX batch (file explorer, New Script
button), all pure logic proven by unit tests:
- `AssetDatabase::move_asset` / `move_folder` / `delete_asset`: perform
the disk operation and the uid-map update together, so renaming or
moving an asset (or a whole folder) keeps its uid and every saved
`AssetRef` resolving. Kinds re-classify from the new path; `..` and
existing destinations are refused via the new `AssetDbError` enum;
deleted uids are never reused.
- Editor `assets.rs`: `script_template` (compiles under the sandboxed
ScriptEngine — covered by a test), `sanitize_script_stem`, and
`create_script_file` which writes a collision-free
`assets/scripts/<stem>.rhai` and returns the relative path for
database registration.
- docs/assets.md: new "File operations" section + the missing Script
row in the typed-folder table.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Full project snapshot migrated to new Gitea remote without history:
engine, editor, physics, script, examples, tests, docs, and assets.
Relicensed from GPLv3 to MIT and updated repo URLs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>