GCL+ Enhanced Editor
VS Code extension for editing GCL+ with EnteliWEB legacy integration.
Current State (May 2026)
Implemented and usable:
- GCL+ syntax highlighting, snippets, hover and completion support
- EnteliWEB device and object browsing
- Program download from controllers into local files
- Program compile validation against EnteliWEB compiler
- Program run and halt actions from editor title buttons
- Program object creation on controller through legacy endpoint
- Local index synchronization for device program files
Partially implemented or pending:
- Upload code package (placeholder)
- Generic create object from template (placeholder)
- Marketplace publication
EnteliWEB Views
The extension contributes two tree views in the activity bar container:
Devices
- Site -> controller -> program objects
- Controller context actions:
- Download All Program Files
- Add Program File
- View action:
EnteliWEB Explorer
- Site -> controller -> all objects
- Intended for exploration/inspection
Program Workflow
Download
- Downloads program objects from selected controller
- Creates stable local controller folder names with device number prefix
- Writes local files as:
- Writes metadata index:
- devices//objects/program-index.json
Create Program
From Devices tab, Add Program File now:
- Creates the remote PG object through:
- POST /enteliweb/wsbac/createobject
- Creates local .gcl-p file
- Updates local program-index.json
Compile / Run / Halt
For active .gcl-p file with metadata:
- Compile uses EnteliWEB compile endpoint and publishes diagnostics into Problems
- Run/Halt uses EnteliWEB legacy Web UI request flow
Controller targeting is resolved from file metadata in objects/program-index.json, not from folder display names.
Diagnostics Behavior
- Local lint diagnostics are disabled
- Diagnostics shown in editor come from EnteliWEB compile response
- Save-triggered validation is enabled for mapped .gcl-p files
Local Index Sync
Automatic sync:
- Watches devices/**/*.gcl-p
- Rebuilds corresponding objects/program-index.json on create/change/delete
- Ensures objects folder exists when syncing
Manual sync:
- Devices view title button: Resync Program Indexes
Naming warning:
- Files not matching PG_Name.gcl-p are skipped from index mapping
- Warning is shown and details are written to output channel:
Commands
Registered commands:
- GCL+: Download Objects from Device
- GCL+: Upload Code Package
- GCL+: Open GCL+ Settings
- GCL+: Create Object from Template
- GCL+: Refresh EnteliWEB Explorer
- GCL+: Configure EnteliWEB Credentials
- GCL+: Debug EnteliWEB Name Payload
- GCL+: Download All Program Files
- GCL+: Add Program File
- GCL+: Resync Program Indexes
- GCL+: Run Program
- GCL+: Halt Program
- GCL+: Compile Program
Configuration
Key settings:
- gclplus.enteliweb.url
- gclplus.enteliweb.username
- gclplus.workspace.autoFormat
- gclplus.diagnostics.enabled
Note: credentials are stored securely via VS Code secret storage when entered via command prompts.
Build
From repository root:
npm install
npm run build
Workspace Layout
Expected local workspace shape:
<workspace>/
devices/
<device-folder>/
PG1_Example.gcl-p
PG2_Example.gcl-p
objects/
program-index.json
Known Gaps
- Upload code package command is not implemented yet
- Template object creation command is not implemented yet
- Legacy node-fetch typing warning may appear in tooling depending on local setup
License
MIT