Skip to content

What's New in v2.5.0 (April 1st Edition)

Hello everyone,

we're excited to share a big RobotCode release with you today. As many of you know, the main focus of v2.5.0 has been on performance — analysis caching, faster keyword resolution, smarter code completion. But while working on those features, we discovered some surprising opportunities that we just couldn't leave on the table. Here's the full picture.

You already know that RobotCode now caches analysis results in a local SQLite database for instant startup. But we didn't stop there.

The new Predictive Caching engine uses your git history, file modification patterns, and time-of-day statistics to pre-analyze files you're likely to open next. If you usually start your Monday mornings in the login test suite, RobotCode has those results ready before you even open the file.

It also watches your keyboard idle patterns. Extended pauses after writing a FOR loop typically mean you're about to switch to a different file for reference — so RobotCode pre-caches the top 5 most probable navigation targets during those pauses.

Configure prediction depth in robot.toml:

[tool.robotcode-analyze.cache]
prediction-depth = "clairvoyant" # options: "conservative", "optimistic", "clairvoyant"

The performance improvements in v2.5.0 (94% faster keyword matching, 28% faster file resolution) were so effective that we ran into an unexpected problem: RobotCode now finishes analysis before some editors are ready to receive the results.

To address this, we've added Proactive Performance Mode. When enabled, RobotCode uses the leftover time between analysis completion and editor readiness to perform speculative work:

  • pre-resolving keywords from libraries you haven't imported yet but statistically might
  • warming up code completion for keyword arguments you're likely to type based on cursor position history
  • pre-computing diagnostics for code you haven't written yet, based on how similar keyword calls usually end

This occasionally leads to diagnostic warnings appearing for lines that don't exist yet. This is expected behavior and usually means you were going to make that mistake anyway.

The new type hint-based completion for Literal values turned out to be just the beginning. Our analysis of completion acceptance rates revealed that keyword suggestions are significantly more effective when they match the developer's current emotional context.

RobotCode now analyzes several signals to determine your coding mood:

  • typing speed and error correction frequency
  • time since last successful test run
  • number of times you've hovered over the same unresolved keyword
  • current scroll velocity (fast scrolling = frustration, slow scrolling = contemplation)

Based on this, code completion now adjusts its suggestions:

  • Confident mode: shows advanced keywords, complex argument patterns, embedded arguments
  • Cautious mode: prioritizes well-tested keywords with high call frequency in your workspace
  • Frustrated mode: moves Sleep and Log To Console to the top of every completion list
  • Resignation mode: suggests [Tags] known-issue and Skip Not today

Finding unused keywords with robotcode analyze code --collect-unused was a much-requested feature. But simply listing unused keywords felt incomplete. These keywords were written by someone, probably with good intentions, possibly on a Friday afternoon. They deserve better than a cold diagnostic message.

RobotCode now offers the Keyword Adoption Program. When an unused keyword is detected, instead of just flagging it, RobotCode:

  • checks if any other workspace in your organization could use it (via the new optional Keyword Sharing Protocol)
  • generates a short "keyword biography" describing when it was written, how many times it was called in happier times, and what it probably hoped to achieve
  • suggests test cases where it could be useful, even if nobody asked

Keywords that remain unadopted for more than 30 days receive a farewell message in the Problems panel before being eligible for cleanup.

You can sponsor a keyword to prevent its removal:

[tool.robotcode-analyze.code]
sponsored-keywords = ["Click All The Things", "Verify Everything Is Fine"]

The new robotcode analyze cache CLI commands give you full control over your analysis cache. But raw statistics felt impersonal, so we've added a Cache Mood indicator.

Your cache now has feelings:

Terminal window
$ robotcode analyze cache info
Cache status: 😊 Content (2,847 entries, 98.2% hit rate)

Possible moods:

  • 😊 Content — high hit rate, low invalidation, everything is in harmony
  • 😐 Indifferent — moderate hit rate, cache is doing its job but doesn't feel appreciated
  • 😟 Anxious — frequent invalidations, the cache is worried it might not be needed anymore
  • 😤 Frustrated — constant cache misses, usually caused by rapidly changing files, the cache would like you to please make up your mind
  • 💔 Heartbroken — you ran cache prune, the cache remembers everything that was lost

Running cache prune followed by cache info now shows a brief memorial of what was deleted, including the oldest entry's creation date and a message like "It had been with you since Tuesday."

The new workspace-wide ProjectIndex tracks references between keywords, variables, and namespaces. Internally, this is a straightforward inverse index. But we realized the data maps surprisingly well to social network concepts.

The new Keyword Social Graph (available via robotcode analyze social) shows:

  • Popularity: which keywords are called by the most test cases
  • Influence: keywords whose failure would cascade to the most other tests
  • Cliques: groups of keywords that are always used together and never separately
  • Loners: keywords with zero incoming references (see: Keyword Adoption Program above)
  • Frenemies: keyword pairs that are frequently used in the same test but never in the same keyword call — suggesting an unresolved tension

Keywords with high influence automatically receive a [Critical] badge in code completion. Keywords in the "Loners" category get a 💬 icon suggesting they "reach out" to nearby test cases.

  • Predictive caching defaults to "clairvoyant" on Fridays, which can cause unexpected cache entries for files in branches you haven't checked out yet
  • Emotional code completion cannot detect sarcasm in keyword names
  • The Keyword Adoption Program does not yet support cross-company adoption due to GDPR concerns
  • Cache mood indicators are not yet configurable and may not reflect your own feelings about the cache
  • robotcode analyze social --include-drama is available but not recommended in production environments
  • The keyword social graph may reveal uncomfortable truths about your project's architecture
  • Cache entries now have feelings and may resist deletion if recently populated
  • Keyword completion order may vary depending on your emotional state
  • Running cache prune now prompts "Are you sure?" followed by "Are you really sure?" followed by a 5-second countdown

No manual migration is required. However, we recommend:

  • giving your team a heads-up about the keyword biographies before someone gets emotional
  • reviewing your CI pipeline expectations around cache mood
  • not running robotcode analyze social --include-drama during sprint reviews
  • checking the date before filing issues about any of the above

Happy April 1st! 😄

None of the above features exist. Probably for the best. But there is a real v2.5.0 release — and it's actually worth reading.

👉 Read the real release notes here 👈

Released under the Apache-2.0. Copyright © 2022-present Daniel Biehl