From 3741c954f5de5fe91ae793851e98386f6bbb351e Mon Sep 17 00:00:00 2001 From: wtclaude Date: Thu, 22 Oct 2026 15:28:35 -0500 Subject: [PATCH] fix(admin): no decision numbers in admin copy, and "1 player holds one" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Twenty-four strings an administrator reads carried an internal decision number - "(D189)", "(D198)", "(D257, D270)" and the like: the permission screen's group Servers tab and a chip tooltip, the event editor's step field and budget descriptions, two option sources, a command reward's skipped note, and five NPC profile validation errors. A D-number means something to the plan, never to an operator. Each is removed, and the sentence around it left as it was. The developer-facing swagger descriptions and code comments keep theirs. The servers page's chat-title line read "Last pushed: 1 player hold one." It now says "holds" for one. Two tests pinned the old wording and now assert the text instead. Found while writing the runicgateway.com Rust docs (its PLAN.md §16, phase 15). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- client/src/routes/admin/ChatTitles.jsx | 2 +- client/src/routes/admin/Permissions.jsx | 4 ++-- server/eventCommands.js | 2 +- server/eventLeases.js | 2 +- server/eventRewards.js | 12 ++++++------ server/eventWorld.js | 18 +++++++++--------- server/model/npcs/npcProfile.js | 8 ++++---- server/model/npcs/npcs.model.js | 2 +- server/test/commandSteps.test.js | 2 +- server/test/npcs.test.js | 6 +++--- 10 files changed, 29 insertions(+), 29 deletions(-) diff --git a/client/src/routes/admin/ChatTitles.jsx b/client/src/routes/admin/ChatTitles.jsx index 6cc3661..3c88e40 100644 --- a/client/src/routes/admin/ChatTitles.jsx +++ b/client/src/routes/admin/ChatTitles.jsx @@ -49,7 +49,7 @@ export function titlesSummary(titles, push, categories) { const rules = (titles && titles.rules) || [] if (!rules.length) return 'No chat titles.' const list = rules.map((r) => `${ruleTitle(r, categories)} (top ${r.topN} ${statOf(categories, r.stat).label.toLowerCase()})`).join(', ') - const shown = push ? ` Last pushed: ${push.count} player${push.count === 1 ? '' : 's'} hold one${push.betterChat ? '' : ' — BetterChat is not loaded, so they are not showing in game yet'}.` : '' + const shown = push ? ` Last pushed: ${push.count} player${push.count === 1 ? ' holds' : 's hold'} one${push.betterChat ? '' : ' — BetterChat is not loaded, so they are not showing in game yet'}.` : '' return `Chat titles: ${list}.${shown}` } diff --git a/client/src/routes/admin/Permissions.jsx b/client/src/routes/admin/Permissions.jsx index c76d486..b6efd81 100644 --- a/client/src/routes/admin/Permissions.jsx +++ b/client/src/routes/admin/Permissions.jsx @@ -542,7 +542,7 @@ function GroupPanel({ view, group, act, busy, chatFields }) { {tab === 'servers' && (

- A group belongs to one server unless it is shared (D189). A shared group carries the same permissions and players on every server + A group belongs to one server unless it is shared. A shared group carries the same permissions and players on every server it is on; a change made in one game gives that server its own copy.