Skip to content

Rider/lua beta bugfix a - #6205

Merged
Rider-Linden merged 14 commits into
developfrom
rider/lua_beta_bugfixA
Aug 28, 2026
Merged

Rider/lua beta bugfix a#6205
Rider-Linden merged 14 commits into
developfrom
rider/lua_beta_bugfixA

Conversation

@Rider-Linden

@Rider-Linden Rider-Linden commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

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


Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 populates command.list parameter descriptors.
  • Improves protocol payload consistency by emitting additional fields (ObjectContentGetResponse.encoding, runtime script_id, published object permissions / 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 thread indra/newview/llscripteditorws.cpp
Comment thread indra/newview/llscripteditorws.cpp
Comment thread indra/newview/llpublishedobjectmgr.cpp
Comment on lines +92 to +99
void add_object_permissions(LLSD& object_data, LLViewerObject* object)
{
LLPermissions* permissions =
LLSelectMgr::getInstance()->findObjectPermissions(object);
if (!permissions)
{
return;
}
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@Rider-Linden
Rider-Linden merged commit e7980b0 into develop Aug 28, 2026
19 checks passed
@Rider-Linden
Rider-Linden deleted the rider/lua_beta_bugfixA branch August 28, 2026 17:25
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 28, 2026
@Rider-Linden
Rider-Linden restored the rider/lua_beta_bugfixA branch August 28, 2026 17:52
@Rider-Linden
Rider-Linden deleted the rider/lua_beta_bugfixA branch August 28, 2026 21:21
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.