Next plugin version - #94
Merged
Merged
Conversation
…command instruction.
…ions and context menus.
…rom the lsl_definitions archive. Remove local config file generation.
… if no tracked files.
…sed more robustly with #98.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR advances the extension to the next plugin version by replacing the inworld object explorer TreeDataProvider with a custom webview-based explorer UI, adding workspace-local pin/restore for published objects, and introducing a generalized RPC command interface plus staged (pre-generated) language definition artifacts.
Changes:
- Replaced the inworld explorer tree view with a custom webview UI (filtering, context menus, inline create/rename, run/stop, permission icons, pin/unpin, offline pinned view).
- Added workspace-local pinned-object persistence and reconnect restoration, plus “save back to contents” support via viewer commands.
- Switched language definition consumption toward staged artifacts + autobuild-based syncing/validation, and introduced a generic
command.execute/command.listRPC surface.
Reviewed changes
Copilot reviewed 34 out of 41 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.webview.json | Adds a dedicated TS build for webview sources. |
| tsconfig.json | Excludes webview TS from the main extension compile. |
| src/webview/explorer/explorer.ts | Implements the webview-side inworld explorer UI logic. |
| src/webview/explorer/explorer.css | Styles the explorer webview (rows, icons, menus, focus). |
| src/vscode/objectpinstore.ts | Persists pinned objects in .vscode/sl-object-pins.json. |
| src/vscode/objectexplorerwebview.ts | WebviewViewProvider wiring + command handling for explorer. |
| src/vscode/objectcontentservice.ts | Adds VM-change events and local VM state mutation. |
| src/vscode/objectcontentprovider.ts | Saves content on VM changes to keep viewer compile target consistent. |
| src/vscode/objectcontentinterfaces.ts | Adds can_save_back + VM-related type definitions. |
| src/viewereditwsclient.ts | Adds command RPC types + executeCommand / listCommands. |
| src/test/suite/selene-config.test.ts | Removes tests tied to the removed legacy generators. |
| src/synchservice.ts | Keeps viewer session alive for explorer; adds command negotiation + pinned restore. |
| src/shared/seleneyamlgenerator.ts | Removes legacy Selene YAML generator implementation. |
| src/shared/luadefsinterface.ts | Removes legacy Luau defs interface model. |
| src/shared/luadefsgenerator.ts | Removes legacy Luau defs generator implementation. |
| src/shared/lslkeywords.ts | Removes legacy keyword interface definitions. |
| src/shared/languagetransformer.ts | Removes legacy definitions transformer path. |
| src/shared/languageservice.ts | Uses staged artifacts and viewer cache retrieval directly (drops repository indirection). |
| src/shared/languagerepository.ts | Removes legacy repository/caching layer for syntax defs. |
| src/shared/docsjsongenerator.ts | Removes legacy docs generator implementation. |
| src/scriptsync.ts | Updates virtual subscription to seed line mappings from loaded content. |
| src/pluginsupport.ts | Removes generator-based plugin configuration paths (uses staged/viewer-cache content). |
| src/extension.ts | Registers the explorer as a webview view provider instead of a tree view. |
| src/commandregistry.ts | Adds a simple registry for extension-side commands callable over RPC. |
| scripts/definitions-validate.js | Validates required staged definition artifacts exist and parse. |
| scripts/definitions-stage.js | Stages required definition artifacts from autobuild packages into data/. |
| scripts/copy-webview-assets.js | Copies non-TS webview assets to out/webview. |
| README.md | Documents pinned object explorer behavior. |
| package.json | Adds definition sync/validate scripts; adds webview build step; adds codicons dependency. |
| package-lock.json | Locks @vscode/codicons dependency. |
| eslint.config.mjs | Splits lint config for webview TS with its own project config. |
| doc/Message_Interfaces.md | Documents new command RPC interfaces + can_save_back. |
| autobuild.xml | Adds autobuild config for fetching lsl_definitions artifacts. |
| .vscodeignore | Excludes .autobuild/** from the extension package. |
| .gitignore | Ignores autobuild output and staged definition artifacts. |
| .github/workflows/release.yml | Ensures autobuild + definitions sync runs in release pipeline. |
| .github/workflows/ci.yml | Ensures autobuild + definitions sync runs in CI. |
Suppressed comments (2)
src/webview/explorer/explorer.ts:554
- Unescaped linked-prim metadata is inserted into the title attribute. Because this is HTML built via innerHTML, a linked prim name/description containing quotes can inject markup into the webview. Escape the title string first.
src/webview/explorer/explorer.ts:585 - Unescaped item metadata is embedded into the title attribute (label/description). Since the tree is rendered via innerHTML, a malicious description containing quotes/markup could lead to webview XSS. Escape the computed title string.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #80, #91, #93, #95, #96, #99
This is the other half of secondlife/viewer#6104