release: v0.11.1 — CommandKind taxonomy refactor + scoreboard UX polish #68
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
umpire274/bs_scoring!68
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "v0.11.1"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Internal refactor of the command pipeline plus a TUI scoreboard UX
polish. No change to the grammar accepted by the parser, to engine
behaviour, to diagnostic messages, or to on-disk data. Public API via
bs_scoring::*is unchanged.Command-taxonomy refactor
src/engine/commands/kind.rs:CommandKindenum (flat, 26variants, one per lexical verb) +
CommandFamilygrouping.Single source of truth for the question "which verbs does the
parser accept?". Adding a new command now touches one variant
instead of four parallel sub-enums across layers.
HitVerbKind,PitchVerbKind,KeywordKind(tokens.rs);ControlKind,StatusKind,PitchKind,HitKind(segment.rs).BatterOutKind— carries fielder identifiers, not just atag — with new
.command_kind()helper mapping each variant tothe corresponding
CommandKind(FlyOut { foul: true }→CommandKind::FoulFlyOut).TokenKind::HitVerb/PitchVerb/StealVerb/Keywordcollapse into a single
TokenKind::Verb(CommandKind).parse_segmentroutes onCommandKind::family()instead of sub-enum variants.Resolved::Pitch/Hitnow holdCommandKind; the hitcoalescer and
status_to_game/pitch_to_enginehelpers match onCommandKindwith anunreachable!()catch-all that documents thefamily invariant.
RE_HIT_VERB,RE_PITCH_VERB,RE_STEAL_VERB). Parameter-less verbs (hit, pitch, steal, control,status) now recognised by a single exact-match
matchonlowercased text — faster and more readable. Regexes retained only
for verbs with numeric parameters (
o<n>,f<n>,l<n>,if<n>, fielding sequences).Scoreboard UX polish (src/ui/tui.rs)
StringtoLine/Spanrendering; current inning emphasised via reversed style.
styled_count_spanhelper — fullcount (3-2) reversed + bold, critical counts (3-1, 2-2) yellow +
bold.
styled_outs_spanshelper; active outs yellow + bold, inactivedark gray.
inning indicator ("4↑") removed.
build_linescore_lines→build_linescore_header_and_range.change.
Documentation
Versions" and "Features by Version" include the new row; tree
under
engine/commands/updated to showkind.rs.subsection under "Key design decisions" with before/after
per-layer table; tree updated.
(the grammar is unchanged in v0.11.1).
rollback, version-bumping checklist, and footer all updated.
Tests
(structural refactor only — same inputs produce the same outputs).
kind.rsverifyCommandKind/CommandFamilycoverage and naming.green on Rust 1.95 stable.