diff options
| author | Rider Linden <rider@lindenlab.com> | 2026-09-24 08:53:49 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-24 08:53:49 -0700 |
| commit | 546782857fef92f1c745d58e30275138ee1e49f8 (patch) | |
| tree | 589e466959202356f4e22ab628edee3e6838030a /doc | |
| parent | 818c337afa685221611a1beb67ca171437c6ec1d (diff) | |
| parent | 500587a04bf3a8793e8f32fe397e0b4e469aedb4 (diff) | |
Merge pull request #6371 from secondlife/rider/fix_6367
Fixes hang on exit
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/external-editor-json-rpc.md | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/doc/external-editor-json-rpc.md b/doc/external-editor-json-rpc.md index 0c32c043fe..b62e002a33 100644 --- a/doc/external-editor-json-rpc.md +++ b/doc/external-editor-json-rpc.md @@ -1084,7 +1084,7 @@ interface LinkedObject { interface ObjectPermissions { owner: number; - next_owner: number; + next_owner?: number; // Absent until the viewer receives ObjectProperties for the prim } /** Root of a linkset, as published to the extension */ @@ -1235,19 +1235,30 @@ Sent when an explored object's inventory, properties, or linkset membership chan | ------- | ------- | | Root prim inventory changed | `object_id`, `inventory` (complete replacement array) | | Child prim inventory changed | `object_id`, `changes.linked_objects.modified[]` with `link_id` and `inventory` (complete replacement array for that child) | -| Root prim name/description changed | `object_id`, `object_name` and/or `object_description` | -| Child prim name/description changed | `object_id`, `changes.linked_objects.modified[]` with `link_id` and `link_name` and/or `link_description` | +| Root prim properties changed | `object_id`, plus any changed subset of `object_name`, `object_description`, `owner_id`, `permissions`, `can_save_back` | +| Child prim properties changed | `object_id`, `changes.linked_objects.modified[]` with `link_id` plus any changed subset of `link_name`, `link_description`, `permissions` | | Linkset membership changed | `object_id`, `linked_objects` (complete replacement array covering every child prim) | `inventory` and `linked_objects` are always complete replacements of the prior state, never increments. Linkset membership changes are coalesced behind a short flush delay, so several rapid link or unlink operations may arrive as a single update. +**Deferred permission fields.** `object.publish` is gated on inventory loading, which can finish +before the `ObjectProperties` reply arrives. Until it does the viewer derives `permissions.owner` +from the object's update flags, which describe the current agent's rights, and omits `next_owner`. +`owner_id` may be absent or the null UUID, and `can_save_back` may be `false` because it depends on +selection state. Once properties arrive the viewer sends an `object.update` carrying the full +`owner`/`next_owner` block and the real `owner_id`, so clients must merge these fields on update +rather than assuming the publish payload is final. + ```typescript interface ObjectUpdateMessage { object_id: string; object_name?: string; object_description?: string; + owner_id?: string; + permissions?: ObjectPermissions; + can_save_back?: boolean; // Full replacement inventory?: ObjectInventoryItem[]; linked_objects?: LinkedObject[]; @@ -1264,6 +1275,7 @@ interface LinkedObjectChanges { link_id: string; link_name?: string; link_description?: string; + permissions?: ObjectPermissions; inventory?: ObjectInventoryItem[]; // Complete replacement array, not a delta }[]; } |
