Skip to content

Releases: robotcodedev/robotcode

v2.4.0

17 Mar 21:38
v2.4.0
4e66eaa

Choose a tag to compare

Bug Fixes

  • dependencies: Update click version to 8.2.0 in requirements files (6e1220e)

  • vscode: Fix invalid glob pattern in selectConfigurationProfiles (58b5a8f)

    Remove extra closing brace in the file extension glob pattern that
    caused workspace folder detection to fail when selecting configuration
    profiles.

Features

  • plugin: Add fast exit option to Application.exit method (acfa7e9)

Performance

  • diagnostics: Skip full AST model parsing when no robotcode: markers present (7b3999e)

  • robot: Cache LibraryDoc for robot and resource files on disk (9b89623)

    Resource and robot files are now cached on disk between sessions.
    On subsequent opens, imports, keywords, and variables from these
    files are loaded from cache instead of being re-parsed, resulting
    in faster startup and quicker response times when navigating
    projects with many resource files.

    The cache is automatically invalidated when a file is modified
    on disk. Files that are currently open in the editor always use
    the live content and bypass the disk cache.

  • robot: Remove unnecessary token list caching from document cache (5f8591d)

    Token lists were cached separately in document._cache, but only used
    as intermediate input for AST model building. No external caller ever
    accessed the cached token lists directly.

    Move token generation into model builder methods so tokens are only
    produced on cache miss. On cache hit, neither tokenization nor model
    building occurs.

    • Eliminates up to 6 cached token lists per document in Language Server
    • No behavior change for CLI (tokens were already uncached for version=None)
    • Remove ~80 lines of redundant caching infrastructure
  • robot: Use file_id tuples instead of os.path.samefile for path comparison (3f3bd84)

    Replace repeated os.path.samefile() calls (2x stat per call) in namespace
    import loops with pre-computed (st_dev, st_ino) tuple comparisons.

    • Add FileId type, file_id() and same_file_id() to core utils
    • Add lazy source_id property to LibraryDoc (excluded from pickle)
    • Pre-compute source_id on Namespace init
    • Compute file_id once per find_resource result instead of per-iteration

Refactor

  • imports_manager: Cleanup and fix correctness issues (25ef49c)

  • robot: Remove unnecessary finalizers and dispose chain (eaa7e14)

    Remove redundant _release_watchers_finalizer from _ImportEntry — file
    watcher cleanup is already handled explicitly by _remove_file_watcher()
    during invalidation and by server_shutdown() at LS shutdown.

    Remove the _dispose_finalizer/dispose() chain through ImportsManager,
    DocumentsCacheHelper, RobotFrameworkLanguageProvider, CodeAnalyzer, and
    CLI. With the per-entry finalizers gone, these only cleared dicts that
    Python already cleans up at process exit.

    Fix broken finalizer in Workspace.add_file_watchers() where the closure
    captured the entry object, preventing it from ever being garbage
    collected.

    Set atexit=False on sentinel finalizers so they only fire during normal
    GC (needed for LS live cleanup), not at interpreter shutdown.

  • robot: Replace del with weakref.finalize in imports_manager (e0e8d81)

    Replace fragile __del__ methods with weakref.finalize in both
    _ImportEntry and ImportsManager for reliable cleanup:

    • _ImportEntry: register finalizer in init with file_watchers list
      and file_watcher_manager as strong refs (no self access needed);
      change _remove_file_watcher to use .clear() instead of = []
    • ImportsManager: register finalizer lazily in executor property when
      ProcessPoolExecutor is created; add static _shutdown_executor callback

    weakref.finalize is guaranteed to run even with circular references
    and does not prevent garbage collection of reference cycles.

Testing

  • Add library folder to test project (45c410f)

v2.3.1

12 Mar 20:31
v2.3.1
784632d

Choose a tag to compare

Bug Fixes

  • langserver: Update version check for Robocop in formatting and diagnostics parts (45655f4)

v2.3.0

12 Mar 19:13
v2.3.0

Choose a tag to compare

Documentation

  • tips-and-tricks: Make LSP config OS independent (e1abda2)

    More robust implementation of get_python_path helper function.

  • tips-and-tricks: LSP setup guide for Neovim (c63c125)

Features

  • robocop: Robocop 8.0 support (f723d98)

v2.2.0

02 Jan 01:39
v2.2.0
3318535

