Rider/lua beta bugfix a - #6205
Merged
Merged
Conversation
…he old run state.
…that were registered as async, send back an error to the caller.
… as optional in the doc.
…apabilities, not negotiations.
Rider-Linden
requested review from
akleshchev and
marchcat
and
a lite review from Copilot
August 27, 2026 19:32
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the viewer-side JSON-RPC surfaces used by external editors (VS Code plugin / Rider/Lua workflows), adding new system endpoints, enriching command metadata, and addressing several protocol/behavior mismatches called out in the linked issues.
Changes:
- Adds/standardizes
system.*methods (ping,getVersion,status,listMethods) and updates request validation behavior for async notification misuse. - Implements and registers new viewer commands for bulk script operations (
viewer.script.reset_all,viewer.script.recompile_all) and populatescommand.listparameter descriptors. - Improves protocol payload consistency by emitting additional fields (
ObjectContentGetResponse.encoding, runtimescript_id, published objectpermissions/can_save_back).
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| indra/newview/llscripteditorws.h | Declares new system handlers and bulk script command handlers; extends command registry metadata. |
| indra/newview/llscripteditorws.cpp | Implements system endpoints, bulk script operations, command param descriptors, runtime script_id, encoding, and running preservation logic. |
| indra/newview/llpublishedobjectmgr.cpp | Adds object-level permissions emission and aligns object.publish payload with object.list (can_save_back). |
| indra/newview/llcompilequeue.cpp | Adds auto / auto-luau compile-target resolution logic for bulk recompiles. |
| indra/llcorehttp/lljsonrpcws.h | Adds method enumeration and new system.* hook points in the base JSON-RPC server. |
| indra/llcorehttp/lljsonrpcws.cpp | Changes async-notification handling to return errors, implements per-connection system.listMethods, and routes system.* to virtual handlers. |
| doc/external-editor-json-rpc.md | Updates protocol docs to system.*, documents new system calls, script_id optionality, permissions, and running semantics. |
Suppressed comments (4)
indra/newview/llscripteditorws.cpp:865
- handleObjectScriptResetAll checks script presence on the referenced prim (which may be a child) rather than on the published object root. This can incorrectly reject valid objects (child has no scripts) and/or fail to reflect the command's "reset all scripts in an object" behavior.
if (!prim->flagScripted())
{
throw LLJSONRPCConnection::InvalidParams(
"Prim contains no scripts");
}
indra/newview/llscripteditorws.cpp:871
- handleObjectScriptResetAll enforces modify permission on the referenced prim, but the operation is meant to apply to the whole object. If a child id is provided (currently allowed), this check can be wrong (pass/fail) relative to the root object being queued.
if (!prim->permModify())
{
throw LLJSONRPCConnection::ForbiddenError(
"No modify permission on prim");
}
indra/newview/llscripteditorws.cpp:885
- handleObjectScriptResetAll queues the referenced prim id, which may be a child prim and will not necessarily reset scripts for the whole published object. Since this command is "reset_all" and should operate on the object root, the queue should be seeded with root->getID().
queue->addObject(prim->getID(), prim->getID().asString());
indra/newview/llscripteditorws.cpp:898
- handleObjectScriptResetAll returns object_id as the referenced prim id. If a child id is provided (currently allowed), the response does not identify the actual object being operated on (the published root).
LLSD response;
response["success"] = true;
response["object_id"] = prim->getID();
response["queued"] = true;
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+92
to
+99
| void add_object_permissions(LLSD& object_data, LLViewerObject* object) | ||
| { | ||
| LLPermissions* permissions = | ||
| LLSelectMgr::getInstance()->findObjectPermissions(object); | ||
| if (!permissions) | ||
| { | ||
| return; | ||
| } |
akleshchev
approved these changes
Aug 27, 2026
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
marchcat
approved these changes
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Set of miscellaneous fixes for the vscode plugin and editing server.
Related Issues
Fixes #6180
Fixes #6181
Fixes #6182
Fixes #6184
Fixes #6185
Fixes #6186
Fixes #6187
Fixes #6188
Fixes #6191
Fixes #6192
object.updatedelta protocol is specified but not implemented #6183 and Two divergent compile-feedback paths should be consolidated #6189script.compiledis silently dropped when the script editor is closed #6190