From 5aff18fe229b258d43acc3db60d15cd93d52266d Mon Sep 17 00:00:00 2001 From: Daniel Woodruff Date: Mon, 27 Apr 2026 23:33:20 -0500 Subject: [PATCH 1/2] Update thumbnail photo --- screenshots/04_versioning.png | Bin 25898 -> 26610 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshots/04_versioning.png b/screenshots/04_versioning.png index 3a8dee88d1bf1ff76c8078c5613b86254b3d8825..dda0a34f3eac003808d2337d10d755d70bf7ab19 100644 GIT binary patch literal 26610 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 literal 25898 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 Date: Mon, 27 Apr 2026 23:36:31 -0500 Subject: [PATCH 2/2] Add changelog --- CHANGELOG.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4e69d1c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,58 @@ +# Changelog + +All notable changes to rtv-mod-impact-tracker are documented here. Dates are +YYYY-MM-DD. + +## 1.0.0 — 2026-04-26 + +First public release. Eight Python scripts split into two pipelines — +game-tracking (Steam-sourced) and dep-tracking (GitHub-sourced) — that +together tell modders which of their mods will break when the host game +patches or an upstream library updates. + +**Game tracking** — for the host game you're modding: + +- **`snapshot.py`** — capture a decompiled-script snapshot of the current + Steam build into a parallel `*_history` git repo, one commit per game + version. Auto-detects version + buildid from `project.godot` and the Steam + ACF manifest; tags as `game-v-build`. +- **`analyze_mods.py`** — diff two snapshot tags and classify each mod's + impact (🔴 broken / 🟡 review / 🟢 safe). Renders an HTML report with + inline syntax-highlighted diffs, side-by-side override-vs-vanilla + comparison, and a per-mod summary table. +- **`changelog.py`** — render a Markdown changelog of game-side script + changes between any two snapshot tags. Useful for release-notes posts and + for understanding what shipped in a given patch. +- **`fetch_version.py`** — pull a historical Steam build via DepotDownloader + using a manifest registry, decompile it, and commit it as a snapshot. + Required only for backfilling old versions; day-to-day tracking uses + `snapshot.py` against the live install. + +**Dep tracking** — for upstream mod loaders, config-menu frameworks, and +content registries hosted on GitHub: + +- **`deps_fetch.py`** — sync local mirror clones of every upstream declared + in `[[deps]]` of `mod_tracker.toml`. Mirrors are gitignored; regenerable + on demand. +- **`deps_diff.py`** — file-level + GDScript signature diff between two + upstream tags. Highlights added / removed / renamed / signature-changed + functions so the breaking-change surface is obvious at a glance. +- **`deps_audit.py`** — scan your own mods' call sites against a dep diff + and flag anything that touches a changed API. Outputs a punch list of + mod files + line numbers worth reviewing before bumping the upstream + version requirement. +- **`deps_changelog.py`** — Markdown release notes summarising upstream + changes between two tags. Drop-in for the dep's own release post or for + internal "what's new" briefings. + +**Configuration & infrastructure**: + +- **TOML-driven** — single `mod_tracker.toml` declares game paths, Steam + app id, and the list of upstream `[[deps]]`. All scripts read from it, + so adding a new dep is a one-block config change. +- **HTML reports** with inline syntax highlighting (Pygments-via-stdlib + fallback) — no external CSS hosting, runs offline. +- **Stdlib-only Python (3.11+).** No `pip install` required for normal + use; DepotDownloader is the only external binary, and only `fetch_version.py` + needs it. +- **MIT licensed.** Use it, fork it, ship it.