#[Beta] [WIP] Faroquin - A Mod Manager
1 messages · Page 1 of 1 (latest)
It can be, the limitation is that I am personally devving this on windows
what interface are you using?
electron
It can work on linux
it has electron support
I will probably need help with pathing, particularly for mac users
you would just need to try and package as an appimage
(you could use .deb but appimage at least for Linux is the most modular)
I probably plan on focusing windows and making it properly functional and then focus linux (I can set a dual boot or whatever need be to make sure it works). However people will be free to contribute ahead of time
Not sure how practical it would be to use interface wise, but running on steam deck would be cool. (I dont personally have one to test this though)
looking forward to this and https://discord.com/channels/1116389027176787968/1332136408923639910 (also WIP), and seeing the differences between the two
since you have Eelectron there isn't much that needs to be changed from what I understand?
I'm not entirely sure, this is my first electron app so 🥹
It is built for cross compatibility in mind though
Only thing different on Linux in particular is looking for a proton directory rather then appdata
This is cool and I've seen it, I really hope a proper index is utilized by modders at some point
💯%
My approach is a sort of patchfix on the current situation
such a mess right now that https://discord.com/channels/1116389027176787968/1324102096584446002 is actually helpful and not just meme
Mhm 
When I was downloading mods I used the wiki
I feel that maybe there could be a way to add repositories perhaps?
and after opening about 20 or so githubs I felt it might be necessary for something a little more ideal
I mean this is basically what the index is on this mod
its a text file with repo links and some basic info like title and description
(so the browse portion has some info to show people)
so its really easy if the index of this repo doesn't have the latest up to date, you can just add it yourself
THIS IS GREAT
how are we gonna select which index and which manager to use when they come to fruition i wonder
are we just gonna have a minecraft type situation where there's 4 competing loaders (managers in this case)
i propose we make all the balatro mod manager developers fight to the death
obligatory https://imgs.xkcd.com/comics/standards.png
balatro mod manager manager when
why isn't there consensus? what's wrong with nexus mods?
the modloader (Steamodded) on nexus mods is severely outdated, and it doesn't have lovely
on the other hand, thunderstore does have lovely, but still has an outdated version of steamodded - though I've been told steamodded on thunderstore will be updated soon™️
mostly because of the inconvenience for mod developers
and the lack of stable releases
tbh I'm glad we never had this situation for mod loaders
-# yes I don't acknowledge balamod as ever having been relevant
as you should
balamod's documentation actually looked really clean
also seemed to have support for hot reloading
kinda wondering why it didn't take off
it went unmaintained, that has to be at least part of it
it supports reloading my making mods supply an on_disable function
as soon as it comes to lovely patching that just no longer works
hot reloading would be too much of a hassle yea
even hooks cant be cleanly removed
so it's the most basic of hot reloading possible
and the most advanced that doesn't horribly break everything
also just write the code correct the first time what are you a bum 
Ah okay. Never looked very deep into it apart from reading "supports hot reloading"
the most popular I've seen a balamod mod be recently is two people trying to use crowd control alongside steamodded
hopefully I'm not competing with anyone
point of this is to have something that is usable until people decide to pick a place to post stuff (assuming they dont do this in like few days its gonna take before I am able to properly publish this)
like if people used thunderstore it has a great mod manager and my work is done
thunderstore sure is one thing we've mostly opted not to use
I mean just throwing stuff on github and having something like this project pull it, works too if no one wants to commit to anything.
Only issue is there is standardization will be basically to the wind, so its a game of us adapting to the mods and not the other way around.
Which is fine I suppose, I've already had to deal with some people using master branch instead of main and lowercase readme instead of the default
looking at you kcvanilla
people hate standards
plenty of people use smods
this manager is actually able to pull names and descriptions on stuff outside of the list thanks to that
well yeah what choice do they have
little progress update,
installing, uninstalling and updating are functional for mods and mod loaders...
the caveat being I now need to account for the old-calc and new-calc smods... hooray!
I wasn't super intent on doing a versioning system so soon, but I probably will have to denote which mods work on new-calc and which do-not for a decent user experience.
Once I figure that out then I will be finally be onto polishing the look, and the code (its a mess) and probably begin some proper testing in a beta build
meh you probably dont need to worry about the whole calc thing
its not worth adding an entirely new feature for something thatll be resolved within a couple weeks
also which mod index are you using
well currently I pull from the latest build which breaks a bunch of stuff
I guess I can just utilize old-calc until thats sorted
its my own, it has a collection of relevant information
to another index?
this one is meant to be easily editable, so no one is required to "publish" their mod to it
hows that gonna work
its a json file
the program will provide one with latest stuff, and I will update it myself
the program generates a couple relevant hashes utilized in its update functionality
which are also somewhat useful to have in the list ahead of time
but those are easily gettable if you just slap a mod in the list it generates them, you add the hashes
well thats not gonna be very sustainable
its not meant to be
if were being reasonable and sustainable mod makers would upload to somewhere besides github
and then there would be no issue
..theres nothing wrong with using github for this lol
im not sure what the point of making a mod manager is if you arent gonna try to make it sustainable
we cant adopt it if its not
but github is much less ideal than something like thunderstore
I dont see how
of course, or anyones mods, its a giant index of anything.
im not sure what you meant by "no one is required to publish their mod to it" then
I cant publish other people's mods to thunderstore for instance
I can point links to it
the point of this mod manager is you patchfix solve the issue that no one is publishing to any place in particular, I guess except github
because it doesn't require people to upload their own mods
i still dont see the issue with pulling mods off of github and using that for publishing them
consistency, versioning
it's always worked perfectly fine with other managers (https://discord.com/channels/1116389027176787968/1255696773599592458)
both work just fine
nothings inconsistent about github and versioning is as simple as reading from a json file
define publishing
uploading something or a definition for something in such a way that its publicly accessible
if they're just using links then its the same as what im doing
im still so confused as to why you act like github is so awful for uploading mods? you said two words that were very arguable and never elaborated
some things are in weird branches, readmes have different capitializations so I have to change those around
githu uses api limits so Ive had to do some hashes to not eat all of that immediately
its not insolvable, but a proper place has already solved all those issues and I wouldnt need to make a manager
its not that its the end of the world, It just doesn't make much sense to me to not use established places. I've setup a couple communities and modded in many more with thunderstore had little issues
- idk what you mean by "weird branches", you shouldnt need to use anything except default
- why are you needing to even touch readmes
- api limits? why use the api? i dont see any way it would be useful for what youre doing
and i get that thunderstore is nice in some situations but this is not one of those situations
master and main are the two ive come across, means I need to rerun names for each
since it changes the links
readmes are nice to have, I display them in the manager
api is utilized for pulling commit hashes so you can tell when a mod is updated
untrue? not specifying a branch works just fine
in that case why does capitalization matter when the two main platforms for modding have case insensitive filesystems
case changes the link
ah
404's me
on both api and raw
though I may be linking wrong so if there is a way please let me know
afaik git handles that
will prevent me from doing retries that wastes api for commits and a bit of bandwith
git clone https://github.com/user/repo has always worked for me regardless of default branch name (though i may have just, never ran into a master branch in my life)
and i assume youre using git
I'm just utilizing links
makes sense
though ultimately this system works good enough or I wouldn't be doing it
i don't see us moving away from github anytime soon so i feel like git would make things significantly simpler (especially for weird branches like you mentioned, even if i think that's a non-issue)
the developers can choose wherever they want to use, I just want somewhere to easily install stuff
im sure there are plenty of things to do better 🥹
my code is probably going to look like spaghetti to someone who is actually a pro at app development
i just hope that however you do it even if it's got some drawbacks nothing's serious enough to prevent us from officially adopting it
realistically something is almost always gonna be better than nothing, and nothing is what we've got
it will be published to github and made intentionally for being adjustable, so it should be able to flex to whatever is needed by the community
I will probably look into using git especially if it doesn't get ratelimited (I use git personally ofc, but its not in the program itself)
example part of the index, its really simple to add to
Sorry if you already said this before, but does the index update itself?
it will be on a github that will be updated, and then the program will pull the latest version
Yeah that sounds good to me
github version people can make requests to add to, if its missing something
Auto-merge or manual approval?
probably manual, but I will need to see what people think is the best solution for that
At some point I'd like the option where you can import other indexes, so if someone has a like super fast and quickly updated index you set it to theirs
manual is fine if there's a couple people who can merge, but only 1 person being able to merge could very easily run into issues
yeah, would likely need to have it set to where some trusted individuals can merge as needed
this is why this is something that might be wanted
yeah that's fair, but it also sounds like a feature you need to implement and test etc haha
yeah I have no idea how that part shapes out
The contribution portion is shaped by the community, and what people want
Beta testing with this thing running at all will be hopefully not too far off, I just need to setup some settings menus and do an overall polish on looks and code
does the name faroquin come from anything?
thats really cool thanks
i dont actually know if those games are related to the meaning but from a brief googling it seems possible
pleaaase release a macos build
Yes Faro is a type of shuffle quin is from Harlequin
ohh
I would've went with just Faro but I'd rather not be conflicting with any other projects on github
The type of shuffle is because as a manager its shuffling the "deck" of mods
Beta here shortly, will be windows only for quick testing to make sure it doesn't blow up. I would love to then get linux working and then macos. I can run linux with my dual boot here... but mac may require some additional help. It really depends on how easy it is for me to adjust the code to work for it. I'm hoping its not too bad
I have pretty much completed the last steps before I write an army worth of stuff on the github and push the code and the beta build to it
The initial modlist is also intentionally fairly small (17) because those are the ones I know work.
Hopefully if it doesn't implode on other people's systems I will begin adding as many compatible mods on there as I can get
why wouldn't mods be compatible? is it a github url / branch issue?
old calc has some weird things going with it
I opted to use an older commit instead, most things work but I did have one mod that just did not
Ah sure, general mod incompat with current version of steamodded (or balatro)
there is a "specialDownload" option in the modlist which indicates to use a specific version of a mod
as when I was working on this cardsauce for instance did not work
so I set it to an older commit
yeah being able to select older versions is nice
proper versioning will be later
unfortunately the specialDownload just means use only this version and dont update
for right now you'd have to make a list yourself pointing to the specific versions of smods and other mods.
the list I've got in it right now is the smods from before newcalc to be as compatible with other stuff as possible
I've got one small feature to add and then I will push the beta out
ooh, beta 👀
🔥
@obsidian flame not sure how to interpret your last few messages but therell be a toggle to use latest smods right
the way to do that is to remove a line from the modlist.json
in-UI I have plan to do it, but I'm a bit out of time
understandable
currently going to make modlist.json pull from the faroquin github automatically, had the button for it already just need to put the code in
that way if someone (or me) updates it, everyone with the beta dont have to manually replace the file to get the updated list
[Beta] [WIP] Faroquin - A Mod Manager
The github Faroquin has been updated to include all the source code and the modlist.json.
There is also a beta release Here (Windows only, I will work on other soon ™️ 🙏 )
If you want to contribute mods (that are functional) to the list feel free to do so. I haven't had time to add beyond the ones I already personally gathered (15 or so). I know there are many many more that will work with this setup. I will try to add many more within a day or two.
There is relevant information about the ModList Here.
I wish I had more time to refine and adjust this even further, but I will be quite busy for a few days, and may not be able to respond super fast for questions and issues. I will try to accept PR requests if I can.
I will also hack out a little roadmap of planned and needed features, as there are many 🥹 as time permits
just a suggestion, but a way to form different "modpacks" of mods and easily switch between them would be a godsend
Absolutely! That is the next big feature I had planned to do
hella
should faroquin be able to automatically detect already installed mods?
it does
but obviously the only feature is that it can remove them, or enable/disable them
yeah I'm having a little bit of an issue with that auto-detect (to be fair, I have a very custom balatro setup)
it should only detect stuff in the mods folder automatically
if you have smods already installed it picks up all those template stuff
the one installed inside of faroquin it immediately indexes so that it wont show those
yeah it's not detecting any mod (not even steamodded or lovely) for me
do you have a custom mods path?
yo! this is sick!
Definitely. I set it through the settings though. What js function should I look at?
curious, how are you handling managing what mods are avaialble to download in this? you got a database of em all?
its stored in a json
did you click save? if you click out it may have not saved it
i have a suggestion since cardsauce is in here
the way we handle downloads of the mod is that releases are stable, and the github repo source code is like the experimental build. do you have it set to download from latest releases?
well this is terrifying!
its seemingly having a hard time actually disabling the mods currently but that might just be me having to many mods (also the play button isnt seemingly working but yk ill work on it)
by default it does whatever the latest commit, for cardsauce the other day it was broken so I just set it to a specific commit for right now
No worries, like I said, I have a custom setup. Which js function handles the checking of whether a mod is present?
yeah, if possible, some mods should be set to download from latest releases rather than commits
for that reason
modsLoader.js is where all the auto detection is
That would be ideal, some mods have the inverse where they dont put any releases out
will probably end up as a simple bool in the list
mhm yeah that seems to be like the standard for most of the mods ive seen
they just use source code downloads
its what smods is doing currently
@obsidian flame does changing the modlist require rebuilding the entire application? also why is the exact same modlist stored in two different files
changing modlist can be done through files, and it also pulls from the github
i cannot find said file in AppData\Local\Programs\faroquin
the only version of the modlist that requires rebuilding is the one it comes with, so if you instantly loss internet then yeah. But it shouldnt be an issue
ah thats because im a fool!
and put the wrong path
C:\Users\%UserProfile%\AppData\Roaming\faroquin is the correct one
ah
updated the wiki to reflect the proper path
Also there is logging set to this path C:\Users\%UserProfile%\AppData\Roaming\faroquin\logs
so it may tell you some errors there
it resets the disabled mods everytime you close/open faroquin (unless you disabled them ingame) seemingly
yeah was about to try and find out where log.error was going haha, thanks
resets as in they're enabled?
yes
ic
I will note that down
if we could somehow get a way for the community to all voluntarily submit their mods to this list it would be really nice because this community is DYING for an organized place where all our mods can be accessed
also yeah the play button isnt working (which is fine sense i can just launch from steam, its just a bit weird :p)
i love discord and github but these are not user friendly places for downloading mods
the neat part is we can just submit it for them!
yeah you can do that but i just think im terms of like
Oh interesting, it managed to recognise all my mods after a relaunch (I think?), but still does not recognise steamodded or lovely 🤔
new uploads?
well what if you're not available to do it you know
those it wont right now
it only recognizes the ones you install from it
Do you have a non-default path to balatro? or is it the normal steam path
oh, my bad!
i have it in my d drive, but i did set the paths
this is likely me and my C: path
or the config file not properly saving settings
you have to press save for the settings to try and save
"gameDir": "F:\\Programs\\Software\\MySteam\\steamapps\\common\\Balatro",
in config
ok so thats working
it should error if that button doesnt work
Error launching game: Error: spawn C:\Program Files (x86)\Steam\steamapps\common\Balatro\Balatro\Balatro.exe ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:285:19)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
example if I change my path to be wrong
seems like the config doesn't get loaded when restarting the app btw
lemme try something
Uncaught (in promise) Error: Error invoking remote method 'launch-game': Failed to launch game: spawn C:\Program Files (x86)\Steam\steamapps\common\Balatro\Balatro.exe ENOENT
<opening settings menu, and pressing save>
index.js:126 Uncaught (in promise) Error: Error invoking remote method 'launch-game': Failed to launch game: spawn D:\SteamLibrary\steamapps\common\BalatroModded\Balatro.exe ENOENT
ill just install to my D drive and see what im doing actually
crushed by the wall
lol
for this one do you have a more elongated error? any further lines?
index.js:126 Uncaught (in promise) Error: Error invoking remote method 'launch-game': Failed to launch game: spawn D:\SteamLibrary\steamapps\common\BalatroModded\Balatro.exe ENOENT
Balatro.exe is indeed at D:\SteamLibrary\steamapps\common\BalatroModded\Balatro.exe right?
I set mine to a D:\ path and it still launched
ENOENT implies that its failing to find the file
oh don't worry about the second error
my balatro is at D:\SteamLibrary\steamapps\common\BalatroModded\BalatroModded.exe
(its my way to seperate my vanilla and modded savefiles)
I may need to select by file instead of folder path and set it to executable
its only used for lovely and launching the game anyways
and then just take the parent folder of the exe
yeah should work, would be better than me having to either create a hacky windows shortcut or changing code in the app
@elfin grotto Merged TMJ
👍
I would love to work on this more, and theres a few things particularly annoying to me, but I have to rest and work tommorow!
I will be back in 24 hours or so to check-in
You definately beat me to it, I was trying to write a Rust based mod manager, yet I'm still a noob programmer and didn't really get it off the ground. This does look awesome and would be a definate win for everyone.
Is there any way to integrate the manager, and specifically the update mechanism, into the game itself?
The update mechanism could probably be made in-game, but you would likely use the in-game UI which is done differently (and something I don't personally know)
It would've taken me much longer to try and fool with in-game UI
if you have a relevant log upon trying to launch the game, it would be helpful for
https://github.com/Arargd/Faroquin/issues/4
if its ENOENT I'm going to assume its a similar issue perhaps, if your exe isn't "Balatro.exe" that would really let me know that its executable that its failing to get because I silly hardcoded that name.
I will resolve that part of the issue at the very least at some point by setting filepath from .exe file instead of directory
if there are any other relevant issues I made a basic template and you guys can submit to the github
my exe is indeed Balatro.exe, i get no crash when hitting that button (so no log)
I will try to start working on issues and other features in a few days
It should log if it failed to launch the game however
thank you for the help 🙏
generally it should show one of these logs depending on the outcome
I'm probably gone for a bit again, but I will sometime in a few days begin adding bunches and bunches of mods to the list (as many that will run)
its possible you clicked outside of the menu instead of saving or something idk (and it tried to open from the default path because it didnt save yours)
I need to remove it exiting unless you specifically press cancel
btw, for mods that are installed yet are not in the manager, might be worth looking for a .git folder in that mod directory to locate the github
would be helpful for, say, actively developing a new mod, where youll have the .git there for sure but it wont be indexed because (obviously) its in development
i will most definitely observe with great interest
looks great, although it looks more like a wrapper for existing mod loaders?
@obsidian flame Can you focus on the linux version instead of the Windows (and macOS?), because the mod manager that I am making currently has bad support for linux because of Tauri and it would be great to have one for linux too considering that you're using Electron, this should be no problem
I love linux but there are typically more windows users (and I need to reset up my linux boot to make sure it actually works)
I want to make it a decent experience and then focus on linux, but it may just be some small path changes
I will look into it basically
not much point to having two mod managers for the same platform idk
also, maybe look into merging the mod indexes? we've talked about the issues of having only one maintainer, and solving that issue while also making mod developers not have to submit to two different indexes would be great
+better sooner than later
Whatever the community is interested in, I probably will build mine out regardless purely because its interesting to me
at least there will be 1 user 🥹
I mean I have maintain access to skyline's index, so that's already more than one person.
I do think a common index might make sense
arars has one
ik
..okay good
Two users, as I'd use it too. 🤣 I know it's not easy to build and code for multi-platform, that's why I've almost given up on building my one. 😆 Just take your time and you'll get there eventually. 👍
Beginning work on fixing some issues
the visual toggle bug was simply because I forgot to write the changes to the .faro file, so it was never being updated to indicate if the mod was enabled or disabled
hooray for 1 line fixes
plz work on linux @obsidian flame . We're in this together
3 Users, This looks sick!
4 once linux is available
Looked into this and it seems like github really wants you to use their API to pull from releases
which would prevent more than 60 downloads an hour (if they all used releases)
Ideally I would like to reduce the amount of API calls as much as possible
so this will probably just be on the fence unless I can think of a good solution
doesn't point to the latest release but latest tag, but that should be the same thing most of the time [not actually the case with what I sent given steamodded hasn't been doing releases]
ah
this may work then
I may be adding a suspiciously Dimserene sized amount of mods soon
it'll end up being pre-releases too, but it beats latest commit if they use releases at least
mhm, it's the best I know of without using the api
though funnily not sure what mod to test, since cardsauce updated and the other mod I looked at had a pre-release after their latest release
im just gonna assume it works
cryptid
-# hasn't had a release in like a month
Yeah that will be fun, when someone decides to give up on releases randomly
Seems to work, however the file name is not the same as the releases one. Which breaks loading, is the filepaths relevant to the smods name/id or is it the whim of whoever made the mod?
steamodded doesn't care about filepaths, but that filename looks completely messed up..?
yes pulling from zipball the name is not retained
no i know that
i mean the achievements/Mods/... bit and the double fslash near the end
if I rename it to Cardsauce it works fine
what does it do if you rename it to something else?
cardsauce does some stuff with like reading the contents of a directory and ive found that a consequence of that is that game crashes if it has -main in the folder name
so i think its the dashes
if you can, automate it so that it always renames the folders
should just fix that doing that
or.. you know, just fix it?
adding a "-" breaks it indeed
idk how to fix it
want me to have a look?
I guess I could rename to the mod's ID or name
i believe its the recursive enumerate function
and avoid this issue potentially with other mods
yeah
since smods doesnt rely on it
oh i see
you see the problem?
oh yikes why does recursiveEnumerate work like that
idk it wasnt my code
someone else made it for deckskinsplus way back when
forget who
yeah this looks super jank
i never had a reason to think it had issues to it cause the plus sides to it outweighed the one downside of "tell user that they need to rename the folder" especially since cardsauces main release downloads come with the folder already renamed
Oh and you guys actually use it too yeah
yeah makes it so that i dont have to put every name of every achievement in a list
which is nice cause achievements dont get loaded in any order
if you guys fix that in smods i will have to make a load list for that though
which you should if possible but you know
Ah
Hilarious
Looks like gsub is interpreting the - in the file path as a quantifier
yeah i never woulda found that out
Wait Lua doesnt just have a simple string replace? Wtf happened there
yeah its missing a lot of stuff i expected it to have going in ngl
I'll send in a PR. It works locally on my end now at least
I'll move this to https://discord.com/channels/1116389027176787968/1229697382065639426, sorry about that Arargd
I am curious about how the mods are downloaded once selected from Faroquin
Is it straight into the mods directory, or is it subfoldered by author/simple-written-name/?
currently it is just mods
modpacks may end up changing that though
One thing I will suggest as a maybe idea; separating the content mods from the loaders/backend
there is a different category for steamodded and lovely currently
With the current direction of smods, tracking new-calc compat with the mods can potentially be challenging
whatever they've done recently has helped keep things from blowing up completely
versioning for smods in particular may be useful at least
keeping versioning in general for mods (that aren't broken) will be challenging, but that is part of the challenge of any mods community
modpacks with specific versioning alleviates that partially anyways