Skip to content

Finish CurseForge bring-your-own-key (BYOK) rework — remove bundled token.enc (prereq for #33) #120

Description

@aradanmn

Summary

Finish the CurseForge bring-your-own-key (BYOK) rework: replace the bundled
token.enc auto-download/decrypt flow with a user-supplied API key
(CURSEFORGE_API_KEY env / key file / interactive prompt) and remove token.enc.

This is distribution-relevant — a publicly redistributable build can't ship a
bundled CurseForge token, so BYOK is a prerequisite for the license/distribution
resolution in #33. (main currently still carries token.enc and only
consolidated the existing fetch in #47/#88 — it did not adopt BYOK.)

Where the work is

Preserved on branch wip/curseforge-byok (commit 4539c1e) — R7 token-rotation
WIP, recovered verbatim after it was once accidentally swept into PR #78 and lost.
Not ready to merge as-is. Rebuild clean off current main (the branch is ~100
commits behind and predates the #47/#88 token consolidation, so it must be
re-applied on top of get_curseforge_api_token, not the old flow).

Known problems to fix first (2026-07-10 review)

  1. Unattended hangget_curseforge_api_token blocks on /dev/tty with its
    prompt eaten by 2>/dev/null, so formerly-unattended installs hang invisibly.
  2. Prompt not persisting — Enter-to-skip never persists across the $(...)
    subshell call sites, so the user is re-prompted per mod.
  3. Silent keyless skip — keyless runs silently skip every CurseForge mod (an
    undeclared behavior change); needs a loud up-front declaration + an end summary.
  4. Deprecation path for token.enc — deleting token.enc 404s all
    previously-shipped installs (they fetch it from the branch-pinned main URL at
    runtime); needs a deprecation/migration path before the deletion lands on main.

Relationship

Filed to preserve this WIP from being lost a second time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions