Commit graph

2 commits

Author SHA1 Message Date
Kelsi
8c0cab27be feat(editor): add WSCB JSON round-trip (--export/--import-wscb-json)
Dual encoding for both channelKind (int 0..4 OR
"login"/"system"/"raidwarning"/"motd"/"helptip") and
factionFilter (int 1..3 OR "alliance"/"horde"/"both") on
import. Export emits both int and *Name string fields
for round-trip safety; the int form is authoritative,
the *Name string is for human edit ergonomics and is
ignored if the int form is also present.

All 3 presets (motd/maintenance/helptips) byte-identical
roundtrip OK. Token-form import smoke-tested with mixed
channel+faction tokens. CLI flag count 1109 -> 1111.
2026-05-10 00:33:38 -07:00
Kelsi
57df129404 feat(editor): add WSCB (Server Channel Broadcast) open catalog format
Novel replacement for the hardcoded login-MOTD chain,
restart-warning announcements, and rotating /help-channel
tips. Each entry is one scheduled or event-triggered
broadcast with channelKind (Login / SystemChannel /
RaidWarning / MOTD / HelpTip), faction filter,
level-range gating, and optional periodic interval for
ticker-driven channels.

Three preset emitters covering the canonical operational
broadcast patterns: makeMotd (4 login MOTDs — welcome
banner, patch summary, Discord, forum), makeMaintenance
(3 RaidWarning entries firing at 15min/5min/60s before
restart, intervalSeconds=0 since they're triggered by
the cron scheduler, not a self-timer), makeHelpTips (6
rotating /help-channel tips on a 600s cycle covering
talents/mounts/auction/professions/dungeon-finder/
hearthstone with appropriate level gates).

Validator catches several real misconfigurations: empty
messageText (no payload), interval>0 with login/MOTD
channel (timer ignored — those fire on session enter),
intervalSeconds<10 (player-spam error), <60 (warning),
text>255 chars (server truncation), level-range
inversions, factionFilter=0 (no audience).

Format count 97 -> 98. CLI flag count 1104 -> 1109.
2026-05-10 00:31:15 -07:00