| … | … | @@ -1220,10 +1220,13 @@ instance groups works unchanged (the groups have stable names). Modifiers on a p |
| 1220 | 1220 | - **personal:** copy both into `user://assets/<oid>.hasset` / `<oid>.png` and add |
| 1221 | 1221 | `{name, oid, thumb, saved}` to `user://assets/index.json`. |
| 1222 | 1222 | - Default: both. A checkbox in the save prompt. |
| 1223 | | - **Saving under a name that exists** makes a NEW oid (the content changed). Existing |
| 1224 | | placements keep their pinned oid. The browser marks a tile "N placements on an older |
| 1225 | | version" with **Update placements** (one gesture of `asset.set` on each). Never silent: |
| 1226 | | a peer's re-save must not move your level under you. |
| 1223 | - **Saving under a name that exists** makes a NEW oid (the content changed). Then |
| 1224 | (user 2026-10-19): |
| 1225 | - placements YOU made (their `asset.place` author is you) follow it: the save writes |
| 1226 | `asset.set` on each, in the save's gesture, so one Ctrl+Z undoes the save's effect; |
| 1227 | - placements OTHERS made keep their pinned oid. The browser marks the tile "N |
| 1228 | placements on an older version" with **Update placements** (one gesture of |
| 1229 | `asset.set` on each). A peer's re-save never moves your work under you. |
| 1227 | 1230 | - **Personal asset into a room:** dragging / placing one publishes it to the room first |
| 1228 | 1231 | (blob + thumbnail + catalogue entry), then places it. |
| 1229 | 1232 | - Delete from a library: the catalogue entry only (room) / the index line + files |
| … | … | @@ -1264,8 +1267,8 @@ instance groups works unchanged (the groups have stable names). Modifiers on a p |
| 1264 | 1267 | | Make Real | the placement → ordinary records | Object menu (existing key) | |
| 1265 | 1268 | | — | Update placements | browser tile menu | |
| 1266 | 1269 | |
| 1267 | | Every command gets a menu entry; none needs a new key beyond the Add menu (a key is |
| 1268 | | offered in the questions below). |
| 1270 | Every command gets a menu entry; none needs a new key beyond the Add menu (user: |
| 1271 | Save as asset is menu-only for now). |
| 1269 | 1272 | |
| 1270 | 1273 | ### 15.8 Steps (each gated, one commit each) |
| 1271 | 1274 | |
| … | … | @@ -1279,8 +1282,8 @@ offered in the questions below). |
| 1279 | 1282 | of each; a missing blob → the wire box, then the real pieces when it arrives. |
| 1280 | 1283 | 3. **Libraries + Save as asset**: room (ContentOverlay + AssetSync kind `asset`, the |
| 1281 | 1284 | extra field) and personal (user://assets). `gate_asset_library`: save → listed in |
| 1282 | | both; re-save → new oid, old placements unchanged, Update placements moves them; a |
| 1283 | | personal asset placed in a room is published first. |
| 1285 | both; re-save → new oid, YOUR placements follow (one undo restores them), OTHERS' |
| 1286 | stay until Update placements; a personal asset placed in a room is published first. |
| 1284 | 1287 | 4. **Editor**: outliner rows, selection mapping, G / R / X / Shift+D / Alt+D, Make Real. |
| 1285 | 1288 | `gate_asset_edit`: each, plus Make Real = the same digest, then ordinary editable |
| 1286 | 1289 | records (a shape param edit works on one). |
| … | … | @@ -1299,10 +1302,11 @@ offered in the questions below). |
| 1299 | 1302 | - Editing an asset in place (Blender's "edit the library file"): v1 is Make Real a copy, |
| 1300 | 1303 | edit it, Save as asset under the same name, Update placements. |
| 1301 | 1304 | |
| 1302 | | ### 15.10 Questions for the user |
| 1305 | ### 15.10 Answered (user 2026-10-19) |
| 1303 | 1306 | |
| 1304 | | 1. A key for **Save collection as asset**? (Blender's Mark as Asset has none.) |
| 1305 | | 2. Should **Update placements** after a re-save be offered per tile (as designed), or |
| 1306 | | automatic for placements YOU made and offered for others'? |
| 1307 | | 3. Drop orientation: **up = the hit normal snapped to an axis** (as designed), or always |
| 1308 | | world up? |
| 1307 | 1. **Save collection as asset**: menu entries only for now (Object menu, outliner |
| 1308 | context menu), no key. |
| 1309 | 2. **Re-save**: your own placements follow automatically; others' get Update |
| 1310 | placements (§15.4). |
| 1311 | 3. **Drop orientation**: up = the hit surface's normal snapped to the nearest world |
| 1312 | axis (floor stands, wall sticks out, ceiling hangs), as §15.5; R adjusts after. |