Skip to content

Introducing: Aioli Overlay v2!

Latest

Choose a tag to compare

@therwyn therwyn released this 06 Dec 21:01
5d25f49

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.local to http://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

  1. Back up your current config.json (rename it to config.json.backup)
  2. Create a new config.json using the new format
  3. Convert each enabled section from the old format:
    • currentHunt β†’ Section with title: "Current Hunt", image from pokemonImage, counter1 from counterFilePath
    • failedAttempts β†’ Section with title: "Failed Attempts", counter1 from failedCatchesFilePath
    • lastShiny β†’ Section with title: "Last Shiny", image from lastShinyImage
    • livingDex β†’ Section with title: "Shiny Living Dex", counter1 from livingDexCount, counter2 from livingDexTotal, separator: "/"
  4. Only include sections that were enabled (true) in your old config
  5. 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 top
  • subtitle (optional): A subtitle displayed below the title (can be null)
  • image (optional): Path to an image file (can be null)
  • counter1 (optional): Path to a text file containing the first counter value, or null
  • counter2 (optional): Path to a text file OR a number for the second counter, or null
  • separator (optional): String to display between two counters (e.g., "/", "-", "of"), or null

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 sections array
  • Counter files should contain only a number (whitespace is trimmed)
  • Images update every 5 seconds, counters update every 1 second
  • If counter2 is a number, it's displayed as-is (no file reading)
  • If counter2 is a file path, it's read and updated like counter1
  • Use null for optional fields you don't want to use

πŸ› Need Help?

If you encounter issues migrating your config:

  1. Check the console output for error messages
  2. Verify your file paths are correct (relative to the executable)
  3. Ensure counter files contain only numbers
  4. Make sure the hosts file entry for aioli.local exists

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!