GymIQ

Live ratio panel for Torn gym stats. TornPDA users should set injection time to END.

These are versions of this script where the code was updated. Show all versions.

  • v4.5.2 2026-04-07

    Version 4.5.2

    This update addresses two early complaints about stat order and custom ratio saving.

    Fixed

    • Fixed custom ratio saving so 0.00 is handled more reliably in browsers.
    • Fixed defensive high-stat builds feeling locked into dumping Speed.

    Improved

    • Added a new setting for Defense and Dexterity mains so users can choose whether to dump Strength or Speed.
    • Default defensive dump preference now favors dumping Strength, which better matches how many players use defensive builds.
  • v4.5.1 2026-04-07

    Version 4.5.1

    This update focuses on stability, readability, and TornPDA usability.

    Fixed

    • Fixed the Export tab crashing because the export renderer was missing.
    • Fixed the What-If tab so the full projection updates live while typing.
    • Fixed custom ratio saving so 0 values are preserved correctly for dump stats.
    • Fixed low-stat accounts being misread or treated as unreadable.
    • Fixed history noise from duplicate snapshots during simple panel re-renders.
    • Fixed copy feedback so the script no longer claims export text was copied when the platform blocks clipboard access.

    Improved

    • Cleaned up all broken/misencoded UI text that could appear as strange symbols.
    • Replaced fragile emoji-based labels with plain text labels for better compatibility.
    • Hardened style injection and panel attachment for alternate webviews like TornPDA.
    • Cleaned up the source file so comments and UI text are more readable.
  • v4.3.0 2026-03-19

    v4.3.0

    -Fixed Def-high stat order — secondary was incorrectly set to Strength instead of Dexterity

    -Removed incorrect gym name suggestions from the Train Next recommendation

  • v4.2.0 2026-03-16

    v4.2.0

    Fixed stats not loading at all — the selectors used to find stat values on the page were outdated and no longer matched Torn's current gym page structure. Rewrote the stat reader to use Torn's actual DOM layout (propertyTitle and propertyValue elements)

  • v4.1.0 2026-03-16

    ## v4.1.0
    - Fixed conflict with TornTools. when TornTools had an API key it was injecting small numbers into the DOM that GymIQ was picking up instead of your real stats. Now rejects any value under 100 and throws out the whole read if all four stats add up to less than 400
    - Retry loop now waits longer on page load to give other scripts time to finish before GymIQ reads anything
    - Renamed everything to GymIQ — script name, namespace, and panel header
    - Simplified all the overly technical comments in codebase.

  • v4.0.0 2026-03-16

    ## v4.0.0
    - Settings page now shows your actual stat names next to each slot so you can see exactly which stat is 1st, 2nd, 3rd and 4th without any guessing
    - Added plain-English explanations throughout the settings — including what the multipliers actually mean (e.g. "0.80 means train this stat to 80% of your highest")
    - Renamed "High Stat" to "Your Highest Stat" to be less jargon-y

  • v3.9.0 2026-03-14

    ## v3.9.0
    - Fixed the settings page on mobile/PDA — ratio and high stat buttons now stack vertically and go full width instead of running off the edge of the screen
    - Tabs can now be swiped horizontally on small screens
    - Cleaned up the Info tab — removed the beginner-specific "1200 stats" line and the "Which should I pick?" section

  • v3.8.0 2026-03-12

    v3.8.0

    Fixed buttons stopping working after training — tabs, settings, and all other controls now stay responsive no matter how many times the panel refreshes

  • v3.6.0 2026-03-10

    # Torn Ratio Helper — Changelog

    ---

    ## v3.6.0
    - Fixed auto-refresh after training — the energy bar selector was never matching because Torn uses randomised class name suffixes (e.g. `bar-value_____NTdce`) that change between builds. Updated to use `[class*="bar-value"]` which matches regardless of the suffix, then reads the `NNN / NNN` pattern from the text content
    - Fixed `readEnergyFromPage` used by the session efficiency tracker with the same selector fix

    ## v3.5.0
    - Fixed TBS delta showing an absurdly large negative number — the old calculation used `Object.values()` on history entries which included the `ts` timestamp field (a 13-digit Unix millisecond number). Now explicitly only sums the four stat keys
    - Replaced DOM text observation for train detection with an energy value watcher — a drop in displayed energy is a guaranteed signal that a train fired, regardless of gym type or action text

    ## v3.4.0
    - Fixed stat misreads at high stat levels — the old text scraper was grabbing small numbers (levels, percentages, gym requirements) instead of actual stat values
    - Stat reader now searches only within the gym content area rather than the entire page body
    - Regex fallback now collects all candidate numbers near a stat label and picks the largest
    - Added sanity check: if any stat reads as less than 0.1% of your largest stat it is automatically nulled out and shown as unread rather than silently displaying a wrong value

    ## v3.3.0
    - Removed Planner and Efficiency tabs
    - Fixed tab alignment — tabs now sit correctly with padding rather than stretching across the full panel width

    ## v3.2.0
    - Replaced stat-value polling with a MutationObserver watching for Torn's train result message in the DOM
    - Observer is cleanly stopped and restarted on SPA navigation

    ## v3.1.0
    - Script now only runs on the gym page — removed profile and index page matches
    - Panel actively removes itself if Torn's SPA navigates away to a profile or other page

    ## v3.0.0
    **Major update — new tabs and features**
    - Added Planner tab with target TBS calculator and estimated train counts
    - Added Efficiency tab tracking stat gains vs energy spent per session
    - Added Export tab with one-click clipboard copy
    - Added ratio drift alerts on the Overview tab
    - Added faction war mode — reweights Train Next recommendation toward Defense and Dexterity
    - Added light/dark theme toggle
    - Info tab condensed to icon to save tab bar space

    ## v2.2.0
    - Fixed timing issue where stats could not be read on first load, requiring a tab switch to resolve
    - Implemented two-phase polling — waits for DOM structure first, then separately waits for stat values
    - Added background stat watcher that silently retries and re-renders once values are available

    ## v2.1.0
    - Added Info tab with explanations of ratios, gym dots, stat roles in combat, and a new player recommendation

    ## v2.0.0
    **Major update — full panel redesign with tabbed interface**
    - Redesigned UI with dark terminal aesthetic and cyan accent
    - Added Overview, What-If, History, and Settings tabs
    - Overview shows color-coded progress bars, letter grade, TBS with delta, and Train Next recommendation with gym tip
    - What-If calculator with live grade update
    - History logs up to 30 snapshots with per-stat and TBS deltas
    - Settings tab with ratio selector, high stat selector, and custom ratio multiplier input
    - Added Hank's Ratio alongside Baldr's
    - All preferences saved between sessions

    ## v1.0.0
    **Initial release**
    - Panel injected on gym and profile pages
    - Color-coded stat display vs Baldr's Ratio targets
    - Shows current value, target, and exact point difference per stat
    - Toggle between Baldr's and Hank's ratio
    - Dropdown to select high stat
    - Preferences saved between sessions
    - MutationObserver for Torn's React SPA navigation
    - Text scraping fallback if CSS selectors don't match

  • v3.5.0 2026-03-10
  • v3.4.0 2026-03-10

    Changelog
    v3.4.0

    Fixed stat misreads at high stat levels — the old text scraper was grabbing small numbers (levels, percentages, gym requirements) instead of actual stat values when multiple numbers appeared near a stat label on the page
    Stat reader now searches only within the gym content area rather than the entire page body
    Regex fallback now collects all candidate numbers near a stat label and picks the largest — which is always the actual stat value
    Added sanity check: if any stat reads as less than 0.1% of your largest stat it is automatically nulled out and shown as unread rather than silently displaying a wrong value

    v3.3.0

    Removed Planner and Efficiency tabs
    Fixed tab alignment — tabs now sit correctly rather than stretching across the full panel width

    v3.2.0

    Replaced stat-value polling with a MutationObserver that watches for Torn's train result message in the DOM
    Panel now auto-refreshes reliably after every train regardless of stat level
    Observer is cleanly stopped and restarted on SPA navigation

    v3.1.0

    Script now only runs on the gym page — removed profile and index page matches
    Panel actively removes itself if Torn's SPA navigates away to a profile or other page
    MutationObserver correctly stops the train observer on navigation away from the gym

    v3.0.0
    Major update — new tabs and features

    Added Planner tab with target TBS calculator and estimated train counts
    Added Efficiency tab tracking stat gains vs energy spent per session
    Added Export tab with one-click clipboard copy
    Added ratio drift alerts on the Overview tab
    Added faction war mode — reweights Train Next recommendation toward Defense and Dexterity
    Added light/dark theme toggle
    Info tab condensed to icon to save tab bar space

    v2.2.0

    Fixed timing issue where stats could not be read on first load, requiring a tab switch to resolve
    Implemented two-phase polling — waits for DOM structure first, then separately waits for stat values
    Added background stat watcher that silently retries and re-renders once values are available

    v2.1.0

    Added Info tab with explanations of ratios, gym dots, stat roles in combat, and a new player recommendation

    v2.0.0
    Major update — full panel redesign with tabbed interface

    Redesigned UI with dark terminal aesthetic and cyan accent
    Added Overview, What-If, History, and Settings tabs
    Overview shows color-coded progress bars, letter grade, TBS with delta, and Train Next recommendation with gym tip
    What-If calculator with live grade update
    History logs up to 30 snapshots with per-stat and TBS deltas
    Settings tab with ratio selector, high stat selector, and custom ratio multiplier input
    Added Hank's Ratio alongside Baldr's
    All preferences saved between sessions

    v1.0.0
    Initial release

    Panel injected on gym and profile pages
    Color-coded stat display vs Baldr's Ratio targets
    Shows current value, target, and exact point difference per stat
    Toggle between Baldr's and Hank's ratio
    Dropdown to select high stat
    Preferences saved between sessions
    MutationObserver for Torn's React SPA navigation
    Text scraping fallback if CSS selectors don't match

  • v3.1.0 2026-03-08

    # Torn Ratio Helper — Changelog

    ---

    ## v3.1.0
    - Script now only runs on the gym page (`gym.php`) — removed profile and index page matches
    - Panel actively removes itself if Torn's SPA navigates away to a profile or other page
    - Auto-refresh after training — a background poller detects when a stat value changes (i.e. a train just completed) and re-renders the panel automatically without needing a manual refresh

    ---

    ## v3.0.0
    **Major update — 4 new tabs and several new features**

    New tabs:
    - **Planner** — set a target TBS and see exactly what each stat needs to reach it, along with a deficit and estimated train count per stat. Supports optional passive daily gains input (books, education etc.) for more accurate estimates
    - **Efficiency** — tracks stat gains vs energy spent since you opened the page. Shows stats per 100 energy, stats per train, total energy spent, and a per-stat gains breakdown
    - **Export** — one-click copy of a formatted stat snapshot ready to paste into faction Discord servers or forums
    - **Info tab** condensed to an icon (📖) to save tab bar space

    New overview features:
    - **Ratio drift alerts** — warns you if any stat has slipped more than 5% out of ratio since your last session
    - **Faction war mode** — reweights the "Train Next" recommendation to prioritise Defense and Dexterity during wars. Pulsing WAR badge appears in the header when active

    New settings:
    - **Light/dark theme toggle** — full light theme with a clean blue palette
    - **War mode toggle**

    ---

    ## v2.2.0
    - Fixed timing issue where stats could not be read on first load, requiring a tab switch to resolve
    - Implemented two-phase polling — waits for DOM structure first, then separately waits for actual stat values to appear (up to ~15 seconds total)
    - Added background stat watcher — if the warning banner appears, the script silently keeps retrying and re-renders automatically once values are available

    ---

    ## v2.1.0
    - Added **Info tab** with plain-English explanations of why ratios matter, how gym dots work, a full breakdown of Baldr's vs Hank's with tradeoffs, what each battle stat does in combat, and a recommendation for new players

    ---

    ## v2.0.0
    **Major update — full panel redesign with tabbed interface**

    - Redesigned UI with dark terminal aesthetic and cyan accent
    - Added tabbed navigation: Overview, What-If, History, Settings
    - **Overview tab** — color-coded progress bars per stat, letter grade (A+ to F) for overall ratio health, Total Battle Stats (TBS) with delta from last visit, and a "Train Next" recommendation with gym tip
    - **What-If calculator** — enter hypothetical stat values and see projected ratio grade and targets update live
    - **History tab** — automatically logs stats each visit (up to 30 snapshots), shows per-stat deltas and TBS over time, with option to clear history
    - **Settings tab** — ratio selector, high stat selector, and custom ratio multiplier input; all preferences saved between sessions
    - Added support for **custom ratio** (user-defined multipliers)
    - Added **Hank's Ratio** toggle alongside Baldr's

    ---

    ## v1.0.0
    **Initial release**

    - Injects a panel on the gym and profile pages
    - Reads all four battle stats from the page
    - Color-codes each stat against Baldr's Ratio targets (✅ on target, 🟡 close, ❌ off, 🔶 too high)
    - Shows current value, target value, and exact point difference per stat
    - Toggle between Baldr's and Hank's ratio
    - Dropdown to select your high stat (Strength, Speed, Defense, or Dexterity)
    - Preferences saved between sessions via Violentmonkey storage
    - Handles Torn's React SPA with MutationObserver for navigation detection
    - Fallback text scraping if CSS selectors don't match

  • v3.0.0 2026-03-06
  • v2.2.0 2026-03-06
  • v2.1.1 2026-03-06
  • v2.1.0 2026-03-06
  • v1.0.0 2026-03-06