53 lines
2.5 KiB
JSON
53 lines
2.5 KiB
JSON
{
|
|
"version": "v0.8",
|
|
"date": "2026-06-11",
|
|
"title": "Framework & Architecture",
|
|
"layout": "default",
|
|
"messageId": null,
|
|
"sections": [
|
|
{
|
|
"type": "new",
|
|
"label": "New Features",
|
|
"emoji": "✨",
|
|
"items": [
|
|
{ "text": "`/tg poll mark-left` — mark a character as having left TG mid-game with 🪲 counter", "emojiKey": "cockroach" },
|
|
{ "text": "Leave counter displays total times a character has left TG", "emojiKey": null },
|
|
{ "text": "W.Rank no-rank placeholder alignment — players without rank align correctly with ranked players", "emojiKey": "wrank_no_dash" }
|
|
]
|
|
},
|
|
{
|
|
"type": "improvement",
|
|
"label": "Improvements",
|
|
"emoji": "⚡",
|
|
"items": [
|
|
{ "text": "Config system moved from `.env` to `config.json` — hot-reloadable, no restart needed", "emojiKey": null },
|
|
{ "text": "All config organized into sections — `poll`, `wrank`, `channels`, `roles`, etc.", "emojiKey": null },
|
|
{ "text": "Scheduler plugin system — cron jobs are self-contained files, drop one in to add a job", "emojiKey": null },
|
|
{ "text": "Logger with levels and context icons — structured, filterable output", "emojiKey": null },
|
|
{ "text": "Benchmark profiling — vote path performance measured, optimized with `Promise.all`", "emojiKey": null }
|
|
]
|
|
},
|
|
{
|
|
"type": "technical",
|
|
"label": "Under the Hood",
|
|
"emoji": "🔩",
|
|
"items": [
|
|
{ "text": "`Runtime` lifecycle system — phased startup: load → restore → connect → schedule → ready", "emojiKey": null },
|
|
{ "text": "`Config` namespace — `Config.get({ section, key })` with full type safety per section", "emojiKey": null },
|
|
{ "text": "`Store` abstraction — centralized JSON file I/O with error handling", "emojiKey": null },
|
|
{ "text": "`Paths` helper — no more `path.join(__dirname, ...)` scattered across the codebase", "emojiKey": null },
|
|
{ "text": "`Discord` abstraction layer — `Discord.Interaction`, `Discord.Guild`, `Discord.Channel`", "emojiKey": null },
|
|
{ "text": "`WRankEntry` hydration — runtime entries carry full `Character` object", "emojiKey": null },
|
|
{ "text": "`Leaves` system — character leave tracking keyed by character name and history key", "emojiKey": null }
|
|
]
|
|
}
|
|
],
|
|
"examples": [
|
|
{
|
|
"caption": "🪲 Leave indicator — cockroach with leave count",
|
|
"type": "poll",
|
|
"layout": "side-by-side",
|
|
"file": "examples/poll-leaves.json"
|
|
}
|
|
]
|
|
}
|