Change History
Changelog — KB Sync
All updates, improvements and fixes in each KB Sync Manager and Sync Engine version.
KBSync Changelog
All notable changes to KBSync — the GeneXus Knowledge Base synchronization tool.
1.4.10 — 2026-07-01
Sync Engine
v1.5.12 — 2026-07-01
- ✦Fixed: when the engine starts, the automatic build no longer runs for objects whose changes were already synchronized on previous days. Previously, on start-up the build could be re-triggered for changes that had already been processed in an earlier session, re-specifying objects that were already up to date. Changes that genuinely arrived while the engine was stopped are still processed as usual.
v1.5.11 — 2026-06-27
- ✦Fixed: the Address (SOAP endpoint) of a WSDL External Object is now externalized and internalized together with its other SOAP properties. Previously it was omitted from the externalized file, so the configured endpoint was neither preserved nor changeable through synchronization — relevant when the same web service is duplicated per environment (for example production and testing) with different addresses.
- ✦Fixed: an enumerated Domain whose data type is the default Numeric(4,0) now externalizes its enumerated values (the Enum Values list). Previously the values were omitted from the externalized file for that particular type, so the enumeration was lost; the values are now read from the domain's underlying definition, so they are externalized for every enumerated domain regardless of its data type.
v1.5.10 — 2026-06-26
- ✦Fixed: a build no longer gets stuck on machines where GeneXus shows a blocking error dialog while starting the build — for example when a code generator cannot be loaded on that particular machine. Because the build runs unattended in the background, there is nobody to dismiss such a dialog; the engine now closes it automatically (recording its text in the build log) so the build continues, just as confirming the dialog in the IDE would. Available on every GeneXus version where build requests are supported.
v1.5.9 — 2026-06-25
- ✦Fixed: the automatic build that runs after synchronization no longer fails when it starts while the Knowledge Base is still internalizing objects. Previously, if the build was triggered just before internalization finished, it could fail and none of the requested objects were specified. Now the build is held as pending and automatically re-run once internalization settles; for the automatic build of internalized objects it additionally includes the same user's related objects that were still being internalized, so they are all specified together in a single batch. The wait reuses the existing post-synchronization quiet period, so no object is ever specified while internalization is still in progress. Available on every GeneXus version where build requests are supported.
v1.5.8 — 2026-06-22
- ✦Fixed: a build of specific objects — including the automatic build after synchronization — now always specifies, generates and compiles the requested objects, instead of occasionally skipping a freshly-internalized object that GeneXus considered already up to date (the object was reported as built but its generated code was not refreshed). A whole-Knowledge-Base "Build All" keeps its incremental behavior, reprocessing only the objects that actually changed. Available on GeneXus 17 and 18.
Sync Manager
v1.4.10 — 2026-07-01
- ✦Updated: AI docs (
ai/kbbridge/) — added guidance for duplicating a GeneXus object (Save Object As): for every object type, which sibling files must be copied together (.gxFormalongside.gxSourcefor Transactions/WebPanels/WebComponents/Panels;.gxLayoutalongside.gxSourcefor Procedures with a report layout; single-file objects such as SDT, Data Provider and Data Selector), how to rewrite the first line of the.gxSourcewith the new object name, and what must not be touched (form/layout content, internal identifiers, existing target files) — so AI assistants no longer produce half-copies that leave the duplicated object structurally broken
v1.4.7 — 2026-06-25
- ✦Updated: AI docs (
ai/kbbridge/) — addedbuild-pipeline.mddocumenting the Sync Engine's build pipeline for AI assistants: how to request builds (the build-request files, their fields and id format) and how to read the results (build status with per-object and per-message detail, the available environments and their lock, and the current navigation set per object and environment); and expandedgenexus-navigation.mddocumenting the externalized GeneXus navigation report so AI assistants can read it — including how to determine the base table and its extended table (the foreign-key joins that resolve foreign attributes), and how to understand errors and warnings that were not otherwise surfaced
1.4.6 — 2026-06-19
Sync Engine
v1.5.7 — 2026-06-19
- ✦Added: code generation and full build (including compilation) of specific objects on request is now also available on GeneXus versions earlier than 17 — XEv1, XEv2, XEv3, 15 and 16 — not only on 17 and 18. As on the newer versions, the "force generation" option re-specifies and regenerates the requested object even when GeneXus considers it up to date, and the engine never triggers a database reorganization as part of a build. (A specification-only request and a full "Build All" were already supported on these versions; if a particular version cannot perform the targeted build, the engine falls back to specifying the object so the request still returns its navigation and errors.)
v1.5.6 — 2026-06-18
- ✦Fixed: a build that generates or compiles now reports its complete output — the specification, generation and compilation messages — attributed to each object, and shows the object's correct result. Previously those messages, produced while the build ran, were not captured, so a generated or compiled object could finish with no messages and be shown as skipped even though it had actually been built. Available on every GeneXus version where build requests are supported.
- ✦Fixed: requesting code generation or a full build for a single object now regenerates that object's source (and, for a full build, compiles it), instead of only specifying it. The "force generation" option re-specifies the object as well — refreshing its navigation report and regenerating its code even when GeneXus considers it already up to date; without the option, only what actually changed is reprocessed. The engine still never triggers a database reorganization as part of a build. Available on GeneXus 17 and 18.
- ✦Changed: a generate or build of specific objects now targets exactly the requested object(s) — it no longer re-specifies and rebuilds the whole tree of objects they call. A new request option lets the KB Editor additionally include the called objects (the object's call tree) when that is wanted. Available on GeneXus 17 and 18.
v1.5.5 — 2026-06-16
- ✦Fixed: build requests now specify against the resolved environment's preferences (the one fixed in the configuration, or the one chosen in the request), instead of ignoring them. Previously the specification ran without the environment's generator settings, so a check the environment defines as a warning — such as "Check Type Errors" — was reported as an error and the object as "Specification Failed", differing from the GeneXus IDE. Now the build result matches what the IDE reports for that environment.
- ✦Fixed: in a Build All, the specification warnings and errors that belong to a specific object are now reported on that object (which appears in the result with its messages), instead of being grouped in the build's general message list. The general list now keeps only messages that cannot be linked to a particular object (such as compilation/linker output).
- ✦Fixed: each build message now carries the source section it refers to (Events, Rules, Source, etc.), the same way the internalization messages already do, so the KB Editor can place a clicked build error on the exact line of the externalized source. Object/compilation-level messages with no source line carry no section, as before.
- ✦Fixed: a build that includes code generation now actually writes the generated source code (for example
.java/.cs) against the selected environment, instead of stopping after the specification phase. Previously the scopes that should generate produced only the navigation and the semantic checks, without ever writing the generated source. The engine still never triggers a database reorganization as part of a build. Available on every GeneXus version where build requests are supported. - ✦Added: each build message now indicates the phase that produced it — specification, generation or compilation — so the KB Editor can group the build results by origin. A "specify only" build reports every message as specification, as before.
- ✦Fixed: a build result now records whether it was a "Build All". The flag is copied onto the build result the same way the scope and environment already are, so the KB Editor can keep showing the "Build All" indicator on a finished batch even after it discards the original request.
- ✦Improved: a build in progress is now reliably terminated when the engine stops — including when the engine is forcibly closed or crashes, not only on a normal stop — so a forced shutdown no longer leaves a build (or its compiler) running in the background holding the Knowledge Base.
v1.5.4 — 2026-06-15
- ✦Fixed: the specification messages (errors and warnings) of a requested build are now reported on the specific object they belong to, instead of being grouped in the build's general message list. The general list is now reserved for build/compilation messages that cannot be attributed to a particular object. Available on every GeneXus version where build requests are supported.
- ✦Added: the KB Editor can request a full "Build All" — the engine specifies the whole Knowledge Base and reports only the objects that GeneXus actually re-specified with changes (objects reported as unchanged are not listed), each with its result and navigation report. Useful after broad-impact changes such as a Domain's enumerated values. Available on every GeneXus version where build requests are supported.
- ✦Added: when a change to a structural object that is not itself specified (Domain, Attribute, SDT, Table, External Object) is internalized, it now appears in the build batch with a note that it was not specified and that a Build All is recommended, since changes to those object types can affect the specification of other objects.
- ✦Fixed: internalizing a Pattern Instance now preserves the line breaks and tabs inside its code-valued properties (for example an action's post-code). Internalization now normalizes the escaping of those properties on import, so the code is stored with its original line breaks even if the file arrived with extra escaping accumulated from a previous round-trip. Available on every GeneXus version where Pattern Instances are externalized.
- ✦Fixed: an object included in a build that is not specifiable on its own (for example a Structure Data Type generated by a pattern) is now reported as skipped in the build result, instead of being left without a result. Previously such objects could appear in the build status with an empty status, which the KB Editor showed as a never-resolving "pending" badge on an already-finished build.
v1.5.3 — 2026-06-14
- ✦Added: automatic builds are now attributed to the user whose changes were internalized. The build still runs on the engine side, but each automatic build carries the user that triggered it, so the KB Editor can show every developer the build result of their own internalized changes.
- ✦Changed: automatic builds are no longer triggered on every synchronization cycle. The engine now waits for a short quiet period with no further internalization and then builds together all the objects accumulated during that window — avoiding partial builds when many objects arrive across several cycles. The quiet period (in cycles) and a safety cap are configurable; any objects still pending when the engine is stopped are queued so they build on the next start.
- ✦Added: the engine now clearly reports when it cannot re-externalize an object because its last internalization failed (a safeguard that protects the modified source file from being overwritten). The notice is always shown on the engine console and recorded for the KB Editor, so this situation is no longer silent.
- ✦Added: a way to discard a failed internalization. From the KB Editor the user can request to discard the external changes of an object and have it re-externalized from the Knowledge Base — restoring consistency between the Knowledge Base and the externalized directory and clearing the block that was preventing the object's export.
v1.5.2 — 2026-06-13
- ✦Added: the engine now publishes the Knowledge Base's available environments and which one is active, so the KB Editor can offer an environment selector for builds. A build request may indicate the environment to work against; if it does not, the active environment is used (unchanged behavior). The chosen environment is reported back with each build result. The engine can also report the available environments on demand — before synchronization is started — so a manager can populate the same selector at configuration time. The engine's environment switch is per-user, so it never changes the environment of a developer working in the GeneXus IDE on the same Knowledge Base.
- ✦Added: optional automatic build after synchronization. When enabled in the configuration, after each cycle that successfully internalizes buildable objects the engine queues a build for them automatically (default scope: specification only — fast, produces navigation and semantic errors). These automatic builds appear to the KB Editor alongside the manual ones.
- ✦Added: a configuration setting can fix the environment used for all builds (automatic and manual). When set, the KB Editor shows the environment as locked and does not let the user change it.
- ✦Added: a consolidated navigation view: the engine keeps the latest navigation result per object per environment, mirroring the GeneXus IDE's Navigation tab — the current navigation set, not a build-by-build history (the history remains available in the build status). The KB Editor can show the last batch, the whole accumulated set, or search by object.
v1.5.1 — 2026-06-12
- ✦Added: when a build request includes a Pattern Instance, the engine now applies the pattern first (the same "Apply Pattern" action of the IDE), generating or refreshing the instance's child objects, and then includes every generated object — plus the object the instance is defined under (for example the Transaction of a Work With), which the apply also updates — in the requested specification/generation/compilation. Nested pattern instances generated by another pattern are applied recursively. The instance's entry in the build status reports the outcome of the apply step with its own messages, and each generated object appears with its own result and navigation report. If the apply of an instance fails, neither its generated objects nor its parent are built (the rest of the request continues normally). Available on every GeneXus version where build requests are supported
- ✦Fixed: a Domain whose data type is the GeneXus default Numeric(4.0) now externalizes its Enumerated Values and its Collection property. Previously both were emitted only when the Domain had a non-default data type, so a Numeric(4.0) Domain with enumerated values silently lost them in the
.gxDomainfile (and the round-trip back into the Knowledge Base dropped them). Domains with any other data type were unaffected. Available on every supported GeneXus version - ✦Added: the navigation report of each built object is now also delivered as a self-contained HTML file with the same visual style as the GeneXus IDE's Navigation Report — styles and icons embedded, ready to be displayed by the KB Editor without any extra processing. The raw report remains available alongside it for diagnostics. If the HTML rendering is not possible (for example the GeneXus installation does not include the report stylesheets), the raw report is delivered instead with a warning, and the build itself is never affected
- ✦Improved: the build console now lists every object of the request when it starts and reports each object's final result (
Specified <object>...ok/warnings/errors) when it finishes — including objects that did not need re-specification, which previously produced no per-object output at all - ✦Changed: the build status file is now named
external-<user>-build-status.json(previouslykbbridge-<user>-build-status.json), following the sync folder naming convention: files of flows initiated from the KB Editor — both the requests and their responses — use theexternal-prefix, while thekbbridge-prefix is reserved for flows initiated from the Knowledge Base side (such as the exports file). Any stale file with the old name can be deleted manually
v1.5.0 — 2026-06-11
- ✦Added: the engine can now specify, generate and compile a set of Knowledge Base objects on request from the KB Editor. Requests are dropped as JSON files in the project's sync folder, queued, and executed one at a time while synchronization continues uninterrupted — a long compilation never delays the import/export cycle. For each object the engine returns its navigation report (viewable from the KB Editor) and every specification or compilation error associated to the exact object that caused it, including the message code, line and column when available. Three scopes are supported per request: specify only (fast — navigation plus semantic errors), specify + generate, and full build including compilation. The engine never triggers a database reorganization as part of these requests. Requests survive engine restarts: anything left queued or running when the engine stopped is re-queued automatically on the next start. Available on GeneXus XEv1, XEv2, XEv3, 15, 16, 17 and 18 (on GeneXus X the request is answered with a clear not-supported message)
- ✦Added: build activity is reported on the engine console prefixed with
[Build], and a complete per-request log is appended tokbbridge-build-output.lognext to the engine configuration file, with a separator banner per request and automatic rotation when the file grows beyond 10 MB. A new--no-build-consolecommand-line option suppresses the console relay for managers that read the log file directly as a separate channel
Sync Manager
v1.4.1 — 2026-06-14
- ✦Added: build settings per Knowledge Base — an optional automatic build after each sync that imports objects (with a scope choice of specify only, specify + generate, or full build) and an optional build environment. Leaving the environment empty keeps it unlocked (manual builds in the KB Editor choose their own); setting one forces that environment for all builds and locks the selection in the KB Editor
- ✦Added: a "Detect" button next to the build environment that lists the Knowledge Base's GeneXus environments to choose from; if detection is unavailable, the environment can still be typed manually. When it fails, the actual reason reported by the engine (for example, the KB could not be opened) is now shown instead of a generic message
- ✦Added: when automatic build after sync is on, you can now set how many quiet sync cycles to wait before building the grouped imported objects, plus a maximum number of cycles to wait as a safety cap — so a burst of imports results in a single build instead of one per cycle (an approximate timing in seconds is shown based on the sync interval)
v1.4.0 — 2026-06-12
- ✦Added: the console window now has two channels selectable from a dropdown in the toolbar — General (synchronization output) and Build (output of build requests coming from the KB Editor) — each keeping its own search, scroll position, clear, copy and auto-scroll. A green dot next to the selector signals new activity in the channel not being watched. The Build channel shows only the output produced since the synchronization was last started, and stays empty when the Sync Engine does not support builds
- ✦Added: the log viewer window now has the same General / Build channel selector — General shows the synchronization log file and Build shows the build log file, both with their full history and timestamps
1.3.0 — 2026-06-09
Sync Engine v1.4.29
- ✦Fixed: importing an object whose path on disk crosses through nested folders inside a module (for example a file under
@PXTools\@APIs\Personalized\Templates\) no longer fails withFolder '<module>.<inner>' already exists.when one of those folders already lives in the Knowledge Base. In GeneXus, a Folder's unique identity inside a module is just<module>.<folder name>regardless of how many parent folders sit above it (folder names are unique within a module). The engine was looking up the folder using the accumulated disk path (<module>.<parent folder>.<inner folder>), missing the existing folder, falling through to "create new" and getting rejected by the GeneXus SDK as a duplicate. The lookup now uses the correct identity — module plus folder name only — so existing folders are reused and only genuinely-new folders are created. Available on every supported GeneXus version
Sync Manager v1.3.0
- ✦Added: search bar in the console and log viewer window — open with Ctrl+F or the Find button in the toolbar, type to jump to the next match, use ↑/↓ (or Enter / Shift+Enter, or F3 / Shift+F3) to navigate between matches, with a "current of total" counter shown on the right. Auto-scroll is paused while the search bar is open so the viewport stays on the highlighted match across log refreshes, and resumes its previous state when the bar is closed with Esc or the ✕ button
- ✦Fixed: console viewer auto-scroll no longer stays stuck after a click inside the output box — clicking placed the keyboard cursor at the click position and on the next refresh the viewport was pulled back to that position instead of staying at the latest line, so auto-scroll appeared to stop working until the checkbox was toggled off and on. The cursor is now moved to the end of the text before each scroll, so auto-scroll keeps following the latest output regardless of where the user clicked
1.2.79 — 2026-06-04
Sync Engine v1.4.28
- ✦Added: when a Domain shares its name with a built-in type (for example a Domain called
Boolean,Date,DateTime,Image,Video,Audio,Blob,BlobFile,GUID,GeoLine,GeoPoint,GeoPolygonorGeography), the engine now emits the explicit prefixDomain:in theDataTypeproperty — e.g.DataType = 'Domain:Boolean'— so the round-trip back into the Knowledge Base preserves the binding to the Domain instead of degrading it to the built-in type with the same name. The prefix is added only when there is an actual name collision and no module qualifier is present (a reference that already includes the module, like'Boolean, Sales', is unambiguous on its own and is emitted as before). Variables on every applicable object (Procedure, Data Provider, API, Data Selector, Transaction, Web Panel, Panel, SDT items, etc.), Attribute definitions, and Domains that inherit from another Domain are all covered. Files exported with the previous engine keep working — re-exporting them produces the new disambiguated format. Available on every supported GeneXus version
1.2.78 — 2026-06-02
Sync Engine
v1.4.27 — 2026-06-02
- ✦Fixed: importing a new Domain that has Enumerated Values defined in its source file no longer fails with
Object reference not set to an instance of an object.. The previous flow assumed the Domain already carried an Enumerated Values collection — true for Domains that existed in the Knowledge Base before the import, but not for brand-new Domains being created by this same import. The engine now initializes the collection on the fly when missing, so a.gxDomainlike the one declaringEnumValues = [ ... ]for a freshly created Domain is internalized cleanly. Available on every supported GeneXus version - ✦Fixed: a Procedure / API / Data Provider / Data Selector variable whose
DataTypereferences a Domain located inside a module (e.g.DataType = 'OrderStatusKind, Sales.Orders') is now correctly bound to the Domain after import. Previously the variable arrived in the Knowledge Base with its type set to "Domain reference" but pointing at no Domain at all — the IDE showed it as a Domain-based variable with the binding blank. Variables whose Domain lives at the root (no module) were unaffected. Available on every supported GeneXus version - ✦Fixed: externalizing a Pattern Instance (PXWorkWith, SDWorkWith, PXParameterRequest, PXComposer, PXOAV, etc.) now produces a
.gxPatternfile where the references to Attributes, Domains and other Knowledge Base objects appear by their plain name (e.g.<attribute name="WebServiceLogStartDateTime" />). Previously, when the project lived in a path that triggered an internal loader to reject the schema definitions, the engine fell back to emitting these references prefixed with a long type identifier (e.g.<attribute name="adbb33c9-0906-4971-833c-998de27e0676-WebServiceLogStartDateTime" />), making the file noisy to read and breaking re-import. The schema definitions are now read through a path-safe route. Files already on disk in the prefixed format will be re-emitted as plain names on the next sync cycle. Available on every supported GeneXus version - ✦Fixed: the dependency tier ordering of the synchronization phase now correctly applies SDTs before Procedures (and other objects that may reference them). The earlier release placed SDTs in the same dependency tier as Tables and External Objects (intended to be processed before Procedures and UI objects) but the type-name lookup did not match the actual
.gxSourcefile naming — files named<name>.StructuredDataType.gxSourcewere treated as "unknown type" and bumped to the last tier, so the SDK ended up applying Procedures, Data Providers, Web Panels and Pattern Instances before the SDTs they reference. WebMasterPage and Group objects were similarly mismatched. The lookup now uses the actual on-disk type names (StructuredDataType,WebMasterPage,Group), so the documented tier order takes effect. Available on every supported GeneXus version
v1.4.26 — 2026-06-01
- ✦Fixed: the synchronization phase now applies pending changes in dependency order — Domains, Folders, Themes and Images first, then Attributes, then SDTs / External Objects / Tables, then Transactions, then Procedures / Data Providers / APIs / Reports / Work Panels, then Web Panels / Panels / Master Pages / Web Components, and finally Pattern Instances. Previously the order was strictly chronological, so an editing session like "create Attributes → create Transaction → modify one of those Attributes" left the Transaction being applied before the modified Attribute had been internalized, causing the Transaction import to fail because the Attribute (in its latest state) was not yet in the Knowledge Base. The new ordering guarantees that an Attribute always reaches the KB before any Transaction that references it, an SDT before any object that uses it, and so on. Within each tier the user's chronological order is preserved
- ✦Added: automatic retry pass at the end of every sync cycle. If a Knowledge Base object failed to internalize because a dependency it references was scheduled for processing later in the same cycle, the engine now re-tries that object after the rest of the cycle has finished, and keeps re-trying until a full round produces no progress. Permanent failures (those that did not recover after the retry pass) are reported as
errorinexternal-<user>-status.jsononly at the end of the cycle — never prematurely. While a retry is still possible, the console line for the failure shows the suffixFail (will retry)so the user can tell the difference between a transient ordering failure and a final error. The retry-pass bannerRetry pass: N work item(s) pending dependency resolutionprecedes the second pass when any objects are pending. Available on every supported GeneXus version
1.2.76 — 2026-05-28
Sync Engine v1.4.25
- ✦Fixed: externalizing a Procedure that comes from a referenced module (for example procedures under
GeneXus.SD.Synchronizationor other system modules) no longer fails withLayout serialization error: The given key was not present in the dictionary.. These procedures do not have a Layout to externalize and are now treated as such — silently skipped — instead of being reported as failures. Available on every supported GeneXus version
1.2.75 — 2026-05-23
Sync Engine
v1.4.24 — 2026-05-22
- ✦Fixed: the GeneXus 18 IDE no longer shows a "this Knowledge Base was last opened by a different installation" warning after the engine has run a sync cycle. The engine now snapshots the
.gxwfile immediately before opening the KB and restores it as soon as the open succeeds, so the file keeps reflecting the IDE's last open — not the engine's. Available on GeneXus 18
v1.4.23 — 2026-05-21
- ✦Fixed: Variables of a Panel typed as a user-defined External Object from the Knowledge Base are now correctly recognized when the panel is imported. Previously these variables were silently degraded to Numeric(4,0) — losing their type and breaking any code that called methods specific to the External Object. Completes the parallel fix for built-in runtime External Objects (HttpClient, File, Properties, XMLReader, etc.) shipped earlier. Available on GeneXus XEv3, 15, 16, 17 and 18
- ✦Fixed: importing an API object that already exists in the Knowledge Base no longer fails with
API '<name>' already exists. Edits to existing APIs are now applied correctly. Available on GeneXus 17 and 18
Sync Manager
v1.2.75 — 2026-05-23
- ✦Updated: AI skills (
ai/kbbridge/*.md) — documented the new.gxLayoutextension (Procedure print layout) with XML structure, control types and coordinate system; expanded.gxFormcoverage with the three formats broken down by root tag (<body>for WebPanel/WebComponent,<GxMultiForm>for Transaction,<layouts>for SDPanel); documented thedynamic="true|false"root-tag attribute and how it differs from the existing[dynamic]section tag; removed legacy.gxPropertiesmentions (extension retired — object-level properties now live inline in.gxSourceafter the header)
v1.2.74 — 2026-05-22
- ✦Fixed: AI documentation deployment now detects and replaces the managed block regardless of marker capitalization, and auto-heals any leftover duplicate managed blocks left behind by older buggy deploys — previously, files that had been deployed by a version using the older
KBBridge:(uppercase B) markers would get a secondKBbridge:(lowercase b) block prepended on every new deploy because the marker search was case-sensitive
v1.2.73 — 2026-05-21
- ✦Fixed: "New version available" dialog no longer closes together with the splash screen during startup — the dialog used to inherit the splash as its Owner and was force-closed when the splash's auto-close timer fired
1.2.72 — 2026-05-19
Sync Engine
v1.4.22 — 2026-05-19
- ✦Fixed: Procedure externalization no longer reports
Unchangedin the console when only the sibling.gxLayout(or, for WebPanel / Transaction / SDPanel, the sibling.gxForm) was modified but not the.gxSource. The engine now defers theUnchanged/Successdecision until after every sibling file has been processed, so the console line accurately reflects the overall write outcome. Available on GeneXus XEv3, 15, 16, 17 and 18
v1.4.21 — 2026-05-16
- ✦Fixed: Panel internalization now also preserves variable DataType on the way into the Knowledge Base — Image, Audio, Video, Blob, BlobFile, GUID, geographic types, Business Component (with and without module) and built-in runtime External Objects (HttpClient, HttpResponse, File, Directory, Properties, Property, XMLReader, ExcelDocument, etc.) now reach the SDK with their proper type set, so events code that references their methods parses correctly. Available on GeneXus XEv3, 15, 16, 17 and 18
- ✦Improved: import status file (
external-<user>-status.json) now carries the full list of SDK validation errors withsection,lineandcolumninstead of the bare"message": "Error"that used to be all that survivedValidationExceptionpropagation - ✦Fixed: when a single GeneXus object has both files pending in the same sync cycle (e.g. Panel's
.gxSourceand.gxForm), the status file no longer reports one as"imported"and the other as"error"— both entries now describe the same outcome - ✦Improved: SDPanel diagnostic XML files dropped in temp directory on import failure now carry the same
<ExportFile><KMW>...<Source>...<Objects>...</Objects></ExportFile>shell that GeneXus IDE accepts via Knowledge Manager → Import → File - ✦Improved: SDK-flow diagnostic lines (
DIAGNOSTIC:traces during SDPanel internalization) now go to the bridge log file only and no longer flood the console
v1.4.20 — 2026-05-15
- ✦Fixed: Panel externalization now preserves the DataType of variables typed as Image, Audio, Video, Blob, BlobFile, GUID, geographic types, External Object (with and without module) and Business Component (with and without module). Previously variables of those types were silently downgraded to Numeric(4,0), which then caused
Unknown functionandis ambiguouserrors on re-import. Available on GeneXus XEv3, 15, 16, 17 and 18 - ✦Fixed: Panel internalization no longer leaves the layout one level too deep inside the pattern instance XML, which previously caused control references in events / rules / conditions to fail with "Invalid attribute X" / "Unknown function X" errors during the SDK's final save. Available on GeneXus XEv3, 15, 16, 17 and 18
- ✦Added: when Panel internalization on GeneXus 17 / 18 fails because the SDK's parser rejects events / rules / conditions code during save, the engine now dumps a manual GeneXus XPZ-format XML file to the system temp directory (
kbbridge-xpz-<panel>-<timestamp>.xml) that can be imported through Knowledge Manager → Import → File for diagnosis - ✦Improved: when post-import save fails with a
ValidationExceptioncarrying the generic message "Error", the bridge now dumps every public property of the exception (and its inner exceptions, up to 6 levels deep) via reflection, including collection-typed properties
v1.4.19 — 2026-05-14
- ✦Changed: Panel internalization on GeneXus 17 and 18 now applies all sections (variables, form/layout, rules, conditions, events) atomically through a single SDK import call instead of five separate write-back rounds. The previous rounds invoked the parser against a still-incomplete panel, producing hundreds of false-positive errors and leaving the panel empty in the IDE. The engine now serializes the panel's envelope, splices the complete content of every section into the pattern's instance XML in one pass, and re-imports it through
BLServices.KnowledgeManager.ImportInObject. Available on GeneXus XEv3, 15, 16, 17 and 18
v1.4.18 — 2026-05-08
- ✦Added:
.gxFormfiles now carry adynamic="true|false"attribute on the root tag that marks whether the form was customized by the user (round-trip enabled) or auto-generated by GeneXus from a template or pattern (round-trip skipped). Files without the attribute fall back to a contextual decision: new objects always receive the form, existing objects with no pending change and a default form in the KB skip the import - ✦Added: PatternInstance internalization (
.PXWorkWith.gxPattern,.SDWorkWith.gxPattern,.WorkWith.gxPatternand any other registered pattern) is now also supported on the older GeneXus runtimes — GeneXus X, XEv1 and XEv2 — closing the previous gap where the engine could only export.gxPatternfiles on those versions. PatternInstance round-trip now works end-to-end across the entire supported version range - ✦Added: Procedures now externalize and internalize their visual print Layout (printable region with bands, labels, attributes, images, lines and rectangles) through a new
<ObjectName>.Procedure.gxLayoutfile paired alongside the existing.gxSource. Only emitted when the layout has been customized; reset to default deletes the obsolete.gxLayoutfrom disk on next sync. Round-trip works on every supported version of GeneXus - ✦Added:
.gxLayoutfiles carry adynamic="true|false"attribute on the root tag with the same semantics as.gxForm
Sync Manager v1.2.71
- ✦Fixed: Log viewer with auto-scroll no longer jumps to the top of the log on every refresh — the ScrollToEnd call now runs after the WPF binding has applied and the new content has been measured
1.2.64 — 2026-05-08
Sync Engine
v1.4.17 — 2026-05-07
- ✦Changed: PatternInstance round-trip (export and import of
.gxPatternfiles) is now schema-driven and works for any pattern registered in the GeneXus environment — not just the PXTools-shipped ones (PXWorkWith, SDWorkWith) that the previous hardcoded implementation supported. The engine reads the pattern's instance specification XML from the externalizedPatterns/<patternName>/folder to identify which attributes are References, instead of relying on a fixed list of XPaths and attribute names. Built-in patterns (Conversational, Dashboard, PXAudit, PXReportTemplate, PXOAV, etc.) and any third-party or custom pattern installed in the KB are now supported automatically - ✦Performance: pattern instance schemas are parsed lazily on first use and cached in memory for the duration of the sync engine process
- ✦Improved: multi-type references (
reference(WebPanel; SDPanel), etc.) are correctly resolved on import — the engine tries each candidate type in declaration order until one resolves the value to a KBObject - ✦Fixed: Panel internalization now persists the rules, events, conditions and form that the source file declares — both on creation and on subsequent edits. Earlier round-trips silently dropped every part-level change while reporting "Success" because the SDK's wrapper part required reflection-based access to the inner
PatternInstancePartand a different write-back path (PatternBasePart.ReadFrom) than was being used. Available on GeneXus 17 and 18 - ✦Fixed: Panel Variables are now also internalized — user-defined variables declared in the
#Variablessection of the.gxSourceare added or updated on the panel through the same pipeline used by Procedure / DataProvider / API / DataSelector / Transaction / WebPanel. Available on GeneXus XEv3, 15, 16, 17 and 18 - ✦Fixed: PatternInstance internalization (e.g.
.PXWorkWith.gxPattern,.SDWorkWith.gxPattern,.WorkWith.gxPatternand any other registered pattern) now actually persists the edits — the previous deserializer reportedSuccessbut silently dropped every change. Available on GeneXus XEv3, 15, 16, 17 and 18
v1.4.16 — 2026-05-05
- ✦Fixed: Panel internalization now also writes back the Variables section. Previously the deserializer populated a freshly-constructed VariablesPart that was never bound to the panel, so the parsed variables were dropped on the floor. Available on GeneXus 17 and 18
- ✦Fixed: Internalization no longer rejects edits to existing PatternInstance objects whose pattern is anything other than SDWorkWith — the by-name lookup now iterates every pattern registered in the GeneXus environment and matches the first one that has an instance with the qualified name. Available on every supported GeneXus version
- ✦Fixed: PatternInstance internalization no longer fails with
Source file not foundwhen the file's first line carries the SDK display name with a trailing pattern-type and[]metadata. The header parser now extracts only the simple object name from the second token and reads the pattern-type name from the third token - ✦Changed: PatternInstance exports now write the header line as
PatternInstance <SimpleName> <PatternType>deterministically, instead of relying on the SDK's inconsistentNameproperty - ✦Added: Table internalization now applies changes to the
#Indexessection of a Table.gxSourceback to the Knowledge Base. The rest of the Table (physical / logical / redundant attributes and table relations) remains read-only because GeneXus derives those from the underlying Transactions. The engine differentiates auto-generated indexes (I*, immutable composition) from user-defined indexes (U*, fully editable) and uses structural-signature matching to identify auto-generated indexes across renames - ✦Limitation: when a user-defined index is renamed and restructured in the same edit, the engine falls back to delete-and-create and the original
Descriptionis lost. Workaround: do the rename in one import and the restructure in the next - ✦Auto-recovery: if a
I*index block is accidentally removed from the.gxSource, the engine preserves the original index in the KB, emits a warning, and the next sync iteration re-exports the file with the auto-generated block restored
Sync Manager v1.2.62
- ✦Added: Automatic check for new Sync Manager versions — informs the user when an update is available with options to download, skip, or remind later
1.2.61 — 2026-04-30
Sync Engine
v1.4.15 — 2026-04-30
- ✦Fixed: Internalization of a brand-new Panel object no longer aborts with
Root element is missing— the engine read the panel's variables from an XML attribute that does not yet exist on a freshly created panel, throwingXmlExceptionand aborting the import. The variable reader now treats a missing or emptyvariablesattribute as "no variables", and the form reader is equally robust against an uninitialized layout. In addition, the panel is persisted once at the start of source deserialization so the underlying KMW pattern-part skeleton exists before rules, events, conditions and form are written into it — without this initial save, all four sections were silently dropped on creation, producing an empty panel even when the import reported success. Available on GeneXus 17 and 18
v1.4.14 — 2026-04-29
- ✦Fixed: Internalization of new Panel objects no longer fails with the generic error
Could not create object: Panel <name>— previously, importing a.Panel.gxSourcewhose object did not yet exist in the Knowledge Base produced a silent failure because Panel creation was not implemented in the object factory. Panels are now created on demand during import using the GeneXus generic object factory, so a fresh Panel can be internalized end-to-end without first creating it manually in the IDE. Supported on GeneXus XEv2, XEv3, 15, 16, 17 and 18 - ✦Added: Internalization now creates PatternInstance objects on demand for any pattern installed in the GeneXus environment — the pattern type is detected from the
.gxPatternfilename and resolved against the registered pattern definitions, so.<TypeName>.gxPatternfiles for any installed pattern can be imported end-to-end without first creating the instance manually in the IDE. Available on every supported GeneXus version - ✦Improved: Import error messages distinguish between three failure modes — the type is not registered in the Knowledge Base, the GeneXus factory rejected the create request, and unknown header type — so the diagnostic points to the actionable cause
v1.4.13 — 2026-04-28
- ✦Fixed: Pattern definitions and User Controls export no longer crashes with
UriFormatException: Invalid URI: The hostname could not be parsedwhen long path support is enabled in Sync Settings — the relative-path computation that previously relied onSystem.Uricould not parse paths prefixed with\\?\. The path is now computed by direct string comparison, which also makes the export robust against file or folder names containing characters that the URI parser handles specially (such as#) - ✦Fixed: Variable internalization no longer writes the
Collectionproperty explicitly asFalseon non-collection variables — the property is now only updated when its current value differs from what the source file declares. ForcingCollection = Falseon every import marked the property as user-defined (instead of leaving it at its default), causing spurious dirty state on variables that never were collections. Switching a variable from collection to non-collection (and vice versa) still works as expected - ✦Added: Sync iterations that produce a burst of exports now bracket the burst with
sync-batch-startandsync-batch-endmarkers in the exports JSON file, analogous to the existingbulk-export-start/bulk-export-endmarkers used for the very first export. The new markers fire on the first iteration after startup whenever there is at least one pending change (covering the case of resuming a sync that was paused for hours or days) and on any later iteration whose pending count reaches the newSyncBatchMarkerThresholdsetting (default 5). External tools that import file changes — for example, the KB Editor sync component — can pause their file-system watcher for the duration of each marked window to avoid mistaking KBBridge's own exports for external edits. Orphaned*-startmarkers from an interrupted run are auto-closed at startup, independently per marker family
v1.4.12 — 2026-04-26
- ✦Added: External User Controls are now exported to a new
User Controls/folder in the project — for each User Control installed in the GeneXus environment, the design-time files (.controlmanifests, properties XML, render XSL, toolbox icons, and images) are copied preserving the original folder structure. Vendor packs that group several controls under a single folder (e.g.DVelop/) are exported as a single tree retaining all.controlfiles at the root and their referenced asset subfolders. Runtime material (.js,.css,.dll, etc.) is excluded. Copies are idempotent — only files newer than the destination are overwritten
Sync Manager v1.2.58
- ✦Changed: About tab now shows the Sync Engine changelog by default instead of the Sync Manager changelog
1.2.57 — 2026-04-23
Sync Engine v1.4.11
- ✦Fixed: On GeneXus X, XEv1, XEv2 and XEv3, the sync JSON files (changes, status, exports) no longer grow exponentially on each write — previously, every read/modify/write cycle doubled the number of entries because the files were serialized with two arrays per list (one for the underlying field, one for the public property), and the deserializer appended both to the same list. A few write cycles sufficed to exhaust process memory
- ✦Fixed: Export notifications registry no longer causes
OutOfMemoryExceptionwhen the file grows to excessive sizes — if the file exceeds 10 MB or cannot be parsed, it is automatically quarantined as.corrupted-<timestamp>.bakand a fresh one is created. The periodic cleanup on startup and every register operation now cap the in-memory entry list to prevent unbounded growth between cleanups - ✦Fixed: A failure while writing the export notifications registry no longer terminates the sync process — the error is logged as a warning and the sync continues
- ✦Fixed: On GeneXus X, XEv1, XEv2 and XEv3, bulk export start/end markers in the export notifications registry are now written with the correct
changeTypevalue — previously they were always written as"modified", making it impossible for consumers of the registry to distinguish bulk export boundaries from per-object change notifications - ✦Fixed: On GeneXus X, XEv1, XEv2 and XEv3, import status messages are now written with the correct
typevalue (error,warning,info) — previously all message types were silently overwritten as"error"
1.2.56 — 2026-04-18
Sync Engine
v1.4.10 — 2026-04-18
- ✦Fixed: SDT root level
Collection/CollectionItemNameproperties are now applied during internalization — when the SDT itself is a collection these were ignored, because the property block of the root structure node was never read. Also reconciles sublevelCollection/CollectionItemNameon every re-import, not just on creation
v1.4.9 — 2026-04-17
- ✦Fixed: SDT sublevel internalization now correctly applies the
CollectionandCollectionItemNameproperties when the sublevel is created for the first time — previously, sublevels marked asCollection = Truein the.gxSourcewere created without the collection flag
1.2.54 — 2026-04-16
Sync Engine
v1.4.8 — 2026-04-16
- ✦Added: KBbridge Sync Engine now generates a
kb-config.jsonfile in the workspace root containing the GeneXus version of the KB — this file is consumed by VSCode extensions to filter properties and keywords by version - ✦Fixed: Source file parser no longer crashes with "Index was outside the bounds of the array" when parsing structures with certain blank line patterns — a missing parenthesis in 6 blank-line-skip loops caused array access beyond bounds
- ✦Fixed: Property internalization now correctly resolves ambiguous property names by matching against the object's actual properties — previously,
ExposeAsWebServiceon a DataProvider was incorrectly set as the Transaction variant (idISBCWEBSERVICEinstead ofidISWEBSERVICE), causing the property to be saved with the wrong value
v1.4.7 — 2026-04-15
- ✦Fixed: Module path deduction from qualified names no longer truncates module names that contain the object name as a substring — previously, objects like
Facturainside moduleeFacturawould cause the module to appear as@e, andSendMailinsidePXTools.SendMailswould produce a spurious@PXToolssmodule
v1.4.6 — 2026-04-13
- ✦Fixed: Domain paths in the exports registry file now use the correct single separator — previously, Domains inside modules were written with a double slash (e.g.
@Module//#Domains/) causing the sync engine to treat recently exported objects as external changes requiring internalization
1.2.53 — 2026-04-07
Sync Engine
v1.4.5 — 2026-04-07
- ✦Fixed: Variable internalization now correctly creates and types variables that did not previously exist in the Knowledge Base — domain-based, attribute-based, SDT, ExternalObject, BusinessComponent and simple-typed variables are all properly applied
- ✦Fixed: Business Component variables are now recognized on import via the
BusinessComponent:prefix, restoring the round-trip with the export change introduced in v1.4.4 - ✦Fixed: Bulk export no longer aborts when the Knowledge Base does not register one of the queried object types — unknown types are now silently skipped instead of throwing
- ✦Fixed: Variable serialization no longer fails when the variable does not expose the
idVarServiceExtName(Web Service External Name) property - ✦Fixed: Object export now reports a
Failline with the underlying error reason whenever an unhandled exception is raised by the GeneXus SDK during serialization
v1.4.4 — 2026-04-06
- ✦Fixed: Business Component variables (based on a Transaction or Transaction sublevel) are now exported with a
BusinessComponent:prefix followed by the Transaction name (and sublevel using dot notation) — previously they were serialized as the invalid raw type#GX_BUSCOMP/#GX_BUSCOMP_LEVEL
Sync Manager
v1.2.53 — 2026-04-07
- ✦Fixed: Suppressed StringTemplate noise (LayoutToHtml.stg) from console output when using GeneXus X Evo3
v1.2.52 — 2026-04-06
- ✦No additional changes (Engine binaries update only)
1.2.51 — 2026-04-04
Sync Engine v1.4.3
- ✦Added: Variable, Attribute and Domain properties beyond DataType are now serialized and deserialized — validation, picture, control info, appearance, behavior, virtual keyboard, and offline properties are preserved in the roundtrip
- ✦Fixed: ExternalName, ExternalNamespace and AllowNull properties excluded from Variable/Attribute/Domain serialization — these properties are not applicable in that context and share names with other object types
- ✦Fixed: Variable ExternalName (idVarServiceExtName) now serializes independently of DataType — previously was only exported when the variable had a non-default type
- ✦Fixed: Removed debug output during External Object export that printed property DataType details to console
Sync Manager v1.2.51
- ✦Added: Language selector in Trial Registration, Enter License Key, and Buy License forms (defaults to OS language)
- ✦Added: First-run experience — opens Trial Registration automatically with informational message
- ✦Fixed: Settings window no longer blocks license warning dialogs
- ✦Changed: Settings opens on License tab when no valid license is configured
- ✦Fixed: Tray menu now updates immediately when adding or removing Knowledge Bases (no restart needed)
- ✦Changed: GeneXus version dropdown now shows newest versions first
- ✦Changed: Buy License now opens the purchase page in the browser with pre-filled user data
- ✦Added: "Check License" button appears after Buy License or paid activation to manually retrieve license updates from the server
1.2.50 — 2026-04-03
Sync Engine v1.4.2
- ✦Fixed: Pattern instance XML export now removes GUID prefixes from attribute references, producing human-readable names in
.gxPatternfiles
Sync Manager v1.2.50
- ✦No additional changes (Engine binaries update only)
1.2.49 — 2026-04-02
Sync Engine
v1.4.1 — 2026-04-02
- ✦Fixed: Geography types (GeoPoint, GeoLine, GeoPolygon, Geography) now supported in GeneXus 15 and 16 (previously restricted to GX 17+)
- ✦Fixed: BlobFile data type now supported in GeneXus 16 (previously restricted to GX 17+)
- ✦Fixed: AverageLength property serialization/deserialization now works in GeneXus 15 and 16 (previously restricted to GX 17+)
v1.4.0 — 2026-04-01
- ✦Added: Multi-version GeneXus support — now compatible with GeneXus X, XEv1, XEv2, XEv3, 15, 16, 17 and 18
- ✦Added: Simplified PuntoExe.PXTools.dll (one per GeneXus version) abstracts all SDK differences — KBbridge.exe code is shared across versions
Sync Manager
v1.2.49 — 2026-04-02
- ✦No additional changes (Engine binaries update only)
v1.2.48 — 2026-04-01
- ✦Added: Support for all GeneXus versions (X, X Evo1/2/3, 15, 16, 17, 18) with dedicated binaries per version
- ✦Fixed: "Use same registration data" checkbox now disabled when no previous registration data exists
1.2.47 — 2026-03-30
Sync Engine v1.3.5
- ✦Fixed: Import of WebPanel/Transaction with form — source and form are now loaded together before validation, preventing false errors when source references form elements (e.g., grid events like
GridName.Load)
Sync Manager
v1.2.47 — 2026-03-30
- ✦Changed: Application renamed from "KBbridge Manager" to "KBbridge Sync Manager" across all UI, installer, and splash screen
- ✦Changed: About tab now uses a ComboBox to switch between Sync Manager and Sync Engine changelogs instead of showing both stacked
- ✦Fixed: "Buy License" and "Enter License Key" buttons now visible on fresh installations without a license
- ✦Changed: Uninstaller now asks whether to keep or delete configuration files (license, KB settings) instead of deleting them automatically
v1.2.46 — 2026-03-29
- ✦No additional changes (Engine binaries update only)
1.2.45 — 2026-03-27
Sync Engine
v1.3.4 — 2026-03-29
- ✦Fixed: ExternalObject methods without return value (DataType
None) no longer generateDataType = 'None'in.gxSourcefiles — void methods now omit the DataType property entirely
v1.3.3 — 2026-03-28
- ✦Improved: Combo property values now use pretty names in
.gxSourcefiles instead of GeneXus internal codes - ✦Improved: Reference properties now use typed references in config instead of hardcoded property names
- ✦Added:
IsMainproperty support for DataProvider objects
v1.3.2 — 2026-03-27
- ✦Added: Embedded assembly resolver via Startup class — preloads embedded DLLs before any code runs
- ✦Added: PXTools library compiled with unique assembly name to avoid conflicts
- ✦Fixed: ExternalObject item DataType was not appearing in
.gxSourcefiles
Sync Manager v1.2.45
- ✦Fixed: Clear button in log viewer now also truncates the log file on disk
1.2.44 — 2026-03-26
Sync Engine v1.3.1
- ✦Added: Embedded DLLs (Newtonsoft.Json, PXTools, BouncyCastle) — deployment reduced to KBBridge.exe + .config only
- ✦Added: Application icon for KBBridge.exe
- ✦Improved: Properties classified as known, ignored, or unknown with warning in log
- ✦Improved: Warning and info messages deferred when a progress line is in-progress
- ✦Added: Properties
ObjectVisibility,PrivateObject,IsMain,OnSessionTimeout,URLAccess,AUTO_REFRESH,OutputCollectionNameto properties config - ✦Added: ExternalObject platform and member properties with visibility rules
- ✦Added: Import support for
.gxFormentries with cross-deduplication of.gxSource/.gxForm
Sync Manager v1.2.44
- ✦Fixed: License validation now requires machine certificate — a license key without certificate (e.g. copied from another machine) is rejected
- ✦Fixed: License type (trial/annual/monthly) now saved from all activation flows (Trial, Enter License Key, refresh)
- ✦Added: License refresh errors are now logged to
license-refresh.logfor diagnostics - ✦Fixed: Installer messages now display in the selected language (Spanish, Portuguese)
1.2.43 — 2026-03-25
Sync Engine v1.3.0
- ✦Added: Table externalization support — tables exported to
.Table.gxSourcefiles in#Tablesdirectory - ✦Tables include:
#PhysicalAttributes,#LogicalAttributes(formulas),#RedundantAttributes,#Indexes,#ForeignTables,#SuperordinatedTables,#SubordinatedTables - ✦Sections use
[readonly]tag to indicate non-editable content - ✦Added: Bulk export signaling via
bulk-export-start/bulk-export-endentries - ✦Added: Auto-recovery of interrupted bulk exports
- ✦Fixed:
[dynamic]tag on empty sections preserved for child objects - ✦Fixed: Source file parser correctly ignores braces inside string literals and comments
- ✦Fixed: DataType serialization no longer concatenates domain reference with underlying type
- ✦Added: Initial export elapsed time shown in export summary
- ✦Added:
gx-properties-config.jsonshared configuration for all GeneXus object properties - ✦Fixed: Property deserialization converts values to correct types based on JSON config
Sync Manager v1.2.43
- ✦Fixed: License tab now shows "Enter License Key" and "Buy License" when trial expires, instead of "Register Trial"
- ✦Fixed: License type now correctly reflects upgraded licenses by using server-provided policy type
1.2.42 — 2026-03-24
Sync Engine v1.2.65
- ✦Fixed: Domain and Attribute deserialization now resets data-type properties before re-applying
- ✦Added:
AverageLengthproperty deserialization support for Domains and Attributes - ✦Fixed: KBBridge no longer crashes when internal config file is empty or corrupted
- ✦Fixed: SDT field
Collectionproperty was not applied during internalization for existing items - ✦Improved: Transaction
BusinessComponentproperty serialized with readable name
Sync Manager v1.2.42
- ✦No additional changes (Engine binaries update only)
1.2.41 — 2026-03-23
Sync Engine v1.2.64
- ✦Fixed: Variable serialization now prioritizes
Attribute:over Domain when both are set - ✦Fixed: Same priority fix applied to SDT field serialization
- ✦Fixed: Source file parser correctly handles braces attached to names
- ✦Improved:
[dynamic]tag no longer shown on empty sections or empty main content - ✦Fixed: KBBridge warnings preserved alongside GeneXus validation messages
Sync Manager v1.2.41
- ✦Updated: AI docs — corrected
!marker meaning (Description Attribute, not NOT NULL), documentedNullabletransaction attribute property - ✦Updated: AI docs — documented SDT field DataType examples and SDT collection level item references
1.2.40 — 2026-03-22
Sync Engine v1.2.63
- ✦Fixed: Enumerated domain import now correctly parses
EnumValuesproperty - ✦Fixed: Transaction import now sets Primary Key (
*) and Description Attribute (!) flags - ✦Added: Transaction attribute
Nullableproperty support in serialization and deserialization
Sync Manager v1.2.40
- ✦No additional changes (Engine binaries update only)
1.2.39 — 2026-03-21
Sync Engine v1.2.62
- ✦Added: Long path support (> 260 chars) for deeply nested child objects, configurable via
EnableLongPaths - ✦When disabled: objects with long paths are skipped with a separate count in the export summary
- ✦When enabled: uses Windows extended path API (
\\?\prefix) to support paths up to ~32K characters
Sync Manager v1.2.39
- ✦Added: "Enable long path support" preference in Sync Settings with informational dialog explaining Git and Windows configuration requirements
- ✦Fixed: Console text selection no longer causes scroll to jump to the top
1.2.38 — 2026-03-19
Sync Engine
v1.2.61 — 2026-03-19
- ✦Fixed: New SDT creation failed validation due to double save
- ✦Fixed: SDT internalization now removes items/levels no longer present in the source file
v1.2.60 — 2026-03-18
- ✦Improved: Version listing shows Description, Trunk/Branch/ChDefender flags, excludes Backup versions
- ✦Added: Support for GeneXus standard built-in types in variable and SDT field import
Sync Manager v1.2.38
- ✦Fixed: Console scroll position no longer drifts when AutoScroll is disabled
- ✦Changed: Console line buffer increased from 1,000 to 50,000 to support large KB externalization processes
- ✦Fixed: Manager now kills orphaned KBbridge.exe processes before starting a new one
- ✦Fixed: KBbridge.exe error messages now always appear in the console
- ✦Fixed: Installer now detects and kills both KBbridgeManager.exe and KBbridge.exe during upgrade
1.2.37 — 2026-03-18
Sync Engine v1.2.59
- ✦Added: SDT fields based on Attributes now serialize with
Attribute:prefix for consistency with variables - ✦Added: SDT field deserialization resolves Attribute-based types
Sync Manager v1.2.37
- ✦Fixed: Start from console now re-reads KB settings, so changes like unchecking "Stop after Force KB Export" take effect immediately
- ✦Fixed: Console window no longer freezes during high-frequency output bursts (throttled UI updates)