Skip to content

Post-review follow-ups from the release-hardening pass - #33

Merged
hyperion-001 merged 1 commit into
mainfrom
claude/sillytavern-roulette-release-byri0z
Aug 19, 2026
Merged

Post-review follow-ups from the release-hardening pass#33
hyperion-001 merged 1 commit into
mainfrom
claude/sillytavern-roulette-release-byri0z

Conversation

@hyperion-001

Copy link
Copy Markdown
Contributor

Six small fixes surfaced by the adversarial review of the PR #32 diff:

  • Resume with no resolvable profile — resuming after selecting <None> (or after the manually picked profile was deleted) now counts as divergence, so the next generation re-picks and switches instead of draining the stale counter with no profile applied.
  • Double error toasttryAdvanceFromFailure takes a notify option; startRotation/skipCurrentSlot suppress the internal toast since their callers already surface the returned error. The mid-rotation path keeps its toast (it has no caller to report to).
  • numOr null handling — nullish/empty count and weight values prefill their real defaults (3/2/5/1) in the editor instead of a below-min 0.
  • Rotation-tab status dot — mirrors the bar fix: only a real profile name is hashed for the dot colour, never the "unassigned slot" placeholder.
  • Group-chat regenerate limitation documented — group regens are 'normal' end to end at the event level with no signal to filter on; acceptance criterion 6 is now scoped to solo chats.
  • TESTING.md criterion 13 — bind/unbind steps now describe what's actually observable (toast + Rotation-tab select) rather than a pipe "echo" ST never displays.

Tests: 15/15 pass (npm test); all modules parse clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XDAj3aSdkvffKR6ZetqcyV


Generated by Claude Code

- resumeRotation: an unresolvable current profile ('<None>' selected, or
  the manually picked profile deleted) now counts as divergence — there is
  no profile the slot could legitimately be on, so the next generation
  re-picks and switches instead of draining the stale counter unswitched.
- tryAdvanceFromFailure takes a notify option: startRotation and
  skipCurrentSlot pass notify:false since their callers already toast the
  returned error — one failed click no longer stacks two error toasts. The
  mid-rotation path, which has no caller to report to, keeps its toast.
- numOr() treats null/undefined/'' as missing rather than coercing to 0,
  so count/weight fields imported as null prefill their real defaults
  (3/2/5/1) instead of a below-min 0; clearing an input now stores the
  fallback too.
- Rotation tab mirrors the bar's fix: the status dot hashes only a real
  profile name, never the 'unassigned slot' placeholder.
- Scoped the regenerate acceptance criterion to solo chats: group-chat
  regenerates are 'normal' end to end at the event level and carry no
  signal to filter on; documented as a known limitation.
- TESTING.md criterion 13 describes what bind/unbind actually show (toast +
  Rotation-tab select) — a bare command's return value is never displayed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XDAj3aSdkvffKR6ZetqcyV
@hyperion-001
hyperion-001 merged commit 2dd3a9c into main Aug 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants