/keith

Open-source mods manager L4D2

Primary LanguageTypeScriptMIT LicenseMIT

Keith

Keith is an open-source mods manager for L4D2, developed with Electron, Svelte and SkeletonUI.

App

Initially inspired by Left 4 Dead 2's terrible in-game addons menu, I wanted something that gives me more functionality, like search and a better method of solving conflicts, but the scope has since gotten much broader with lots of other great features and QoL improvements that are not possible in the in-game menu.

Features

  • Grid display with thumbnails and pagination
  • Search and filters
  • Automatic mod categorization based on mod contents
  • Detailed mod inspection
  • Batch selection of mods w/ various actions
  • Conflict solving menu, showing you exactly which mods are conflicting
  • Profiles, letting you quickly hop between various setups
  • Mod shuffles that change things up everytime you launch the game
  • Unsubscribing from mods via Steam Web API
  • VPK browser with extraction

Ideas

Here are some ideas or features I'd still like implemented one day

  • Built-in custom config/autoexec editor
  • Local data backup
  • Online data backup
  • Collections
  • Custom vocalizer editor

Caveats

While I've found Keith to be extremly useful in organizing my ever growing library of mods, there's still some things to keep in mind:

  • The game needs to be restarted before any changes made in Keith can take effect.
  • Newly subscribed-to Workshop mods will only be downloaded after you start the game.

So taking both of these points into account, if you've just subscribed to a new mod, you'll have to open up the game, wait for the game to download the mod, close the game, make any changes in Keith and then finally, run the game from within Keith in order for all changes to take effect. Quite clumbersome, but it is what it is.

Project Setup

Prep submodules

$ git submodule init
$ git submodule update

Install dependencies

$ npm i

Development

$ npm run dev

Build

# For windows
$ npm run build:win

# For macOS
$ npm run build:mac

# For Linux
$ npm run build:linux