- Result.post() now returns { ok, reason } instead of void — it used to
silently no-op (unconfigured channel, or zero rows built) while
/tg-admin result post always reported success regardless
- Fixed a crash when a TGScore's class is missing and the character it
names is gone from CharacterRegistry (orphaned history) — Emoji.class()
and Emoji.nation() now degrade to a placeholder instead of throwing
- Fixed tg-history files being written with only a scores array, missing
date/confirmed/nationKD — Score.submit's loadHistory now fills in the
full TGResult shape on every read; scripts/migrate-history-shape.py
backfills existing files (50 fixed in dev, run on prod too — this
script is gitignored like the other migration scripts, copy manually)
- ATK/DEF/Heal shorthand parser: accepts comma as a decimal separator
(3,4M == 3.4M), and rejects implausibly large values (150.0M, or an
already-full number with a redundant M) via a configurable ceiling
(Config.tg.maxStatValue, default 50,000,000, /tg-config tg
set-max-stat-value) instead of silently producing multi-billion junk
- data/updates v0.10.1 (result posting fixes) and v0.10.2 (parser
refinements) — sequenced after the already-deployed v0.10 rather than
backfilling v0.9.x, since posting order in #updates is what matters
- new announcement (002) explaining the shorthand input change to players
- doc updates: REFERENCE.md and MERGE_CHECKLIST.md cover all of the above
26 lines
1.2 KiB
JSON
26 lines
1.2 KiB
JSON
{
|
|
"id": "002-score-modal-shorthand-input",
|
|
"title": "📝 Submit Score — faster ATK / DEF / Heal input",
|
|
"date": "2026-07-31",
|
|
"intro": "The Attack, Defense, and Healing fields (Submit Score modal, `/tg score set`, and officer tools) now accept shorthand instead of the full number:",
|
|
"color": "#e8a317",
|
|
"sections": [
|
|
{
|
|
"label": "How it works",
|
|
"emoji": "<:anima_atk:1517702182710018179>",
|
|
"items": [
|
|
{ "text": "Type `500K` or `1.4M` instead of `500000` or `1400000` — case doesn't matter, `500k` works the same as `500K`" },
|
|
{ "text": "Commas work as decimals too — `3,4M` parses the same as `3.4M`" },
|
|
{ "text": "A plain number under 100 is read as millions (`1.4` → 1.4M), 100 and up is read as thousands (`500` → 500K) — so you'll rarely need to type the full number at all" }
|
|
]
|
|
},
|
|
{
|
|
"label": "Heads up",
|
|
"emoji": "⚠️",
|
|
"items": [
|
|
{ "text": "Values that look unrealistically high for a single TG get rejected as a likely typo (e.g. an extra digit, or adding M to a number that was already the full value). If you're sure a value is correct, ping an officer to raise the limit" }
|
|
]
|
|
}
|
|
],
|
|
"imageUrl": null
|
|
}
|