Claude a061410f16 fix(bundle): mirror source fixes in embedded userscript
Mirror the three source-level fixes in the embedded copies inside
torn-attribute-tracker.user.js:

1. _wireHeaderDrag: add the .tat-header closest() guard so the bundle
   no longer steals focus from inputs/selects.
2. findAnchorElement: replace the narrow 'button[name="train"]' query
   with the priority-ordered candidate list and the gym-panel last-
   ditch fallback.
3. Inline anchor-error UX: add the anchorError state, include it in
   the snapshot, surface it via applyMode, render the note with the
   .tat-anchor-err class, and add the corresponding CSS rule.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 18:47:39 -05:00

Torn Attribute Training Tracker

A userscript for torn.com that shows a floating dialog on the gym page with your current attribute, target, rate of gain, and an ETA to the target.

Install

  1. Install Tampermonkey (or Violentmonkey / Greasemonkey).
  2. Open torn-attribute-tracker.user.js in your editor, copy its contents.
  3. In Tampermonkey, click the dashboard → + (Create new script) → paste → save.
  4. Visit https://www.torn.com/gym.php. The dialog appears in the bottom-right.

Use

  • Type a target value in the Target field, or pick a milestone from the dropdown.
  • The dialog updates live as you train.
  • Drag the header to reposition. Click Above training UI to anchor above the gym form. Click Float free to drag again.
  • The closes the dialog for the current page session; it returns on next visit.

Targets, dialog position, and the 30-day train history are stored in localStorage.

Self-test

Load the script with #tat-test in the URL:

https://www.torn.com/gym.php#tat-test

Open the browser console; you'll see [tat] self-test results: followed by OK … / FAIL … lines.

Tests

npm install   # no deps; node:test ships with Node 18+
npm test

Files

  • torn-attribute-tracker.user.js — the script you install in Tampermonkey.
  • src/pure.js, src/store.js, src/dom.js, src/interceptor.js, src/ui.js, src/main.js — source split for testability; the user-facing file is the bundle in step 11.
  • tests/ — Node test runner (node --test).

Notes

The DOM scraper and request interceptor are best-effort matches for the current Torn gym page. If Torn updates the markup, you may need to adjust the selectors in src/dom.js and re-bundle by copying the new source into the embedded section in torn-attribute-tracker.user.js.

S
Description
No description provided
Readme 216 KiB
Languages
JavaScript 100%