Skip to content

[ENHANCEMENT] Mutually Exclusive Profile Selection #648

Open

Description

@MarvKler

Is your enhancement request related to a problem? Please describe.
My idea is more about comfort feature for using RobotCode profiles locally in VSCode than really solving a problem / issue.

Describe the solution you'd like
Is it possible to implement a feature to define robotcode profiles as mutually exclusive ?

Example:
Example profile config in robot.toml: the user has configured total of 5 profiles: Profile A - Profile E

Conditions:

  • If Profile A is selected, Profiles B and C should be disabled and unavailable for selection, while Profiles D and E remain selectable.
  • If Profile B is selected, Profiles A and C should be disabled accordingly.

--> I am thinking about the pop-up window in VS Code where you can visually check the checkboxes to select the profiles. Maybe the profiles can be just disabled in those cases and gets enabled again after unchecking the previously selected profile.

Additional context
Correct me if i am wrong, but this might be related to VS Code only. (to be fair, i am not familiar with the extension in PyCharm...)

I would like to hear your opinion on that idea - its not a mandatory feature request for me, more about an idea which just came into my mind!

Activity

  1. d-biehl commented on Oct 19, 2026

    @d-biehl
    Member

    Thanks for the idea. A few things to consider:

    • Profiles are defined in robot.toml, which the command line, VS Code and PyCharm all read. So "mutually exclusive" would have to be a new profile setting that all of them respect, including robotcode -p A -p B on the command line, not just the picker in VS Code. Right now, selecting both simply applies both, and the one applied later wins where they set the same thing.
    • VS Code's selection list can't disable single entries. The closest would be that checking a profile unchecks the ones it excludes.

    Today you can get close with inherits: keep the building blocks hidden (profiles whose names start with _ don't show up in the list) and define one profile per combination you actually use:

    [profiles._firefox]
    extend-variables = { BROWSER = "firefox" }
    
    [profiles._chrome]
    extend-variables = { BROWSER = "chrome" }
    
    [profiles._staging]
    extend-variables = { URL = "https://staging.example.com" }
    
    [profiles.staging-firefox]
    inherits = ["_staging", "_firefox"]
    
    [profiles.staging-chrome]
    inherits = ["_staging", "_chrome"]

    Use extend-variables in the building blocks; with variables, the second one would replace the first one's variables instead of adding to them.

    I'll keep this open as an idea, but I can't promise when I'll get to it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions