Release v2.0.0 - Major Refactor: General-Purpose Tracker
π¨ Breaking Changes
This is a major version update with significant breaking changes. Your existing config.json file will not work with this version. Please read the migration guide below.
What Changed
- Project renamed: From "Pokemon Shiny Hunt Tracker" to "Aioli Overlay"
- URL changed: From
http://shiny.localtohttp://aioli.local - Config format completely changed: New array-based section configuration
- All Pokemon-specific references removed: Now a fully general-purpose tracker
β¨ New Features
- Custom sections: Define any number of sections with custom titles
- Subtitle support: Add optional subtitles to each section
- Flexible counters: Each section supports 0, 1, or 2 counters
- Custom separators: Define your own separator for two-counter displays (e.g., "/", "-", "of")
- Static or dynamic counter2: Counter2 can be a file path (dynamic) or a number (static total)
- Larger title font: Title font size increased from 24px to 28px
π Migration Guide
Step 1: Update Your Hosts File
The URL has changed from shiny.local to aioli.local. Update your hosts file:
Windows (C:\Windows\System32\drivers\etc\hosts):
127.0.0.1 aioli.local
The executable will attempt to add this automatically on first run (may require admin elevation). However, it will not remove the old entry, so you will need to remove it manually if desired.
Step 2: Migrate Your Config File
Your old config.json format will no longer work. Here's how to convert it:
Old Format (v1.x)
{
"counterFilePath": "txt/shiny.txt",
"pokemonImage": "img/heracross.png",
"failedCatchesFilePath": "txt/failed_catches.txt",
"lastShinyImage": "img/weepinbell.png",
"livingDexCount": "txt/living_dex.txt",
"livingDexTotal": 230,
"sections": {
"currentHunt": true,
"failedAttempts": false,
"lastShiny": true,
"livingDex": true
}
}New Format (v2.0.0)
{
"sections": [
{
"title": "Current Hunt",
"subtitle": null,
"image": "img/heracross.png",
"counter1": "txt/shiny.txt",
"counter2": null,
"separator": null
},
{
"title": "Last Shiny",
"subtitle": null,
"image": "img/weepinbell.png",
"counter1": null,
"counter2": null,
"separator": null
},
{
"title": "Shiny Living Dex",
"subtitle": null,
"image": null,
"counter1": "txt/living_dex.txt",
"counter2": 230,
"separator": "/"
}
]
}Migration Steps
- Back up your current
config.json(rename it toconfig.json.backup) - Create a new
config.jsonusing the new format - Convert each enabled section from the old format:
currentHuntβ Section withtitle: "Current Hunt",imagefrompokemonImage,counter1fromcounterFilePathfailedAttemptsβ Section withtitle: "Failed Attempts",counter1fromfailedCatchesFilePathlastShinyβ Section withtitle: "Last Shiny",imagefromlastShinyImagelivingDexβ Section withtitle: "Shiny Living Dex",counter1fromlivingDexCount,counter2fromlivingDexTotal,separator: "/"
- Only include sections that were enabled (
true) in your old config - Sections are displayed in order - arrange them as you prefer
π Config Format Reference
Each section object supports:
title(required): The section title displayed at the topsubtitle(optional): A subtitle displayed below the title (can benull)image(optional): Path to an image file (can benull)counter1(optional): Path to a text file containing the first counter value, ornullcounter2(optional): Path to a text file OR a number for the second counter, ornullseparator(optional): String to display between two counters (e.g., "/", "-", "of"), ornull
Examples
Single counter with image:
{
"title": "Current Hunt",
"subtitle": "Level 1-1",
"image": "img/character.png",
"counter1": "txt/attempts.txt",
"counter2": null,
"separator": null
}Two counters (file + static number):
{
"title": "Progress",
"subtitle": null,
"image": null,
"counter1": "txt/current.txt",
"counter2": 100,
"separator": "/"
}Image only:
{
"title": "Last Achievement",
"subtitle": null,
"image": "img/achievement.png",
"counter1": null,
"counter2": null,
"separator": null
}Two counters from files:
{
"title": "Score",
"subtitle": null,
"image": null,
"counter1": "txt/score.txt",
"counter2": "txt/high_score.txt",
"separator": " / "
}π Update TikTok Live Studio
After updating, change your link source URL from http://shiny.local to http://aioli.local in TikTok Live Studio.
π‘ Tips
- Sections are displayed in the order they appear in the
sectionsarray - Counter files should contain only a number (whitespace is trimmed)
- Images update every 5 seconds, counters update every 1 second
- If
counter2is a number, it's displayed as-is (no file reading) - If
counter2is a file path, it's read and updated likecounter1 - Use
nullfor optional fields you don't want to use
π Need Help?
If you encounter issues migrating your config:
- Check the console output for error messages
- Verify your file paths are correct (relative to the executable)
- Ensure counter files contain only numbers
- Make sure the hosts file entry for
aioli.localexists
Note: This release maintains the same core functionality but with a much more flexible and customizable configuration system. The new format allows you to track anything you want, not just Pokemon shiny hunts!