Be careful with old versions! These versions are displayed for testing and reference purposes.You should always use the latest version of an add-on.
Latest version
Version 1.7.68
Released 26 Aug 2026 - 1,000.41 kBWorks with firefox 128.0 and later- chore: release 1.7.68
- build: bundle refresh after rebase
Source code released under MIT Licence
Older versions
Version 1.7.67
Released 26 Aug 2026 - 1,001.44 kBWorks with firefox 128.0 and later- chore: release 1.7.67
- fix: rescue installs the 1.7.66 feed-tab migration stranded
- fix: don't burn the feed-tab one-shots against an unhydrated settings cache
Source code released under MIT Licence
Version 1.7.66
Released 26 Aug 2026 - 1,001.43 kBWorks with firefox 128.0 and later- feat: bttv/ffz poll — live updates where no socket exists
- style: biome format the bttv socket block
- build: bundle refresh — csp socket host + build stamp
- fix: two emote-audit findings
- feat: bttv live socket — channel emote changes land mid-session
- perf: instant menus and asset-load hints
- refactor: hoist the triplicated makeMcBtn dialog button helper
- perf: take three stalls off the boot and idle paths
- fix: feed load-more rebuilt every row and snapped scroll to top
- style: biome format the surface-checkin files
Source code released under MIT Licence
Version 1.7.65
Released 26 Aug 2026 - 999.74 kBWorks with firefox 128.0 and later- style: biome format the surface-checkin files
- chore: release 1.7.65
- fix: fresh installs get the feed tab back
- feat: report which surfaces an install opens on the health check-in
- docs: the listed AMO version was never 1.6.8
- feat(multichat): tab mode — rover cursor over the tab strip on t
- style: biome format the new tab-counter and badge tests
- feat(multichat): tab number — unread or heat on each chat tab
- feat(multichat): text badges — terse role chips instead of images
Source code released under MIT Licence
Version 1.7.64
Released 25 Aug 2026 - 996.8 kBWorks with firefox 128.0 and later- build: refresh chrome bundles
- perf(build): one shared multichat-core.js instead of three near-identical bundles
- perf(build): slim the universal lib per content script
- perf(mc): cut per-message allocations and idle observer churn
- build: refresh chrome bundles
- test(render): dump composer geometry when the yt send-check click times out
- feat(welcome): cut copy to near-zero words
- build: refresh chrome bundles
- fix(build): stage dist output and atomically swap it into place
- style: biome format crowd-report additions
- fix(mc): prefer live-titled youtube social over first-listed
- feat(mc): crowd-report published youtube socials for channels heatsync can't resolve
- build: refresh chrome bundles
- feat(diag): stamp build id into hs_diag_ring boot events
- build: refresh chrome bundles
- fix(mc): dead band between last message and composer after tab switch
- refactor: drop dead content-script cache mirror from config
- build: refresh chrome bundles
- fix(mc): popout chat freeze + slow chat — raf starvation guard, authed reader races
- docs(changelog): 1.7.63 — what the last three commits mean for a user
- fix(ext): stop broadcasting to tabs that nobody is listening in
- fix(ext): clear the toolbar badge when the site says notifications were read
- fix(ext): a listener label and its options must both survive
- fix(ext): the code paths that could never run
Source code released under MIT Licence
Version 1.7.63
Released 24 Aug 2026 - 1.69 MBWorks with firefox 128.0 and later(edit release notes before approving — see git log for changes in this version)Source code released under MIT Licence
Version 1.7.60
Released 17 Aug 2026 - 1.86 MBWorks with firefox 128.0 and later- fix(overlay): the native-chat dead-man switch can recover
- fix(feed): stop two client-side filters from emptying discovery
- style(multichat): format main.js
- docs(paints): state what the paint hash does and does not cover
- fix(resub): re-scan for the token when share is clicked
- perf(paints): a name that isn't on screen stops animating
- feat(predictions): predictions and polls get the whole chat area
- fix(predictions): the broadcaster can actually start one
- fix(paints): name paints animate again, and stop washing out the glyphs
- fix(paints): resync — the scene is seven planes now, not three
- fix(chat): a twitch row can actually be cited
- fix(paints): resync — the rim reaches gradient fills, and the catalog clears its own floor
- fix(youtube): a highlight rule's sound fires on youtube too
- fix(chat): your own reply keeps its reply bar on kick and youtube
- style(tests): format the renamed color-scheme test
- fix(paints): resync the compiler with the site, and stop chopping names per letter
- fix(overlay): stop declaring a color-scheme on a page we don't own
- feat(chat): quoting a message cites it instead of retyping it
- fix(chat): the reply and thread chips stop smearing cozette
- fix(multichat): a redemption row announces something, it isn't a shortcut
Source code released under MIT Licence
Version 1.7.59
Released 14 Aug 2026 - 1.85 MBWorks with firefox 128.0 and later- feat(health): the health poll says which install it is, for a day
- test(fonts): the extension gets a bitmap grid guard too
- test(fonts): make the size control's render path testable without a browser
- feat(fonts): the size control offers only sizes the font actually has
- fix(chat): the reply line stops smearing cozette
- fix(irc): the archive signal fires once per channel, not once per message
- fix(paste): spend a source url on animation only, not on every still
- fix(paste): emote cdn artwork is linked, not copied into our bucket
- fix(paste): a copied gif keeps its frames, and a posted image drops its url
- fix(resub): find the share token where twitch actually puts it
- fix(upload): a pasted image url leaves the relay absolute, not as a slash command
- feat(chat): give thread creation a button instead of a hidden slash command
- feat(reply): the reply pill looks like the button it already was
- feat(chat): typing while reading chat lands in the composer
- fix(chat): only twitch's real first-message-ever gets a label
- fix(resub): stop hijacking the share when we cannot actually complete it
- fix(chat): say what the highlight means instead of only colouring it
- fix(notifs): a docked notification can no longer collapse off-screen
- fix(reply): a reply to you keeps its arrow and red when the tap wins the race
- fix(automod): stop telling people to relink twitch for an expired session
- fix(multichat): a late message lands at the bottom, not mid-scrollback
- fix(multichat): inline reply context, matching the site
Source code released under MIT Licence
Version 1.7.51
Released 12 Aug 2026 - 1.83 MBWorks with firefox 128.0 and later- fix(input): empty composer shows no caret, and modifiers stop rewriting your spacing
- fix(input): a modifier attaches to the emote it actually touches
- fix(bg): fetch the archive depth the server actually serves
- build: multichat bundles for viewer-relative labels + portrait shorts
- fix(multichat): viewer-relative emote labels + portrait shorts cards
Source code released under MIT Licence
Version 1.7.50
Released 11 Aug 2026 - 1.83 MBWorks with firefox 128.0 and later- feat(popup): feedback/bug-report form — posts to /api/feedback with version+platform context
- fix(irc): accept colon-less single-word PRIVMSG lines (robotty history)
Source code released under MIT Licence
Version 1.7.49
Released 9 Aug 2026 - 1.83 MBWorks with firefox 128.0 and later- fix(firefox): the dark-scheme stamp is a chromium workaround, so stop running it on gecko
Source code released under MIT Licence
Version 1.7.48
Released 9 Aug 2026 - 1.83 MBWorks with firefox 128.0 and later- chore(release): 1.7.48
- fix(firefox): direct-xpi installs never updated themselves
- fix(upload): pasting an image into the ext composer always failed
- fix(emotes): hover preview in native chat wasn't 4x for wide emotes
- fix(chat): common words were rendering as mention links
- chore(release): 1.7.47
- fix(twitch): the player guard was blind on the one page that has a player
- fix(kick): reply id was read under a name the server never sends
- fix(twitch): a reply to you lost its "replying to" bar when the tap won
- fix(auth): your identity was fetched and then thrown away
- chore(release): 1.7.46
- fix(twitch): hiding native chat made us break the stream
- fix(lint): make the pre-push gate green so it means something again
- chore(release): 1.7.45
- fix(player): the extension can no longer leave you with a blank stream
- fix(mentions): a native reply to you is a mention on every platform
- fix(settings): stamp data-hs-emote-anim on boot
- fix(resub-share): stop injecting the celebration twice
- fix(mentions): hovering an @mention shows that platform's profile
- fix(composer): Tab applies w! / ffzLeave onto the previous emote again
- feat(chat): host-less youtube refs get a playable card, not just a link
- fix(emotes): animated modifiers follow the animateEmotes setting; picker fills the chat
- perf(tooltips): stop re-parenting the hover popover on every mouseover
- fix(chat): the "N new" jump button is yellow, not brand orange
- fix(embeds): non-playable chat cards take the white plate on hover
Source code released under MIT Licence
Version 1.7.47
Released 8 Aug 2026 - 1.83 MBWorks with firefox 128.0 and later- fix(chat): common words were rendering as mention links
- chore(release): 1.7.47
- fix(twitch): the player guard was blind on the one page that has a player
- fix(kick): reply id was read under a name the server never sends
- fix(twitch): a reply to you lost its "replying to" bar when the tap won
- fix(auth): your identity was fetched and then thrown away
- chore(release): 1.7.46
- fix(twitch): hiding native chat made us break the stream
- fix(lint): make the pre-push gate green so it means something again
- chore(release): 1.7.45
- fix(player): the extension can no longer leave you with a blank stream
- fix(mentions): a native reply to you is a mention on every platform
- fix(settings): stamp data-hs-emote-anim on boot
- fix(resub-share): stop injecting the celebration twice
- fix(mentions): hovering an @mention shows that platform's profile
- fix(composer): Tab applies w! / ffzLeave onto the previous emote again
- feat(chat): host-less youtube refs get a playable card, not just a link
- fix(emotes): animated modifiers follow the animateEmotes setting; picker fills the chat
- perf(tooltips): stop re-parenting the hover popover on every mouseover
- fix(chat): the "N new" jump button is yellow, not brand orange
- fix(embeds): non-playable chat cards take the white plate on hover
Source code released under MIT Licence
Version 1.7.46
Released 8 Aug 2026 - 1.83 MBWorks with firefox 128.0 and later- chore(release): 1.7.46
- fix(twitch): hiding native chat made us break the stream
- fix(lint): make the pre-push gate green so it means something again
- chore(release): 1.7.45
- fix(player): the extension can no longer leave you with a blank stream
- fix(mentions): a native reply to you is a mention on every platform
- fix(settings): stamp data-hs-emote-anim on boot
- fix(resub-share): stop injecting the celebration twice
- fix(mentions): hovering an @mention shows that platform's profile
- fix(composer): Tab applies w! / ffzLeave onto the previous emote again
- feat(chat): host-less youtube refs get a playable card, not just a link
- fix(emotes): animated modifiers follow the animateEmotes setting; picker fills the chat
- perf(tooltips): stop re-parenting the hover popover on every mouseover
- fix(chat): the "N new" jump button is yellow, not brand orange
- fix(embeds): non-playable chat cards take the white plate on hover
Source code released under MIT Licence
Version 1.7.45
Released 7 Aug 2026 - 1.83 MBWorks with firefox 128.0 and later- fix(player): the extension can no longer leave you with a blank stream
- fix(mentions): a native reply to you is a mention on every platform
- fix(settings): stamp data-hs-emote-anim on boot
- fix(resub-share): stop injecting the celebration twice
- fix(mentions): hovering an @mention shows that platform's profile
- fix(composer): Tab applies w! / ffzLeave onto the previous emote again
- feat(chat): host-less youtube refs get a playable card, not just a link
- fix(emotes): animated modifiers follow the animateEmotes setting; picker fills the chat
- perf(tooltips): stop re-parenting the hover popover on every mouseover
- fix(chat): the "N new" jump button is yellow, not brand orange
- fix(embeds): non-playable chat cards take the white plate on hover
Source code released under MIT Licence
Version 1.7.44
Released 6 Aug 2026 - 1.82 MBWorks with firefox 128.0 and later- chore(release): 1.7.44
- fix(publish): retry the CWS publish call — a fresh upload 400s with an empty body until it settles
- fix(bg): SW actually idle-dies — gate the staggered tab-serving alarms with the lifelines
- fix(kick): popout window residuals — early hs-popout stamp, native-visible strip geometry, mount teardown
Source code released under MIT Licence
Version 1.7.43
Released 5 Aug 2026 - 1.82 MBWorks with firefox 128.0 and later(edit release notes before approving — see git log for changes in this version)Source code released under MIT Licence
Version 1.7.42
Released 3 Aug 2026 - 1.81 MBWorks with firefox 128.0 and later- docs: changelog for 1.7.42
- fix(chat): \ hide is tab-local — hiding chat on one stream no longer hides it everywhere
- fix(plus): tenure token is a bare + — duration moves to color ramp + hover title; sync greyscale ramp from site
- fix(welcome): watch-live cta prefers a simulcasting streamer
Source code released under MIT Licence
Version 1.7.41
Released 3 Aug 2026 - 1.81 MBWorks with firefox 128.0 and later- release: v1.7.41 — cws already had a stale 1.7.40, bump past it
- fix(composer): instant hide on send in auto-hide mode
- style: biome format + import order on scene sync
- feat(paints): scene paints v2 — sync diorama compiler from monorepo
- fix(7tv): failed channel-emote fetch no longer blacks out live updates
- feat(multichat): sized cw stubs + decision-surface category tells
- docs: add Cozette font license + trademark policy
- release: 1.7.40
- perf(multichat): composer typing no longer scans emotes/usernames on every keystroke
- fix(chat): your own message rendered twice, once as [T] and once as [K]
- fix(chat): tab searched 7tv too late, and the empty bar never hid after a send
- fix(feed): [OP]/[RE] rows never appeared unless you'd opened the feed tab
- fix(feed): your own /op never showed up in chat
- chore: format drift on main (biome), pre-push gate green again
- fix(multichat): one rule for which tabs get a composer, and stop restoring a hidden tab
- fix(composer): tab-cycle died on the first non-overlay match, stranded auto-hide bar
- fix(overlay): stale LIVE dot, and a 1s timeout reported as a permanent ban
- test(posture): guard that heatsync paints never reach native chat
- fix(paints): 7tv paints stand down for a saved heatsync paint
- fix(release): cws retry treats already-published as done, not failure
- fix(ui): remove muddy near-black fills, make zebra striping visible
- fix(7tv): unsubscribe dropped emote sets, honor subscription_limit
- feat(cw): color-code category stubs — magenta sexual, red gore, green drugs, grey hate; cyan = unknown fallback
- chore: drop dead i18n-override.js + stale COGGERS-1x.webp build entry
- feat(emotes): continuity fallback — dead provider-cdn imgs retry once through heatsync's byte cache
- tools: amo listing updater — sync live summary+description from store-listing.md, all locales
- i18n: sync patch seeds off shipped multichat-first copy, drop unlimited-slot claim
- fix(multichat): updateTabBar was reaping the $ sub button — every util button must be excluded from the channel-tab selector
- fix(multichat): banner re-offers newly live platforms, merges into existing tab, terse copy
- feat(multichat): $ sub button + context-menu links — one-click support for the active channel
- fix(multichat): multistream banner now detects youtube live, not just kick
- fix(layout): hold the chat column when you click a stream from browse
- fix(multichat): keep every chat buffer in order, and stop re-sorting every frame
- chore: retry the chrome store upload on a timer until cws unlocks
Source code released under MIT Licence
Version 1.7.40
Released 31 Jul 2026 - 1.8 MBWorks with firefox 128.0 and later- perf(multichat): composer typing no longer scans emotes/usernames on every keystroke
- fix(chat): your own message rendered twice, once as [T] and once as [K]
- fix(chat): tab searched 7tv too late, and the empty bar never hid after a send
- fix(feed): [OP]/[RE] rows never appeared unless you'd opened the feed tab
- fix(feed): your own /op never showed up in chat
- chore: format drift on main (biome), pre-push gate green again
- fix(multichat): one rule for which tabs get a composer, and stop restoring a hidden tab
- fix(composer): tab-cycle died on the first non-overlay match, stranded auto-hide bar
- fix(overlay): stale LIVE dot, and a 1s timeout reported as a permanent ban
- test(posture): guard that heatsync paints never reach native chat
- fix(paints): 7tv paints stand down for a saved heatsync paint
- fix(release): cws retry treats already-published as done, not failure
- fix(ui): remove muddy near-black fills, make zebra striping visible
- fix(7tv): unsubscribe dropped emote sets, honor subscription_limit
- feat(cw): color-code category stubs — magenta sexual, red gore, green drugs, grey hate; cyan = unknown fallback
- chore: drop dead i18n-override.js + stale COGGERS-1x.webp build entry
- feat(emotes): continuity fallback — dead provider-cdn imgs retry once through heatsync's byte cache
- tools: amo listing updater — sync live summary+description from store-listing.md, all locales
- i18n: sync patch seeds off shipped multichat-first copy, drop unlimited-slot claim
- fix(multichat): updateTabBar was reaping the $ sub button — every util button must be excluded from the channel-tab selector
- fix(multichat): banner re-offers newly live platforms, merges into existing tab, terse copy
- feat(multichat): $ sub button + context-menu links — one-click support for the active channel
- fix(multichat): multistream banner now detects youtube live, not just kick
- fix(layout): hold the chat column when you click a stream from browse
- fix(multichat): keep every chat buffer in order, and stop re-sorting every frame
- chore: retry the chrome store upload on a timer until cws unlocks
Source code released under MIT Licence
Version 1.7.39
Released 27 Jul 2026 - 1.79 MBWorks with firefox 128.0 and later(edit release notes before approving — see git log for changes in this version)Source code released under MIT Licence
Version 1.7.38
Released 27 Jul 2026 - 1.79 MBWorks with firefox 128.0 and later- feat: youtube parity for typed mod commands + vi-mode, kick fullscreen fix, shorts left alone
- fix(config): reconcile channel list across tabs instead of clobbering it
- style: biome-format the new background helper tests
- chore: rebuild bundles
- fix(settings): surface a toast when a local setting fails to save
- fix(persist): flush mention + youtube buffers on pagehide
- fix(emotes): main-world url allowlist matches the service worker's
- fix(spa): drop every tab cache on full reinit so channels can't bleed
- harden(irc): reject non-canonical channel names before they reach a JOIN line
- refactor(selectors): kick container/username fallback arrays via config
- style: biome-format the hs profile row
- fix(pcard): platform rows regain t/k/y/h hotkeys + new-tab links, hs profile row, drop dead pill builder
- refactor(irc): shared ChatClient base for the two chat transports
- style: rest params over arguments, drop useless String.raw, dedup-filter without comma operator
- style: explicit block bodies for forEach side-effect callbacks
- refactor: drop truly-dead locals, prefix unused params/catch bindings
- style: template literals + optional chains + literal keys across src
- chore: drop dead code, stale store-listing dup, archive old audit docs
- chore: drop dead code, stale store-listing dup, archive old audit docs
- chore: rebuild multichat bundles
- fix(emotes): unescape html-special tokens before raw-keyed cache lookups
- chore: format + type the basic-view field
- feat(settings): open on the basics, everything one click away
- style: biome-format processEmotes guard clause
- copy: lead every listing surface with multichat, not emotes
- feat(emotes): inventory render + suggest toggles
- feat(chat): per-tab hide — /hide, /unhide + right-click 'hide in tab'
- feat(feed): proxy external images through our origin (renders under strict CSP)
- feat(composer): attach image/video button
- fix(feed): render web-authored OPs + fix thread back-nav and reply targeting
- fix(vi-mode): abort prior instance on re-injection
- fix(composer): recall no longer builds "undefined" emote chips
- fix(composer): mention-red beats keyword-yellow when a row is both
Source code released under MIT Licence
Version 1.7.37
Released 24 Jul 2026 - 1.78 MBWorks with firefox 128.0 and later- feat(emotes): server-enriched cross-user emotes + logged-out login nudge
Source code released under MIT Licence
Version 1.7.36
Released 24 Jul 2026 - 1.77 MBWorks with firefox 128.0 and later- fix(tabs): keep T/K/Y colored borders complete in top/bottom layout
- fix(live): check kick live-status for dual-platform tabs
Source code released under MIT Licence
Version 1.7.35
Released 24 Jul 2026 - 1.77 MBWorks with firefox 128.0 and later- fix(tabs): mention highlight is red, not yellow
Source code released under MIT Licence