#stage-discussion
1 messages ยท Page 11 of 1
im assuming this is on the roadmap and just not a priority since its a minor visual thing; lack of emote padding makes some emote spam overlap
You can adjust it in the settings
We might change the default a bit tho
Right now its set up so the emotes are inline
yeah maybe -0.5rem
I believe twitch uses -0.5rem, but 7tv emotes are a bit taller
i wonder if theres a way to make it pad dynamically
Uh, it kinda is, -10 wouldnt be any different than -1
what i mean is like overlap detection; red=reduce padding green=increase
yeah im guessing it would have to be some kind of javascript->inline css thing for every chatline so its probably not worth the overhead
I cant seem to figure out which component it is @unkempt hill
why do all of you have ify in your name 
its a part of spotify sponsorship

Is there a way i can set a limit on how many components i want the useComponentHook to find? @unkempt hill
wdym
it only finds 1
and then hooks the class
it stops observing
after the first one
(or first set)
it returns an instance array
yeah its safe to just do const [first] = hook.instances
and then just do a null check
you wont loose perf
But what if it hasnt found it yet?
then it will observe until it finds one
you can add a mount hook
or just watch()
instances
its reactive
That is what im doing right now
whats the issue with it?
theres not really much of a performance impact
I call the unwatch after the first found anyway
past the time the observer is active
oh
if you really dont care
about hooking it
just call awaitComponents
directly
that will give you one and only one
but it doesnt hook anything
Could do that yea
with await components
check the promise type
if it returns an ObserverPromise
you can cancel it
if you dont need it
the promise will then just throw
so when you await it just set a catch(()=>undefined) since otherwise whatever is awaiting will get an uncaught error if the observer gets killed
I just do .then
yeah thats fine
what is apu cooking

@eternal iron
๐ cool find , thats one struggle removed
it seemed like a pain to acquire access to those opener functions
Only issue is that it does like 250 or 300 predicates to find it
but i couldnt find any better selector
thats not too bad i think
each predicate call isnt that expensive if you dont do too much optional chaining
which you didnt here
so it's practically free
Could also consider modifying the awaitComponents with a timeout option or something
Since it never unsubscribes the observer if it dosnt find it
Oh, i didnt realize it returns an observerpromise if it dosnt find anything
So should probably have done this instead ```ts
const a = awaitComponents<Twitch.ViewerCardComponent>({
parentSelector: ".stream-chat",
predicate: (n) => n.onShowViewerCard && n.onShowExtensionMessageCard,
});
a.then(([c]) => {
if (!c) return;
tools.onShowViewerCard = c.onShowViewerCard;
tools.onShowEmoteCard = c.onShowEmoteCard;
tools.setViewerCardPage = c.setViewerCardPage;
});
if (a instanceof ObserverPromise) {
setTimeout(() => {
a.disconnect();
}, 10000);
}```
And with a catch on the then
Would this work? @unkempt hill ```ts
const a = awaitComponents<Twitch.ViewerCardComponent>({
parentSelector: ".stream-chat",
predicate: (n) => n.onShowViewerCard && n.onShowExtensionMessageCard,
});
a.then(
([c]) => {
if (!c) return;
tools.onShowViewerCard = c.onShowViewerCard;
tools.onShowEmoteCard = c.onShowEmoteCard;
tools.setViewerCardPage = c.setViewerCardPage;
},
() => null,
);
if (a instanceof ObserverPromise) {
setTimeout(() => {
a.disconnect();
}, 10000);
}```
no it doesnt
yeah thats fine
that should work
i would maybe somewhere clear the timeout depending on when you do that
bros the fucking twitch emote conversion is so expensive
like if the module unloads
i figured it would be
im gonna have to-
i was a little curious why we decided to do that 
well it makes the rest of the code very easy
no need to handle multiple types
but yea needs to be deferred to the worker, it lags the page for a solid half second otherwise
we didnt
what does it do
the screenshot?
it just creates an object
im curious why that takes so long
even if there was like 10000, creating 10000 objects
is not that slow
like not that slow
weird
actually curious
so its fine if its done lazily
what calls
the sync functions
if its from a react prop hook
its likely being called more than neccissary
we should set it out into a ref
and watch that ref instead
i made a debounce
this
yeah i know
gathers all calls for a second before running
but thats not really what I mean
i mean like because of the way react works
if ANY prop gets set on the component we're listening to
we get a trigger for the prop value which might be trying to convert multiple times
with unneccissary data that didnt really change
setting to a ref will use vues diffing functions for us automatically
unless
we already do this
react is basically setting back props
every time
with a spread operator
thats how react just is, it keeps state immutable
so like its possible to imagine twitch is being stupid somewhere and like unneccissarily setting something many times, on the same component
that we listen to
making us accidentally reprocess emotes
ok hm
@unkempt hill https://github.com/SevenTV/ExtensionV3/pull/43
seems good
do you want me to test it?
although idk what Either<> is for
doesnt the union operator accomplish this already?
one or the other
yeah but isnt that just what | does
@daring gale uh wait
dont you need to clear timeout here
clearTimeout and timeout = undefined
otherwise it only runs once
it clears the timeout when it runs
before i had it so it reset it each time
but figured that was inefficient
and not necessary / could lead to it never actually calling back
yes but i mean you never unset timeout
so the second time you run the debounce func
it just quits out
because timeout is still the old key
even if the timeout has already expired
yea
i wouldve meant to unset the var
i wonder when the timeout numbers run out
like im pretty sure theyre incremental
so i wonder if you just set a shit ton of 0 timeouts
if you hit a cap somewhere
although
they must be massive
probably at 2^31
or actually no higher
and you never run out of frames
actually on that point
yeah when do javascript number run out
are they like python
it must be 2^53?
yeah the rest looks good
also it seems like ints become bigints
if its not integer though then its maxed out at 64 bits
whatever value that is
for a float
idk
float math is dank 

