Changelog — KB Editor
All updates, improvements and fixes in each KB Editor version.
KBEditor Changelog
All notable changes to the KBEditor product. Each release documents changes across three independent streams:
- ✦Plugins — GeneXus language extensions (IntelliSense, parser, validator, visual editor, etc.)
- ✦Platform — KBEditor-specific infrastructure (license manager, MCP server, embed pipeline, CI/CD)
- ✦VS Code — Upstream VS Code base (via VSCodium)
1.7.16 — 2026-05-19
Plugins v1.8.21 | VS Code 1.109.4
Plugin sync: 3 versions consolidated. Headline feature is the new
.gxLayoutvisual editor for GeneXus report layouts (PrintBlocks, controls with paper-relative positioning, copy/cut/paste between bands). Also: Show Rows/Show Cells overlay in.gxForm, columnsStyle/rowsStyle properties exposed in GX Properties, and.gxLayoutrecognized by the Sync engine for internalization.
Plugins
v1.8.21 — 2026-05-19
- ✦Added: [visual-editor] Copy / Cut / Paste of controls between PrintBlocks on
.gxLayout—Ctrl+C/Ctrl+X/Ctrl+Vplus right-click menu, multi-selection support. Deep snapshot in clipboard, freshRPT_INTERNAL_NAMEper pasted control (no collisions),RPT_X/RPT_WIDTHpreserved,RPT_Y/RPT_HEIGHTclamped to destination band. Layouts markeddynamic="true"ignore paste (defense-in-depth). - ✦Added: [visual-editor] Right-click context menu on PrintBlock headers with band-level operations
- ✦Added: [visual-editor] Multi-selection improvements on
.gxLayout(shift-click, marquee, arrow-key move) - ✦Added: [visual-editor] Red overflow
!indicator when a control extends past the paper's right edge - ✦Fixed: [visual-editor] 9 fixes around
.gxLayoutrendering, drag/drop precision, band resize, etc. - ✦Fixed: [sync-status]
.gxLayoutsave is now recognized by the Sync engine for internalization (matches the existing.gxSource/.gxFormhandling). - ✦Fixed: [language-analyzer], [language-core] minor parsing/recognition fixes
v1.8.20 — 2026-05-18
- ✦Added: [visual-editor]
columnsStyle/rowsStyleproperties in GX Properties for tables in.gxForm— granular per-column / per-row CSS class declaration. Visualisation on the canvas reflects the declared classes. - ✦Added: [visual-editor] 4 other table-related improvements (default cell widths, alignment, etc.)
- ✦Changed: [visual-editor] cleanup of property panel layout
v1.8.19 — 2026-05-17
- ✦Added: [visual-editor]
Show Rows/Show Cellsoverlay in.gxForm— toggle button on the canvas that overlays a grid showing the row/cell boundaries (with their internalRowName/controlName), so users can see the structural layout under the rendered preview. Independent toggles for rows and cells. - ✦Added: [visual-editor] 7 additional gxLayout editor refinements (band selection, ruler, snap-to-grid, etc.)
- ✦Changed: [visual-editor] Refactor of "Save Object As..." to a more robust implementation that better handles
.gxLayoutand shared scenarios (the previous one had edge cases on certain object types).
Platform
- ✦Bundle rebuilt with v1.8.21 plugin code: 717 JS files (was 707), 9 CSS (was 7), 39 JSON (was 32). Bundle size 2.0 MB → 2.2 MB.
- ✦VSIX skeletons resynced for
genexus-visual-editorandgenexus-language-core(both had new contributions / activationEvents for the gxLayout editor). Caught by smoke testVSIX contributes in syncand auto-fixed bysync-vsix-skeletons.py— no manual work. - ✦Bundle must be uploaded to
keygenapi.kbbridge.comafter this release.
Tests
- ✦24/24 smoke tests pass.
- ✦The drift-detection tests (added in v1.7.11) correctly caught the new contributions in visual-editor and language-core packages and the sync script fixed them in one run — exactly the workflow they were built for.
VS Code 1.109.4
- ✦No upstream changes
1.7.15 — 2026-05-19
Plugins v1.8.18 | VS Code 1.109.4
UX upgrade for the license status panel + small bug fix on recovery flow. The old
Help → View Licenseopened a 404 URL (https://KBbridge.com/license), andKBEditor: Show License Statuswas a minimal QuickPick. Both now open a single KBSync-style webview panel with logo, status/type/expires/key/name/email/company rows, and Buy License / Enter License Key buttons.
Platform
- ✦Added: [license-manager] License status webview panel (
media/license-status.html) modeled after KBSync's License tab. Replaces the previous QuickPick. Renders Status (colored: green/orange/red), Type, Expires, Key (truncated for safety), Name, Email, Company, plus the 2 action buttons. - ✦Added: New helper
computeLicenseDisplay(data)+truncateLicenseKey()centralize the date/status logic so callers don't reimplement it. - ✦Added:
getWebviewContent()now accepts aextraTokensdict for runtime data interpolation, with HTML-escape on all non-passthrough fields (defense against<in user-typed name or company). - ✦Added: VSCodium source patch
patches/kbeditor-help-license-panel.patch— modifiesOpenLicenseUrlAction.run()to detectcommand:URIs and dispatch them viaICommandServiceinstead of throughopenerService.open()(which silently dropscommand:URIs becauseCommandOpenerrequires explicitallowCommands). - ✦Changed:
prepare_vscode.shsetsproduct.licenseUrlto"command:kbbridge.showLicenseStatus". Combined with the patch, Help → View License now opens the license panel instead of a 404 URL. - ✦Fixed: [license-manager] Recovery flow was discarding the firstName/lastName/company fields the user typed in the registration form — only
emailwas stored. The recovered license then showed "—" for those fields in the new panel. The Recover button now sends all 5 fields (name, last name, company, email, language); the handler stores them inSECRET_KEY_DATAalongside the recovered license key.
How the 3 entry points map to the panel
| Click | Result |
|---|---|
| Status bar item (the trial/expiry indicator at the bottom) | Opens the panel |
| Command Palette → KBEditor: Show License Status | Opens the panel |
| Menu bar → Help → View License | Opens the panel (via the new patch) |
When no license is stored (fresh install / debug-clear), the entry points still show the existing "No License" QuickPick — there's no data to display yet, so a panel would be empty.
Bundle / build
- ✦No bundle change — v1.7.9 bundle (2.0 MB) is still current.
- ✦The next CI build of Step 1 will apply the new patch and regenerate
workbench.desktop.main.jswith consistent checksums.
VS Code 1.109.4
- ✦No upstream changes
1.7.14 — 2026-05-12
Plugins v1.8.18 | VS Code 1.109.4
Follow-up to v1.7.13. The WASM fallback shipped — but
search_docsstill failed on the affected customer withError: no available backend found. ERR: [cpu] Error [ERR_MODULE_NOT_FOUND]: Cannot find module '...ort-wasm-simd-threaded.mjs'. Root cause:ort.node.min.jsdefers loading its backend module (a.mjsfile) until the firstInferenceSession.create()call. v1.7.13 shipped only the.jsand.wasmfiles — the.mjswrappers that the bundle imports dynamically were never embedded.list_topicsandlookup_methodworked (no embeddings = no inference);search_docsblew up at first use. This release ships the missing.mjsfiles and adds a runtime smoke test that actually triggers the lazy import so this regression class can't slip through again.
Platform
- ✦Fixed: [embed] Ship the 3 missing
.mjsfiles underonnxruntime-web/dist/:- ✦
ort-wasm-simd-threaded.mjs— WASM module wrapper, lazy-imported byort.node.min.jsat firstInferenceSession.create() - ✦
ort-wasm-simd-threaded.jsep.mjs— JSEP variant of the wrapper - ✦
ort.node.min.mjs— ESM variant of the Node bundle (declared inpackage.json#exports.import) Combined size: ~90 KB. The fix is a 3-line additions inembed_extensions.sh.
- ✦
Tests (regression coverage)
- ✦Updated:
onnxruntime WASM fallback files in install— required-files list extended with the 3.mjsfiles. Catches the case whereembed_extensions.shis rolled back or someone trims the file list. - ✦Added:
onnxruntime WASM backend actually initialises— new functional test that:- ✦Directly loads
onnxruntime-web/dist/ort.node.min.js - ✦Points
env.wasm.wasmPathsat the localdist/ - ✦Calls
InferenceSession.create(new Uint8Array(8))— intentionally invalid as a model, but the call still triggers the lazy WASM backend init. - ✦If we see
ERR_MODULE_NOT_FOUND/ "no available backend" in the error → fail (a.mjsfile is missing). If we see a model-parsing error → pass (backend initialised, model was just bogus). This is the test that would have caught v1.7.13's bug. The previous shim runtime test only checked the require returned a module — it never exercised the actual WASM init code path.
- ✦Directly loads
- ✦Confirmed by removing
ort-wasm-simd-threaded.mjsand re-running: both file-presence test and runtime test fail with clear messages. - ✦Total smoke tests: 23 → 24.
Bundle
- ✦No bundle change — v1.7.9 bundle (2.0 MB) is still current.
What this fixes for the customer
Same WS2019 + VMware client from v1.7.13. After this release:
- ✦MCP arrives
running on stdio✅ (already worked in v1.7.13) - ✦Shim picks WASM fallback ✅ (already worked in v1.7.13)
- ✦
list_topics/lookup_methodwork ✅ (already worked in v1.7.13) - ✦
search_docsworks ✅ (new — the lazy.mjsimport resolves)
VS Code 1.109.4
- ✦No upstream changes
1.7.13 — 2026-05-12
Plugins v1.8.18 | VS Code 1.109.4
Real fix for the MCP
ERR_DLOPEN_FAILEDproblem. The v1.7.12 diagnostic logging let the customer share the exact error:A dynamic link library (DLL) initialization routine failed.ononnxruntime_binding.node. Root cause: Windows Server 2019 (Build 17763) + VMware guest.onnxruntime-node1.21 requires either DirectML (dxcore.dll, only on Win 10 Build 19041+ / Server 2022) or AVX CPU instructions — VMware doesn't expose AVX to guests by default. Without either backend the native binding'sDllMainreturns FALSE and the MCP crashes before registering its tools. This release adds an automatic WASM fallback so the MCP works in those environments out of the box.
Platform
- ✦Added: [mcp-server]
onnxruntime-node→onnxruntime-web(WASM) automatic fallback. New shim atkbbridge/mcp-server/scripts/onnx-fallback-shim.jsreplacesonnxruntime-node/dist/index.jsduring embedding. Onrequire('onnxruntime-node'), the shim:- ✦Tries the renamed original (
index-native.js) first → fast path on machines with AVX or DirectML. - ✦On
ERR_DLOPEN_FAILED/ DLL-init / dlopen errors → falls back toonnxruntime-web/dist/ort.node.min.jswithenv.wasm.wasmPathspointing at the shipped.wasmbinaries andnumThreads=1for maximum compatibility. - ✦On any other error → re-throws (so missing-file / syntax errors still surface instead of being masked by a slower fallback).
Backend chosen is tagged on the module as
__kbbridgeBackendand logged to stderr (captured by the v1.7.12 diag log).
- ✦Tries the renamed original (
- ✦Added: [embed] Ship the real
onnxruntime-webpackage (not the empty stub) — Node-targeted JS bundle + 2.wasmbinaries, ~32 MB total. Browser/WebGL/WebGPU artifacts dropped (~60 MB saved). Installer grows ~32 MB. - ✦Updated: [embed]
embed_extensions.shrenames the originalonnxruntime-node/dist/index.jstoindex-native.jsand drops our shim in its place. Idempotent — re-running the embed doesn't re-rename if it already happened.
Tests (regression coverage)
Three new smoke tests in kbbridge/tools/smoke-test.py (now 23/23):
- ✦
onnxruntime fallback shim source intact— checks the shim file contains its 6 critical markers (native-first require, ERR_DLOPEN_FAILED detection, WASM target path,wasm.wasmPaths+wasm.numThreadsconfig, backend tag). Quote-style-agnostic so cosmetic refactors don't break it. Catches any future regression where the shim is partially deleted or "simplified". - ✦
onnxruntime WASM fallback files in install— verifies the local install atupstream-vscodium/has the realonnxruntime-webpackage (rejectsversion=0.0.0stub), the 3 required files (ort.node.min.js+ 2.wasm), andonnxruntime-node/dist/index-native.jsexists (confirms embed renamed the original). SKIPs if the install dir isn't present (clean dev env). - ✦
onnxruntime shim require works at runtime— spawnsnodeinside the install, doesrequire('onnxruntime-node'), and asserts InferenceSession + Tensor + env.wasm are present. End-to-end functional test of the shim.
Docs
- ✦Updated
kbbridge/docs/MCP_SERVER.md§4 (Embedding Model) with the full native/WASM fallback rationale, the shim's decision flow, and the 3 regression tests guarding it.
Bundle
- ✦No bundle change — v1.7.9 bundle (2.0 MB) is still current.
Manual workaround (no longer needed after v1.7.13)
Before this release, customers in restricted environments (Server 2019 + VMware) had to manually:
- ✦Extract
onnxruntime-web@1.21.0intoC:\ort-web-extract\package\. - ✦Run a PowerShell script that copied the package over our stub and wrote a shim over
onnxruntime-node/dist/index.js. - ✦Re-apply the script after every KBEditor update.
v1.7.13 does all of that automatically as part of the build — no per-machine setup needed.
VS Code 1.109.4
- ✦No upstream changes
1.7.12 — 2026-05-12
Plugins v1.8.18 | VS Code 1.109.4
Diagnostic release for the MCP server. A user reported the MCP keeps failing on their machine, but VS Code 1.109.x's MCP API doesn't surface the server's stderr in any visible Output channel, so we couldn't see what's wrong. This release adds file-based logging from the MCP server itself plus two diagnostic commands so a user can grab the log with one click and send it back.
Platform
- ✦Added: [mcp-server] File-based diagnostic logging from the very first line of the MCP server. Writes to
<globalStoragePath>/mcp-server.log(path passed via the newKBBRIDGE_MCP_LOG_FILEenv var). Truncated on each run so the file always reflects the latest spawn. The file's presence/absence is itself a diagnostic signal: missing entirely → process never spawned; empty → died before first log; truncated mid-log → died at that point. - ✦Added: [mcp-server]
uncaughtExceptionandunhandledRejectionhandlers logging full stack traces. Catches transformers / lancedb / onnxruntime crashes that would otherwise be silently swallowed by VS Code's child-process management. - ✦Added: [license-manager] Command "KBEditor: Show MCP Server Log" — opens the diagnostic log in the editor, one click for the user to send it to support.
- ✦Added: [license-manager] Command "KBEditor: Test MCP Server (Diagnose)" — spawns the MCP server directly (bypassing VS Code's MCP API) and pipes its stdout/stderr to an Output channel for 5 seconds. Distinguishes "MCP can't even start" from "MCP starts but VS Code never spawns it".
- ✦Refactored: [mcp-server] Logging moved to new
diag-log.tsmodule shared bysetup-onnx.tsandindex.ts. Each log line is timestamped and tagged with a category ([ONNX],[MCP]).
Plugins
- ✦Same as v1.7.11 (plugins v1.8.18).
Bundle
- ✦No bundle change — v1.7.9 bundle (2.0 MB) is still current.
How to use the new diagnostics
When a user reports the MCP isn't working:
- ✦Ask them to run "KBEditor: Show MCP Server Log" from the Command Palette.
- ✦If the log opens with
[ONNX]/[MCP]lines → we see exactly where it crashed. - ✦If the warning "MCP server has not spawned yet" appears → VS Code never invoked the MCP. Ask them to trigger an AI agent search first, then re-run the command.
- ✦If the log opens with
- ✦If the log shows nothing useful, ask them to run "KBEditor: Test MCP Server (Diagnose)" — spawns the process manually with our own stderr capture. Confirms whether the MCP server can run at all on that machine.
VS Code 1.109.4
- ✦No upstream changes
1.7.11 — 2026-05-12
Plugins v1.8.18 | VS Code 1.109.4
Hardening release on top of v1.7.10. Adds automated tests + a sync tool so the VSIX-skeleton-drift bug (which produced the Form Editor redirect loop) can't ship again unnoticed. Also re-syncs all 7 VSIX skeletons against the latest plugin source (the 5 we hadn't touched since April had
devDependencies/scriptscruft we now strip).
Platform
- ✦Added: [tooling]
kbbridge/tools/sync-vsix-skeletons.py— one-command resync of everykbbridge/vsix/*.vsixagainst its matchingpackage.jsonin the plugin source. StripsdevDependencies/scripts(build-time only), preserves the "KBEditor: " brandeddisplayNameprefix. Use--dry-runto preview changes; CI-friendly exit code (1 if any drift detected). - ✦Added: [test]
smoke-test.pynow has 2 new tests that catch VSIX skeleton drift before commit:- ✦
VSIX activationEvents match plugin source— was previously a silent "warn only" since v1.6.x; now fails if the plugin's source declares events the VSIX is missing. - ✦
VSIX contributes in sync (customEditors/commands/views/menus)— new test that compares every customEditorviewType, commandcommand, viewid, and per-menu-category entry counts between VSIX and source. Reports each drift with a clear remediation hint.
- ✦
- ✦Tests grew from 18 to 20.
- ✦All 7 VSIX skeletons resynced via the new tool (5 had unstripped devDependencies/scripts; 2 had been hand-patched in v1.7.10 without the displayName branding).
- ✦No bundle change — v1.7.9 bundle (2.0 MB) is still current.
How this prevents future drift
The combination is intentional:
- ✦smoke-test.py runs before every push (per the release checklist). Drift now blocks commits instead of being silently shipped.
- ✦sync-vsix-skeletons.py is the one-command fix when a smoke test fires (also runnable as a pre-flight before bumping versions).
- ✦The plugin team adding new commands / customEditors / views in their
package.jsonwill surface in our nextsmoke-test.pyrun, with a clear pointer to run the sync.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged from v1.7.6.
1.7.10 — 2026-05-12
Plugins v1.8.18 | VS Code 1.109.4
Follow-up to v1.7.9. The visual-editor activated correctly but the Form Editor entered an infinite redirect loop when opening any
.gxFormfile. Cause: the VSIX skeletons (kbbridge/vsix/*.vsix) had not been re-built since the plugin team added new contributions topackage.json— the visual-editor's VSIX skeleton was missing thegenexus.formEditorcustomEditordeclaration, 3 commands, 1 view, and severalactivationEvents. Similarly,genexus-language-core's VSIX was missing 6 commands and 2 menus (including "Find All References" / "Find Referenced" from v1.8.15). This release patches both stale VSIX skeletons by re-synchronising theirpackage.jsonwith the plugin source.
Platform
- ✦Fixed: [vsix]
genexus-visual-editorVSIX skeleton resynced with plugin source. Now declares thegenexus.formEditorcustom editor (for.gxFormfiles), thegenexus.toolboxview, 3 additional commands (includinggenexus.openFileWithEditor), 2 menu contributions, and theonCustomEditor:genexus.formEditoractivation event. Without these,.gxFormfiles were opening as text and the extension's auto-redirect handler entered an infinite loop trying to switch to a custom editor that VS Code didn't know about. - ✦Fixed: [vsix]
genexus-language-coreVSIX skeleton resynced with plugin source. Now declares 6 additional commands and 2 menu contributions (notably theFind All References/Find Referencedentries from plugin v1.8.15 that never appeared in the right-click menu before). - ✦No bundle change — the v1.7.9 bundle (2.0 MB with the esbuild htmlparser2 fix) is still current.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged from v1.7.6.
1.7.9 — 2026-05-11
Plugins v1.8.18 | VS Code 1.109.4
Follow-up to v1.7.8. The previous release added
htmlparser2to the bundle but the v10+ release of that package ships as pure ESM ("type": "module"). Our bundle loader usesModule._compile()(CJS-only), sorequire('htmlparser2')from the visual-editor's compiled CJS code crashed withUnexpected module status 0. Cannot require() ES Module.... This release pre-bundles htmlparser2 + its 5 transitive ESM deps into a single CJS file via esbuild, sidestepping the ESM/CJS mismatch entirely.
Platform
- ✦Fixed: [build]
htmlparser2is now pre-bundled with esbuild to a single CommonJS file with all 5 transitive deps inlined (domelementtype,domhandler,domutils,dom-serializer,entities). The 6 ESM packages no longer ship as separate entries — they're all rolled intonode_modules/htmlparser2/index.js(~140 KB CJS) accompanied by a strippedpackage.jsonthat omits"type": "module". The bundle loader resolvesrequire('htmlparser2')cleanly as CJS. - ✦Added: [build]
build-bundle.pynow supports anesbuild_bundlesconfig field on each extension. Used for ESM third-party deps that can't be loaded viaModule._compile. Run uses esbuild from the mcp-server's node_modules (already shipped in the repo). - ✦Bundle: 2.1 MB → 2.0 MB (esbuild inlines deps efficiently; we drop ~38 separate files in favor of one 140 KB bundle).
Plugins
- ✦Same as v1.7.8 (plugins v1.8.18 with the dynamic
.gxFormlock feature).
Bundle
- ✦Rebuilt: 2.0 MB.
- ✦Must be uploaded to
keygenapi.kbbridge.com— replaces the v1.7.8 bundle (which had the ESM htmlparser2 problem).
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged from v1.7.6.
1.7.8 — 2026-05-11
Plugins v1.8.18 | VS Code 1.109.4
Critical platform fix. The visual-editor extension was crashing during bundle activation with
Cannot find module 'xslt-processor', especially visible on system installs (C:\Program Files\KBbridge\). Root cause: thexslt-processorandhtmlparser2runtime dependencies (added in plugin v1.8.x for User Control XSL rendering) were never included in our extensions bundle —build-bundle.pydeclared"third_party": []for the visual-editor. On user-writable installs the bug was also present but went unnoticed because nobody opened a.gxForm. Includes all features from v1.7.7.
Platform
- ✦Fixed: [build] Visual-editor runtime third-party dependencies are now included in the bundle. Added
xslt-processor,htmlparser2, and their 5 transitive runtime deps (domelementtype,domhandler,domutils,dom-serializer,entities) tothird_partyinkbbridge/tools/build-bundle.py. Bundle grew from 1.8 MB to 2.1 MB; visual-editor file count: 145 → 183. - ✦Fixed: [license-manager] Require hook now resolves
package.json#mainfrom the in-memory sourceCache. Previously the hook only tried<base>.jsand<base>/index.jsbefore falling through to Node's normal resolver — which doesn't work on read-only system installs where files can't be written to disk. The 7 new third-party packages all declaremainas"dist/index.js", so the simple lookup would miss them and Node's fallback would also fail (no files on disk). The hook now reads<base>/package.jsonfrom sourceCache, parses themainfield, and resolves against sourceCache directly. Prevents the same class of bug in the future.
Plugins
- ✦Same as v1.7.7 (plugins v1.8.18 with the dynamic
.gxFormlock feature).
Bundle
- ✦Rebuilt: 2.1 MB (was 1.8 MB).
- ✦Must be uploaded to
keygenapi.kbbridge.com— the v1.7.5 bundle on the server does NOT have the third-party deps and will continue to crash the visual-editor extension on clients.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged from v1.7.6 (the
process.release.namepatch is in place).
1.7.7 — 2026-05-11
Plugins v1.8.18 | VS Code 1.109.4
Plugin code update: the upstream
v1.8.18entry was extended with a new feature for protecting dynamic.gxFormfiles (no version bump on the plugin side). Bundle rebuilt to incorporate it. Includes all Platform fixes from v1.7.6.
Plugins
v1.8.18 — additional feature (appended 2026-05-09)
- ✦Added: [visual-editor]
.gxFormfiles marked asdynamic="true"in the root tag are now protected from manual edits with the same UX as[dynamic]sections of.gxSource— when KBBridge externalizes a form whose content is maintained by a pattern, it injectsdynamic="true"on the form's root element (<BODY>for HTML layouts,<GxMultiForm>for MultiForm,<layouts>for Smart Device Panel). The visual editor now detects this attribute and locks the form:- ✦Canvas paints the selection outline in yellow (instead of the regular accent color)
- ✦Banner at the top reads "Form is dynamic — content maintained by KBBridge" with an "Unlock Form" button
- ✦GX Properties renders every input as read-only and shows the same banner
- ✦GX Toolbox dims its items so they cannot be dragged in
- ✦Any mutation attempt (drag, drop, right-click cut/paste/delete, keyboard shortcuts) is intercepted at two layers: webview shows a reduced context menu ("Unlock form to edit"); extension confirms with "This form is marked as [dynamic] and is maintained by KBBridge. Do you want to remove the dynamic tag and edit manually?" (Yes / No)
- ✦Choosing "Yes" flips the attribute to
dynamic="false"and re-renders all three panels editable - ✦Forms without
dynamic="true"behave exactly as before — the lock is opt-in via the file content itself
Platform
- ✦All Platform fixes from v1.7.6 carry over: MCP server
process.release.namepatch (fixesUnsupported device: "cpu"crash on some Electron builds); Buy License URL now opens the correct page with the user's saved registration data pre-filled. - ✦Bundle rebuilt with the new dynamic-form-lock plugin code: 707 JS files, 1.8 MB.
- ✦Bundle must be uploaded to
keygenapi.kbbridge.comafter this release.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged from v1.7.6 (the
process.release.namefix is in place).
1.7.6 — 2026-05-11
Plugins v1.8.18 | VS Code 1.109.4
Platform fix release. Two Platform bugs reported by users: (1) the MCP server crashed on some clients with
Unsupported device: "cpu"because their Electron build reportsprocess.release.name === 'electron'instead of'node'underELECTRON_RUN_AS_NODE=1, causing@huggingface/transformersto take the web/wasm branch (which used our emptyonnxruntime-webstub); (2) the "Buy License" button from the expired-license dialog and the status bar quick pick openedhttps://kbbridge.com/pricing(a non-existent page) instead ofhttps://kbbridge.com/buy-license-kbeditor?<params>with the user's saved registration data.
Platform
- ✦Fixed: [mcp-server] MCP server no longer fails with
Unsupported device: "cpu"on Electron builds that reportprocess.release.name === 'electron'. A newsetup-onnx.tsmodule patchesprocess.release.nameto'node'(with three fallback strategies: direct assignment,Object.defineProperty, replacingprocess.release) before@huggingface/transformersis loaded. This makes transformers take its complete Node branch — registering thecpuexecution provider correctly. Diagnostic[ONNX]lines are written to stderr for future debugging. - ✦Fixed: [license-manager] "Buy License" button (from the expired-license dialog and the status bar quick pick) now opens the correct URL
https://kbbridge.com/buy-license-kbeditor?<params>with the user's saved registration data (firstName, lastName, company, email, language, fingerprint, version, platform, arch) pre-filled — same URL the Buy button on the registration panel uses. Previously it openedhttps://kbbridge.com/pricing(a page that does not exist on the site). The URL construction was extracted to a shared helperopenBuyLicensePage(userData)plusopenBuyLicensePageFromSecrets()for callers that don't have userData in hand. The deadPRICING_URLconstant was removed. - ✦No bundle change in this release — the v1.7.5 bundle (1.8 MB, plugins v1.8.18) is still current and does not need to be re-uploaded.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server has the onnxruntime backend fix described above. No change to the registration command (
ELECTRON_RUN_AS_NODE=1, same path as before).
1.7.5 — 2026-05-08
Plugins v1.8.18 | VS Code 1.109.4
Bug-fix release consolidating 3 plugin versions (v1.8.16, v1.8.17, v1.8.18). Notable: pattern-instance saves no longer corrupt CDATA blocks / self-closing tags / XML declaration;
.gxFormround-trips bit-perfect (emptygit diffon no-op save); duplicatePendingentries on saves fixed (Windows path-casing race); several analyzer false errors resolved.
Plugins
v1.8.18 — 2026-05-07
- ✦Fixed: [visual-editor] Adding a control directly into a Smart Device Panel table now generates the auto-wrapped row and cell with their required
idGUIDs (the IDE was rejecting those rows/cells on re-import) - ✦Fixed: [visual-editor] Empty attributes of
.gxFormcontrols are now serialized asname=""instead of barename(HTML5 minimization form is invalid XML and the IDE rejected the file on re-import) - ✦Fixed: [visual-editor] Whitespace between
<layouts>and<layout>(and other structural wrappers) is preserved on save — a no-op save now produces an emptygit diff - ✦Changed: [sync-status] Depuration of the changes file no longer removes entries still in
pendingstate — the periodic cleanup (gxSync.changesMaxAgeDays/gxSync.changesMaxEntries) now consultsexternal-<user>-status.jsonand keeps every entry whose status ispendingor unset, regardless of age or count
v1.8.17 — 2026-05-06
- ✦Fixed: [sync-status] Saving a single GeneXus object no longer registers two
Pendingentries — caused by a Windows path-casing race (C:\Foovsc:\foo) between the editor save event and the workspace filesystem watcher. Dedup is now case-insensitive on Windows with a 1.5 s window - ✦Fixed: [visual-editor] Saving a
.gxPatterninstance no longer rewrites large parts of the file — preserved across round-trips:<?xml version="1.0" encoding="utf-16"?>header, self-closing tags (<variable />,<parameter />etc.),<![CDATA[...]>blocks for code properties, literal'in attribute values, line endings (CRLF/LF), and the multi-line[ ... ]properties block ofPatternInstance. The serializer now reads the schema XML (PXWorkWithInstance.xml) per property to know whether to emit as Attribute, CDATA, or Element. A no-op save produces an emptygit diff
v1.8.16 — 2026-05-05
- ✦Fixed: [visual-editor] Group header caption no longer shown twice on the canvas — the duplicate stray TextBlock-like child render is suppressed; underlying
<LEGEND>element is preserved - ✦Fixed: [language-analyzer] No more false "missing '(' at '<Type>'" errors on
New <SDTType>(...)orNew <SDTType>.<Level>(...) - ✦Fixed: [language-analyzer] No more false "Mismatched input 'Sub'" errors inside platform-specific blocks of
#Events(e.g.[Web] { ... Sub 'Name' ... EndSub ... }) - ✦Fixed: [language-analyzer]
Stub <Name>(<params>) ... EndStubis now recognized as a valid procedural block in WebService Procedures - ✦Added: [language-core] Outline view, Breadcrumbs and
Go to Symbol in File(Ctrl+Shift+O) now list every Event, Sub and Stub of a.gxSource(with kind prefix and full signature, e.g.Event Grid1.Load,Sub 'CheckSecurityForActions',Stub EnviarCFE(in: &EnviarCFEIn, out: &EnviarCFEOut)) - ✦Fixed: [language-validator] No more false "is not a valid field or level of SDT" errors when accessing a sub-level of a collection item (e.g.
&Item.<SubLevel>.<Field>where<Item>is the collection'sCollectionItemName)
Platform
- ✦Bundle rebuilt with v1.8.18 plugin code: 707 JS files, 1.8 MB.
- ✦Bundle must be uploaded to
keygenapi.kbbridge.comafter this release.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.7.4 — 2026-05-05
Plugins v1.8.15 | VS Code 1.109.4
Platform fix. Eliminates a Node
DEP0128deprecation warning that surfaced in user logs (Invalid 'main' field in '...@kbbridge/genexus-language-core-lib/package.json' of 'out/index.js'). Functionality was unaffected because Node fell back to legacy resolution, but the warning will become a hard error in future Node versions.
Platform
- ✦Fixed:
embed_extensions.shwas generatingpackage.jsonfiles for the embedded@kbbridge/genexus-language-core-libwith"main": "out/index.js", but the bundle places the compiled JS at the root of that directory (noout/subfolder). Changed to"main": "index.js". Also patched the existing local staging copies for consistency. - ✦No bundle change in this release — bundle from v1.7.3 (1.8 MB, plugins v1.8.15) is still current.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.7.3 — 2026-05-05
Plugins v1.8.15 | VS Code 1.109.4
Security release. Both findings from our v1.7.2 deep code review (XSS in the Values editor, missing XML-escaping in packed properties) have been confirmed fixed by the plugin team. Also adds Free Style Grid support and Find All References / Find Referenced from the right-click menu.
Plugins
v1.8.15 — 2026-05-04
- ✦Security: [visual-editor] Values editor of Combo Box / Radio Button / List Box no longer renders pairs through unsafe HTML interpolation — values are now treated as plain text in every cell. Fixes the XSS finding from our v1.7.2 review (
properties-panel.ts:3849-3852) - ✦Security: [visual-editor] Editing a property of a control on Smart Device Panel / Abstract Layout no longer corrupts other properties when any contains
<,>or&— the wrapper that stores grouped properties (PATTERN_ELEMENT_CUSTOM_PROPERTIES) now XML-escapes name/value individually. Fixes the XML-escaping finding from our v1.7.2 review (CustomPropertiesDecomposer.ts:163-167, 203-205) - ✦Added: [visual-editor] Free Style Grid (
<gxFreeStyle>) is a first-class control in HTML forms — renders correctly with green border and yellow tint, exposes 24 specific properties (CustomRender, AllowDrop / AllowDrag, RenderingMode, Border, Empty Grid Text, Paging, Allow Collapsing, Record / Page counters, etc.), insertable from the Toolbox, drops of any control on it are redirected to the inner<TD>automatically. Abstract / SDPanel forms not covered in this iteration - ✦Added: [language-core] Find All References / Find Referenced from the right-click menu of any
.gxSource/.gxAttribute/.gxDomain— both on the editor tab and on the file in the Explorer. Lists every file that mentions the object (Find All References) and every defining file of the objects this one uses (Find Referenced). Reuses the reference index built at startup — instantaneous after first build
Platform
- ✦Bundle rebuilt with v1.8.15 plugin code: 707 JS files, 1.8 MB.
- ✦Bundle must be uploaded to
keygenapi.kbbridge.comafter this release.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.7.2 — 2026-05-04
Plugins v1.8.14 | VS Code 1.109.4
Bug-fix release. Notable: a regression that rebuilt the reference index from scratch on every reload (causing several minutes of editor freeze on 10k-object KBs) is fixed. Several validator / analyzer false errors are also resolved.
Plugins
v1.8.14 — 2026-05-03
- ✦Fixed: [language-core] Reference index of a large Knowledge Base no longer rebuilds from scratch on every "Developer: Reload Window" — the persisted index was being rejected by a hardcoded version check. Several minutes of editor freeze gone on 10k-object KBs from the second reload onwards
- ✦Fixed: [language-validator] No more false "is not a valid data type" errors on
DataType = 'Attribute:<AttrName>'when the referenced attribute lives in an external module - ✦Fixed: [language-analyzer] No more false "Mismatched input '=' expecting '('" errors on
<ControlName>.<Property> = <value>lines inside#Rules(e.g.EmisorId.Visible = False;) - ✦Fixed: [language-validator] No more false "Udp call requires last parameter to be mode 'out' or 'inout'" errors on calls to a DataProvider — DataProviders declare their output via
Output = '<Type>'/Collection, not viaparm(). The parser now synthesizes a virtualoutparameter for DP calls - ✦Fixed: [language-validator] No more false "is not a valid method" errors on
IsEmpty()/SetEmpty()/ToString()of variables typed by an enumerated domain - ✦Fixed: [language-validator] No more false "Parameter requires a variable (mode: inout)" warnings on calls that pass
<Control>.<Property>(or any dotted lvalue) as anout/inoutargument - ✦Fixed: [language-analyzer] No more false "Mismatched input '{' expecting {'.', '='}" errors on DataProvider blocks whose nested SDT level names are GeneXus keywords (e.g.
Display,Group,Default,Domain,Attribute,Insert,Update,Delete) - ✦Changed: [visual-editor] The
Titleproperty of a Grid Column is now shown at the top of GX Properties (next toAttribute), matching the GeneXus IDE order
Platform
- ✦Bundle rebuilt with updated plugin code: 707 JS files, 1.8 MB.
- ✦Bundle must be uploaded to
keygenapi.kbbridge.comafter this release.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.7.1 — 2026-05-03
Plugins v1.8.13 | VS Code 1.109.4
Plugin code update: the upstream
v1.8.13entry was extended with 17 additional fixes and features (no version bump on the plugin side). Bundle rebuilt to incorporate them.
Plugins
v1.8.13 — additional fixes (appended 2026-05-03)
- ✦Added: [visual-editor] The
Valuesproperty of a Combo Box / Radio Button / List Box now opens a visual editor with two columns (Name, Value), with add / remove / reorder, validations and serialization to theName1:Value1,...format used in theControlValuesXML attribute - ✦Added: [visual-editor]
Checked ValueandUnchecked Valueproperties of a Check Box are now shown in GX Properties, written toControlCheckValue/ControlUnCheckValue(HTML) or packed inPATTERN_ELEMENT_CUSTOM_PROPERTIES(Abstract / MultiForm / SDPanel) - ✦Added: [visual-editor] Keyboard shortcuts in the
Valueseditor —Alt+Aadd,Deleteremove,Alt+↑/Alt+↓reorder,↑/↓select,Enteredit - ✦Fixed: [visual-editor] Radio Button now renders as a real radio control on the canvas even when values cannot be deduced from a domain or source code
- ✦Fixed: [visual-editor] Combo Box, Radio Button and List Box now render their static
ControlValuesfrom the XML on the canvas (previously only enum-domain or&Var.Add(...)values were used) - ✦Fixed: [visual-editor] List Box now renders as a multi-line scrollable list (
<select size>), distinguishable from Combo Box. Same applies to Dynamic List Box - ✦Fixed: [visual-editor] Combo Box on the canvas now shows the empty item declared by
Add Empty Item/Empty Item Text - ✦Fixed: [visual-editor] Drag from the GX Toolbox to the form canvas now works regardless of which tab is active (the activation message is broadcast to every open form-editor webview)
- ✦Fixed: [visual-editor] Drag from the GX Toolbox no longer fails when the form-editor webview was suspended by VSCode — visible panels are explicitly woken up on drag start (
panel.revealwithpreserveFocus: true) - ✦Fixed: [visual-editor] Dragging a row inside a nested table now reorders within that table instead of selecting the parent table — handler retries
insidewhenbefore/afteris rejected - ✦Fixed: [visual-editor] Drop position of a drag inside a nested table now matches the visual indicator (the
drophandler now applies the same retry logic asdragover) - ✦Fixed: [visual-editor] The horizontal "drop here" line between rows is back when dragging a row by its handle —
dragover/drophandlers retrybefore/afterwhen the originalinsideis rejected - ✦Fixed: [visual-editor] Reordering rows in HTML tables now respects the
<TBODY>wrapper — canvas ascends through<TBODY>/<THEAD>/<TFOOT>when computing the effective parent, and row inserts targeting<TABLE>directly are redirected into its<TBODY> - ✦Fixed: [visual-editor] Drop of a row inside a
<TBODY>now actually completes the move —acceptsAsChildvalidator now treats<TBODY>/<THEAD>/<TFOOT>as equivalent to<TABLE>for child acceptance - ✦Fixed: [visual-editor] Reordering Grid Columns now shows a vertical drop indicator between columns during the drag (instead of a horizontal one)
- ✦Fixed: [visual-editor] HTML
<DIV>containers no longer stretch to fill the available height and hide their next siblings — User Control regions still fill height, HTML<DIV>grows to fit content - ✦Changed: [visual-editor] "Delete Layout" confirmation dialog of a Smart Device Panel now shows the layout's readable name (e.g.
Default,iPhone · Portrait) instead of its internal GUID
Platform
- ✦Bundle rebuilt with updated plugin code: 707 JS files across 7 extensions; bundle size 1.8 MB.
- ✦Bundle must be uploaded to
keygenapi.kbbridge.comafter this release.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.7.0 — 2026-05-02
Plugins v1.8.13 | VS Code 1.109.4
Major plugin update: introduces the Visual Form Editor for
.gxFormfiles (WYSIWYG rendering, drag & drop, GX Properties panel, responsive layouts, multi-layout support for Smart Device Panels, User Control discovery and rendering). 14 plugin versions consolidated since the last KBEditor release.
Plugins
v1.8.13 — 2026-05-02
- ✦Fixed: [visual-editor]
Control Nameof a<table>in Abstract Layout / MultiForm / Smart Device Panel now shows the actual control name instead of the internal GUID - ✦Fixed: [visual-editor] Tables, rows, cells, sections, grids, tabs, tab pages, grid columns and groups inserted into Smart Device Panels now carry the
id="<GUID>"attribute that the GeneXus IDE writes - ✦Fixed: [visual-editor] The "Group" container in Abstract Layout / Smart Device Panel now serializes as
<group>(was<section>) - ✦Changed: [visual-editor] Cleanup of legacy properties when changing Control Type to a different User Control is now near-instant (single-pass instead of O(n²))
- ✦Changed: [visual-editor] Cloning a layout via "Add Layout (Copy from existing)" no longer regenerates the
idof internal regions of User Controls - ✦Changed: [visual-editor] Smart Device Panel detection now uses the XML root tag (
<layouts>) instead of the file path - ✦Added: [visual-editor] Output channel logs a warning when a Smart Device Panel is opened with structural nodes missing
id="<GUID>"
v1.8.12 — 2026-05-01
- ✦Added: [language-core, visual-editor] One-click navigation between a
.gxSourceand its matching.gxForm(clickable link, title-bar icon, "Source" button in Form Editor) - ✦Added: [visual-editor] Multi-Layout support for Smart Device Panels — tabs at the top of the canvas switch between layouts; each layout edited independently
- ✦Added: [visual-editor] "Add Layout" wizard with cascading variant selectors (Platform → Device Kind → Size → Version → Orientation) plus "Empty / Copy from existing"
- ✦Added: [visual-editor] Adaptive overflow for the layout switcher — folded into a
…button when toolbar width is insufficient - ✦Added: [visual-editor] Right-click "Delete Layout" on a layout tab (last layout cannot be deleted)
- ✦Changed: [visual-editor] "Text" button label now reflects the form's real format ("HTML" for Layout HTML, "XML" for Abstract / MultiForm)
v1.8.11 — 2026-04-30
- ✦Added: [visual-editor] User Controls can be inserted from the Toolbox in Abstract Layout and MultiForm forms (initial container regions of
gxui.Layout,gxui.Paneletc. added automatically) - ✦Added: [visual-editor] Responsive Sizes visual editor available from PXTools pattern instances (PXWorkWith, PXComposer, PXParameterRequest)
- ✦Fixed: [visual-editor] Breakpoint selector (XS / SM / MD / LG) now appears for every responsive form, even when no table has explicit responsive sizes yet
- ✦Fixed: [visual-editor] Responsive Sizes editor never opens with empty data (fallback path removed; timeout extended to 10s)
- ✦Fixed: [visual-editor] Canvas stacks responsive cells mobile-first at XS even when the table has no
responsiveSizesJSON - ✦Fixed: [visual-editor] Responsive Sizes modal closes automatically when the user selects a different control in the canvas
- ✦Fixed: [visual-editor] GX Properties clears when the active tab changes
- ✦Fixed: [visual-editor]
.gxFormfiles reliably open with the visual Form Editor (extension auto-adds.gxFormand.gxPatternmappings on startup) - ✦Fixed: [visual-editor] User Controls with container regions render correctly in Abstract Layout and MultiForm forms
- ✦Fixed: [visual-editor] User Controls in Abstract Layout and MultiForm matched correctly even when the instance was renamed
v1.8.10 — 2026-04-29
- ✦Added: [visual-editor] User Controls can be inserted from the Toolbox in HTML Layout forms (drag or double-click)
- ✦Added: [visual-editor] Inserting a User Control container creates its initial regions automatically (parsed from the UC's XSL render)
- ✦Added: [visual-editor]
Control Typedropdown of an Attribute / Variable now lists every external User Control with<IncludeInControlInfo>true</IncludeInControlInfo>(Chosen, CKEditor, Rating, RunJS, SDCalendar, etc.) - ✦Added: [visual-editor] Properties of the chosen User Control are merged into the Attribute / Variable panel
- ✦Added: [language-core] Closing a tab opened from a
.gxChildsre-opens the QuickPick automatically - ✦Added: [sync-status] Support for
sync-batch-start/sync-batch-endmarkers from the Sync Engine - ✦Fixed: [visual-editor] Drop from Toolbox now actually inserts the control (replaced
mousemove/mouseupwithdragover/drop) - ✦Fixed: [visual-editor] Smart Device Panels (
*.Panel.gxSource) now show their object properties in GX Properties (alias-aware:Panel↔SDPanel) - ✦Fixed: [visual-editor] Drops on top / bottom 25% of a UC region now succeed (always resolved to "inside")
- ✦Fixed: [visual-editor] Generic containers expand to fill height with min-height 60px
v1.8.9 — 2026-04-28
- ✦Added: [visual-editor] Object Picker modal for reference properties (Master Page, Web Component, Image, Theme, etc.) with Pattern and Type filters
- ✦Added: [visual-editor] WYSIWYG render for User Controls with design XSL (e.g.
gxui.Layoutwith North/West/Center/East/South) - ✦Added: [visual-editor] Hierarchical categories in GX Properties (
Regions/North/North Title Bar, etc.) - ✦Added: [visual-editor] Arrow keys navigate between siblings in horizontal layouts
- ✦Added: [visual-editor] UC properties declared with
<CustomType>WebComponentReference</CustomType>etc. exposed as proper references with autocomplete - ✦Added: [visual-editor] Object Selector adds a Table filter when picking attributes
- ✦Fixed: [visual-editor] Reference values that contain a leading GUID are displayed without it
- ✦Fixed: [visual-editor] Master Page references resolve in the panel (alias
WebMasterPage→MasterPage) - ✦Fixed: [visual-editor] Toolbox now uses the IDE's heuristic to filter User Controls (
<IncludeInControlInfo>flag) - ✦Added: [visual-editor] Drag from Toolbox to canvas inserts the control (Button, Text Block, Image, Error Viewer, Web Component, Table, Grid, Group, Tab)
v1.8.8 — 2026-04-27
- ✦Added: [visual-editor] Color picker for color properties (FontColor, BackColor, etc.)
- ✦Added: [visual-editor] Attribute / Variable picker for User Control properties (ControlAttVarReference)
- ✦Added: [visual-editor] User Control containers render their internal zones (
gxgxui.Layoutwith North / Center / South / East / West) - ✦Added: [visual-editor]
Control Nameshown in the General category for User Control instances - ✦Fixed: [visual-editor] Responsive sizes preview works when JSON declares fewer cells than the row
- ✦Fixed: [visual-editor]
<ucw>controls in Abstract Layout are recognised by the registry (suffix-matching heuristic) - ✦Fixed: [visual-editor]
gxControlTypeno longer appears as an editable property
v1.8.7 — 2026-04-26
- ✦Added: [visual-editor] External User Controls discovered from the workspace (
<workspace>/User Controls/) - ✦Added: [visual-editor] New command "KBBridge: Show User Controls" — QuickPick of every UC discovered
- ✦Added: [visual-editor] User Controls show their real name in the form preview, with toolbox icon when declared
- ✦Added: [visual-editor]
UCletters as fallback icon - ✦Added: [visual-editor] Real properties of a User Control in GX Properties (Width, Height, Attribute, Data, FocusOnLoad, Font, etc.)
- ✦Changed: [visual-editor] GX Properties header shows
<UC>: <Name>for User Control instances
v1.8.6 — 2026-04-25
- ✦Added: [visual-editor] Per-property "Restore to Default" in the Responsive Sizes editor (right-click any field)
- ✦Added: [visual-editor] Auto-distribution of default cell widths
- ✦Added: [visual-editor] Copy property value from the right-click menu
- ✦Added: [visual-editor] Add ▸ in Abstract Layout creates a sibling cell automatically
- ✦Fixed: [visual-editor] Cascade direction matches GeneXus IDE (XS/SM standalone, MD inherits SM, LG inherits MD)
- ✦Fixed: [visual-editor]
visible:falsecells render alone in their logical row at 100% effective width - ✦Fixed: [visual-editor] Two 50% cells of a responsive row no longer wrap
- ✦Fixed: [visual-editor] Move buttons skip invisible siblings
- ✦Fixed: [visual-editor] Move persists to the JSON as
move:Ndeclaratively - ✦Fixed: [visual-editor] Reordering at one scale doesn't bleed into the others
v1.8.5 — 2026-04-24
- ✦Added: [visual-editor] Visual Responsive Sizes editor — modal with scale picker (XS/SM/MD/LG), live cell preview and per-cell properties (Width %, Offset %, Move ← →, Visible, Default)
- ✦Added: [visual-editor] Table Type picker — Tabular, Responsive, Absolute, Flex, SmartTable, Stencil
- ✦Added: [visual-editor] Default checkbox per cell (resets every override / locks current values as explicit)
- ✦Changed: [visual-editor] Custom editor inputs are read-only (use
...button or right-click to copy)
v1.8.4 — 2026-04-23
- ✦Added: [visual-editor] Add Tab Page (right-click → Add ▸ Tab Page)
- ✦Added: [visual-editor] Drag & drop to rearrange controls (before / after / inside, with validation)
- ✦Added: [visual-editor] Row drag handle (
≡) for tables with two or more rows - ✦Added: [visual-editor] Sticky header (toolbar, form tabs, breadcrumb stay pinned while scrolling)
- ✦Changed: [visual-editor] Small drag threshold (1–2px movements ignored)
- ✦Fixed: [visual-editor] Responsive layout follows the row when reordered
v1.8.3 — 2026-04-22
- ✦Added: [visual-editor] Delete controls from the form preview (right-click Delete or Delete key, with confirmation for non-empty containers)
- ✦Added: [visual-editor] Cut, Copy, Paste for controls and entire subtrees (Ctrl/Cmd + X/C/V)
- ✦Added: [visual-editor] Move controls up/down from the keyboard (Ctrl/Cmd + arrows; horizontal layouts use Left/Right)
- ✦Added: [visual-editor] Insert Attribute / Variable picker (searchable popup with KB attributes and local variables)
- ✦Added: [visual-editor] Add ▸ submenu on the context menu (Attribute, Button, TextBlock, Image, Error Viewer, Web Component, Table, Row, Cell, Section, Grid, Grid Column, Tab, etc.)
- ✦Added: [visual-editor] Add Area in MultiForm (creates Area link + referenced Form with empty responsive table)
- ✦Added: [visual-editor] Smart defaults for new controls (inherit majority-used sibling values)
v1.8.2 — 2026-04-21
- ✦Added: [visual-editor] Many more editable properties in GX Properties (attributes, buttons, text blocks, grids, grid columns, images, tables, sections, fieldsets)
- ✦Added: [visual-editor] Caption support for attribute controls (text, position, class)
- ✦Added: [visual-editor] GX Properties now works on Tabs, Tab Pages, Action Groups, Action Group Items, Layouts, Forms, Form references
- ✦Added: [visual-editor] Title Font as a single collapsible group in grid columns
- ✦Changed: [visual-editor] Parent properties (Font, Title Font, etc.) start collapsed
- ✦Fixed: [visual-editor] Form preview updates immediately when a property changes
- ✦Fixed: [visual-editor] Editing in MultiForm files writes to the correct form
v1.8.1 — 2026-04-20
- ✦Added: [visual-editor] GX Properties for form controls (attributes, text blocks, buttons, error viewers, images, grids, grid columns, web components, tables, rows, cells, fieldsets, divs, body)
- ✦Added: [visual-editor] Sub-properties shown as collapsible groups
- ✦Added: [visual-editor] Visibility rules per property (e.g., combo-only properties hidden when control is Edit)
- ✦Added: [visual-editor] Combo values detected from code (literal values added in code events)
- ✦Added: [visual-editor] Form references — controls that point to another form are recognised; double-click navigates
v1.8.0 — 2026-04-19
- ✦Added: [visual-editor] Visual Form Editor for
.gxFormfiles — new editor that renders the form structure visually, supporting all three GeneXus form formats (HTML, Abstract Layout, MultiForm) - ✦Added: [visual-editor] WYSIWYG control rendering (text field for Edit, dropdown for Combo, checkbox for true/false, radio buttons for radio domains, calendar icon for Date/DateTime)
- ✦Added: [visual-editor] Sample data in grid columns
- ✦Added: [visual-editor] Responsive layout preview (XS / SM / MD / LG)
- ✦Added: [visual-editor] Tabs for MultiForm files
- ✦Added: [visual-editor] Clickable breadcrumb
- ✦Added: [core-lib] Faster initial load — KB indexing starts when a workspace with a Knowledge Base is opened
- ✦Added: [core-lib] New command "KBBridge: Show Cache Status"
- ✦Fixed: [core] "Select a child file to open" now opens
.gxFormfiles in the Form Editor
Platform
- ✦Bundle rebuilt with new plugin code: 707 JS files (up from 640) across 7 extensions; bundle size 1.8 MB.
- ✦Bundle must be uploaded to
keygenapi.kbbridge.comafter this release.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.6.12 — 2026-04-27
Plugins v1.7.36 | VS Code 1.109.4
Platform
- ✦Fixed: System installer (admin) — non-admin users could not load extensions due to EPERM writing to
C:\Program Files\KBbridge\. Bundle loading now gracefully handles read-only extension directories: JS code loads from in-memory sourceCache, webview/schema files use the VSIX skeleton from install time. - ✦Fixed: Bundle download on system installer — now saves to user-writable
%AppData%\kbbridge\instead of the read-only install directory (from v1.6.10).
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.6.11 — 2026-04-18
Plugins v1.7.36 | VS Code 1.109.4
Plugins
v1.7.36 — 2026-04-18
- ✦Fixed: [analyzer, validator]
.gxPatternand.gxChildsfiles are no longer parsed as GeneXus source code — these files share thegenexuslanguage ID but are not parseable code, causing false syntax errors - ✦Fixed: [visual-editor] "Save Object As..." now correctly updates the object name for
SDTandAPIfiles - ✦Changed: [sync-status]
gxSync.trackExternalChangesdefault changed fromfalsetotrue— external change tracking enabled by default
Platform
- ✦Fixed: Bundle download failing on system installer (
C:\Program Files\KBbridge\). The bundle was saved toextensionPathwhich is read-only for non-admin users. Now saved toglobalStoragePath(%AppData%\kbbridge\) which is always writable. - ✦Updated: sync-status VSIX skeleton with
trackExternalChangesdefault =true
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.6.10 — 2026-04-17
Plugins v1.7.35 | VS Code 1.109.4
Plugins
v1.7.35 — 2026-04-17
- ✦Fixed: [core-lib] CRITICAL —
loadKeywordsConfigcrash when keywords use versioned object format{"name":"Panel","since":"15.0"}. The loader called.toLowerCase()on the object instead of extracting thenamefield first, preventing activation of genexus-language-core and all dependent extensions (Analyzer, Validator, Controller, Visual Editor).
v1.7.34 addendum — 2026-04-17
- ✦Added: [visual-editor] GX Properties panel now filters properties by GeneXus version — reads
kb-config.jsonand hides properties withsincegreater than the KB's version
Platform
- ✦Added: Update notification — license-manager checks GitHub Releases once per day, shows notification when a newer version is available (Download → kbbridge.com/download, Release Notes → kbbridge.com/changelog, Skip This Version). Opt-out via
kbbridge.checkForUpdatessetting. Manual check via Command Palette:KBEditor: Check for Updates. - ✦Added: Two-step staged release flow —
kbbridge-releasebuilds all 3 OS in parallel (single click, draft);kbbridge-publish-verify+kbbridge-publishreplace manual publishing (auto-detect version fromversion.json). - ✦Fixed: Buy-license URL now sends KBEditor version (e.g.
1.6.9) instead of VS Code version (1.109.4). - ✦Fixed: Bundle cache invalidation — was keyed by VS Code version (constant across KBEditor releases, never invalidated). Now keyed by KBEditor version.
- ✦Fixed: About dialog shows
KBEditor 1.6.10 (VS Code 1.109.4)via product.jsonkbEditorVersionfield + patch.package.jsonstays at VS Code version for extension compatibility.
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.6.9 — 2026-04-16
Plugins v1.7.34 | VS Code 1.109.4
Plugins
v1.7.34 — 2026-04-16
- ✦Added: [core-lib] GeneXus version support —
kb-config.jsonfile in workspace declaresgenexusVersion; methods/properties/keywords filtered bysincefield; absent file assumes latest version - ✦Added: [core-lib] New module
config/kbConfig.tswithloadKBConfig(),parseGXVersion(),isFeatureAvailable(),filterByVersion() - ✦Added: [core-lib]
sincefield added to 150+ entries acrossgx-methods-config.json,gx-keywords-config.json,gx-functions-config.json,gx-properties-config.json - ✦Fixed: [validator] Third chain validation now resolves initial type before chain resolution —
&Var.ToString().Trim()no longer flags Trim as invalid - ✦Fixed: [core-lib] Several returnType corrections (MailMessage.ReplyTo, Boolean.ToString, Numeric.IsEmpty); typo ChartAt → CharAt
- ✦Added: [core-lib] Many missing members: POP3Session, MailRecipientCollection, DateTime.AddDays, Character.Split/ToDate/ToDateTime, File.* (Open/Close/ReadLine/etc.), Directory., OutlookSession., DBConnection.*, sdt/collection ToJsonFile/ToXmlFile
- ✦Fixed: [validator]
resolveDataTypenow recursively resolves chained domains
v1.7.33 — 2026-04-15
- ✦Fixed: [parser, analyzer]
For Eachwith qualified transaction names (Module.Transaction) now correctly recognized — grammarbaseTrnClausesupports multi-level module paths - ✦Fixed: [core-lib] Chained property access on built-in types resolves return types —
&SMTPSession.Sender.Nameno longer flags Name as invalid - ✦Added: [core-lib]
MailRecipientCollectionmissing members (New, Count, Item)
Platform
- ✦No platform changes (bundle rebuilt with v1.7.34)
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.6.8 — 2026-04-14
Plugins v1.7.32 | VS Code 1.109.4
Plugins
v1.7.32 — 2026-04-14
- ✦Fixed: [validator, server, core-lib] Nested SDT references with module qualifiers now fully supported — fields like
&Var.AccessTokenSDT.ExpiresInwhere the SDT has a module-qualified DataType (AccessTokenSDT, PXTools.OAuthConsumer) are no longer flagged as invalid - ✦Fixed: [server] Autocompletion for chained SDT field access no longer blocked by early GeneXus object detection —
&Var.SDTField.now correctly shows sub-fields instead of returning empty results - ✦Fixed: [validator] Level name lookup in
getSDTFieldTypeis now case-insensitive
Platform
- ✦No platform changes (bundle rebuilt with v1.7.32)
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified Electron +
ELECTRON_RUN_AS_NODE=1in place
1.6.7 — 2026-04-13
Plugins v1.7.31 | VS Code 1.109.4
Plugins
v1.7.31 — 2026-04-13
- ✦Added: [sync-status]
gxSync.trackExternalChangessetting (default:false) — enables/disables tracking of changes made to GeneXus source files outside of VSCode (e.g., by an external AI CLI). Changes from GeneXus IDE via KBBridge are always excluded. - ✦Added: [sync-status] Settings tab in Sync Panel — gear icon next to tabs opens a configuration panel with toggle switch for
trackExternalChanges - ✦Added: [sync-status] Directory snapshot rebuild on enable — when
trackExternalChangesis enabled, the file snapshot is rebuilt so only changes made after that moment are detected - ✦Fixed: [core-lib]
CountincollectionMethodschanged from Method to Property —&Col.Countno longer flagged as requiring parentheses - ✦Fixed: [validator] Variables with
Collection = 'True'now correctly support collection methods (.Count,.Item(),.Add()etc.) - ✦Refactored: [validator]
buildVariablesMap()returnsMap<string, VarInfo>with{ name, dataType, isCollection }— eliminates fragileVARCOLLECTION:prefix hack - ✦Refactored: [core-lib, server, validator, core] Renamed
formControlPropertiestoformControlsandautonomousControlPropertiestoautonomousControls - ✦Fixed: [sync-status]
isKBBridgeExport()path comparison normalizes double slashes and backslashes — exported objects no longer incorrectly registered as external changes
v1.7.30 — 2026-04-09
- ✦Added: [core-lib, server, validator] Complete PEM for form controls (variables in Form) — common members for all controls plus ControlType-specific members (Edit, Combo Box, Check Box, List Box, Image, etc.)
- ✦Added: [core-lib, core, server] Complete PEM for autonomous controls — TextBlock, Button, Grid, Image, Table, WebComponent, UserControl with methods and properties parsed from
.gxForm - ✦Added: [core-lib]
getFormControls()andgetFormControlInfo()— parse.gxFormto extract ControlNames and ControlTypes - ✦Added: [core-lib] HttpRequest missing properties (ScriptName, QueryString, ServerHost, etc.) and Cookie property corrections
- ✦Fixed: [server]
loadGxMethodsConfig()now includesformControls,businessComponentMethods, andautonomousControls
Platform
- ✦Fixed:
build-bundle.pynow refreshes compiledgenexus-language-core-libinto all dependents'node_modulesbefore compilation — prevents stalefile:dependency links from causing tsc failures when core-lib gains new exports - ✦Updated: sync-status VSIX skeleton with new
gxSync.trackExternalChangessetting
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified in-process registration uses Electron +
ELECTRON_RUN_AS_NODE=1
1.6.6 — 2026-04-08
Plugins v1.7.29 | VS Code 1.109.4
Plugins
v1.7.29 — 2026-04-08
- ✦Added: [core] File badge "AP" for
.API.gxSourcefiles in Explorer (was previously showing generic "GX")
v1.7.28 addendum — 2026-04-08
- ✦Fixed: [validator, core-lib] Variable lookups in
methodValidator,parameterValidatorandparameterParserare now consistently case-insensitive — variables declared asCookieare correctly resolved when referenced as&cookie(and vice versa)
Platform
- ✦No platform changes (bundle rebuilt with v1.7.29)
VS Code 1.109.4
- ✦No upstream changes
MCP
- ✦MCP server unchanged; verified in-process registration uses Electron +
ELECTRON_RUN_AS_NODE=1(fix from 1.6.3 still in place)
1.6.5 — 2026-04-08
Plugins v1.7.28 | VS Code 1.109.4
Platform
- ✦Removed: Windows portable ZIP artifact (
KBEditor-win32-x64-*.zip). Users who extracted the ZIP to custom folders (e.g. paths containing spaces) hit install-path edge cases that broke MCP server configuration and.mcp.jsonpath resolution. Only the User Setup and System Setup installers are now published for Windows — both install to a predictable, space-free path underPrograms\KBbridge\.
VS Code 1.109.4
- ✦No upstream changes
1.6.4 — 2026-04-07
Plugins v1.7.28 | VS Code 1.109.4
Plugins
v1.7.28 — 2026-04-07
- ✦Fixed: [core] "Go to Definition" on
BusinessComponent:,Attribute:orDomain:reference prefixes — now navigates to the referenced Transaction/Attribute/Domain file (also supports module path:BusinessComponent:Name, Module.Path) - ✦Added: [core-lib, visual-editor, validator] BusinessComponent variables support — variables can now be based on
BusinessComponent:TransactionName(also with sub-structures and module path:BusinessComponent:Name.SubLevel, Module.Path) - ✦Added: [visual-editor] "Business Component" property in GX Properties for variables — autocompletes only Transactions with
BusinessComponent = 'True'enabled - ✦Added: [core-lib] Business Component methods documented in
gx-methods-config.json—Load,Save,Insert,Update,InsertOrUpdate,Delete,Check,Success,Fail,GetMessages,ToXml,FromXml,ToJson,FromJson,GetByKey,RemoveByKey,Mode - ✦Added: [visual-editor]
ElementTypecalculated property (variable|attribute|domain) — restricts reference properties (Attribute, SDT, ExternalObject, BusinessComponent) to variables only - ✦Fixed: [visual-editor] Type Definition fields hidden when variable is based on a BusinessComponent
- ✦Fixed: [visual-editor] GX Properties detects
#Variables [dynamic]and#Variables [readonly]sections — variables shown in readonly mode - ✦Fixed: [visual-editor] Reference property placeholders hidden when property is in readonly mode
Platform
- ✦No platform changes (bundle rebuilt with v1.7.28)
VS Code 1.109.4
- ✦No upstream changes
1.6.3 — 2026-04-07
Plugins v1.7.27 | VS Code 1.109.4
Platform
- ✦Fixed: GeneXus Knowledge MCP server failed with "MCP error -32000: Connection closed" on machines without a system Node.js in PATH. The in-process
registerMcpServerDefinitionProvidernow uses KBEditor's bundled Electron binary withELECTRON_RUN_AS_NODE=1, matching the auto-generated.vscode/mcp.json/.mcp.jsonconfigs.
VS Code 1.109.4
- ✦No upstream changes
1.6.2 — 2026-04-06
Plugins v1.7.27 | VS Code 1.109.4
Plugins
v1.7.27 — 2026-04-06
- ✦Fixed: [server] Method autocompletion no longer adds parentheses to SDT fields and properties
- ✦Fixed: [validator] Undeclared variable check now case-insensitive
- ✦Fixed: [visual-editor] Duplicate property block creation prevented for reference properties
- ✦Added: [core-lib] "Case" keyword added to autocompletion suggestions
Platform
- ✦Changed: Updated shared config gx-keywords-config.json
VS Code 1.109.4
- ✦No upstream changes
1.6.1 — 2026-04-04
Plugins v1.7.26 | VS Code 1.109.4
Platform
- ✦Added: "Buy a License" link on registration page — opens purchase page with user data (name, company, email, language, machine fingerprint, version, platform, arch) as URL parameters for payment processor integration
- ✦Fixed: Start menu folder now correctly shows "KBbridge" (shared with KBSync) instead of "KBEditor"
1.6.0 — 2026-04-04
Plugins v1.7.26 | VS Code 1.109.4
Plugins
v1.7.26 — 2026-04-04
- ✦Added: [core] GeneXus keywords in autocompletion (EndNew, EndIf, For Each, Do While, etc.)
- ✦Added: [core-lib] Compound keywords and completion exclusions in gx-keywords-config.json
- ✦Fixed: [core-lib] Cleaned up keywords config — removed non-existent keywords, added missing ones
v1.7.25 — 2026-04-03
- ✦Added: [visual-editor] Extended properties for Variables (~50 extra from config), Attributes, and Domains
- ✦Added: [visual-editor]
mergePropertySchemas()for combining schema + config properties - ✦Added: [visual-editor]
IsInFormcalculated property,ObjectTypefrom filename,ExternalNamefor APIs - ✦Added: [visual-editor] DataType-based and ControlType-based conditional property visibility
- ✦Added: [visual-editor] Readonly conditions for Domain/Supertype-based properties
- ✦Added: [config]
variablePropertiessection with 9 shared property groups - ✦Added: [config]
Blob,GeoLine,GeoPolygontypes in gx-methods-config.json - ✦Fixed: [visual-editor] readonlyIf evaluates against defaults, Custom type as readonly, Color as string
- ✦Fixed: [config] DKL_ internal properties hidden, category/default corrections
Platform
- ✦Added: Error Lens (usernamehw.errorlens) pre-installed — displays inline error/warning messages next to code (open-source, MIT license)
- ✦Changed: Updated shared configs (gx-keywords, gx-methods, gx-properties)
- ✦Changed: Updated visual-editor VSIX schema (variable.json)
VS Code 1.109.4
- ✦No upstream changes
1.5.3 — 2026-04-03
Plugins v1.7.25 | VS Code 1.109.4
Plugins
v1.7.25 — 2026-04-03
- ✦Fixed: [validator] Parameter mode prefixes (
In:,Out:,InOut:) now case-insensitive in Parm() declarations - ✦Fixed: [validator] "requires a variable (mode: out/inout)" warning now only triggers for non-assignable values
- ✦Fixed: [visual-editor] GX Properties shows variable properties when cursor is on
&Variablein any Transaction section - ✦Added: [server] Method autocompletion auto-inserts parentheses and triggers Signature Help
Platform
- ✦Removed: All debug traces and diagnostic code from license manager
- ✦Fixed: Updated ALL VSIX skeletons with current plugin defaults (validator rules enabled)
- ✦Fixed: Added require.resolve to bundle module hook
- ✦Added: Bundle loading lessons documented in .ai-context/
VS Code 1.109.4
- ✦No upstream changes
1.5.2 — 2026-04-02
Plugins v1.7.24 | VS Code 1.109.4
Platform
- ✦Fixed: sync-status extension now loaded from encrypted bundle (was running from old VSIX stub — all new features were invisible)
- ✦Fixed: Webview TypeScript compiled separately for visual-editor and sync-status (both have their own tsconfig.json)
- ✦Fixed: CSS files now included in encrypted bundle and written to disk (4 files for properties-panel, sync-panel, new-object-panel, tree-editor)
- ✦Fixed: JSON schema files now included in bundle and written to disk (7 property schemas for visual-editor)
- ✦Fixed: VSIX skeleton updated with current property schemas (attribute.json, transaction-attribute.json changed)
- ✦Fixed: GxPropertiesConfigManager config path — added root-level
node_modules/alongsideout/node_modules/ - ✦Fixed: Bundle now collects .js + .css + .json files (was .js only)
- ✦Fixed: License manager writes all webview, CSS, JSON, and schema files to disk at bundle load time
1.5.1 — 2026-04-02
Plugins v1.7.24 | VS Code 1.109.4
Platform
- ✦Fixed: Webview TypeScript now compiled separately (visual-editor webview has own tsconfig)
- ✦Fixed: CSS files now included in encrypted bundle (4 files for properties-panel, sync-panel, new-object-panel, tree-editor)
- ✦Fixed: CSS and webview source files written to disk by license manager (webviews load via URI)
- ✦Fixed: GX Properties panel now updates correctly — object properties on line 1, updated styling
- ✦Fixed: GxPropertiesConfigManager config path — added root-level
node_modules/alongsideout/node_modules/
1.5.0 — 2026-04-01
Plugins v1.7.24 | VS Code 1.109.4
Plugins
v1.7.24 — 2026-03-31
- ✦Fixed: [sync-status] User saves in VSCode no longer blocked by KBEditor export check —
onDidSaveTextDocumentbypasses export filter (only external changes filtered) - ✦Fixed: [sync-status]
.gxFormfiles correctly extracted by ObjectInfoExtractor — form saves generate proper change entries with object name and type
Platform
- ✦Changed: Start menu folder set to "KBbridge" (shared with KBSync)
VS Code 1.109.4
- ✦No upstream changes
1.4.1 — 2026-03-30
Plugins v1.7.23 | VS Code 1.109.4
Platform
- ✦Fixed: Cached encrypted bundle now invalidated on app update — stores app version alongside bundle and forces re-download when version changes
1.4.0 — 2026-03-30
Plugins v1.7.23 | VS Code 1.109.4
Plugins
v1.7.23 — 2026-03-30
- ✦Added: [core] Signature Help for variable methods —
&Variable.Method(shows parameter hints from methods config for all data types including External Objects - ✦Added: [core] Signature Help for
.Submit()calls with first parameter documentation - ✦Added: [core] Active parameter highlighting — advances highlighted parameter as you type commas
- ✦Improved: [core] Signature Help regex patterns now case-insensitive
- ✦Improved: [core] Signature Help persists while typing arguments
- ✦Added: [config]
Sleep,RGB,Space,StrSearch,StrSearchRev,StrReplaceadded to built-in functions - ✦Improved: [core-lib]
getMethodsForType()searches both builtInTypes and externalObjectTypes - ✦Improved: [core-lib] SDT fields without explicit DataType default to
Numeric(4.0)
v1.7.22 — 2026-03-29
- ✦Added: [visual-editor] Visual distinction between editable, readonly, and default properties
- ✦Added: [visual-editor] Editable input fields show blue border on focus
- ✦Added: [visual-editor] Dropdown options display with bright text even in dimmed state
- ✦Fixed: [visual-editor] Domain chain resolution — multi-level domain references fully resolved to base type
- ✦Fixed: [visual-editor] Domain file lookup uses CacheManager as fallback
- ✦Fixed: [visual-editor] RestoreToDefault for reference properties correctly removes DataType
- ✦Fixed: [visual-editor] RestoreToDefault on pattern nodes preserves CustomType dropdown options
- ✦Fixed: [visual-editor] Direct text input in CodeConditions/CodeExpressions no longer wraps in brackets
- ✦Fixed: [visual-editor] Reference fields no longer show double border
- ✦Fixed: [config] Web Service Protocol properties correctly hidden when "Expose as Web Service" is false
- ✦Added: [core] File badges for Table (TB), Attribute (AT), and Domain (DM) in Explorer
Platform
- ✦Changed: Updated shared config
gx-functions-config.json(6 new built-in functions) - ✦Changed: Product renamed from KBbridge to KBEditor (display name only — internal IDs preserved)
VS Code 1.109.4
- ✦No upstream changes
1.3.0 — 2026-03-29
Plugins v1.7.21 | VS Code 1.109.4
Plugins
v1.7.21 — 2026-03-29
- ✦Added: [visual-editor] Object-level properties in GX Properties panel — clicking on line 1 of any
.gxSourceshows editable properties (Description, Call Protocol, Object Visibility, etc.) driven bygx-properties-config.json - ✦Added: [visual-editor] Table attribute properties — clicking attribute in
.Table.gxSourceshows properties in readonly mode - ✦Added: [visual-editor] ExternalObject member properties — Properties, Methods, Parameters, Events shown with member-specific properties
- ✦Added: [visual-editor] New reference property types:
SDTReference,MasterPageReference,ThemeReference - ✦Added: [visual-editor] Property value remapping — internal GeneXus names mapped to display names (prettyName)
- ✦Added: [visual-editor] Multi-line Formula display with auto-sizing textarea
- ✦Added: [visual-editor] Subcategory visual nesting with
/separator - ✦Added: [visual-editor] Enum display names in dropdown properties
- ✦Added: [visual-editor] Conditional property visibility and readonly rules from config
- ✦Added: [visual-editor] Fallback properties for undeclared object types (BASE + BASE_VISIBILITY)
- ✦Changed: [visual-editor] JSON/Traditional toggle moved inside element header
- ✦Fixed: [visual-editor] DataType shown as readonly (not hidden) when based on Domain
- ✦Fixed: [visual-editor] Multi-line property parsing and write-back with correct indentation
- ✦Fixed: [visual-editor] Comma formatting in property blocks handles multi-line values
- ✦Added: [analyzer] Full syntax parsing for
.Group.gxSourcefiles - ✦Fixed: [parser] Multi-line string values supported in all property blocks
- ✦Fixed: [validator] "requires a variable (mode: out)" downgraded from Error to Warning
- ✦Fixed: [sync-status] Bulk export end detection uses file modification time as reference
- ✦Added: [config]
PrivateObjectmoved to ignored properties - ✦Changed: [config] BASE split into BASE (Description) and BASE_VISIBILITY (ObjectVisibility)
v1.7.20 — 2026-03-28
- ✦Added: [sync-status]
.gxFormfiles now tracked as user changes
v1.7.19 — 2026-03-26
- ✦Added: [analyzer] Full syntax parsing for
.Table.gxSourcefiles (PhysicalAttributes, LogicalAttributes, RedundantAttributes, Indexes, ForeignTables, etc.) - ✦Added: [analyzer] Full syntax parsing for
.ExternalObject.gxSourcefiles (Properties, Methods, Events) - ✦Added: [analyzer]
[readonly]section protection with distinct grey border decoration - ✦Added: [analyzer] Multi-line string support in LogicalAttributes Formula
- ✦Added: [icons] Table icon with grid/column design
- ✦Added: [core]
.Table.gxSourceregistered as GeneXus language file - ✦Added: [sync-status] "Delete All Pending" button in deletion confirmation
- ✦Fixed: [sync-status] Files modified during bulk export excluded from change tracking
- ✦Fixed: [parser]
Dom:DomainName.Valuesyntax recognized
v1.7.18 — 2026-03-25
- ✦Added: [sync-status] Bulk export detection — mass externalization pauses file change tracking
- ✦Added: [sync-status] Status bar spinner during bulk export: "KBEditor: Exporting KB..."
- ✦Added: [sync-status] Banner in Sync panel during bulk export
- ✦Added: [sync-status] Configurable bulk export timeout (default 30 min) with notification
- ✦Added: [sync-status] Startup detection of in-progress bulk export
Platform
- ✦Added: MCP server embedded in installer for all platforms (esbuild bundle + platform-specific native addons)
- ✦Added: Auto-generate AI config files for GeneXus workspaces (
.vscode/mcp.json,.mcp.json,CLAUDE.md,.cursor/mcp.json) - ✦Added: MCP server uses KBEditor's own Electron as Node runtime (
ELECTRON_RUN_AS_NODE=1) — no external Node.js required - ✦Added: MCP config merge logic — adds server to existing config files without overwriting
- ✦Added: Versioning system —
version.jsonas single source of truth, CI reads it for artifact names - ✦Added: Unified CHANGELOG across Plugins/Platform/VS Code streams
- ✦Added: CI publishes installers to public
kbbridge-releasesrepo with structured release notes - ✦Added: CI auto-updates public repo README with direct per-platform download links
- ✦Added: CI publishes CHANGELOG.md to public repo automatically
- ✦Added: Installer files renamed from VS Code version to KBEditor version (e.g.,
KBEditorSetup-x64-1.3.0.exe) - ✦Added: AI context files committed to git (
kbbridge/.ai-context/) for project continuity - ✦Added:
CLAUDE.mdat repo root for Claude Code auto-loading - ✦Added: New shared config
gx-properties-config.jsonfor object property definitions - ✦Fixed: Extension loading isolation — one extension failure no longer blocks the remaining 5
- ✦Fixed: MCP server dependency resolution — auto-walk full transitive dep tree (55 packages) instead of manual cherry-picking
- ✦Fixed: Stubs for
sharpandonnxruntime-web(imported by transformers but unused on Node.js) - ✦Fixed: core-lib
package.jsoncreated inline (not copied from plugins repo — broke on CI) - ✦Fixed: macOS embed script compatibility (
mktempandsedBSD syntax) - ✦Fixed: GitHub Actions
secretsnot allowed in step-levelifexpressions - ✦Changed: VSIX skeletons updated (core: Table file type, sync-status: bulk export timeout, icons: Table icon)
- ✦Changed: Bundle rebuilt — 663 JS files (was 662)
VS Code 1.109.4
- ✦No upstream changes
1.2.0 — 2026-03-26
Plugins v1.7.17 | VS Code 1.109.4
Plugins
v1.7.17 — 2026-03-24
- ✦Fixed: [validator] Parameter type resolution fully resolves variables via Attributes to base data type
- ✦Fixed: [validator] Domains/attributes without explicit DataType default to
Numeric(4.0)(GeneXus standard) - ✦Fixed: [validator] Qualified names in
.Call()/.Udp()resolved correctly (e.g.,V138.FirmaReporte.Udp()) - ✦Fixed: [validator] Block comments (
/* ... */) now skipped during validation - ✦Fixed: [validator]
Numeric(9.0-)signed format accepted —-suffix no longer flagged - ✦Fixed: [validator] Property access on built-in types (e.g.,
&Directory.Source.Trim()) resolves correctly - ✦Fixed: [validator] Case-insensitive lookup for built-in type methods
- ✦Fixed: [parser] All GeneXus keywords fully case-insensitive (
EndIF,endif,ENDIFall valid) - ✦Fixed: [parser]
For Each Count &Variablenow valid withoutSkip - ✦Fixed: [visual-editor] SDT type classification for DataTypes with
.in name - ✦Added: [visual-editor] SDT autocomplete shows nested collection items (on-demand top-10 expansion)
- ✦Fixed: [visual-editor] Autocomplete no longer disappears when typing
,for module filtering - ✦Added: [sync-status] KBEditor export exclusion — files exported by KBEditor not tracked as user changes
- ✦Changed: [icons] Knowledge Base icon redesigned — 3D cube with semi-transparent faces
v1.7.16 — 2026-03-23
- ✦Fixed: [validator] SDT field path navigation descends correctly into sub-levels
- ✦Fixed: [validator] Enum domain vs compatible base type mismatch downgraded to Warning
- ✦Fixed: [validator] Parameter error messages show caller's variable name (not callee's parameter name)
- ✦Fixed: [validator]
.Udp()return errors highlight assignment variable (before=) - ✦Fixed: [validator] Parameter position highlighting works inside nested function calls
- ✦Added: [validator] Built-in GeneXus function validation (Msg, iif, Format, etc.) with parameter count/types
- ✦Added: [validator]
anytype support for parameters - ✦Added: [validator] Skip re-validation on editor tab switch if document unchanged
- ✦Added: [validator] Cached parsed parameters for called procedures
- ✦Fixed: [parser]
Count(attribute, condition)recognized as valid function call - ✦Fixed: [parser]
&Commitand keyword-named variables parsed correctly in all contexts - ✦Fixed: [analyzer]
[dynamic]sections now offer dialog instead of silently blocking edits - ✦Added: [core] "KBEditor: Reindex Cache" command with progress bar
- ✦Fixed: [core] Go to Definition adds found objects to cache for instant subsequent lookups
- ✦Fixed: [core] Hover and Code Action use cached KB objects instead of full workspace scan
- ✦Fixed: [core] Output panel no longer opens automatically on reload
- ✦Added: [sync-status] Delete button on Pending entries with confirmation dialog
- ✦Changed: [sync-status] Panel title "GX Sync" → "KBEditor Sync"
v1.7.15 — 2026-03-21
- ✦Added: [validator] Built-in function validation for
Msg(1-2 params) andiif(3 params) - ✦Changed: [icons] Knowledge Base icon updated
v1.7.14 — 2026-03-19
- ✦Added: [validator] "Add Variable" Quick Fix infers data type from variable name
- ✦Added: [validator] Predefined variable
&Modewith typeCharacter(3)for Transactions
Platform
- ✦Added: MCP server embedded in installer for all platforms (Windows, Linux, macOS)
- ✦Added: esbuild bundling — MCP server JS bundled to single 2.2 MB file, only native addons shipped separately
- ✦Added: Auto-generate AI config files when GeneXus workspace detected (
.vscode/mcp.json,.mcp.json,CLAUDE.md,.cursor/mcp.json) - ✦Added: MCP configs use KBEditor's own Electron as Node runtime (
ELECTRON_RUN_AS_NODE=1) — no external Node.js needed - ✦Added: MCP config merge logic — adds
genexus-knowledgeto existing config files without overwriting - ✦Added: Per-module feature documentation in PRODUCT_OVERVIEW.md
- ✦Added: Date + commit hash in CI artifact names for build identification
- ✦Added: GitHub Release
mcp-data-v1for MCP server data (vector DB + embedding model) - ✦Fixed: Extension loading isolation — one extension failure no longer blocks the remaining 5
- ✦Fixed: core-lib
package.jsoncreated inline (not copied from plugins repo — broke on CI) - ✦Fixed: MCP server dependency resolution — auto-walk full transitive dep tree (55 packages) instead of manual cherry-picking
- ✦Fixed: Added stubs for
sharpandonnxruntime-web(imported by transformers but unused) - ✦Changed: VSIX skeletons updated — KBEditor command categories, reindexCache command, new KB icon
- ✦Changed: Embed script creates core-lib directory structure with
package.json+ 3 shared JSON configs - ✦Changed: Bundle source hotfixes (non-blocking indexer, icon mappings) now inactive — upstream has them natively
1.1.0 — 2026-03-21
Plugins v1.7.13 | VS Code 1.109.0
Plugins
v1.7.13 — 2026-03-17
- ✦Added: [analyzer] Full syntax parsing for
.API.gxSourcefiles (API objects with groups, methods, annotations) - ✦Added: [icons] New SVG icons: API, ExternalObject, Childs, test types (outline style, rounded borders)
- ✦Added: [icons] Form-specific icons: WebPanel, Transaction, WebComponent, MasterPage, Panel for SD
- ✦Added: [visual-editor] New object types in "New Object" panel: Attribute, ExternalObject, API, WebMasterPage, test types
- ✦Changed: [icons] All object icons redesigned to consistent outline style
v1.7.12 — 2026-03-16
- ✦Fixed: [core] Incorrect scope references in publisher configuration
v1.7.11 — 2026-03-15
- ✦Added: [core]
.gxFormlanguage — XML highlighting and auto pretty-printing, separated from GeneXus language - ✦Added: [core] "Save Object As..." available from editor tabs
v1.7.9 — 2026-03-12
- ✦Fixed: [core] Re-enabled hover tooltips disabled during performance optimization
v1.7.7 — 2026-03-10
- ✦Added: [analyzer] Dynamic section protection (
#[dynamic]/[dynamic]tags) with visual decorations - ✦Added: [analyzer] DataProvider group properties:
NoOutput,OutputIfDetail,One,Count,Skip
v1.7.6 — 2026-03-09
- ✦Added: [core] Group file (
.gxGroup) support - ✦Added: [core] Non-blocking reference indexer — no more editor freezes on large KBs
- ✦Added: [controller] Sort Variables — auto-alphabetize
#Variablessection on save - ✦Fixed: [visual-editor] Properties panel variable editing fixes
v1.7.5 — 2026-03-04
- ✦Fixed: [sync-status] "Skipped" toggle button now works correctly
v1.7.4 — 2026-03-03
- ✦Improved: [sync-status] Panel UI — better entry layout, status badges, usability
Platform
- ✦Added: GeneXus documentation MCP server — local vector DB with 46,750 doc chunks, 3 AI tools (
search_docs,lookup_method,list_topics), fully offline - ✦Added: MCP server registered via VS Code
mcpServerDefinitionsproposed API - ✦Added: Product overview and marketing documentation (PRODUCT_OVERVIEW.md)
- ✦Added: Automated bundle build script (
build-bundle.py) — compiles all plugins and creates ZIP - ✦Added: Hotfix system — non-blocking reference indexer and test/API icon mappings injected at bundle load time
- ✦Fixed: Bundle require hook resolves package imports from encrypted bundle
- ✦Fixed: Language server skeleton VSIX includes all third-party deps
- ✦Fixed: Bundle cache invalidation and language server crash
- ✦Fixed: Webview scripts written to disk (sandboxed iframes can't load from memory)
- ✦Fixed: Bundle path normalization for Windows backslashes
- ✦Fixed: Properties panel race condition on startup
- ✦Fixed: Extension host blocking during reference index build
- ✦Fixed: Bundle disk-write policy — empty placeholders for extension host files, real source for webview/LSP
- ✦Added: License recovery via
/getlicensekeyendpoint - ✦Added: Machine File Certificate verification for startup fingerprint check
- ✦Fixed: Trial recovery and expiry handling from updated API
- ✦Changed: GitHub Actions updated to Node 24 compatible versions
1.0.0 — 2026-02-26
Plugins v1.7.1 | VS Code 1.109.0
Plugins
v1.7.0 — 2026-02-14
- ✦Added: [sync-status] Synchronization status extension — change tracking panel with three tabs
- ✦Added: [sync-status] Automatic change detection on file save and filesystem monitoring
- ✦Added: [sync-status] External change reconciliation and configurable retention
v1.6.0 — 2026-01-25
- ✦Added: [visual-editor] Visual editing extension — GX Properties panel, pattern tree viewer
- ✦Added: [visual-editor] DataType compound parsing (
Numeric(12.2-)→ Length=12, Decimals=2, Signed=true) - ✦Added: [visual-editor] Variable renaming with automatic source file update
- ✦Added: [visual-editor] Reference autocomplete for Domain, Attribute, SDT, ExternalObject
v1.5.0 — 2026-01-10
- ✦Added: [controller] Object editing operations extension
- ✦Added: [controller] Transaction ↔ Attribute synchronization
v1.4.0 — 2026-01-02
- ✦Added: [core] Instant KB object lookup with background indexing and persistent cache
v1.3.0 — 2025-12-15
- ✦Added: [all] Shared library — parsing, search, type resolution across all extensions
- ✦Added: [all] Method/property definitions for all GeneXus built-in types
v1.2.0 — 2025-12-10
- ✦Added: [validator] Semantic validation extension — DataType, undeclared variables, parameter checking, method chain validation
v1.1.0 — 2025-11-25
- ✦Added: [analyzer] Syntax analysis extension with ANTLR4 grammar
- ✦Added: [parser] GeneXus lexer and parser for
.gxSourcefiles
v1.0.0 — 2025-11-12
- ✦Added: [icons] File icon theme for GeneXus object types
- ✦Added: [core] GeneXus language definition — syntax highlighting, snippets
- ✦Added: [server] Language Server with Go to Definition, Hover, Code completion
Platform
- ✦Added: KBEditor branded VS Code fork (based on VSCodium)
- ✦Added: Custom branding — name, icons, data folder (
.kbbridge) - ✦Added: Phase 0 — embed proprietary extensions as built-in (non-uninstallable)
- ✦Added: Phase 1 — Rust native loader with AES-256-GCM decryption
- ✦Added: Phase 1.5 — License Manager (registration, 15-day trial, paid license activation)
- ✦Added: Phase 2 — Extension API server at
keygenapi.kbbridge.com - ✦Added: Phase 3 — Runtime bundle decryption and loading via
Module._compile() - ✦Added: Offline license verification with Ed25519 signatures
- ✦Added: Machine fingerprinting (7-point hardware identification)
- ✦Added: GitHub Actions CI workflows for Windows, macOS (x64 + arm64), Linux
- ✦Added: VSIX skeleton system — stubs in repo, real code in encrypted bundle
- ✦Added: Update checks disabled in builds
- ✦Added: Publisher rename pipeline (
puntoexe→kbbridge)
VS Code 1.109.0
- ✦Initial base version from upstream VSCodium