fix: upgrade crash reporter to 5.1.0 to resolve macOS issues - #5347
Conversation
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe crash reporter dependency is updated from version 5.0.0 to 5.1.0 in the engine and PC facade Gradle configurations. ChangesCrash reporter dependency update
Estimated code review effort: 1 (Trivial) | ~2 minutes Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@engine/build.gradle.kts`:
- Line 148: Verify that cr-terasology:5.1.0 is available through the configured
alternativeResolutionRepo or Artifactory virtual-repo-live, and ensure
dependency resolution succeeds for engine/build.gradle.kts at line 148 and
facades/PC/build.gradle.kts at line 69. Preserve compatibility with
CrashReporter.report(Throwable, Throwable, ...) and
CrashReporter.MODE.ISSUE_REPORTER callers in the menu screens.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 0cb10656-9146-4699-9ed1-986ed05eac1b
📒 Files selected for processing (2)
engine/build.gradle.ktsfacades/PC/build.gradle.kts
|
|
||
| // TODO: Consider moving this back to the PC Facade instead of having the engine rely on it? | ||
| implementation("org.terasology.crashreporter:cr-terasology:5.0.0") | ||
| implementation("org.terasology.crashreporter:cr-terasology:5.1.0") |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n 'repositories|mavenCentral|mavenLocal|artifactory|url\s*=' \
--glob '*.gradle*' --glob 'gradle.properties' .
curl -fsSI \
'https://repo.maven.apache.org/maven2/org/terasology/crashreporter/cr-terasology/5.1.0/cr-terasology-5.1.0.pom'
rg -n 'CrashReporter\.report\s*\(' engine/src facades/PC/srcRepository: MovingBlocks/Terasology
Length of output: 4871
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== CrashReporter references =="
rg -n 'org\.terasology\.crashreporter|cr-terasology|CrashReporter\.report|import .*CrashReporter|class |interface ' \
--glob '*.gradle*' --glob '*.gradle' --glob 'build.gradle.kts' \
engine facades/PC build-logic engine-tests modules 2>/dev/null || true
echo
echo "== Dependency declarations =="
rg -n 'org\.terasology\.crashreporter:cr-terasology|crashreporter' .
echo
echo "== Maven repository probes =="
python3 - <<'PY'
import urllib.request, urllib.error
base = "https://repo.maven.apache.org/maven2/org/terasology/crashreporter/cr-terasology"
for ver in ["5.0.0", "5.1.0", ""]]:
try:
with urllib.request.urlopen(base + f"/{ver}/cr-terasology-{ver}.pom", timeout=15) as r:
print(f"{base}/{ver}/cr-terasology-{ver}.pom -> {r.getcode()}")
except urllib.error.HTTPError as e:
print(f"{base}/{ver}/cr-terasology-{ver}.pom -> {e.code} {e.reason}")
PYRepository: MovingBlocks/Terasology
Length of output: 2069
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== CrashReporter usage files =="
while IFS= read -r f; do
echo "--- $f"
sed -n '1,80p' "$f"
done < <(rg -l 'CrashReporter' engine facades/PC --glob '*.java')
echo
echo "== Dependency declarations =="
rg -n 'org\.terasology\.crashreporter:cr-terasology|crashreporter' .
echo
echo "== Maven Central crashreporter POMs =="
python3 - <<'PY'
import urllib.request, urllib.error
base = "https://repo.maven.apache.org/maven2/org/terasology/crashreporter/cr-terasology"
for ver in ["5.0.0", "5.1.0", ""]:
url = f"{base}/{ver}/cr-terasology-{ver}.pom" if ver else f"{base}/maven-metadata.xml"
try:
with urllib.request.urlopen(url, timeout=15) as r:
print(f"{url} -> {r.getcode()}")
if ver:
print(r.read().decode(errors='replace').strip().splitlines()[:12])
else:
print(r.read().decode(errors='replace').strip())
except urllib.error.HTTPError as e:
print(f"{url} -> {e.code} {e.reason}")
PY
echo
echo "== GitHub tags metadata =="
python3 - <<'PY'
import urllib.request, urllib.error
url = "https://api.github.com/repos/MovingBlocks/CrashReporter/tags"
req = urllib.request.Request(url, headers={"Accept":"application/vnd.github+json","User-Agent":"code-rabbit"})
try:
with urllib.request.urlopen(req, timeout=20) as r:
data = r.read().decode(errors='replace')
print(r.getcode(), r.getheader("content-type"))
print("last 20 names:")
for tag in data.splitlines()[:1000].split("},{"):
if '"name"' in tag:
print(tag)
except Exception as e:
print(type(e).__name__ + ":", repr(e))
PYRepository: MovingBlocks/Terasology
Length of output: 245
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== CrashReporter usage files =="
files="$(rg -l 'CrashReporter' engine facades/PC --glob '*.java' || true)"
if [ -n "$files" ]; then
while IFS= read -r f; do
echo "--- $f"
sed -n '1,120p' "$f"
done <<< "$files"
fi
echo
echo "== Dependency declarations =="
rg -n 'org\.terasology\.crashreporter:cr-terasology|crashreporter' . || true
echo
echo "== Maven Central crashreporter POMs and metadata =="
python3 - <<'PY'
import urllib.request, urllib.error
base = "https://repo.maven.apache.org/maven2/org/terasology/crashreporter/cr-terasology"
for ver in ["5.0.0", "5.1.0"]:
url = f"{base}/{ver}/cr-terasology-{ver}.pom"
try:
with urllib.request.urlopen(url, timeout=15) as r:
print(f"{url} -> {r.getcode()}")
text = r.read().decode(errors='replace').strip()
print("\n".join(text.splitlines()[:20]))
except urllib.error.HTTPError as e:
print(f"{url} -> {e.code} {e.reason}")
for url in [f"{base}/maven-metadata.xml", f"{base}/"]:
try:
with urllib.request.urlopen(url, timeout=15) as r:
print(f"{url} -> {r.getcode()}")
text = r.read().decode(errors='replace').strip()
print("\n".join(text.splitlines()[:40]))
except urllib.error.HTTPError as e:
print(f"{url} -> {e.code} {e.reason}")
PY
echo
echo "== GitHub tags listing =="
python3 - <<'PY'
import urllib.request, urllib.error, json
url = "https://api.github.com/repos/MovingBlocks/CrashReporter/tags?per_page=50"
req = urllib.request.Request(url, headers={"Accept":"application/vnd.github+json","User-Agent":"code-rabbit"})
try:
with urllib.request.urlopen(req, timeout=15) as r:
data = json.loads(r.read().decode(errors='replace'))
print(r.getcode(), r.headers.get("content-type"))
for tag in data[:20]:
print(tag.get("name"), tag.get("zipball_url"))
except urllib.error.HTTPError as e:
print(f"{e.code} {e.reason}")
print(e.read().decode(errors='replace').strip())
except Exception as e:
print(type(e).__name__ + ":", repr(e))
PYRepository: MovingBlocks/Terasology
Length of output: 19456
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== CrashReporter report usages =="
python3 - <<'PY'
import subprocess, re
files = subprocess.check_output(['rg', '-l', 'CrashReporter', 'engine', 'facades/PC'], text=True).strip().splitlines()
for f in files:
print(f"--- {f}")
text = open(f, encoding="utf-8").read()
for i, line in enumerate(text.splitlines(), 1):
if 'CrashReporter' in line:
start=max(1,i-3); end=min(len(text.splitlines()),i+8)
lines=text.splitlines()
for n in range(start,end+1):
print(f"{n:4d}: {lines[n-1]}")
PY
echo
echo "== CrashReporter API references =="
for f in $(rg -l 'CrashReporter' engine facades/PC --glob '*.java'); do
echo "--- $f"
rg -n 'public class CrashReporter|interface CrashReporter|enum MODE|void report|class report|static|`@FunctionalInterface`' "$f" || true
done
echo
echo "== Dependency declarations =="
rg -n 'org\.terasology\.crashreporter:cr-terasology|crashreporter|CrashReporter\.report' engine facades/PC --glob '*.gradle*' --glob '*.java' || trueRepository: MovingBlocks/Terasology
Length of output: 9896
Confirm cr-terasology:5.1.0 is available from the configured resolved repository.
5.1.0 is not present on Maven Central, but the project resolves the configured alternativeResolutionRepo or Artifactory virtual-repo-live. Resolve both engine and facades/PC builds, since the imports call CrashReporter.report(Throwable, Throwable, ...), including the CrashReporter.MODE.ISSUE_REPORTER callers in the menu screens.
📍 Affects 2 files
engine/build.gradle.kts#L148-L148(this comment)facades/PC/build.gradle.kts#L69-L69
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@engine/build.gradle.kts` at line 148, Verify that cr-terasology:5.1.0 is
available through the configured alternativeResolutionRepo or Artifactory
virtual-repo-live, and ensure dependency resolution succeeds for
engine/build.gradle.kts at line 148 and facades/PC/build.gradle.kts at line 69.
Preserve compatibility with CrashReporter.report(Throwable, Throwable, ...) and
CrashReporter.MODE.ISSUE_REPORTER callers in the menu screens.
Source: MCP tools
Contains
This pull request upgrades the crash reporter dependency to version 5.1.0, which includes MovingBlocks/CrashReporter#52.
How to test