When Vintage Story 1.22.0 released on April 21st, 2026, I realized my preferred mod manager, Rustique, had an inconvenient solution to switching between game versions e.g.
rustique config set --pinned-game-version 1.22.0
I spent that afternoon and evening writing Fish functions to wrap rustique commands for Vintage Story 1.21.x and 1.22.x. Two scripts were the result, but it took only another hour to merge two and make the result argument-driven.
This time would have been better spent contributing a solution upstream so Rustique users can specify pinned_game_version on a per-mod-dir basis.
> cat ~/.config/rustique/config.toml | grep pinned_game_version
pinned_game_version = "1.21.7"
> rustique_vs 1.22 --mods-dir ~/Games/VintageStory/VSInstallations/1.22.x-latest/Mods/ install betterruins
╭────────────────────────────╮
Installing.. betterruins
╰────────────────────────────╯
[00:00:01] [████████████████████] 1/1 Fetch Complete
[00:00:05] [████████████████████] 1/1 Finished installing mods ╭────────────────────────┬───────╮
│ Successfully Installed ┆ │
╞════════════════════════╪═══════╡
│ BetterRuins ┆ 0.6.0 │
╰────────────────────────┴───────╯
╭──────────────────────────╮
│ Total mods Installed 1 │
╰──────────────────────────╯
╭────────────────────────────────────────────────────────────────────────────────╮
Syncing... /home/noah/Games/VintageStory/VSInstallations/1.22.x-latest/Mods/
╰────────────────────────────────────────────────────────────────────────────────╯
[00:00:01] [████████████████████] 1/1 Fetch Complete ╭────────────────────────────────────╮
Sync operation completed: 1.91s
╰────────────────────────────────────╯
╭───────────────────────────────────────╮
Install operation completed: 8.94s
╰───────────────────────────────────────╯Fixed rustique 1.22 assigning the full list of 1.22.x versions to pinned_game_version. __get_latest_for incorrectly return a list instead of a string because it echo two strings and both are "returned". The root cause was a leftover echo $allVersions which was used for troubleshooting.
Fixed a literal string "1.21" where $game_major_minor was supposed to be referenced.
rustique_vs 1.22 ... no longer sets the game version to 1.21.x.
Initial Release.
It's clunky, but functional. I haven't figured out how to properly add a named --game-version parameter. So, the first argument should always be MAJOR.MINOR unless you're setting the global --pinned-game-version. In that case, it can be omitted.