Spun off from #235, which removed the Description = Summary aliasing so CurseForge mods now surface an empty Description (honest: the mod response has no full-description field).
The endpoint exists
Verified against the CurseForge Core REST API docs (https://docs.curseforge.com/rest-api/): there is a dedicated endpoint
GET /v1/mods/{modId}/description
returning the mod's full description as HTML (with optional raw, stripped, and markup query flags controlling formatting). Wiring it up turns #235's "remove the duplicate" into "actually gain the feature": CurseForge mod details would show a real description, like NexusMods already does.
Design considerations
- Do not fetch it during search — that would add one API round-trip per result row. The natural seam is the detail path (
Service.ModDetail / GetMod), where exactly one mod is being shown.
- Even on
GetMod it is a second round-trip per call; worth deciding whether it belongs behind the existing client with the same auth/rate-limit handling, and whether the result should be cached.
- The response is HTML; the display path already runs
core.CleanChangelog on descriptions for the terminal, and mod show --json deliberately emits the raw markup, so both surfaces should cope unchanged.
internal/source/httpclient conventions (timeouts, size caps) apply.
Deliberately excluded from #235's cleanup PR per its scope boundary: no new API calls in that diff.
🤖 Generated with Claude Code
Spun off from #235, which removed the
Description = Summaryaliasing so CurseForge mods now surface an emptyDescription(honest: the mod response has no full-description field).The endpoint exists
Verified against the CurseForge Core REST API docs (https://docs.curseforge.com/rest-api/): there is a dedicated endpoint
returning the mod's full description as HTML (with optional
raw,stripped, andmarkupquery flags controlling formatting). Wiring it up turns #235's "remove the duplicate" into "actually gain the feature": CurseForge mod details would show a real description, like NexusMods already does.Design considerations
Service.ModDetail/GetMod), where exactly one mod is being shown.GetModit is a second round-trip per call; worth deciding whether it belongs behind the existing client with the same auth/rate-limit handling, and whether the result should be cached.core.CleanChangelogon descriptions for the terminal, andmod show --jsondeliberately emits the raw markup, so both surfaces should cope unchanged.internal/source/httpclientconventions (timeouts, size caps) apply.Deliberately excluded from #235's cleanup PR per its scope boundary: no new API calls in that diff.
🤖 Generated with Claude Code