π What's New: Roblox VSCode v2.0.0
π How to Get It & See What's New
- VS Code extension: grab
roblox-vscode-2.0.0.vsix from the v2.0.0 release (or the Download page), then in VS Code open the Extensions panel β Β·Β·Β· menu β Install from VSIX... and pick the file. It installs over the old version automatically β no need to uninstall first.
- Studio plugin: the Creator Store auto-updates it for you, so if Studio was closed you likely already have it next time you open it. If not (or if Studio was open during the update), reinstall from the Creator Store listing and restart Studio.
- See exactly what changed, right inside Studio: open the plugin panel β More βΎ β What's New. It always shows the notes for whichever version you're currently running, so you can check it any time without leaving Studio.
Added
- GitHub repo integration for Teams. From Studio's Teams tab (owner-only), link your project to a real GitHub repo, push the synced files there with one click, and grant teammates real GitHub collaborator access by entering their GitHub username β a real invite goes out via GitHub's own API, not just an in-app permission. One repo per project, shared across every team member's bridge regardless of which machine connects. See π How to Link a GitHub Repo below for the full walkthrough.
- Roblox account verification is now actually real. The "Connect Roblox Account" flow was quietly unverifiable before (it redirected to Roblox's real OAuth screen, but the site had no backend that could ever complete the token exchange, so it silently fell back to trusting whatever username someone typed and labeled it "Verified" anyway). Replaced with a profile-code ownership check: paste a one-time code into your Roblox profile's About section, we confirm it against Roblox's own public API. The "Verified" badge on the site now means something.
Fixed
- A real Studio crash, and reconnecting afterward doing nothing. The full project tree walk (on Connect, and on every automatic reconnect) ran with zero yields β on a large project this could run long enough to hit Studio's script execution-time limit, which force-kills the thread mid-work. That skips straight past the line that frees up the Connect button for next time, permanently freezing it β so "reconnecting crashes it again" was really "the button silently stopped working after the first crash." Fixed both: the tree walk now yields periodically, and both reconnect paths are pcall-wrapped with a guaranteed reset regardless of what happens.
- Every custom icon in the plugin was invisible, including the main Studio toolbar button β all 7 icon asset IDs turned out to not be real uploaded images. Replaced with emoji everywhere; no Roblox upload/moderation needed.
- The Connect button always said "Ensure Server is running" even when the real problem was a wrong or expired pairing code. Now reads the actual server response and says so specifically (wrong/expired code, rate-limited after too many attempts, etc.) instead of sending you toward the wrong fix.
- Copy-to-clipboard links had no fallback when
setclipboard was blocked or unavailable β previously just logged the URL to the Output window for manual copy-paste. Now swaps in a real selected text field so Ctrl+C works regardless.
- The auto-generated AI coding-guidelines file (Ctrl+Alt+G) was named
.cursorules (missing a letter) β Cursor's actual convention is .cursorrules, so it was silently never picked up by the one tool it was made for. Also corrected a stale claim in its content ("VS Code always wins conflicts" β hasn't been true since the interactive conflict picker was built).
Changed
- Live usage stats on the homepage and the Roblox-verification flow above no longer depend on Firebase Cloud Functions (which require a paid billing plan for any function that calls an external API) β moved to reading the Realtime Database directly and a Cloudflare Worker (free tier) respectively.
π How to Link a GitHub Repo
New in v2.0.0: a Team can push its synced project straight to a real GitHub repo, and the owner can grant teammates real collaborator access β all from Studio's Teams tab. This only works for a project that already has a Team (see the Teams tab if you haven't created one yet), and only the team owner sees these controls.
- Create the repo on GitHub first. Roblox VSCode links an existing repo β it doesn't create one for you yet. Make an empty (or existing) repo on github.com under your account or org.
- Link it from Studio. Open the plugin panel β Teams tab β π GitHub Integration card (owner-only). Type the repo as
owner/repo (e.g. someuser/my-roblox-game) and click Link. Only one repo can ever be linked per project β if you need to change it, unlink first.
- Push your project. Click π Push Project to GitHub. This sends the request to your running VS Code bridge, which does the actual work: on the very first push, VS Code will ask you to sign in with GitHub (its own built-in sign-in β no separate account or token to manage). Every push after that creates one real commit on the linked repo's default branch containing your current synced files.
- Grant a teammate access. Still in the GitHub Integration card, type their GitHub username (not their Roblox username) and click Grant. This is recorded as "pending" immediately; the next time the owner's VS Code is running and connected, it sends a real GitHub collaborator invite via GitHub's API, and the status updates to "β
invited" (or "β οΈ failed" if GitHub rejects it β e.g. the signed-in GitHub account isn't actually an admin on that repo). Your teammate gets a normal GitHub invite notification/email and accepts it on github.com like any other repo invite.
- Unlinking. The same card has an "Unlink Repo" button (click twice to confirm) if you ever need to point the project at a different repo.
Note: pushing and inviting collaborators both require the team owner's VS Code to actually be running and connected β Studio's plugin only ever reads/writes the shared record in Firebase, the GitHub API calls themselves always happen from VS Code.
π Previous Release: v1.0.2
Added
- Folders now sync both ways β creating or deleting even an empty folder in either VS Code or Studio is reflected on the other side. Previously a folder's existence was purely incidental to the files inside it.
- New Team tools β see when a teammate's plugin was last actually seen connecting, rename your team, or disband it entirely (owner-only, click-twice-to-confirm).
Fixed
- Pushing an updated GUI from VS Code could leave a duplicate behind in Studio instead of updating it in place β the GUI import path was missing the same cache bookkeeping every other apply path already had, which is what stops a just-applied change from being seen as "new" and echoed right back.
- Deletes and renames only ever covered scripts, Studio β VS Code β a folder or GUI deleted or renamed directly in Studio had no way to reach VS Code at all. Now handled the same way scripts already were.
- A real "Out of local registers" crash some users hit on load, from the What's New tab added in 1.0.1 pushing the Studio plugin's script past Luau's 200-local ceiling.
- Conflict diffs could look far noisier than the real change β a line-ending mismatch between a local CRLF file and Studio's LF content made every line show as changed even when nothing meaningful differed. Now normalized to match the local file.
- The Studio plugin's Tutorial tab skipped the pairing code and "Allow HTTP Requests" β the two things people actually get stuck on. Rewritten from 3 steps to 5 accurate ones; the website's matching section was fixed the same way.
π Previous Release: v1.0.1
Added
- GUI edits made directly in Studio now sync to VS Code as
.rbxmx files β previously only VS Code β Studio worked; a GUI built or changed straight in Studio had no way to reach VS Code at all.
- A new "What's New" tab in the Studio plugin, so you can see what changed without leaving Studio.
Fixed
- Pushing from both sides in quick succession could silently override the other's edit, in either direction. Both the conflict-detection baseline and Studio's own Push now correctly catch a genuine clash instead of one side quietly discarding the other.
- Cross-side content hashes rarely actually matched, due to a floating-point precision bug in the Studio plugin's hashing β a very plausible root cause behind conflicts that shouldn't have been flagged. Fixed.
- Renaming a script in Studio could leave a duplicate behind or lose the file.
- Two instances sharing a name (Roblox's own default for a new script/folder) no longer silently overwrite each other's synced file, on either sync direction.
- A path-traversal gap in project setup, hardened.
- Deleting a script in Studio and pressing "Push to VS Code" did nothing β deletions now sync correctly.
- A pending conflict could get silently stomped by a manual Push, and a conflict that resolved itself before you picked a side used to leave a stale prompt behind β both fixed.
- The conflict diff view's "Studio" side showed a cryptic temp file path. Replaced with a clear "VS Code (left) β Studio (right)" label.
- A second open VS Code window's dashboard always showed an empty/disconnected state, even while sync was working fine elsewhere.
- Push / Force Sync could fail or hang for a full 2 minutes on a machine missing a VS Code internal component β sync no longer depends on it.
π Previous Release: v1.0.0
We're out of Alpha! This release comes from actually testing the full push/pull/conflict workflow end-to-end for the first time and fixing what that turned up, plus a full visual redesign of the Studio plugin, the extension, and the website into one shared "Studio Light" cream/tan look.
π What's New in v1.0.0
- Studio Light redesign β the Studio plugin, all three VS Code panels, and the website now share one pastel palette, with a restructured tab bar (Main/Teams up front, everything else behind "More βΎ") and a Credits page.
- Roblox OAuth sign-in for a verified Teams identity instead of typing your username by hand β approved by Roblox and live.
- A Conflicts tab in the Studio plugin β a real line-by-line diff of exactly what a sync conflict overwrote, with a heads-up banner, so it's not just a VS Code-side notification.
- "Show Team Members" command /
Ctrl+Alt+T to see everyone on the current project's team without opening the full dashboard.
- Smarter Teams β ownership now transfers automatically if the owner leaves, owners can remove members, and joining a team no longer gets blocked by a stale membership record left over from a different project.
π οΈ What We Fixed
- Conflict resolution used to loop forever. Answering the "which version do you want" prompt didn't actually end it β the exact same prompt reopened on the next check, indefinitely, and the version you picked often never got delivered. Now answering it actually resolves it.
- "Keep Studio Version" used to silently do nothing. Studio was already overwriting the file with the VS Code version before you got a chance to choose, so asking to keep the Studio version just handed back the VS Code version in disguise. Studio now preserves your edit before that happens.
- Scripts needed to be closed and reopened to show a synced update. An already-open Script Editor tab wasn't refreshing on its own. Fixed by writing through the proper Studio API instead of a raw property write.
- A push could get permanently stuck. If delivery failed, the file looked "already synced" to every future push attempt β the only fix was editing it again. Now a failed delivery is retried automatically.
- Two never-saved places could silently overwrite each other's synced files. Each unsaved place now gets its own stable identity.
- A real crash the first time a conflict occurred (and a related permanent "stuck processing" state for that file afterward) β both fixed.
- Admins locked out of the admin panel if their role was ever stored with different capitalization. Now it's checked case-insensitively everywhere.
π Previous Release: v0.11.0-Alpha
This update was about trust and control over your sync sessions: conflicts get a real resolution flow instead of a silent coin-flip, failures tell you why, and you get direct control over what syncs and how projects/code move between games.
π Project Links
π Detailed Overview
1. Conflict Resolution UI
Previously, if a file changed in both VS Code and Studio since the last sync, VS Code's version silently won. Now the conflicting change is held back and you're prompted to Compare & Choose, Keep VS Code Version, or Keep Studio Version β with a real diff view before you decide. Anytime a conflict is dismissed, revisit it with "Roblox Sync: Resolve Sync Conflicts".
2. Switch Active Project
Juggling multiple games no longer means restarting the bridge. "Roblox Sync: Switch Active Project" redirects the running server at a different previously-synced project (or a folder you browse to), with a warning if Studio looks like it's actively syncing right now.
3. Selective Sync
"Roblox Sync: Manage Selective Sync (Exclude Rules)" gives you a checkbox picker over your project's folders (plus custom patterns) instead of hand-editing ignorePatterns in settings.json.
4. Shared Library β Reuse Code Across Games
Export any script or folder to a local Shared Library (via the command palette or right-click in the Explorer), then import it into any other project with "Import from Shared Library." No more copy-pasting between VS Code windows.
5. Failures Now Say Why
When Studio can't apply a file β an unknown root folder, a class-creation error, a bad model import, the wrong instance type β the activity log used to just say "β Failed: file". It now includes the actual reason, that reason is reported back to VS Code's dashboard, and a file that's permanently given up on after repeated failures gets one clear final message instead of silently vanishing from the queue.
6. A Proper First-Time Setup Check
Installing just the Studio plugin without the VS Code extension used to mean your first "Connect" attempt failed with a bare "Connection Error" and no clue why. The plugin now shows a one-time welcome popup on first launch asking whether you already have the VS Code extension β with a copyable download link if you don't.
7. Teams
A new Teams tab in the Studio plugin. Create a team for the project you're working on (one team per project) and add your collaborators by Roblox username β or join one that already exists. Every person still runs their own local VS CodeβStudio bridge (there's no shared live session), but Teams adds a shared roster and a "who did what" activity feed on top of that, so you can see who pushed or pulled which file and when. Identity is a self-reported Roblox username (the same trust model the support ticket system already uses), and if you add someone whose install has never been seen connecting before, you'll get a heads-up so you know to check in with them.
8. What We Removed
- The Discord server. We're now on Roblox itself β join Glitch Work Studios instead. Bonus: Discord invite links were getting filtered by Roblox's own text moderation on the plugin listing; an in-platform community link doesn't have that problem.
- Dead OAuth scaffolding that never actually did anything β it read a settings key that didn't exist and had no route wired up to use it.
- The
cors() middleware on the local sync server (see below β nothing needed it, and it was a real, if narrow, risk).
9. What We Fixed
- Stored XSS in the webviews. Ticket/chat messages were previously rendered as raw HTML, so a message could execute a script in another user's VS Code. Everything shared-backend-sourced is HTML-escaped now.
- Update checks that could silently stop working. Versions used to be compared as
minor Γ 10, which breaks the moment a two-digit minor/major ships or a "-Alpha" tag is present. Now it's a real major.minor.patch comparison.
- A brute-forceable pairing code.
/init had no rate limit, so a malicious local webpage could hammer it with 6-digit guesses. Now it locks out after repeated failures.
- Wide-open CORS on the local server β removed. Nothing legitimate ever needed it, and it let any locally-running webpage read the server's responses.
- Two ways the Shared Library feature could delete your project or write outside its folder. Both closed.
- Duplicate conflict pop-ups when Studio was slow to respond, and an auto-resolve timer that could silently override your "Keep Studio Version" choice if Studio took more than 2 minutes to answer. Both fixed.
- A broken release banner on the homepage and broken share-link previews on every page of the site β both were pointing at image files that didn't exist. Fixed.
- A real secret shipping inside every VSIX.
.vscodeignore never excluded the admin tool's folder, so an encryption key was bundled into every release build, including ones already downloaded. It's excluded now, and the key has been rotated.
- A broken update-notification feature. The code that shows "Update Available" referenced the plugin's own panel before it existed in the script, which threw an error every time an update was detected instead of showing anything. Also fixed the notification's claim that a download page "opened in your browser" β Studio plugins can't do that, so it now shows a copyable link instead of pretending.
- The dashboard now keeps a rolling log of recent errors instead of only ever showing the last one.
π¦ Download & Installation
- Get the VS Code Extension from the Official Release Page.
- Install the Roblox Plugin from the Roblox Creator Store.
- Follow the interactive tutorial that will automatically launch when you first open the tools!
Developed with β€οΈ by CodingJeff Β© 2026