ok the emote menu being on v-show
kind of lags things
when the twitch emotes are being inserted
because it's async it's causing a reactivity update
for each set
so the menu is rendering shit in the background
so wait it does
i though excel tested
i mean, it makes sense that it does
im still on the side i was then a few days ago
that we should just store the users position
and drop the menu completely
yeah
no need to keep all the component fluff around when its not even neccissary
and most of the time the user wont even want the emotes
that we have open for them
in the background
also ant natole
what fucking channel are you on
that your getting all this emote lag
all of a sudden
idk i got like a million gifted subs recently
7tv twitchmedia23
so i have more twitch emotes than usual
@unkempt hill should i just submit to the chrome store now 
i feel like it's pretty decent
actually i need to fix a few things with cosmetics
i mean might as well probably
probably going to take longer
for initial approval
than update approval
also why does it take google so long to verify the regular extension
like wtf
they literally gave the extension
a special badge on the chrome store
i cant remember if it says recommended or verified
im overusing the fuck of vueuse until()


Why was this https: needed? @daring gale ts .map((f, i) => `https:${host.url}/${f.name} ${i + 1}x`)
consistency
I get the url like this ts url: data.images?.dark["1x"].split("/").slice(0, -1).join("/") ?? "",
Time to waste bits to test again 
too many dank emotes

change to dark mode
no
my eyes
no
something weird i just came across, you can only pin messages after reloading the page? is that a twitch thing or is it broken with the extension?
not implemented yet
the reason you can pin it right after reloading the page is because the extension hasn't loaded yet
why its so blurry 
what is
hover preview on emotes
link me the emote
what is your monitor size
uhhhhhhh 1920x1080
ok i zoomed in 300% and it looks normal 
mtd type here to see if it's also blury for me
https://www.twitch.tv/vmykv2
hmm its blur in your chat too on channel emotes
@daring gale did you not fix emote scaling in the tooltips?
oh ye they are all blury now
zoom in 300% => preview not blurry, but the emote itself is blurry
someone link me approved emotes for personal use
and for some reason not all sub emtoes are showing
this are anny follower emotes not subs
but on pajlada i have all 
bttv emote takes priority over personal emote
(don't have bttv, just ffz)
actually wait can't tell if it's just the preview thing 
Its random
known
Yay personal emotes at last 
I can't get the personal emotes to show up in my chat after typing them
did you actually install the new extension
unless I add it to my channel set instead

yes I did
after further testing it seems personal emotes do take priority over bttv emotes 

@noble terrace browser / browser version?
opera 94.0.4606.38
The beta works on Opera?
works fine
what was the issue
just needed an update 

I mean, I thought the browser updates itself automatically so uhh yea
just went into about tab and updated manually that's it
because I like it
unrelated to the testing rn but does the new extension provide a smaller size emote now
the design
ok
guess that works
that's better
the font sizes
i mean
@daring gale does it get the colors from the backend
i think this order looks better


meh

forgot to test zero widths
nvm
emote name
emote type
by user
zero width emote name(s)
by user
but if someone uses like 10 different zero widths


if there's 2 or more 0-width then just show:
Zero-width Emote
emote + name | emote + name | ...

Thats the point of these dashes 
yeah maybe show the user of the person who made the zero width only if there's 1 zero width in the message
i gotta think of a good way to display the zero width emotes
in a way that makes sense
might be a good idea
and just a
but that doesn't stop it from being like
x2 x3 x4
20 emotes
count
different ones
@eternal iron dedupe zerowidth at the tokenization

i think that could be a good idea
yeah maybe (x3)
x3
i need we need () or people might think "x3" is the part of the emote
or 3 times but too long
I think my ip has been banned from accessing bttv emotes 
"(x2)" or "(2 times)"
yeah obviously lmao
(x2) or (2 times)

looks like (x2)
why though

but ignore that we'll just dedupe it at the tokenization
Chatterino zerowidth is donk
my idea won
Yesterday I reported ffz and ffz AP badges not showing up in the chat is it still gonna be this way? AP badge is subscription based so I would like to see it in my chat 
will probably be a plugin
though
like the chatterino badges plugin
for ffz
wtf
the little 7tv logo is basically invisible

flex-shrink: 0
I couldnt figure out why the intersection observer in the emote menu wasnt working 
the issue was that the computed value was just replaced with the imageHostToSrcSet
@finite monolith
@daring gale *
Could someone post the chat comparison video again for chat in 7tv 3.0 vs native?
Want to show a colleague at work and can't find it ๐
Thx 
is the emote preview size gonna be increased? shits really blurry rn as is
I was gonna have a look at why it wasnt using the MO
I guess that's why
Lule
Didn't expect it was implemented this way
Would be nice if we could just v-show on the emote component
but we have to clear the srcset for the download to cancel
Front end developers who really like backend 
I changed some stuff on the emote menu
So your branch is gonna have some conflics
actually me
Just fixing a few other minor things here and there before merging
Support for moderated messages (chat filter) and dedupe zerowidth
Just replacing the overlaid: [] with a record
idk why but a lot isn't working for me
badges, paints, personal emotes, more
oh it just took a lot to load
Yep
Should probably just replace long names with its beginning followed by ...
So WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO would be WOOOOOOO...
probably
@finite monolith
is it possible to just make the font size shrink the longer the text?
that's stupid
don't do that
yes it is possible excellify
but it misses the point too
i'll just wordwrap it
That's not how design work lol
You never shrink anything like that
Make a setting for it, so people can choose @finite monolith
good enough
alright
i'll create a pr of what i thought of so far
and what i did and whatnot
i'm gonna create a checklist for issues we need to solve to get the tooltips into a good shape
Mind adding Treuks to the clickup? @daring gale


elon musk bought 7tv
Half of the employees laid off 
can u make it so emotes can be autocompleted even if it's not beginning of emote name
that works in dankchat and chatterino but not native
Were you trying on personal emotes?
so instead of mouzahSad for
I type "hsad" and it pops up
The end of the emote?
ok well now discord is putting emote instead of name but w/e
So illogical
what
type `` around it
tilde key
i type "ostrong" to see
before feelsstrongman too
hsad is the end of the emote no?

The tab action works with the start of the emote
forsenHead
it works with any combination of the emote on dankchat pieter
idk what to tell you

have you tried using : for this?
Im used to use : yea
I still have to type beginning of emote in native to see
and I don't wanna type out entire usernames and have to cycle through them
probably just something they could add in 
that's what I'm asking .
yeah
being able to type :strong and see what feelsstrongman variation is enabled is so nice
visual examples for pieter
u never use : in dankchat tbf but i hate having to cycle through
it's neat for chats that have lots of similar names too, like empi that has like 58 omegalul and giga variants
1000 emote channels
1500 

I swore it never worked on discord 
@finite monolith @eternal iron try to get your fixes done today, i'm looking to send the extension to the chrome store by tomorrow morning
Pushing the last thing i had planned right now
deadline
not really deadline but makes things tidy for the first beta build
since a lot of people are prob gonna be trying it
Should probably go over the styling for some of the messagetypes
Since we scale it up
and the browser dosnt actually know what resolution of the images is
The 2x/3x/4x just means that if we are zooming to 2x size use this instead
alright
so
can i create a function which will given an emote size ratio scale it up correctly
and return the srcsets
any of you devges have an answer for what saffy was saying 
this

ok i know it's physically possible for you to code
So either just infer the highest resolution as the source or create a srcset that of type //..../1x 32w, //..../2x 64w, //..../3x 96w, //..../4x 128w
im asking is this something you're willing to implement
yeah i'll just do that

we will

Just using the highest resolution is probably the easiest
it's a pretty important feature
W
W
7tv 3.0 will accept nothing less than perfection

pin that
I guess im fired then 
ur great dw ๐ฅน
What did you ask for btw @sinful schooner
badges and paints show up in message history but not live chat for me
hyru linked the msg
that means you have another extension conflicting
since we dont even handle chat history
We currently support : autocomplete matching anywhere in the emotename
if it will actually work properly i'm gonna paaaaaaaaaaaaaaaaag
thats just a temporary dumb workaround though
skull
i'm not sure if the issue is gone or not
well even with my ttv extensions disabled its not working 
but zerowidth emotes don't have a tag in the : menu
@devout veldt show console with verbose logs
oh okay
that's great thank you

it takes like 20 seconds to check for errors
downloads the extension, complains, proceeds not to give any info
i was dealing with another thing hang on



probably didn't disable the main 7tv extension 
Close all other tabs @devout veldt
And reopen the window where you want to check
Or rather close all twitch tabs, including popouts
i'll clear twitch cache
Its a different cache, so wont help
i can only find the option to clear all cache anyways
Hope reply is in for beta 
you'll have to wait 60 seconds
i am running an experiment limiting the amount of emote downloads in a short time
yesterday it was telling me 60 minutes
that was for adding to emote sets
how many twitch tabs do you have open
i had 3 open but they were sleeping
for personal emotes sets yea
Some animated emotes are loaded as avif in Firefox in Dev6 such as Dance.
ok yeah now its working
NaN
Animated emotes aren't animating in chat, but in the tooltip they animate fine, Firefox Dev6
how did this happen 
fix this in your pr excell
Is there somewhere we are not passing imagetype?
pass the preferred format to the srcset function
also if u have time try to implement the reply button and reply ui
today
then i think we're prime for beta
im going bedge tho
Wait, wouldnt it be easier for the ImageToSrcset to have a reference to the imagetype directly
So we dont need to pass it through multiple layers
uh yea

The imagehost to srcset should include some logic to handle different providers aswell tbh
but yea do all the small fixes and try to get replies in or i can already sense the hoarde of xqc viewers complaining

Replies 
its not too hard i think u have the data in the message itself
or so the id
which we map
Mentions are probably even more important
oh right
mentions dont work
do that first actually 
replies second to that in priority
I have no idea where twitch tracks active users tho 
time to scour through react props again 
My favourite

It would surprise me if it wasnt somewhere we already hook
Unless its some different messagehandler that tracks it
I wonder what other ffz/bttv stuff we break by hooking the messagehandler
Could look at a way of keeping some of the messagehandles in the future for compatability

I don't know if this helps but only 7TV emotes are loadad as avif. BTTV emotes animate just fine.
No shit
Sorry xd
I thought they were hosted in 7TV 
How difficult is it to change the default imagetype based on useragent on the api side? @daring gale
wdym

user agent is parsed in the main store
Have it return avif if chrome and webp if firefox
avif not supported on Firefox bc Firefox sucks 
No you 
I mean, when it fetches the emotesets
Firefox user
if chrome > 100 = avif supported
nah
so its cucked out of that check
package named ua-parser-js
๐บ๐ฆ

and hardcoding it?
i regret not changing firefox to "partial support" on this page
im the one who added the label number 2
but i shouldve swapped FF to partial support alongside it
maybe ill make another pr
safari says supported even though it doesnt support animated either so i guess it depends on if most devs consider animated avif important enough to constitute it being labeled partial support if it doesnt have it?
for iOS and TP versions
yeah theres a misconception from media people who keep comparing avif to jpeg
hence why you'll see a lot of people disregard the actual purpose of avif which is animation
comparing avif to jpeg is an apples to oranges moment
both fruit 
webp shows partial support for non-animated so for consistency avif should too probably
ya
poor jxl
i'll make a new PR for this given its been a while by now
even though it'll never get implemented because google, has there been any tests to see how animated jxl performs vs avif on emotes?
huh
is this wrong

yeah
I was going to say I think its the other way
crispy tooltips
Should we change it to 3x now?
change what to 3x?
The tooltip image
its currently twice the size of the one in the chat
Maybe default it to 2x and add a setting for styling
it is 3x
We should have a setting for minimal tooltips
good idea
that just show the name like with badges
we should have a setting for maximal tooltips
Fullscreen tooltips 
full 7tv emote page
in the tooltip
this looks a bit donk
It opens 7tv.app on hover 
@finite monolith does the name and emote category color correspond to the one of a role of a user?
pagde
name color is 7tv role color yea
Firefox has prevented this page from opening 189 popups
why is the category text not colored though 
emote category is based on user
It is?
no wait
i wanted to say
the emote category is either white for the channel emote
yellow for personal
or green for global
green goblin
because it's yellow on the website?
idk
why is the 7tv logo lower than the emote code 
it feels right to me
because subs are yellow
I'd make it light'ish red instead of yellow
idk
i tried
just so that people could know it's restricted
aling baseline or middle @finite monolith
its inline now?
Idk if that actually works for flex but we
probably wont work yea
inline-flex 
not the same thing
ik
can we get a group's opinion on this? 
I think red fits more for the personal emote
its yellow
yellow fits personal emotes more because you need to be a sub
to have personal emotes
quit farming message stats will ya 
no
Also, does the tooltip adhere to unlisted rules?
nope @eternal iron i'm not sure what to do with that
like a stt
std
its just open captioning'
Look at the implementation from the emote component
i could just cv paste the blur code from the emote
but whats the point
you can just fucking hide the image
in the tooltips
Blur
what we should do
for
the tooltips
is have it say hold shift or something
to view emote
if you want to peek at an unlisted emote
hm
yeah shift is a good idea
is clickup a place where you can just pile on ideas to the task
Imagine a place.
are there docs for it
interesting
vue doesnt have special events
the @ syntax
just adds a native dom event listener
but also here if your planning on doing it this way
we might want to check if shift is held first
before the card opens
not sure the best way to do that without a global listener
ppl
git blame @shell schooner
don't care

ok
honestly
i dont care much
@eternal iron https://github.com/SevenTV/ExtensionV3/pull/47 you can review if you want to
pretty pog changes if you ask me
@eternal iron found a better solution for these icons how to make them look even
ok now this is weird
my paints and badges went back to not showing up but others' still do
๐

Well, did you 

console
yes
because it had literal exposed tit
she wasnt wearing any top
apollo
๐ฃ WHY DID YOU DELETE MY EMOTEEEEEE
idk if this if it's supposed to be like this (and if its been reported before) but native mod icons (delete message, timeout, ban) arent showing 
i always thought it was a bit too much
also. tab seems to prioritize twitch emotes rather than third party
(maybe could be a settings idk)


excel





3 lines

vp






