-
e44bf2b3c9
style(ui): make docked dialog look more like a Torn panel (full-width, accent border)
main
dev
2026-06-07 14:02:11 -05:00
-
b626fb7d41
fix(bundle): stop pre-escaping gym name in embedded dom.js (apostrophe fix)
dev
2026-06-07 14:00:40 -05:00
-
c6de810417
feat(bundle): mirror source changes in embedded userscript
dev
2026-06-07 12:17:29 -05:00
-
ca83996c6e
feat(main): anchor dialog by inserting before gymContentWrapper (dock in page flow)
dev
2026-06-07 12:15:09 -05:00
-
a1e79ac801
feat(ui): add tat-anchored CSS class and rework setMode to dock the dialog in the page flow
dev
2026-06-07 12:14:05 -05:00
-
7fddd84b6a
fix(bundle): mirror source fixes in embedded userscript
dev
2026-06-07 09:00:40 -05:00
-
2ed25c14de
fix(main): pass rect to setMode and remove redundant _positionAnchored call (anchor crash fix)
dev
2026-06-07 09:00:04 -05:00
-
95c655c24c
fix(gitignore): add rendered gym.php source to ignore list
dev
2026-06-07 08:49:41 -05:00
-
d494093139
fix(bundle): mirror source fixes in embedded userscript
Claude Opus 4.8
2026-06-06 09:15:13 -05:00
-
429a5d1b14
fix(main): anchor above Torn's
properties___HASH list instead of looking for a form
Claude Opus 4.8
2026-06-06 09:14:05 -05:00
-
ac1c04ecad
fix(dom): find active gym button by
active class instead of iterating all buttons
Claude Opus 4.8
2026-06-06 09:13:22 -05:00
-
8d89e40b91
fix(bundle): mirror source fixes in embedded userscript
dev
2026-06-05 08:43:22 -05:00
-
540416949b
fix(interceptor): parse "gained" message for reliable per-train delta
dev
2026-06-05 08:39:16 -05:00
-
6dd5d2e3f2
fix(dom): rewrite scraper to use Torn's CSS module structure (li class prefix, propertyValue span)
dev
2026-06-05 08:38:39 -05:00
-
76e3ba2488
fix(bundle): mirror source fixes in embedded userscript
Claude
2026-06-01 22:24:57 -05:00
-
b03cc80665
fix(ui): default floating dialog position to bottom-left
Claude
2026-06-01 22:24:01 -05:00
-
501c6746eb
fix(main): hoist let bindings to top of start() to fix TDZ on anchorError
Claude
2026-06-01 22:22:29 -05:00
-
578736a492
fix(test): adjust comment formatting for clarity in computeEstimate tests
dev
2026-06-01 21:42:39 -05:00
-
a061410f16
fix(bundle): mirror source fixes in embedded userscript
Claude
2026-06-01 18:47:39 -05:00
-
bb33bcbb61
fix(main): broaden anchor selector and show inline "can't anchor" note
Claude
2026-06-01 18:45:40 -05:00
-
e200faf8c4
fix(ui): scope mousedown handler to .tat-header to restore input/select focus
Claude
2026-06-01 18:42:16 -05:00
-
ef90a6b779
Add design document for Torn Attribute Training Tracker
dev
2026-06-01 18:16:02 -05:00
-
ecea14b051
test(build): extend behavioral drift checks to all four pure functions
dev
2026-06-01 17:59:36 -05:00
-
e21582b7c4
fix(bundle): strict 30-day boundary in pruneHistory to match src/pure.js
dev
2026-06-01 17:59:06 -05:00
-
adc8a5dec9
docs: README with install, usage, and self-test instructions
dev
2026-06-01 17:40:18 -05:00
-
a5f402132e
test(build): catch behavioral drift in bundle summary via eval-extracted comparison
dev
2026-06-01 17:37:46 -05:00
-
62fe86a71f
test(build): verify userscript bundle embeds pure functions and self-test
dev
2026-06-01 17:31:24 -05:00
-
75f10126d2
fix(bundle): floor perDay in summary and hoist self alias in render
dev
2026-06-01 17:28:41 -05:00
-
7c2533d188
feat: bundle torn-attribute-tracker.user.js (Tat-style Tampermonkey script)
dev
2026-06-01 17:16:54 -05:00
-
36a6b4c52d
fix(main): keep prefs.mode in sync and rAF-coalesce mutation observer
dev
2026-06-01 17:09:38 -05:00
-
12fc79022f
feat(main): wire Store + Dialog + DataLayer on /gym.php
dev
2026-06-01 17:03:03 -05:00
-
8502c53663
fix(ui): escape user strings, lazy drag listeners, drop dead warn field
dev
2026-06-01 16:58:12 -05:00
-
3053a6d713
feat(ui): Dialog with render, drag, mode toggle, milestone dropdown
dev
2026-06-01 16:52:25 -05:00
-
cd6fb7cf91
fix(interceptor): guard XHR double-wrap and thread currentAttr into regex fallback
dev
2026-06-01 16:47:39 -05:00
-
491d3201f8
feat(interceptor): XHR/fetch wrap to detect Train responses
dev
2026-06-01 16:41:01 -05:00
-
aec9c40835
fix(dom): scope value search near attribute, whole-word matching, panel-scoped gym name
dev
2026-06-01 16:38:22 -05:00
-
e647fbf545
feat(dom): currentAttribute scraper for gym page (manual verify)
dev
2026-06-01 16:32:44 -05:00
-
3d000c70ff
test(store): cover recordTrain validation and getSummary on unknown attr
dev
2026-06-01 16:29:25 -05:00
-
07215e5617
feat(store): recordTrain with pruning and getSummary
dev
2026-06-01 16:22:18 -05:00
-
e39758c1af
feat(store): _saveDisabled latch and stronger corruption-wipe coverage
dev
2026-06-01 16:16:21 -05:00
-
231890a9e0
feat(store): load/save and target accessors with validation
dev
2026-06-01 16:08:42 -05:00
-
48e51054ca
docs(pure): note that summary.perDay is integer-rounded
dev
2026-06-01 16:03:27 -05:00
-
5fd0f5e548
feat(pure): summary with today/week counts and per-day rate
dev
2026-06-01 15:54:43 -05:00
-
a2e23341ac
refactor(pure): share MS_PER_DAY with tests and document pruneHistory
dev
2026-06-01 15:48:52 -05:00
-
ca753bf196
feat(pure): pruneHistory with strict 30-day window
dev
2026-06-01 15:42:37 -05:00
-
757139624f
refactor(pure): extract MS_PER_DAY constant and document computeEstimate precondition
dev
2026-06-01 15:36:56 -05:00
-
faae7702aa
feat(pure): computeEstimate with safe division and target-reached handling
dev
2026-06-01 15:30:07 -05:00
-
545cf65beb
refactor(pure): remove duplicate regex and dead empty-string guard
dev
2026-06-01 15:24:55 -05:00
-
e0540468c3
feat(pure): parseTarget with comma and magnitude suffix support
dev
2026-06-01 15:16:12 -05:00
-
07ef131d65
chore: broaden .gitignore for logs and OS junk
dev
2026-06-01 15:07:26 -05:00
-
b1ab57596d
chore: initialize project
dev
2026-06-01 15:01:31 -05:00