+ {/* `scrollbar-gutter: stable` reserves the scrollbar's
+ width so the content-based auto-size accounts for it —
+ otherwise, when the list overflows and the scrollbar
+ appears, it steals horizontal space and the widest name
+ wraps its last character. */}
+
{variables.map((variable) => (
- {variable.name}
+ {variable.name}
))}
@@ -288,7 +311,7 @@ export const GraphicalEditorAutocomplete = forwardRef
{
body: { language: 'fbd', value: {} as never },
})
const result = serializePouSignatureToST(pou)
- // Block keywords carry the xml2st-parity 2-space indent.
+ // Block keywords carry the legacy-parity 2-space indent.
expect(result).toContain(' VAR\n END_VAR')
})
diff --git a/src/frontend/utils/PLC/xml-generator/base-type-tag.ts b/src/frontend/utils/PLC/xml-generator/base-type-tag.ts
index a54653704..cfc8a18a9 100644
--- a/src/frontend/utils/PLC/xml-generator/base-type-tag.ts
+++ b/src/frontend/utils/PLC/xml-generator/base-type-tag.ts
@@ -6,7 +6,7 @@ import { lookupBaseType } from '../../iec-types-registry'
* For PLCopen TC6 elementaryTypes (closed `
` in the XSD), use
* the canonical XML element name from strucpp's iec-types registry —
* mixed-case on purpose: `` / `` are lowercase,
- * everything else uppercase. xml2st (MatIEC's TC6 schema validator)
+ * everything else uppercase. MatIEC's TC6 schema validator
* rejects `` outright with the same "expected one of (BOOL,
* BYTE, ...)" error users see when a case is wrong.
*
diff --git a/src/frontend/utils/PLC/xml-generator/codesys/__tests__/data-type-xml.test.ts b/src/frontend/utils/PLC/xml-generator/codesys/__tests__/data-type-xml.test.ts
index f982cfbb2..f90b6bb47 100644
--- a/src/frontend/utils/PLC/xml-generator/codesys/__tests__/data-type-xml.test.ts
+++ b/src/frontend/utils/PLC/xml-generator/codesys/__tests__/data-type-xml.test.ts
@@ -377,7 +377,7 @@ describe('codeSysParseDataTypesToXML', () => {
// `initialValue: { simpleValue: { value: '' } }` wrapper instead
// of `undefined`. The XML emitter must treat the empty inner
// value the same as absence — otherwise it emits
- // `` which xml2st turns into a stray `:= `
+ // `` which the ST generator turns into a stray `:= `
// in the ST output, breaking compilation.
it('omits initialValue for an array struct variable whose inner value is empty', () => {
const xml = makeBaseXml()
diff --git a/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/data-type-xml.test.ts b/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/data-type-xml.test.ts
index bc7110171..b228f3de2 100644
--- a/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/data-type-xml.test.ts
+++ b/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/data-type-xml.test.ts
@@ -338,7 +338,7 @@ describe('oldEditorParseDataTypesToXML', () => {
// Regression: struct creation seeds new variables with an
// `initialValue: { simpleValue: { value: '' } }` wrapper instead
// of `undefined`. The XML emitter must treat the empty inner
- // value the same as absence — otherwise xml2st turns it into
+ // value the same as absence — otherwise the ST generator turns it into
// a stray `:= ` in the ST output and breaks compilation.
it('omits initialValue for an array struct variable whose inner value is empty', () => {
const xml = makeBaseXml()
diff --git a/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/type-xml.test.ts b/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/type-xml.test.ts
index 10790213c..fcfaeb5c2 100644
--- a/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/type-xml.test.ts
+++ b/src/frontend/utils/PLC/xml-generator/old-editor/__tests__/type-xml.test.ts
@@ -16,7 +16,7 @@ describe('convertTypeToXml', () => {
// Regression: project data canonicalizes base types to uppercase
// (baseTypes constant emits 'STRING'). The xml emitter must still
- // produce — xml2st rejects outright.
+ // produce — STruC++ rejects outright.
it('converts uppercase STRING base-type to lowercase tag', () => {
const result = convertTypeToXml({ definition: 'base-type', value: 'STRING' })
expect(result).toEqual({ string: '' })
diff --git a/src/frontend/utils/__tests__/generate-iec-variables-to-string.test.ts b/src/frontend/utils/__tests__/generate-iec-variables-to-string.test.ts
index d281437c5..9c4ef4d29 100644
--- a/src/frontend/utils/__tests__/generate-iec-variables-to-string.test.ts
+++ b/src/frontend/utils/__tests__/generate-iec-variables-to-string.test.ts
@@ -11,7 +11,7 @@ const makeVariable = (overrides: Partial & Pick {
expect(result.split('VAR_INPUT').length).toBe(2) // one occurrence = 2 parts
})
- it('emits consecutive var-class blocks with no blank line between them (xml2st parity)', () => {
- // xml2st walks `self.Interface` and emits each var-class block
+ it('emits consecutive var-class blocks with no blank line between them (legacy parity)', () => {
+ // the legacy generator walks `self.Interface` and emits each var-class block
// back-to-back, immediately closing one END_VAR before opening the
// next header. The vars-text editor needs to mirror that exactly
// so a manual edit of the text view doesn't get re-formatted into
diff --git a/src/frontend/utils/debugger-session.ts b/src/frontend/utils/debugger-session.ts
index d77fa1a4d..505a7f486 100644
--- a/src/frontend/utils/debugger-session.ts
+++ b/src/frontend/utils/debugger-session.ts
@@ -29,7 +29,7 @@ import { buildDebugPathPrefix, findInstanceName, type PLCInstanceMapping } from
*
* Plain progress messages get split on newlines into one log entry
* per line — keeps the existing scroll/wrap/copy behaviour intact for
- * the long Arduino-CLI / xml2st outputs.
+ * the long Arduino-CLI / compiler outputs.
*
* Events that carry a structured `compileError` are emitted as a
* single multi-line entry instead, with the structured field attached.
diff --git a/src/frontend/utils/generate-iec-variables-to-string.ts b/src/frontend/utils/generate-iec-variables-to-string.ts
index 24fa192a9..3463bb43c 100644
--- a/src/frontend/utils/generate-iec-variables-to-string.ts
+++ b/src/frontend/utils/generate-iec-variables-to-string.ts
@@ -10,8 +10,8 @@ const classToVarBlock: Record = {
temp: 'VAR_TEMP',
}
-// Indentation mirrors xml2st's `PLCGenerator.PouProgramGenerator.GenerateProgram`
-// output (see `~/Documents/Code/xml2st/PLCGenerator.py:2414-2478`): two
+// Indentation mirrors the legacy PLCGenerator's `PouProgramGenerator.GenerateProgram`
+// output: two
// spaces before the var-block keywords, four spaces before each
// declaration line. Matching that format keeps the editor's
// variables-text view byte-identical to the per-POU `.st` file the
@@ -72,7 +72,7 @@ export const generateIecVariablesToString = (variables: PLCVariable[]): string =
textualDeclaration += line + '\n'
})
- // xml2st emits consecutive var-class blocks back-to-back with no
+ // the legacy generator emits consecutive var-class blocks back-to-back with no
// blank line between them — ` END_VAR\n VAR_INPUT\n...`. Drop
// the prior `END_VAR\n\n` that left a separator behind.
textualDeclaration += `${VAR_BLOCK_INDENT}END_VAR\n`
diff --git a/src/frontend/utils/iec-types-registry.ts b/src/frontend/utils/iec-types-registry.ts
index 0868eb0fd..30574982d 100644
--- a/src/frontend/utils/iec-types-registry.ts
+++ b/src/frontend/utils/iec-types-registry.ts
@@ -138,7 +138,7 @@ const XML_ELEMENT_INDEX: ReadonlyMap = (() => {
* IEC type metadata. Case-sensitive — unlike `lookupBaseType`, callers here
* already have the exact tag fast-xml-parser handed them, and PLCopen XML
* element names are case-significant (`` vs `` are not
- * interchangeable — xml2st rejects the latter).
+ * interchangeable — STruC++ rejects the latter).
*/
export function lookupBaseTypeByXmlElement(elementName: string): IECTypeMetadata | undefined {
return XML_ELEMENT_INDEX.get(elementName)
diff --git a/src/middleware/shared/ports/compiler-port.ts b/src/middleware/shared/ports/compiler-port.ts
index d1af6230a..375cbe618 100644
--- a/src/middleware/shared/ports/compiler-port.ts
+++ b/src/middleware/shared/ports/compiler-port.ts
@@ -1,7 +1,7 @@
/**
* CompilerPort — Abstracts the PLC compilation pipeline.
*
- * Editor adapter: Delegates to main process via IPC (local tools: xml2st, STruC++, arduino-cli).
+ * Editor adapter: Delegates to main process via IPC (local tools: STruC++, arduino-cli).
* Web adapter: Delegates to remote API at compile.getedge.me (callGenerateSt, callCompileSt, etc.).
*
* The UI only knows "compile this project" and receives progress events.
@@ -80,7 +80,7 @@ export interface CompileLibraryArgs {
/**
* Skip the verification-result cache for this run. The MD5 cache
* normally short-circuits the slow simulator-target verification
- * when the program.st coming out of xml2st hasn't changed since
+ * when the program.st coming out of the ST transpiler hasn't changed since
* the last successful (or failed) verify; `cleanBuild: true`
* forces a fresh compile.
*
@@ -115,7 +115,7 @@ export interface CompilerPort {
/**
* Build a `.stlib` archive from a Library Project on disk.
- * Editor: validates the manifest, runs the local xml2st binary,
+ * Editor: validates the manifest, runs the in-process ST transpiler,
* pipes the result through strucpp's library compiler, and
* writes the archive to `/build/.stlib`.
* Web (future): posts the project + manifest to a remote service
diff --git a/src/middleware/shared/utils/library/compose-runtime-v4-bundle.ts b/src/middleware/shared/utils/library/compose-runtime-v4-bundle.ts
index bb8942c5b..310d83d18 100644
--- a/src/middleware/shared/utils/library/compose-runtime-v4-bundle.ts
+++ b/src/middleware/shared/utils/library/compose-runtime-v4-bundle.ts
@@ -45,7 +45,7 @@
*/
export interface ComposeRuntimeV4BundleInput {
- /** Concatenated ST program emitted by xml2st. */
+ /** Concatenated ST program emitted by the ST transpiler. */
programSt: string
/** MD5 of `programSt` — written to `defines.h` so the v4 runtime
* shim (`runtime_v4_entry.cpp`) can report it via FC 0x45. */
@@ -100,7 +100,7 @@ export interface ComposeRuntimeV4BundleInput {
export function composeRuntimeV4Bundle(input: ComposeRuntimeV4BundleInput): Record {
const files: Record = {}
- // 1. Concatenated ST program (xml2st output)
+ // 1. Concatenated ST program (ST transpiler output)
files['program.st'] = input.programSt
// 2. Strucpp emitted artefacts at the zip root