Skip to content

Releases: raldisk/instagram-diff

v4.0.1

08 Mar 10:49

Choose a tag to compare

What's Changed

Patch release resolving all P0 and P1 blockers identified in the post-4.0.0 review. No new features — correctness and reliability fixes only.

Python Tracker (tracker/run_tracker.py, tracker/download_pics.py)

  • Entry point fixedmain(argv=None) now exists as a proper callable; uv run instagram-diff and installed script invocations no longer raise AttributeError
  • Atomic history writesappend_history rewritten as read-modify-write via _atomic_csv_write; a crash mid-write can no longer produce torn rows in history.csv
  • Defensive load_history — validates CSV headers on read, skips and warns on malformed rows rather than raising KeyError
  • No import-time side effectsos.makedirs in download_pics.py moved inside __main__; importing the module no longer creates directories on disk
  • No global mutation at runtime — CLI argument values are now local variables inside main(); module-level constants are never overwritten

Project

  • pyproject.toml version corrected from 1.0.0 to 4.0.1
  • .gitattributes added — normalizes all text file line endings to LF across platforms

v4.0.0

03 Mar 17:26

Choose a tag to compare

What's New

Full rewrite of both the scraper engine and scroll panel.

Userscript (scraper.user.js + main.js)

  • Zero memory leaks — cleanup registry pattern, all listeners/timers self-register
  • fetch() intercept added — covers Instagram endpoints the original missed
  • MutationObserver auto-scroll — click once, open followers, scroll starts automatically
  • Runtime scroll target probe — no hardcoded CSS classes, survives Instagram deploys
  • IndexedDB persistence with bounded caches, blob URL fix, XSS-safe history log
  • Boot guard prevents double-init on reinject

Python Tracker (tracker/run_tracker.py)

  • Atomic CSV writes — crash-safe via NamedTemporaryFile + Path.replace()
  • Cross-platform font loading — DejaVuSans → Helvetica fallback
  • argparse CLI — --debug, --no-pdf, custom file paths
  • fsync on history append

Project

  • Restructured into tracker/, userscript/, tests/
  • Migrated from requirements.txt to pyproject.toml
  • pytest suite added

Credits