|
| 1 | +--- |
| 2 | +title: What's New in v2.5.1 |
| 3 | +date: 2026-04-02 |
| 4 | +--- |
| 5 | + |
| 6 | +# What's New in RobotCode v2.5.1 |
| 7 | + |
| 8 | +A quick follow-up to v2.5.0 with three bugfixes that came in from your reports — thanks for filing them. |
| 9 | + |
| 10 | +## Template Keywords No Longer Flag Embedded Arguments as Unresolved |
| 11 | + |
| 12 | +If you use `[Template]` or `Test Template` with a keyword that has embedded arguments — something like `The result of ${calculation} should be ${expected}` — **RobotCode** was treating the embedded argument placeholders as unresolved variables and showing false `VariableNotFound` diagnostics. |
| 13 | + |
| 14 | +This happened because the analyzer didn't distinguish between regular variable references and embedded argument placeholders when the keyword call came from a template declaration. Fixed: embedded argument tokens in template contexts are now skipped during variable analysis. ([#542](https://github.com/robotcodedev/robotcode/issues/542)) |
| 15 | + |
| 16 | +## Multi-Word BDD Prefixes Now Match Correctly |
| 17 | + |
| 18 | +Languages with multi-word BDD prefixes — most notably French with prefixes like *Étant donné que*, *Et que*, and *Mais que* — weren't always recognized correctly. The problem: shorter prefixes (e.g. *Et*) matched before longer ones (e.g. *Et que*), consuming the prefix too early and leaving the keyword name garbled. |
| 19 | + |
| 20 | +**RobotCode** now sorts prefixes by length (longest first) and uses a single compiled regex for matching, which is the same strategy Robot Framework itself uses internally. This applies to keyword resolution, BDD prefix stripping, and semantic token highlighting. ([#560](https://github.com/robotcodedev/robotcode/issues/560)) |
| 21 | + |
| 22 | +## `${CURDIR}` Works Correctly in Variable Values on Windows |
| 23 | + |
| 24 | +The `${CURDIR}` variable in resource file variable tables was broken on Windows due to inconsistent backslash escaping. The resource builder used quadruple backslashes (`\\\\`) while the namespace analyzer used double backslashes (`\\`), and neither was correct for all cases. |
| 25 | + |
| 26 | +Both code paths now share a single `replace_curdir_in_variable_values()` helper with consistent escaping. ([#589](https://github.com/robotcodedev/robotcode/issues/589)) |
| 27 | + |
| 28 | +--- |
| 29 | + |
| 30 | +## Thank You |
| 31 | + |
| 32 | +Thanks to everyone who reported these issues — your bug reports make **RobotCode** better for the whole community. |
| 33 | + |
| 34 | +For the full list of changes, see the [Changelog](https://github.com/robotcodedev/robotcode/blob/main/CHANGELOG.md). |
| 35 | + |
| 36 | +- [Report issues](https://github.com/robotcodedev/robotcode/issues) |
| 37 | +- [Discussions & Q&A](https://github.com/robotcodedev/robotcode/discussions) |
| 38 | +- [Sponsor RobotCode](https://opencollective.com/robotcode) |
0 commit comments