Skip to content

Conversation

@gempir
Copy link
Owner

@gempir gempir commented Dec 27, 2025

Note

Breaking change: 7TV-only

  • Removes BTTV support end-to-end: deletes BttvAdditionalOptions, BTTV reward form, BTTV token accessors, and BTTV handling in Emote
  • Standardizes channel point rewards on SevenTv* types and parsing (UnmarshallSevenTvAdditionalOptions, SevenTvReward), updates tests accordingly

Backend adjustments

  • Simplifies logging in MarshallReward
  • Prunes store API (GetBttvToken removed) and related system config

UI/UX redesign

  • Replaces Mantine Card/Container/Title usage with Box and monospace, terminal-style theme (theme.ts, globals.css); styles and notifications unified
  • Updates Blocks, Rewards (removes BTTV form; SevenTvForm only), Permissions, Bot, Sidebar, Teaser, privacy page; tweaks table/actions/pagination labels and sizes
  • Adds preview and improved CSV import/export UX in Blocks; EmotePreview and Emote now 7TV-only URLs

Types/hooks

  • Cleans up reward types to SevenTv* only; updates useChannelPointReward, useUserConfig types and consumers

Written by Cursor Bugbot for commit 03357a0. This will update automatically on new commits. Configure here.

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Dec 27, 2025

Deploying gempbot with  Cloudflare Pages  Cloudflare Pages

Latest commit: 03357a0
Status: ✅  Deploy successful!
Preview URL: https://ba8c4f1d.gempbot.pages.dev
Branch Preview URL: https://bttv-removal.gempbot.pages.dev

View logs

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on January 23

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.


export function EmotePreview({ emoteId, type }: EmotePreviewProps) {
if (!emoteId || !emoteId.trim()) {
const [imageError, setImageError] = useState(false);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale image error state persists across emote ID changes

The imageError state is initialized once and never reset when emoteId changes. When a user types an invalid emote ID that fails to load, imageError is set to true. If they then type a valid emote ID, the error state persists and the component displays "error" instead of attempting to load the new emote image. The state needs to be reset (using useEffect or a key) when emoteId or type props change.

Fix in Cursor Fix in Web

@gempir gempir merged commit 3843c18 into main Dec 27, 2025
4 checks passed
@gempir gempir deleted the bttv-removal branch December 27, 2025 17:20
<Text size="xs" ff="monospace" c="dimmed">
logged in as{" "}
<Text span c="white" inherit>
{scTokenContent?.login || "user"}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Property case mismatch causes username display to fail

The code accesses scTokenContent?.login (lowercase l) but the ScTokenContent interface defines the property as Login (capital L). JavaScript property access is case-sensitive, so scTokenContent?.login will always be undefined, causing the fallback value "user" to display instead of the actual username. The access should use scTokenContent?.Login to match the interface definition.

Fix in Cursor Fix in Web

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