Choose a tag to compare

Bug Fixes

  • intellij: Add missing language method in RobotCodeCodeStyleSettingsProvider (90673bf)

  • langserver: Default to folding ranges to character-based (6cbefe2)

    Use character-based folding ranges by default when client capabilities are unknown.

  • robocop: Update robocop documentation urls (c15bdfa)

  • robot: Use explicit class reference for super() in VariablesDoc to allow slots (8af05a9)

Documentation

  • Add some funny random hero images (f62e1bd)
  • Back to normal hero image (57633b5)

Features

  • Add support for Robot Framework 7.4 (3e140c9)
  • Enhance diagnostics and analysis features with progress indicators in verbose mode and performance improvements (1ac9247)

Performance

  • lsp: Use dataclass slots for protocol types (82012e8)

    use @DataClass(slots=True) for LSP model classes to reduce per-instance memory overhead and speed up attribute access in LSP hot paths

Refactor

  • core: Simplify casing caches and add support for PEP 604 unions (428226a)
  • Reduce lru_cache maxsize for performance optimization across multiple modules (f715d32)

Testing

  • Real pyproject file for test project (c3e17b2)

v2.1.0

02 Dec 22:02
v2.1.0
6e4b469

Choose a tag to compare

Documentation

  • Correct some stylings (5edb90c)
  • Make the hero image a bit more christmassy (4fd8412)

Features

  • vscode: Add option to control extension activation per scope (7af4583)

    Add new robotcode.disableExtension configuration setting that allows
    users to disable or enable the RobotCode extension at any scope level.

    With resource scope, users can:

    • Disable the extension globally (user settings) and enable it for
      specific workspaces or folders
    • Disable the extension for a workspace and enable it for specific
      folders within
    • Disable the extension only for specific folders in multi-root
      workspaces

    This is useful in:

    • Large workspaces where RobotCode is not needed everywhere
    • Multi-root workspaces with mixed project types
    • Environments where users want opt-in rather than opt-out behavior

Performance

  • vscode: Cache getRobotCodeProfiles results (8aa6db5)

    Add caching for robot.toml profiles to avoid spawning a new process
    on every call. Cache is invalidated on language client state changes.

v2.0.4

25 Nov 17:35
v2.0.4
d1f493e

Choose a tag to compare

Documentation

  • Add diagnostics modifiers section to reference documentation (52b1deb)
  • Correct command syntax for running tests with overridden variables (bfc6801)

v2.0.3

21 Nov 00:22
v2.0.3
7a4d6ed

Choose a tag to compare

Bug Fixes

  • vscode: Correct configurations in settings view (8bd0329)

v2.0.2

19 Nov 21:47
v2.0.2
d6447e5

Choose a tag to compare

Bug Fixes

  • vscode: Improve workspace folder resolution logic for chat tools (de73d7d)

Documentation

  • Add Robot Framework Foundation and imbus as sponsors (804758c)

v2.0.1

10 Oct 17:14
v2.0.1
d77c5fe

Choose a tag to compare

Bug Fixes

  • Corrected packaging of python wheels/vscode packages (242f822)

v2.0.0

10 Oct 12:36
v2.0.0
554940b

Choose a tag to compare

Bug Fixes

  • debugger: Handle breakpoints in __init__.robot files correctly (34da5e7)
  • langserver: Support for Python 3.14 (d7fe624)
  • langserver: Update sort_text to use e.label for better clarity in import completion items (39e1272)
  • robot: Change logger level from critical to trace for LoadLibrary timeout (52fc3b0)
  • robot: Change logger level from critical to trace for load_library_timeout (c0e6898)
  • Remove Python 3.8 support and update classifiers for Python 3.14 (e642d5b)

Documentation

  • Update Python version references to 3.12.6 and adjust testing matrix to 3.10-3.14 (0d41933)
  • Disable math rendering in VitePress config and remove related dependencies (5390600)

Features

  • langserver: Add support for folding documentation settings (2b627d7)

  • langserver: Remove Robotidy support (c49bf40)

    • BREAKING: remove Robotidy support

    Use robotframework-robocop>=6.0 for formatting.

  • Drop Python 3.8 and 3.9 support, require Python 3.10+ (7c825de)

    • BREAKING: Python 3.8 and 3.9 are no longer supported. Minimum required version is now Python 3.10.