Replaces CarbonChat 3.0.0-beta.36 — viewer-context bug on <luckperms_prefix>. ChatChat (HelpChat fork) renders per-recipient with sender-context PAPI + built-in Kyorifier (& -> MM). Built from upstream main HEAD via podman/temurin 21. Staged only — operator runs scripts/swap.sh during a quiet window. Rollback plan + smoke checklist in docs/MIGRATION-PLAN-CHATCHAT.md. JAR gitignored; rebuild via staging/chatchat/build/build.sh.
1.8 KiB
1.8 KiB
staging/chatchat — CarbonChat → ChatChat migration bundle
Staged but not deployed. Swap awaits operator final go.
See ../../docs/MIGRATION-PLAN-CHATCHAT.md for the full plan, risk register, smoke checklist, and rollback procedure.
Layout
.
├── README.md ← this file
├── build/
│ ├── build.sh ← reproducible podman build (temurin 21 + gradle 8.10)
│ └── *.jar ← gitignored; (re)create via ./build.sh
├── configs/
│ ├── channels.yml ← global channel; per-recipient render = bug fix
│ ├── extensions.yml ← addons (DSRV bridging off, Ess vanish on)
│ ├── formats.yml ← console + default fallback formats
│ └── settings.yml ← PMs, mentions, item-format
└── scripts/
├── lp-migration.sh ← Carbon → ChatChat perm grants on `default` group
├── lp-rollback.sh ← reverse of lp-migration.sh
├── rollback.sh ← full revert (stop, restore, perms, start)
└── swap.sh ← full forward orchestrator with confirm gates
Quick reference
# 1. Build (or rebuild) the JAR
./build/build.sh
# 2. Preview the swap (read-only — opens scripts in $PAGER)
${PAGER:-less} scripts/swap.sh
# 3. Execute the swap (operator-driven, confirm gates inline)
./scripts/swap.sh
# 4. If smoke fails:
./scripts/rollback.sh
Why this is staged not committed-as-live
Per CLAUDE.md feedback rules:
- Don't touch live
/data/plugins/CarbonChatuntil operator says "swap now". - LP rank prefixes/suffixes are operator-managed; this migration only touches
chatchat.*andcarbon.*permission nodes on thedefaultgroup. - Build JAR is gitignored — rebuild deterministically from upstream HEAD via
build/build.sh.