Skip to content

feat: send sync report to Quartermaster#1

Merged
cebarks merged 1 commit into
mainfrom
feat/sync-report
Jul 8, 2026
Merged

feat: send sync report to Quartermaster#1
cebarks merged 1 commit into
mainfrom
feat/sync-report

Conversation

@cebarks

@cebarks cebarks commented Jul 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds SendReport() to SyncEngine that POSTs sync outcome to Quartermaster's /quma/convoy/report endpoint after every sync
  • Reports profile AID (from RequestHandler.SessionId), result (up_to_date/updated/failed), installed mod snapshot, client version, and error details on failure
  • Uses RequestHandler.PostJson so the request routes through SPT's authenticated HTTP channel
  • Fire-and-forget with try/catch — a failed report never blocks or breaks sync
  • Updated SPT stubs with SessionId and PostJson for CI compilation

How it works

Every exit path in RunSync() now calls SendReport():

  • Catalog unchanged (304)up_to_date with current mod list
  • All checksums matchup_to_date with current mod list
  • Mods downloaded/removedupdated with new mod list
  • Hash verification failedfailed with error message
  • Unhandled exceptionfailed with exception message

The server endpoint already exists and displays reports on the Convoy status dashboard tab.

Test plan

  • Build succeeds with 0 warnings, 0 errors
  • Deploy to SPT client, verify Sync report sent: up_to_date appears in BepInEx log on clean sync
  • Force a mod update, verify Sync report sent: updated appears
  • Check Quartermaster Convoy > Status tab shows the client's report

🤖 Generated with Claude Code

Reports sync outcome (up_to_date, updated, failed) to
POST /quma/convoy/report with profile AID, mod snapshot,
client version, and error details. Uses SPT's RequestHandler
so the request goes through the same authenticated channel.
Fire-and-forget with catch — a failed report never blocks sync.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cebarks cebarks merged commit f8f6a04 into main Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant