Skip to content

Fix blank bind button — fa-masks does not exist in Font Awesome 6 Free - #29

Merged
hyperion-001 merged 1 commit into
mainfrom
claude/st-roulette-new-feature-e5mmu7
Aug 18, 2026
Merged

Fix blank bind button — fa-masks does not exist in Font Awesome 6 Free#29
hyperion-001 merged 1 commit into
mainfrom
claude/st-roulette-new-feature-e5mmu7

Conversation

@hyperion-001

Copy link
Copy Markdown
Contributor

The "auto-start for characters" button on each queue card rendered as an empty outline — correct size, correct hover, no glyph. Reported with a screenshot showing the gap between the edit and duplicate buttons.

Cause

v1.3.0 used fa-masks. SillyTavern bundles Font Awesome 6 Free, and FA6 renamed that icon to fa-masks-theater — the bare fa-masks alias only exists in FA6 Pro.

A missing Font Awesome icon fails completely silently: no console error, no fallback glyph, no warning. The result is a correctly-styled button with nothing inside it.

Verified against ST's own public/css/fontawesome.min.css: .fa-masks:before is absent, .fa-masks-theater:before is present.

Fix

Replaced with icons that resolve, chosen per context rather than uniformly:

Location Icon Rationale
Queue-card button fa-users opens a multi-character picker
Queue-card count chip fa-users shows a count of bound characters
Chamber tab row fa-user refers to one specific character

fa-masks-theater would have preserved the original theatrical look, but a plain person glyph reads better at 14px in a row of single-concept icons, and a character icon is what was asked for.

Scope check

Finding one invisible icon raised the question of whether there were others, so every icon the extension references (25 across JS and CSS) was audited against the bundled stylesheet. fa-masks was the only broken one, and it was introduced by v1.3.0 — everything predating it resolves correctly. This was an isolated mistake, not a pattern.

Preventing a recurrence

Added an "Icons — Font Awesome 6 Free only" section to CLAUDE.md with the grep to check a name before using it. Nothing in the toolchain catches this class of mistake — it can't be unit-tested without a browser, and the stylesheet lives in SillyTavern rather than this repo.

Worth writing down because the intuitive rule doesn't hold: fa-theater-masks does resolve while fa-masks does not, so "the old FA5 name still works" would lead straight back into the same trap.

Also in this PR

  • Docs referring to "the masks icon" updated to "the characters icon" (README, TESTING.md, CLAUDE.md).
  • Patch bump to 1.3.1 in manifest.json, package.json, and CLAUDE.md — 1.3.0 shipped with a visibly broken control.

Verification

  • Icon audit: 26 referenced, 0 missing.
  • All 21 modules parse (checker itself sanity-verified against deliberately bad input).
  • npm test — 12/12 pass. Unchanged by this PR; the scheduling core isn't touched.

No functional change to the binding logic. This is presentation only — the button always worked when clicked, it just didn't say what it was for.

🤖 Generated with Claude Code

https://claude.ai/code/session_01J5wRPLqtW32eqWY9hi9uFt


Generated by Claude Code

The "auto-start for characters" button on each queue card rendered as an
empty outline: correct size, correct hover, no glyph. Reported with a
screenshot showing the gap between the edit and duplicate buttons.

Cause: v1.3.0 used `fa-masks`. SillyTavern bundles Font Awesome 6 Free, and
FA6 renamed that icon to `fa-masks-theater` — the bare `fa-masks` alias only
exists in FA6 Pro. A missing icon produces no console error and no visible
fallback, so it fails completely silently.

Verified against ST's own public/css/fontawesome.min.css: `.fa-masks:before`
is absent, `.fa-masks-theater:before` is present.

Replaced with icons that resolve, chosen per context rather than uniformly:

  queue-card button   fa-users   opens a multi-character picker
  queue-card chip     fa-users   shows a count of bound characters
  Chamber tab row     fa-user    refers to one specific character

`fa-masks-theater` would have preserved the original look, but a plain
person glyph reads better at 14px in a row of single-concept icons, and the
user asked for a character icon.

Audited every icon the extension references (25 across js/css) against the
bundled stylesheet — `fa-masks` was the only broken one, and it was
introduced by v1.3.0. Everything predating it is fine.

Added an "Icons — Font Awesome 6 Free only" section to CLAUDE.md with the
grep to check a name before using it, since nothing in the toolchain catches
this class of mistake. Noted the specific trap that `fa-theater-masks` DOES
resolve while `fa-masks` does not, so "the FA5 name works" is not a usable
rule.

Docs referring to "the masks icon" updated to "the characters icon".
Patch bump to 1.3.1 — 1.3.0 shipped with a visibly broken control.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5wRPLqtW32eqWY9hi9uFt
@hyperion-001
hyperion-001 merged commit 94a1bf6 into main Aug 18, 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