GTPS Host — Lua Scripts (VS Code extension)
Edit your GTPS Host server's Lua scripts directly in VS Code. Scripts are mirrored to real files
(gtps-scripts/<serverId>/) so every editor feature — and Claude Code — can edit them; saving a
file pushes it back to your server (which restarts its scripts).
How it works
The extension talks only to your dashboard (gtps.host), never to the game backend. A
Personal Access Token authenticates you; the dashboard resolves it to your server + session and
proxies the read/write. The token is kept in VS Code SecretStorage, never on disk in plaintext.
VS Code ──Bearer ghst_… + X-Active-Server──▶ gtps.host /api/scripts/{list,content,save} ──▶ your server
Setup
- Dashboard → Account → VSCode / API Tokens → Generate, copy the
ghst_… token.
- Open a folder/workspace in VS Code, then open the GTPS Host view in the Activity Bar.
- Click Set Access Token (or run it from the Command Palette) and paste the token.
- Pick a server when prompted (or click the status bar / the server in the tree).
- Pull a server (tree title ↻ or the server's inline ⬇) → its
.lua files appear under
gtps-scripts/<serverId>/. Click any script in the tree to open it.
- Edit a script and save → it's pushed automatically. Or use the script's inline ⬆ / the
Push Current Script command.
Tree view
The GTPS Host Activity-Bar view lists your servers (lazy-loaded) and their scripts. The active
server is marked · active. Inline actions: Pull on a server, Push on a script. Clicking a
script opens its mirror file (fetching it first if you haven't pulled it).
Conflict guard
Before each push, the extension fetches the script's current server content and compares it (by
hash) to what you last synced. If it changed on the server since then (e.g. a co-editor or the
dashboard touched it), it won't silently overwrite — you get a dialog:
- Overwrite Server — push your version anyway.
- Show Diff — open Server ↔ Local side-by-side, then decide.
- Keep Server Version — discard your local change and take the server's.
Disable with gtpsHost.conflictGuard if you want raw, unchecked pushes.
Settings
gtpsHost.baseUrl — dashboard URL (default https://gtps.host).
gtpsHost.autoPushOnSave — push on every save (default true). Each push restarts the server's scripts.
gtpsHost.conflictGuard — warn instead of overwriting when the server changed since you synced (default true).
Develop / run
npm install
npm run compile # or: npm run watch
# Press F5 in VS Code to launch an Extension Development Host
npm run package # build a .vsix to install/share
Badges
Mirror files with saved-but-unpushed local changes get an M badge (in the tree and on editor
tabs), so you can see at a glance what hasn't been pushed yet.
Roadmap (post-MVP)
- "Sign in with gtps.host" browser flow as an alternative to pasting a token.
- Pull-on-demand for files not yet mirrored, surfaced from the tree.