Skip to content

[Feature Request] Built-in Mod Manager — enable/disable ASI, CLEO, TXD and model files per server profile #413

Description

@staark-dev

Summary

Currently, players who want to use client-side mods (ASI plugins, CLEO scripts, custom textures/models) have to manually copy files in and out of their GTA:SA directory, with no way to manage conflicts, enable/disable per server type, or ensure they have the correct mods installed for a given server.
A built-in Mod Manager tab inside the launcher would solve this completely.

Problem

•	Players manually manage .asi, .cs, .txd, .dff files by copy-pasting in Windows Explorer
•	No way to quickly disable a mod that conflicts with a specific server
•	No profiles — a player who plays both Roleplay and Stunt servers needs completely different mod setups, but has to do this manually
•	No visibility into what mods are currently active before joining

Proposed Solution

Add a Mod Manager tab to the launcher with the following capabilities:

  1. GTA:SA directory detection
    Automatically scan common installation paths on launch:
    • C:\Program Files\Rockstar Games\GTA San Andreas
    • C:\Program Files (x86)\Rockstar Games\GTA San Andreas
    • Steam path via registry key HKLM\SOFTWARE\Valve\Steam
    • Manual path override in Settings
  2. Mod list with enable/disable toggles
    Display all detected client mods with:
    • File name, type badge (ASI / CLEO / TXD / MODEL), size, destination folder
    • Enable/disable toggle (moves file to/from a .disabled subfolder — non-destructive)
    • Delete button with confirmation
  3. Mod installation via drag & drop
    • Accept .asi, .cs, .cm, .txd, .dff, .img files
    • Auto-detect correct destination folder based on extension:
    • .asi → / or /modloader/ if modloader is present
    • .cs / .cm → /cleo/
    • .txd → /models/txd/
    • .dff → /models/dff/
    • Show confirmation dialog with editable destination before copying
  4. Mod Profiles
    • Save named sets of enabled/disabled mods (e.g. “Roleplay”, “Stunt”, “Clean”)
    • Switch profiles with one click before joining a server
    • Profiles stored in launcher’s existing config storage

Why this belongs in the launcher

The launcher already knows the GTA:SA path, already handles file system operations (font copying, client version selection), and is the single point of entry before the game starts. A mod manager fits naturally here and removes the need for third-party tools like Mod Loader UI or manual file management.
This is a quality-of-life feature that directly improves the new-player experience — one of the most common frustrations in the community is mods breaking servers or vice versa.

Implementation notes

•	Backend: Rust std::fs for file operations (already used in the project)
•	Frontend: New tab in the existing NavBar component (React/TypeScript)
•	Non-destructive: disabled mods go to <mod_folder>/.disabled/, never deleted automatically
•	No external dependencies needed

Prior art

Similar implementations in other game launchers:
• Minecraft Forge launcher — mod enable/disable per profile
• KnightLauncher (open source) — drag & drop mod install with toggle
• Garry’s Mod workshop — per-server addon management

Willingness to contribute

I am willing to implement this feature and submit a PR if the team agrees it fits the project scope. I’d appreciate feedback on the preferred approach before investing time in the implementation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions