1
0

Update version bot (#115)

This pull request includes significant changes to the
`.github/scripts/update_mod_versions.py` script and updates to several
`meta.json` files for various mods. The changes aim to improve the
version checking mechanism and handle GitHub API rate limits more
effectively.

### Improvements to version checking and API rate limit handling:

*
[`.github/scripts/update_mod_versions.py`](diffhunk://#diff-ce76f7bf74b62aaea873670c15651b4caec6662ded3cc8e597cb7e2b1eac67c7L27-R94):
Refactored `get_latest_release` and `get_latest_commit` functions into a
single `get_version_string` function to handle both release and commit
version checks. Added logic to handle GitHub API rate limits and
retries.
[[1]](diffhunk://#diff-ce76f7bf74b62aaea873670c15651b4caec6662ded3cc8e597cb7e2b1eac67c7L27-R94)
[[2]](diffhunk://#diff-ce76f7bf74b62aaea873670c15651b4caec6662ded3cc8e597cb7e2b1eac67c7L109-R146)
*
[`.github/scripts/update_mod_versions.py`](diffhunk://#diff-ce76f7bf74b62aaea873670c15651b4caec6662ded3cc8e597cb7e2b1eac67c7L109-R146):
Modified `process_mods` function to determine the version source based
on the download URL, and updated the function signature to include a
start timestamp parameter.
*
[`.github/scripts/update_mod_versions.py`](diffhunk://#diff-ce76f7bf74b62aaea873670c15651b4caec6662ded3cc8e597cb7e2b1eac67c7L166-R198):
Updated the `generate_commit_message` function to include a start
timestamp for better logging.

### Workflow and environment updates:

*
[`.github/workflows/update-mod-versions.yml`](diffhunk://#diff-08c6175ddce4a9d49c79d12925be3c4f705913aadcd437a10b8bde3bde8fe740R29-R30):
Added `GITHUB_TOKEN` environment variable to the workflow for
authenticated API requests.

### Mod version updates:

* Updated the `version` field in `meta.json` files for multiple mods to
reflect the latest commit hashes:
  * `mods/Agoraaa@FlushHotkeys/meta.json`
  * `mods/Aure@SixSuits/meta.json`
  * `mods/BataBata3@PampaPack/meta.json`
  * `mods/Betmma@BetmmaMods/meta.json`
  * `mods/Coo29@Yippie/meta.json`
  * `mods/DarkAutumn2618@PlanetNine/meta.json`
  * `mods/DigitalDetective47@CustomSuitOrder/meta.json`
  * `mods/DigitalDetective47@NextAntePreview/meta.json`
  * `mods/DigitalDetective47@StrangeLibrary/meta.json`
  * `mods/DigitalDetective47@StrangePencil/meta.json`
  * `mods/EnderGoodra@Textile/meta.json`
  * `mods/Eremel@Galdur/meta.json`
  * `mods/Eremel@Malverk/meta.json`
  * `mods/GauntletGames-2086@D6Jokers/meta.json`
  * `mods/GitNether@Paperback/meta.json`
  * `mods/HuyTheKiller@SauKhongHuDecks/meta.json`
  * `mods/HuyTheKiller@VietnameseBalatro/meta.json`
  * `mods/InertSteak@Pokermon/meta.json`
This commit is contained in:
Efe
2025-03-11 15:43:53 +01:00
committed by GitHub
51 changed files with 630 additions and 598 deletions

View File

@@ -24,53 +24,74 @@ def extract_repo_info(repo_url):
return owner, repo
return None, None
def get_latest_release(owner, repo):
"""Get the latest release version from GitHub."""
url = f'https://api.github.com/repos/{owner}/{repo}/releases/latest'
def get_version_string(source, owner, repo, start_timestamp, n = 1):
"""Get the version string from a given GitHub repo."""
if source == 'release':
url = f'https://api.github.com/repos/{owner}/{repo}/releases/latest'
else:
url = f'https://api.github.com/repos/{owner}/{repo}/commits'
try:
response = requests.get(url, headers=HEADERS)
api_rate_limit = int(response.headers.get('x-ratelimit-limit'))
api_rate_usage = int(response.headers.get('x-ratelimit-used'))
api_rate_remaining = int(response.headers.get('x-ratelimit-remaining'))
api_reset_timestamp = int(response.headers.get('x-ratelimit-reset'))
api_resource = response.headers.get('x-ratelimit-resource')
print(f"GitHub API ({api_resource}) calls: {api_rate_usage}/{api_rate_limit}")
if response.status_code == 200:
data = response.json()
return data.get('tag_name')
if source == 'release':
data = response.json()
# Return name of latest tag
return data.get('tag_name')
else:
commits = response.json()
if commits and len(commits) > 0:
# Return shortened commit hash (first 7 characters)
return commits[0]['sha'][:7]
elif response.status_code == 404:
# No releases found
# Not found
return None
elif response.status_code == 403 and 'rate limit exceeded' in response.text.lower():
print("GitHub API rate limit exceeded. Waiting for 5 minutes...")
time.sleep(300) # Wait for 5 minutes
return get_latest_release(owner, repo) # Retry
elif api_rate_remaining == 0 or (response.status_code == 403 and 'rate limit exceeded' in response.text.lower()):
print(f"GitHub API access is being rate limited!")
current_timestamp = int(time.time())
# Check if primary rate limit is okay
if api_rate_remaining > 0:
# Secondary rate limit hit, follow GitHub instructions
if 'retry-after' in response.headers:
wait_time = int(response.headers.get('retry-after')) + 5
print(f"Response retry-after {wait_time}s")
else:
# Start at 60 seconds and double wait time with each new attempt
print(f"Attempt {n}")
wait_time = 60 * pow(2, n - 1)
else:
api_reset_time = datetime.fromtimestamp(api_reset_timestamp).strftime('%H:%M:%S')
print(f"GitHub API rate limit resets at {api_reset_time}")
wait_time = api_reset_timestamp - current_timestamp + 5
# Wait only if the wait time would finish less than 1800 seconds (30 min) after program start time
if current_timestamp + wait_time - start_timestamp < 1800:
print(f"Waiting {wait_time} seconds until next attempt...")
time.sleep(wait_time)
n += 1
return get_version_string(source, owner, repo, start_timestamp, n) # Retry
else:
print(f"Next attempt in {wait_time} seconds, but Action run time would exceed 1800 seconds - Stopping...")
sys.exit(1)
else:
print(f"Error fetching releases: HTTP {response.status_code} - {response.text}")
print(f"Error fetching {source}s: HTTP {response.status_code} - {response.text}")
return None
except Exception as e:
print(f"Exception while fetching releases: {str(e)}")
print(f"Exception while fetching {source}s: {str(e)}")
return None
def get_latest_commit(owner, repo):
"""Get the latest commit hash from GitHub."""
url = f'https://api.github.com/repos/{owner}/{repo}/commits'
try:
response = requests.get(url, headers=HEADERS)
if response.status_code == 200:
commits = response.json()
if commits and len(commits) > 0:
# Return shortened commit hash (first 7 characters)
return commits[0]['sha'][:7]
elif response.status_code == 403 and 'rate limit exceeded' in response.text.lower():
print("GitHub API rate limit exceeded. Waiting for 5 minutes...")
time.sleep(300) # Wait for 5 minutes
return get_latest_commit(owner, repo) # Retry
else:
print(f"Error fetching commits: HTTP {response.status_code} - {response.text}")
return None
except Exception as e:
print(f"Exception while fetching commits: {str(e)}")
return None
def process_mods():
def process_mods(start_timestamp):
"""Process all mods and update versions where needed."""
mods_dir = Path('mods')
updated_mods = []
@@ -106,16 +127,24 @@ def process_mods():
print(f"Checking GitHub repo: {owner}/{repo}")
# Try to get latest release version first
new_version = get_latest_release(owner, repo)
version_source = "release"
# If no releases, fall back to latest commit
if not new_version:
print("No releases found, checking latest commit...")
new_version = get_latest_commit(owner, repo)
# If download url links to latest head, use version of latest commit hash
download_url = meta.get('downloadURL')
if "/archive/refs/heads/" in download_url:
print("Download URL links to HEAD, checking latest commit...")
version_source = "commit"
new_version = get_version_string(version_source, owner, repo, start_timestamp)
else:
# Try to get latest release version
print("Checking releases for latest version tag...")
version_source = "release"
new_version = get_version_string(version_source, owner, repo, start_timestamp)
# If no releases, fall back to latest commit
if not new_version:
print("No releases found, checking latest commit...")
version_source = "commit"
new_version = get_version_string(version_source, owner, repo, start_timestamp)
if not new_version:
print(f"⚠️ Warning: Could not determine version for {mod_dir.name}")
continue
@@ -163,8 +192,10 @@ def generate_commit_message(updated_mods):
return message
if __name__ == "__main__":
print(f"🔄 Starting automatic mod version update at {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}...")
updated_mods = process_mods()
start_timestamp = int(time.time())
start_datetime = datetime.fromtimestamp(start_timestamp).strftime('%H:%M:%S')
print(f"🔄 Starting automatic mod version update at {start_datetime}...")
updated_mods = process_mods(start_timestamp)
if updated_mods:
# Write commit message to a file that the GitHub Action can use

View File

@@ -26,6 +26,8 @@ jobs:
pip install requests
- name: Update mod versions
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
python .github/scripts/update_mod_versions.py
@@ -47,4 +49,3 @@ jobs:
else
echo "No changes to commit"
fi

View File

@@ -9,5 +9,5 @@
"repo": "https://github.com/Agoraaa/FlushHotkeys",
"downloadURL": "https://github.com/Agoraaa/FlushHotkeys/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "1.0.4b"
"version": "076d296"
}

View File

@@ -9,5 +9,5 @@
"repo": "https://github.com/Aurelius7309/SixSuits",
"downloadURL": "https://github.com/Aurelius7309/SixSuits/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v1.2.1"
"version": "d2044ee"
}

View File

@@ -9,5 +9,5 @@
"repo": "https://github.com/batabata3/balatro-pampa-joker-pack",
"downloadURL": "https://github.com/batabata3/balatro-pampa-joker-pack/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "a"
"version": "91c0618"
}

View File

@@ -9,5 +9,5 @@
"repo": "https://github.com/betmma/my_balatro_mods",
"downloadURL": "https://github.com/betmma/my_balatro_mods/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v3.0.1"
"version": "472b774"
}

View File

@@ -1,14 +1,14 @@
{
"title": "Yippie",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "Coo29",
"repo": "https://github.com/Coo29/YippieMod",
"downloadURL": "https://github.com/Coo29/YippieMod/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v0.0.6"
}
{
"title": "Yippie",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "Coo29",
"repo": "https://github.com/Coo29/YippieMod",
"downloadURL": "https://github.com/Coo29/YippieMod/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "87e403f"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Planet Nine",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Resource Packs"
],
"author": "DarkAutumn2618",
"repo": "https://github.com/DarkAutumn2618/balatro-planetnine",
"downloadURL": "https://github.com/DarkAutumn2618/balatro-planetnine/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v2.0.0"
}
{
"title": "Planet Nine",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Resource Packs"
],
"author": "DarkAutumn2618",
"repo": "https://github.com/DarkAutumn2618/balatro-planetnine",
"downloadURL": "https://github.com/DarkAutumn2618/balatro-planetnine/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "f551f58"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Custom Suit Order",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/suit-order",
"downloadURL": "https://github.com/DigitalDetective47/suit-order/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.0.2"
}
{
"title": "Custom Suit Order",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/suit-order",
"downloadURL": "https://github.com/DigitalDetective47/suit-order/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "0b2f126"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Next Ante Preview",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/next-ante-preview",
"downloadURL": "https://github.com/DigitalDetective47/next-ante-preview/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.1.3a"
}
{
"title": "Next Ante Preview",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/next-ante-preview",
"downloadURL": "https://github.com/DigitalDetective47/next-ante-preview/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "e477615"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Strange Library",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"API"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/strange-library",
"downloadURL": "https://github.com/DigitalDetective47/strange-library/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v2.1.1"
}
{
"title": "Strange Library",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"API"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/strange-library",
"downloadURL": "https://github.com/DigitalDetective47/strange-library/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "0093072"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Strange Pencil",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/strange-pencil",
"downloadURL": "https://github.com/DigitalDetective47/strange-pencil/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v0.2.1"
}
{
"title": "Strange Pencil",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "DigitalDetective47",
"repo": "https://github.com/DigitalDetective47/strange-pencil",
"downloadURL": "https://github.com/DigitalDetective47/strange-pencil/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "3caa32b"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Textile",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Technical"
],
"author": "EnderGoodra",
"repo": "https://github.com/EnderGoodra/Textile/",
"downloadURL": "https://github.com/EnderGoodra/Textile/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.0.1"
}
{
"title": "Textile",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Technical"
],
"author": "EnderGoodra",
"repo": "https://github.com/EnderGoodra/Textile/",
"downloadURL": "https://github.com/EnderGoodra/Textile/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "b5d0eb9"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Galdur",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Eremel",
"repo": "https://github.com/Eremel/Galdur",
"downloadURL": "https://github.com/Eremel/Galdur/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v1.2"
}
{
"title": "Galdur",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Eremel",
"repo": "https://github.com/Eremel/Galdur",
"downloadURL": "https://github.com/Eremel/Galdur/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "747c5ce"
}

View File

@@ -1,14 +1,14 @@
{
"title": "Malverk",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"API",
"Quality of Life"
],
"author": "Eremel",
"repo": "https://github.com/Eremel/Malverk",
"downloadURL": "https://github.com/Eremel/Malverk/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "V1.1.3"
}
{
"title": "Malverk",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"API",
"Quality of Life"
],
"author": "Eremel",
"repo": "https://github.com/Eremel/Malverk",
"downloadURL": "https://github.com/Eremel/Malverk/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "fc8316d"
}

View File

@@ -1,13 +1,13 @@
{
"title": "D6 Jokers",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "GauntletGames-2086",
"repo": "https://github.com/GauntletGames-2086/D6-Jokers",
"downloadURL": "https://github.com/GauntletGames-2086/D6-Jokers/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v0.7.22-DEMO"
}
{
"title": "D6 Jokers",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "GauntletGames-2086",
"repo": "https://github.com/GauntletGames-2086/D6-Jokers",
"downloadURL": "https://github.com/GauntletGames-2086/D6-Jokers/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "ac2a2ae"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Paperback",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "PaperMoon",
"repo": "https://github.com/GitNether/paperback",
"downloadURL": "https://github.com/GitNether/paperback/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v0.6.2"
}
{
"title": "Paperback",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "PaperMoon",
"repo": "https://github.com/GitNether/paperback",
"downloadURL": "https://github.com/GitNether/paperback/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "bc27711"
}

View File

@@ -9,5 +9,5 @@
"repo": "https://github.com/HuyTheKiller/SauKhongHuDecks",
"downloadURL": "https://github.com/HuyTheKiller/SauKhongHuDecks/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.2.0"
"version": "f0bb159"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Vietnamese Balatro",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Miscellaneous"
],
"author": "HuyTheKiller",
"repo": "https://github.com/HuyTheKiller/VietnameseBalatro",
"downloadURL": "https://github.com/HuyTheKiller/VietnameseBalatro/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.3.0"
}
{
"title": "Vietnamese Balatro",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Miscellaneous"
],
"author": "HuyTheKiller",
"repo": "https://github.com/HuyTheKiller/VietnameseBalatro",
"downloadURL": "https://github.com/HuyTheKiller/VietnameseBalatro/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "b658a0c"
}

View File

@@ -1,14 +1,14 @@
{
"title": "Pokermon",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "InertSteak",
"repo": "https://github.com/InertSteak/Pokermon",
"downloadURL": "https://github.com/InertSteak/Pokermon/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "2.7.0a"
}
{
"title": "Pokermon",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "InertSteak",
"repo": "https://github.com/InertSteak/Pokermon",
"downloadURL": "https://github.com/InertSteak/Pokermon/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "7599ce1"
}

View File

@@ -1,14 +1,14 @@
{
"title": "Flower Pot",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Technical"
],
"author": "ItsFlowwey",
"repo": "https://github.com/GauntletGames-2086/Flower-Pot",
"downloadURL": "https://github.com/GauntletGames-2086/Flower-Pot/archive/refs/heads/master.zip",
"folderName": "Flower-Pot",
"automatic-version-check": true,
"version": "v0.7.25"
}
{
"title": "Flower Pot",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Technical"
],
"author": "ItsFlowwey",
"repo": "https://github.com/GauntletGames-2086/Flower-Pot",
"downloadURL": "https://github.com/GauntletGames-2086/Flower-Pot/archive/refs/heads/master.zip",
"folderName": "Flower-Pot",
"automatic-version-check": true,
"version": "80ab982"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Bad Apple",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "JamesTheJellyfish",
"repo": "https://github.com/jamesthejellyfish/BadAppleBalatro",
"downloadURL": "https://github.com/jamesthejellyfish/BadAppleBalatro/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "0.1.0"
}
{
"title": "Bad Apple",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "JamesTheJellyfish",
"repo": "https://github.com/jamesthejellyfish/BadAppleBalatro",
"downloadURL": "https://github.com/jamesthejellyfish/BadAppleBalatro/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "ee0d3c2"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Deluxe Consumables",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "JeffVi",
"repo": "https://github.com/JeffVi/DX-Tarots",
"downloadURL": "https://github.com/JeffVi/DX-Tarots/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v1.0.1"
}
{
"title": "Deluxe Consumables",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "JeffVi",
"repo": "https://github.com/JeffVi/DX-Tarots",
"downloadURL": "https://github.com/JeffVi/DX-Tarots/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "7c5c1df"
}

View File

@@ -9,5 +9,5 @@
"repo": "https://github.com/AlexanderAndersonAmenAmen/Handsome-Devils-Vanilla-mod-",
"downloadURL": "https://github.com/AlexanderAndersonAmenAmen/Handsome-Devils-Vanilla-mod-/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v.1.1"
"version": "7d838a5"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Better Mouse and Gamepad",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "Kooluve",
"repo": "https://github.com/Kooluve/Better-Mouse-And-Gamepad",
"downloadURL": "https://github.com/Kooluve/Better-Mouse-And-Gamepad/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.0.6c"
}
{
"title": "Better Mouse and Gamepad",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "Kooluve",
"repo": "https://github.com/Kooluve/Better-Mouse-And-Gamepad",
"downloadURL": "https://github.com/Kooluve/Better-Mouse-And-Gamepad/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "308c8e9"
}

View File

@@ -1,13 +1,13 @@
{
"title": "CardSleeves",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Larswijn",
"repo": "https://github.com/larswijn/CardSleeves",
"downloadURL": "https://github.com/larswijn/CardSleeves/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v1.6.9"
}
{
"title": "CardSleeves",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Larswijn",
"repo": "https://github.com/larswijn/CardSleeves",
"downloadURL": "https://github.com/larswijn/CardSleeves/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "37cf745"
}

View File

@@ -10,5 +10,5 @@
"downloadURL": "https://github.com/MathIsFun0/Cryptid/archive/refs/heads/main.zip",
"folderName": "Cryptid",
"automatic-version-check": true,
"version": "v0.5.5"
"version": "44b6bd3"
}

View File

@@ -1,14 +1,14 @@
{
"title": "Trance",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Miscellaneous"
],
"author": "MathIsFun0",
"repo": "https://github.com/MathIsFun0/Trance",
"downloadURL": "https://github.com/MathIsFun0/Trance/archive/refs/heads/main.zip",
"folderName": "Trance",
"automatic-version-check": true,
"version": "v1.0.0"
}
{
"title": "Trance",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Miscellaneous"
],
"author": "MathIsFun0",
"repo": "https://github.com/MathIsFun0/Trance",
"downloadURL": "https://github.com/MathIsFun0/Trance/archive/refs/heads/main.zip",
"folderName": "Trance",
"automatic-version-check": true,
"version": "fb86ebd"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Lobotomy Corporation",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Mysthaps",
"repo": "https://github.com/Mysthaps/LobotomyCorp",
"downloadURL": "https://github.com/Mysthaps/LobotomyCorp/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "1.0.3b"
}
{
"title": "Lobotomy Corporation",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Mysthaps",
"repo": "https://github.com/Mysthaps/LobotomyCorp",
"downloadURL": "https://github.com/Mysthaps/LobotomyCorp/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "caf4ad0"
}

View File

@@ -1,14 +1,14 @@
{
"title": "NeatoJokers",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "Neato",
"repo": "https://github.com/neatoqueen/NeatoJokers",
"downloadURL": "https://github.com/neatoqueen/NeatoJokers/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "1.1.0"
}
{
"title": "NeatoJokers",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "Neato",
"repo": "https://github.com/neatoqueen/NeatoJokers",
"downloadURL": "https://github.com/neatoqueen/NeatoJokers/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "553e9e4"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Buffoonery",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "PinkMaggit",
"repo": "https://github.com/pinkmaggit-hub/Buffoonery",
"downloadURL": "https://github.com/pinkmaggit-hub/Buffoonery/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.1.7"
}
{
"title": "Buffoonery",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "PinkMaggit",
"repo": "https://github.com/pinkmaggit-hub/Buffoonery",
"downloadURL": "https://github.com/pinkmaggit-hub/Buffoonery/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "e7278d0"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Familiar",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "RattlingSnow353/humplydinkle",
"repo": "https://github.com/RattlingSnow353/Familiar/tree/BetterCalc-Fixes",
"downloadURL": "https://github.com/RattlingSnow353/Familiar/archive/refs/heads/BetterCalc-Fixes.zip",
"automatic-version-check": true,
"version": "Familiar_Release"
}
{
"title": "Familiar",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "RattlingSnow353/humplydinkle",
"repo": "https://github.com/RattlingSnow353/Familiar/tree/BetterCalc-Fixes",
"downloadURL": "https://github.com/RattlingSnow353/Familiar/archive/refs/heads/BetterCalc-Fixes.zip",
"automatic-version-check": true,
"version": "19bfbab"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Ink And Color Suits",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "RattlingSnow353",
"repo": "https://github.com/RattlingSnow353/InkAndColor",
"downloadURL": "https://github.com/RattlingSnow353/InkAndColor/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "Berry"
}
{
"title": "Ink And Color Suits",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "RattlingSnow353",
"repo": "https://github.com/RattlingSnow353/InkAndColor",
"downloadURL": "https://github.com/RattlingSnow353/InkAndColor/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "849a291"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Snows Mods",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "RattlingSnow353",
"repo": "https://github.com/RattlingSnow353/Snow-s-Mods",
"downloadURL": "https://github.com/RattlingSnow353/Snow-s-Mods/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "DicedV0.2.1"
}
{
"title": "Snows Mods",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "RattlingSnow353",
"repo": "https://github.com/RattlingSnow353/Snow-s-Mods",
"downloadURL": "https://github.com/RattlingSnow353/Snow-s-Mods/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "4174bed"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Revo's Vault",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "CodeRevo",
"repo": "https://github.com/Cdrvo/Revos-Vault---Balatro-Mod",
"downloadURL": "https://github.com/Cdrvo/Revos-Vault---Balatro-Mod/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "3.8.5a"
}
{
"title": "Revo's Vault",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "CodeRevo",
"repo": "https://github.com/Cdrvo/Revos-Vault---Balatro-Mod",
"downloadURL": "https://github.com/Cdrvo/Revos-Vault---Balatro-Mod/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "0f67310"
}

View File

@@ -1,14 +1,14 @@
{
"title": "SDM_0's Stuff",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "SDM0",
"repo": "https://github.com/SDM0/SDM_0-s-Stuff",
"downloadURL": "https://github.com/SDM0/SDM_0-s-Stuff/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "1.6.4"
}
{
"title": "SDM_0's Stuff",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "SDM0",
"repo": "https://github.com/SDM0/SDM_0-s-Stuff",
"downloadURL": "https://github.com/SDM0/SDM_0-s-Stuff/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "f5ce9c4"
}

View File

@@ -1,13 +1,13 @@
{
"title": "HandyBalatro",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "SleepyG11",
"repo": "https://github.com/SleepyG11/HandyBalatro",
"downloadURL": "https://github.com/SleepyG11/HandyBalatro/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.3.2a"
}
{
"title": "HandyBalatro",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "SleepyG11",
"repo": "https://github.com/SleepyG11/HandyBalatro",
"downloadURL": "https://github.com/SleepyG11/HandyBalatro/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "47e318e"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Steamodded",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Technical"
],
"author": "Steamodded",
"repo": "https://github.com/Steamodded/smods",
"downloadURL": "https://github.com/Steamodded/smods/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "1.0.0-beta-0305c"
}
{
"title": "Steamodded",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Technical"
],
"author": "Steamodded",
"repo": "https://github.com/Steamodded/smods",
"downloadURL": "https://github.com/Steamodded/smods/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "709a6d4"
}

View File

@@ -1,14 +1,14 @@
{
"title": "Plantain",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "TeamToaster",
"repo": "https://github.com/IcebergLettuce0/Plantain",
"downloadURL": "https://github.com/IcebergLettuce0/Plantain/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v1.0.2"
}
{
"title": "Plantain",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "TeamToaster",
"repo": "https://github.com/IcebergLettuce0/Plantain",
"downloadURL": "https://github.com/IcebergLettuce0/Plantain/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "b31199b"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Tetrapak",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Tetraminus",
"repo": "https://github.com/tetraminus/Tetrapak",
"downloadURL": "https://github.com/tetraminus/Tetrapak/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "1.0.3"
}
{
"title": "Tetrapak",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "Tetraminus",
"repo": "https://github.com/tetraminus/Tetrapak",
"downloadURL": "https://github.com/tetraminus/Tetrapak/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "6950664"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Hand Preview",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "Toeler",
"repo": "https://github.com/Toeler/Balatro-HandPreview",
"downloadURL": "https://github.com/Toeler/Balatro-HandPreview/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v1.0.0"
}
{
"title": "Hand Preview",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "Toeler",
"repo": "https://github.com/Toeler/Balatro-HandPreview",
"downloadURL": "https://github.com/Toeler/Balatro-HandPreview/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "2a6f46e"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Riff-Raffling",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "UppedHealer8521",
"repo": "https://github.com/UppedHealer8521/Riff-Raffling",
"downloadURL": "https://github.com/UppedHealer8521/Riff-Raffling/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "mod2"
}
{
"title": "Riff-Raffling",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "UppedHealer8521",
"repo": "https://github.com/UppedHealer8521/Riff-Raffling",
"downloadURL": "https://github.com/UppedHealer8521/Riff-Raffling/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "597baf7"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Binding of Isaac Tarot",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Resource Packs"
],
"author": "Zamos",
"repo": "https://github.com/theZamos/Isaac-Tarot",
"downloadURL": "https://github.com/theZamos/Isaac-Tarot/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "1.0"
}
{
"title": "Binding of Isaac Tarot",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Resource Packs"
],
"author": "Zamos",
"repo": "https://github.com/theZamos/Isaac-Tarot",
"downloadURL": "https://github.com/theZamos/Isaac-Tarot/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "ecbff66"
}

View File

@@ -1,13 +1,13 @@
{
"title": "KCVanilla",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "kcgidw",
"repo": "https://github.com/kcgidw/kcvanilla",
"downloadURL": "https://github.com/kcgidw/kcvanilla/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "2.4.1"
}
{
"title": "KCVanilla",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "kcgidw",
"repo": "https://github.com/kcgidw/kcvanilla",
"downloadURL": "https://github.com/kcgidw/kcvanilla/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "ed4078c"
}

View File

@@ -1,13 +1,13 @@
{
"title": "LushMod",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "lusciousdev",
"repo": "https://github.com/lusciousdev/LushMod",
"downloadURL": "https://github.com/lusciousdev/LushMod/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v0.3.0"
}
{
"title": "LushMod",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Joker"
],
"author": "lusciousdev",
"repo": "https://github.com/lusciousdev/LushMod",
"downloadURL": "https://github.com/lusciousdev/LushMod/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "18e7554"
}

View File

@@ -1,14 +1,14 @@
{
"title": "JokerDisplay",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life",
"API"
],
"author": "nh6574",
"repo": "https://github.com/nh6574/JokerDisplay",
"downloadURL": "https://github.com/nh6574/JokerDisplay/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v1.8.2.3"
}
{
"title": "JokerDisplay",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Quality of Life",
"API"
],
"author": "nh6574",
"repo": "https://github.com/nh6574/JokerDisplay",
"downloadURL": "https://github.com/nh6574/JokerDisplay/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "305b3e2"
}

View File

@@ -1,14 +1,14 @@
{
"title": "JoyousSpring",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "nh6574",
"repo": "https://github.com/nh6574/JoyousSpring",
"downloadURL": "https://github.com/nh6574/JoyousSpring/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v0.6.5.3"
}
{
"title": "JoyousSpring",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content",
"Joker"
],
"author": "nh6574",
"repo": "https://github.com/nh6574/JoyousSpring",
"downloadURL": "https://github.com/nh6574/JoyousSpring/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "ac45ce3"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Balatro Draft",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "spire-winder",
"repo": "https://github.com/spire-winder/Balatro-Draft",
"downloadURL": "https://github.com/Eremel/Galdur/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v0.5.2"
}
{
"title": "Balatro Draft",
"requires-steamodded": true,
"requires-talisman": false,
"categories": [
"Content"
],
"author": "spire-winder",
"repo": "https://github.com/spire-winder/Balatro-Draft",
"downloadURL": "https://github.com/Eremel/Galdur/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "d4fbaeb"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Blueprint",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "Stupxd",
"repo": "https://github.com/stupxd/Blueprint",
"downloadURL": "https://github.com/stupxd/Blueprint/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "v.3.2"
}
{
"title": "Blueprint",
"requires-steamodded": false,
"requires-talisman": false,
"categories": [
"Quality of Life"
],
"author": "Stupxd",
"repo": "https://github.com/stupxd/Blueprint",
"downloadURL": "https://github.com/stupxd/Blueprint/archive/refs/heads/master.zip",
"automatic-version-check": true,
"version": "5bc1ed1"
}

View File

@@ -1,13 +1,13 @@
{
"title": "Maximus",
"requires-steamodded": true,
"requires-talisman": true,
"categories": [
"Content"
],
"author": "theAstra, Maxiss02",
"repo": "https://github.com/the-Astra/Maximus",
"downloadURL": "https://github.com/the-Astra/Maximus/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v0.5.0-beta"
}
{
"title": "Maximus",
"requires-steamodded": true,
"requires-talisman": true,
"categories": [
"Content"
],
"author": "theAstra, Maxiss02",
"repo": "https://github.com/the-Astra/Maximus",
"downloadURL": "https://github.com/the-Astra/Maximus/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "47705f8"
}

View File

@@ -9,5 +9,5 @@
"repo": "https://github.com/ywssp/Balatro-ColoredSuitTarots",
"downloadURL": "https://github.com/ywssp/Balatro-ColoredSuitTarots/archive/refs/heads/main.zip",
"automatic-version-check": true,
"version": "v4.1.1"
"version": "5cd04f6"
}