dev and Claude Opus 4.8
b626fb7d41
fix(bundle): stop pre-escaping gym name in embedded dom.js (apostrophe fix)
...
The embedded currentAttribute() in the bundle was returning gym:
tatEsc(gym), but the render template in Dialog.render also escapes with
tatEsc(s.gym). The double-escape turned 'George's' into 'George's',
which the browser decoded to the visible text 'George's'.
The src/dom.js source does NOT pre-escape (returns the raw gym string and
lets the render template handle escaping once). This commit restores the
mirror in the embedded dom.js so the bundle matches the source.
No changes to src/dom.js (it was already correct).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-07 14:00:40 -05:00
dev
c6de810417
feat(bundle): mirror source changes in embedded userscript
2026-06-07 12:17:29 -05:00
dev
ca83996c6e
feat(main): anchor dialog by inserting before gymContentWrapper (dock in page flow)
2026-06-07 12:15:09 -05:00
dev
a1e79ac801
feat(ui): add tat-anchored CSS class and rework setMode to dock the dialog in the page flow
2026-06-07 12:14:05 -05:00
dev
7fddd84b6a
fix(bundle): mirror source fixes in embedded userscript
2026-06-07 09:00:40 -05:00
dev
2ed25c14de
fix(main): pass rect to setMode and remove redundant _positionAnchored call (anchor crash fix)
2026-06-07 09:00:04 -05:00
dev
95c655c24c
fix(gitignore): add rendered gym.php source to ignore list
2026-06-07 08:49:41 -05:00
dev
8d89e40b91
fix(bundle): mirror source fixes in embedded userscript
2026-06-05 08:43:22 -05:00
dev
540416949b
fix(interceptor): parse "gained" message for reliable per-train delta
2026-06-05 08:39:16 -05:00
dev
6dd5d2e3f2
fix(dom): rewrite scraper to use Torn's CSS module structure (li class prefix, propertyValue span)
2026-06-05 08:38:39 -05:00
dev
578736a492
fix(test): adjust comment formatting for clarity in computeEstimate tests
2026-06-01 21:42:39 -05:00
dev
ef90a6b779
Add design document for Torn Attribute Training Tracker
...
- Introduced a new userscript for torn.com to assist players in planning attribute training.
- Document outlines the purpose, scope, architecture, dialog content, placement modes, error handling, testing, and file layout.
- Details on data handling, UI interactions, and user preferences included.
2026-06-01 18:16:02 -05:00
dev
ecea14b051
test(build): extend behavioral drift checks to all four pure functions
2026-06-01 17:59:36 -05:00
dev
e21582b7c4
fix(bundle): strict 30-day boundary in pruneHistory to match src/pure.js
2026-06-01 17:59:06 -05:00
dev
adc8a5dec9
docs: README with install, usage, and self-test instructions
2026-06-01 17:40:18 -05:00
dev
a5f402132e
test(build): catch behavioral drift in bundle summary via eval-extracted comparison
2026-06-01 17:37:46 -05:00
dev
62fe86a71f
test(build): verify userscript bundle embeds pure functions and self-test
2026-06-01 17:31:24 -05:00
dev
75f10126d2
fix(bundle): floor perDay in summary and hoist self alias in render
2026-06-01 17:28:41 -05:00
dev
7c2533d188
feat: bundle torn-attribute-tracker.user.js (Tat-style Tampermonkey script)
2026-06-01 17:16:54 -05:00
dev
36a6b4c52d
fix(main): keep prefs.mode in sync and rAF-coalesce mutation observer
2026-06-01 17:09:38 -05:00
dev
12fc79022f
feat(main): wire Store + Dialog + DataLayer on /gym.php
2026-06-01 17:03:03 -05:00
dev
8502c53663
fix(ui): escape user strings, lazy drag listeners, drop dead warn field
2026-06-01 16:58:12 -05:00
dev
3053a6d713
feat(ui): Dialog with render, drag, mode toggle, milestone dropdown
2026-06-01 16:52:25 -05:00
dev
cd6fb7cf91
fix(interceptor): guard XHR double-wrap and thread currentAttr into regex fallback
2026-06-01 16:47:39 -05:00
dev
491d3201f8
feat(interceptor): XHR/fetch wrap to detect Train responses
2026-06-01 16:41:01 -05:00
dev
aec9c40835
fix(dom): scope value search near attribute, whole-word matching, panel-scoped gym name
2026-06-01 16:38:22 -05:00
dev
e647fbf545
feat(dom): currentAttribute scraper for gym page (manual verify)
2026-06-01 16:32:44 -05:00
dev
3d000c70ff
test(store): cover recordTrain validation and getSummary on unknown attr
2026-06-01 16:29:25 -05:00
dev
07215e5617
feat(store): recordTrain with pruning and getSummary
2026-06-01 16:22:18 -05:00
dev
e39758c1af
feat(store): _saveDisabled latch and stronger corruption-wipe coverage
2026-06-01 16:16:21 -05:00
dev
231890a9e0
feat(store): load/save and target accessors with validation
2026-06-01 16:08:42 -05:00
dev
48e51054ca
docs(pure): note that summary.perDay is integer-rounded
2026-06-01 16:03:27 -05:00
dev
5fd0f5e548
feat(pure): summary with today/week counts and per-day rate
2026-06-01 15:54:43 -05:00
dev
a2e23341ac
refactor(pure): share MS_PER_DAY with tests and document pruneHistory
2026-06-01 15:48:52 -05:00
dev
ca753bf196
feat(pure): pruneHistory with strict 30-day window
2026-06-01 15:42:37 -05:00
dev
757139624f
refactor(pure): extract MS_PER_DAY constant and document computeEstimate precondition
2026-06-01 15:36:56 -05:00
dev
faae7702aa
feat(pure): computeEstimate with safe division and target-reached handling
2026-06-01 15:30:07 -05:00
dev
545cf65beb
refactor(pure): remove duplicate regex and dead empty-string guard
2026-06-01 15:24:55 -05:00
dev
e0540468c3
feat(pure): parseTarget with comma and magnitude suffix support
2026-06-01 15:16:12 -05:00
dev
07ef131d65
chore: broaden .gitignore for logs and OS junk
2026-06-01 15:07:26 -05:00
dev
b1ab57596d
chore: initialize project
2026-06-01 15:01:31 -05:00