Skip to content

Draw the GIFs subscribers post, surface Twitch's share prompts, and put moderation on the row - #28

Merged
JRBlaze merged 1 commit into
mainfrom
gifs-streaks-and-mod-strip
Sep 2, 2026
Merged

Draw the GIFs subscribers post, surface Twitch's share prompts, and put moderation on the row#28
JRBlaze merged 1 commit into
mainfrom
gifs-streaks-and-mod-strip

Conversation

@JRBlaze

@JRBlaze JRBlaze commented Sep 2, 2026

Copy link
Copy Markdown
Owner

What this does

GIFs in Twitch chat. Tier 2 and Tier 3 subscribers can post GIFs now, and Twitch sends them as an ordinary message with a gifs tag (start-end|id|url). The feed draws the picture over the span it stands for, live and in the replayed history, accepting only GIPHY hosts over https. A GIFs in chat setting swaps the pictures for a small GIF link on every row already on screen. Sending goes through Twitch's own GIF keyboard — a GIF button opens the site's emote picker on its GIFs tab and the panel steps aside — because there is no endpoint for it and the keyboard is where Twitch applies the tier rule and the cooldown. The viewer's own tier and months come off their USERSTATE badges, and from Helix when the token carries the new user:read:subscriptions scope; the feed says so once on join and the GIF button lights up when the keyboard will take them.

Watch streaks and share reminders. Watch streaks arrive over IRC as viewermilestone and are drawn from Twitch's fields (count and channel points); modiversaries and any notice this has never heard of use Twitch's own system-msg. The prompts Twitch draws for the viewer alone — share your watch streak, share your resub — were under the panel where they could not be seen. The native-event watcher reads them, recognised only by their Share button, and offers a FOR YOU row with Share (presses Twitch's button, panel steps aside for the message box that follows), Show me, and dismiss.

Moderation on the row. Pointing at a message in a chat the viewer moderates grows a strip on it: delete, a ten-minute timeout and ban, on Twitch and Kick. Ban takes two presses and disarms itself. The username menu keeps everything it had.

Notes

  • Existing Twitch accounts need reconnecting to pick up user:read:subscriptions; without it the tier comes from badges alone (a founder's badge does not say).
  • The share prompts are matched on the English word Share and fail closed. The live DOM for those prompts was not available to verify against, so this is the narrowest read that could work.
  • Verified in tests/harness.html, which grew buttons for a GIF row, a fake moderator, a fake Tier 2 sub, and both prompts; contrast passes WCAG AA in both themes with the new rows on screen.
  • Version 1.17.0.

🤖 Generated with Claude Code

…ut moderation on the row

Twitch now lets Tier 2 and Tier 3 subscribers post GIFs, and sends them as
an ordinary message carrying a `gifs` tag. The feed draws the picture over
the span it stands for, from GIPHY's own hosts only, and a GIF button beside
the emote button opens Twitch's own GIF keyboard, since there is no endpoint
for sending one and the keyboard is where Twitch applies its own rules. The
viewer's tier is read off their USERSTATE badges and, with the new scope,
from Helix.

Watch streaks arrive over IRC as a notice of their own now and are drawn
from Twitch's fields; anything unknown falls back to Twitch's own sentence.
The prompts Twitch draws for the viewer alone — share your watch streak,
share your resub — sat under the panel where they could not be seen, and
are read off the page and offered as a row with Twitch's own Share button
behind it.

Moderators get a strip on the message under the pointer: delete, a
ten-minute timeout and a two-press ban, on Twitch and Kick alike.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@JRBlaze
JRBlaze merged commit f7c8c24 into main Sep 2, 2026
3 checks passed
@JRBlaze
JRBlaze deleted the gifs-streaks-and-mod-strip branch September 2, 2026 22:15
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.

1 participant