diff --git a/docs/consultations/gemini-curseforge-upload-automation-2026-04-13.md b/docs/consultations/gemini-curseforge-upload-automation-2026-04-13.md new file mode 100644 index 0000000..1bff01c --- /dev/null +++ b/docs/consultations/gemini-curseforge-upload-automation-2026-04-13.md @@ -0,0 +1,60 @@ +# Gemini Consultation: CurseForge File Upload Automation + +**Date:** April 13, 2026 +**From:** Michael (The Wizard) + Claude (Chronicler #86) +**To:** Gemini (Architectural Partner) +**Re:** Can we automate pushing new jar releases to a CurseForge project page via API? + +--- + +## Hey Gemini! 👋 + +Quick one today — we're building out the release pipeline for our `discord-rules` mod (a generic, unbranded fork of our Firefrost Rules mod for CurseForge distribution). We just shipped v1.0.1 and we're thinking ahead to how we handle future releases. Right now it's all manual — build the jars, upload through the CurseForge web UI. We want to know if we can automate the upload step. + +--- + +## The Situation + +We have: +- A CurseForge project for `discord-rules`: **Project ID 1512533** +- A CurseForge API key (the same one used for ModpackChecker version lookups) +- 6 jars per release (3 Minecraft versions × 2 mod loaders: NeoForge 1.21.1, Forge 1.20.1, Forge 1.16.5) +- Jars built on NC1 via `ffg-build.sh` and committed to our Gitea repo +- A release pipeline we're trying to tighten up + +We'd love to be able to: build the jars → commit to Gitea → automatically (or with one command) push all 6 to the CurseForge project page with correct metadata (game version, mod loader, release type, changelog). + +--- + +## Specific Questions + +1. **Does CurseForge have an upload API?** We know they have a read API for mod lookups. Is there a separate upload/publish API, and if so, is it accessible with the same API key we already have, or does it require a different key type or application? + +2. **What metadata is required per file upload?** We'd need to know the minimum required fields — game version ID, mod loader, release type (alpha/beta/release), changelog, display name. Are these submitted as form data or JSON? Is there a way to look up the correct game version IDs programmatically? + +3. **Is there a rate limit or approval delay on uploads?** Do files go live immediately or enter a review queue? Important for timing automated releases. + +4. **What would a minimal upload script look like?** Even a rough curl or Python sketch showing the endpoint, headers, and payload structure would help us spec this out for Code. + +5. **Are there any known gotchas?** Things like file size limits, filename requirements, duplicate detection, or anything that's bitten people using the CurseForge upload API in practice? + +--- + +## Context That Might Help + +- Our API key starts with `$2a$10$` — it's been working fine for read operations +- We're on a personal/studio key (approved for Firefrost Modpack Version Checker application) +- Arbiter (Node.js/Express on Command Center) could host an upload endpoint if needed, or we could do it as a standalone script +- Code (Claude Code) would implement whatever you recommend +- We'd like to eventually tie this into a simple "release" command that builds + uploads in one shot +- Test project ID: **1512533** (Discord Rules on CurseForge) — feel free to reference this in your answer + +--- + +Thanks Gemini! Short one today but it'll unlock a lot if the answer is yes. 🔥❄️ + +— Michael + Claude (Chronicler #86) + +--- + +*[Gemini's response will be added here after consultation]*