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)
- Unattended hang —
get_curseforge_api_token blocks on /dev/tty with its
prompt eaten by 2>/dev/null, so formerly-unattended installs hang invisibly.
- Prompt not persisting — Enter-to-skip never persists across the
$(...)
subshell call sites, so the user is re-prompted per mod.
- Silent keyless skip — keyless runs silently skip every CurseForge mod (an
undeclared behavior change); needs a loud up-front declaration + an end summary.
- 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.
Summary
Finish the CurseForge bring-your-own-key (BYOK) rework: replace the bundled
token.encauto-download/decrypt flow with a user-supplied API key(
CURSEFORGE_API_KEYenv / key file / interactive prompt) and removetoken.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. (
maincurrently still carriestoken.encand onlyconsolidated the existing fetch in #47/#88 — it did not adopt BYOK.)
Where the work is
Preserved on branch
wip/curseforge-byok(commit4539c1e) — R7 token-rotationWIP, 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 ~100commits 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)
get_curseforge_api_tokenblocks on/dev/ttywith itsprompt eaten by
2>/dev/null, so formerly-unattended installs hang invisibly.$(...)subshell call sites, so the user is re-prompted per mod.
undeclared behavior change); needs a loud up-front declaration + an end summary.
token.enc— deletingtoken.enc404s allpreviously-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
bundled token).
wip/curseforge-byokbranch once merged clean.Filed to preserve this WIP from being lost a second time.