#stage-discussion

1 messages ยท Page 12 of 1

unkempt hill
#

and not :

dull siren
#

yeah yeah just tab

unkempt hill
#

yeah that can be changed

dull siren
#

like i tried to tab THIS on nymns channel

unkempt hill
#

right now its just sorta dumb iteration

dull siren
#

and got copyThis

sinful schooner
#

OH

#

i didnt even scroll up til now

#

@devout veldt goofy

shell schooner
#

Hmm when users dont have a role it all kinda blends together

#

maybe could make the names grey in that case

devout veldt
#

or make it a bigger font size and change the "by" to their pfp or an icon or something

shell schooner
#

Hmm also good

unkempt hill
#

Sadgi how cum im in the "everyone else" category

#

anatole

#

and everyone else

shell schooner
#

also noticed an emote from a deleted user kek

finite monolith
#

unfortunately

shell schooner
#

wouldnt it be better to just move the tooltip a little bit to the left instead of this

finite monolith
#

instead of what

devout veldt
#

omega lul

shell schooner
#

breaking the line

finite monolith
#

that's gonna be fixed eventually

#

Copege cooooooooooooope

shell schooner
#

OkaygeDonk oke

unkempt hill
#

not a fan of the seperator line

#

feels too overcrowded

finite monolith
#

yeah

#

i got rid of it

#

dw

shell schooner
#

anyway i like how the whole extension looks already ayyybuKek

#

pretty fresh

finite monolith
#

im something of a designer myself

shell schooner
#

is the settings menu gonna be draggable?

unkempt hill
#

i think thats the plan?

#

@eternal iron yeah you wanted to right

eternal iron
#

Yea, but never implemented it

devout veldt
#

this is nitpicky but i think this setting could be clearer, it's currently as if Unlisted Emotes = off means Unlisted emotes are shown and Unlisted Emotes = on means they're hidden when it should be the other way around imo

unkempt hill
#

yeah thats a little confusing

shell schooner
#

why not just FeelsDankerMan

unkempt hill
#

what

devout veldt
#

i still think it would be clearer if it was Unlisted Emotes = on or off but i understand that changing the naming is easier than switching true and false everywhere

#

but yes having it that way would be a bit clearer than the current way

polar magnet
# shell schooner

the 7TV logo might make more sense to go next to "Channel Emote" instead of next to the name

shell schooner
#

true

finite monolith
#

nah

#

that Channel Emote thing goes away

#

if you're viewing emotes from any other source

unkempt hill
#

wouldnt it be better then

#

if it was always at the end

#

regardless of if there was that second line or not

finite monolith
#

idk

polar magnet
#

also switch to the updated 7tv logo path I sent kek

finite monolith
#

where

#

i'll switch it

polar magnet
#

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 23.551"><path d="M2.383,0,0,4.127,1.473,6.676H11.7L3.426,21,4.9,23.551H9.66Q14.532,15.113,19.4,6.676L15.549,0ZM18.492,0l3.856,6.676h2.945l2.381-4.125L26.2,0Zm2.383,9.225L17.021,15.9l4.417,7.649H26.2L33,11.775l-1.473-2.55H26.764l-2.944,5.1Z" fill="currentColor"/></svg>
instead of
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M60.0903 27.3672L63.5439 21.3449L65.4089 18.1607L61.9552 12.1384V12H43.5128L46.9664 18.0223L50.4201 24.0445L52.3541 27.3672H60.0903Z" fill="currentColor"></path><path d="M22.0311 67.7923L25.4848 61.77L28.9384 55.7477L32.3921 49.7255L35.8457 43.7032L39.2994 37.681L42.753 31.6587L45.3087 27.2285L41.8551 21.2063L38.4014 15.184L36.4674 12.069H7.31861L3.86497 18.0913L2 21.2755L5.45364 27.2977V27.4362H27.557L24.1033 33.4584L20.6497 39.4807L17.196 45.503L13.7424 51.5252L10.2887 57.5475L7.87119 61.8392L11.3248 67.8615V67.9999H22.0311" fill="currentColor"></path><path d="M50.9036 67.7924H61.4718L64.9254 61.7701L68.3791 55.7479L71.8327 49.7256L75.2864 43.7033L77.7039 39.55L74.2503 33.5278V33.3893H63.613L60.1594 39.4116L56.7058 45.4339L56.2223 46.3337L52.7686 40.3115L49.315 34.2892L48.8315 33.3893L45.3778 39.4116L41.9242 45.4339L39.9901 48.7565L43.4438 54.7788L46.8974 60.801L50.3511 66.8233L50.9036 67.7924" fill="currentColor"></path></svg>

finite monolith
#

i'll try that

polar magnet
#

the viewbox is different but idk how to size it

unkempt hill
#

inkscape can do that

polar magnet
#

or how you're sizing it, I should say

#

there's also that data-v-71556933="" stuff that seems to be responsible for making it the right size

finite monolith
#

ok

#

i'm not touching that

#

then

unkempt hill
#

thats how vue encapsulates

#

component styling

empty dawn
#

relevant? Got that for every twitch tab I've open

unkempt hill
#

by adding that data tag

#

to every dom element

devout veldt
#

i was bored

unkempt hill
#

but not a good error anyways

finite monolith
unkempt hill
#

what do we pass between workers

#

we can only pass plain js objects

#
  • a few other fancy things
devout veldt
#

looks clearer with drop shadows

finite monolith
#

clearer sure

unkempt hill
#

no that wont help

eternal iron
finite monolith
empty dawn
eternal iron
#

does @ keydown not work in vue? @unkempt hill

#

On non input elements

finite monolith
#

yeah i tried it too

#

didn't seem to work for me

unkempt hill
#

it should

#

keydown

#

is only received

#

if the element

#

you are listening on

#

is in the focus ring

#

or an ancestor of one

finite monolith
#

oh

#

deadass

unkempt hill
#

set it on window

eternal iron
#

I didnt get it to work even when it was focused

unkempt hill
#

well how can you focus the tooltip

#

you cant click it

eternal iron
#

On the emote, not tooltip

unkempt hill
#

some element types cant receive focus

#

depends on what it is

#

you could always set tabindex

#

with -1 or something

eternal iron
#

I had it focused

unkempt hill
#

that makes it unreachable by keyboard

#

all dom events work in vue

#

vue does nothing special here in this regard

shell schooner
#

dont click on this or you will CUM

finite monolith
#

lmfao

#

true

unkempt hill
#

a window listener works perfectly fine here

finite monolith
#

yeah

unkempt hill
#

just make sure

#

you unset it

#

on unmount

#

otherwise you will prevent the entire component from being garbage collected

#

and cause a massive memory leak

eternal iron
#

Ill leave it for treuks anyway ๐Ÿ™‚

dawn shadow
#

any one on opera gx trying it and got it to work?

unkempt hill
#

should work fine on opera

#

its chromium based

dawn shadow
unkempt hill
#

make sure your on the latest versions of things

dawn shadow
#

i am :3

#

maybe im just stupid :D ill try again, thanks for feedback

unkempt hill
#

any errors in the console

dawn shadow
#

nope.. it loaded the extension perfectly but didnt even shown emotes or stuff xD

#

i installed it manually

eternal iron
#

Do you have the icon in the top right?

dawn shadow
#

yep

eternal iron
#

Do you see the 7tv emotes in the emote menu?

finite monolith
#

doesn't work on operagx

dawn shadow
#

no

finite monolith
#

i thought there was something extra about that

#

but i dont remember

dawn shadow
#

but it'll work in the final for gx right?

eternal iron
#

Thats the plan i believe

unkempt hill
#

isnt there something about opera not supporting the structured clone algo

#

used for worker comms

eternal iron
#

Apparently it has poor implementation not only there

finite monolith
#

oh

#

makes sense

#

use a better browser

#

โ„ข๏ธ

unkempt hill
#

L

#

imagine using a browser

#

which uses the chromium core

#

but has worse support than chrome

#

literally had to work

#

to remove features

finite monolith
shell schooner
#

are personal emotes ever gonna be supported through the ffz addon? Susge

unkempt hill
#

uh yeah

#

not initially though

shell schooner
#

kek thats nice

unkempt hill
#

ffz addon has a full rewrite

#

that has been stashed for a bit

vapid veldt
eternal iron
#

Do you happen to know where twitch tracks user for the @ mention? @unkempt hill

unkempt hill
#

no

#

you want to inject suggestions tho?

#

that should be easy

#

just cv paste the code for the emote suggestions its already hooked

eternal iron
#

If they just have a set of active users ill just use that

unkempt hill
#

well it wont remember

eternal iron
#

Ill look for a bit

unkempt hill
#

because we block messages

#

thats how they track that

eternal iron
#

Yea ik

unkempt hill
#

thats why they arent showing up now

#

the other way doesnt work anymore

#

like we cant just fetch gql

eternal iron
#

Ill just override if I dont find it

finite monolith
#

3๏ธโƒฃ

#

fuck

unkempt hill
#

yeah just add another hook just like the emote provider

#

where we set mentionProvider

#

and then I would just copypaste

#

the code from the trainwrecks site

#

i already posted it somewhere here

#

State

    seenUsers: {
        users: Map<string, [number, ChatUser]>;
        indexed: string[];
    };

Logic

flushUserCache() {
            if (this.seenUsers.indexed.length < 60) return;

            const index = this.seenUsers.indexed;
            const map = this.seenUsers.users;

            const removed = index.splice(0, index.length - 31);

            for (const id of removed) {
                map.delete(id);
            }

            for (let i = 0; i < index.length; i++) {
                const stale = map.get(index[i]);

                if (stale) {
                    stale[0] = i;
                }
            }
        },

        updateUserCache(user: ChatUser) {
            this.flushUserCache();

            const stale = this.seenUsers.users.get(user.id);

            if (stale) {
                const index = stale[0];

                this.seenUsers.indexed.splice(index, 1);
            }

            const index = this.seenUsers.indexed.push(user.id) - 1;

            this.seenUsers.users.set(user.id, [index, user]);
        },
#

when you see a user

#

just call updateUserCache

finite monolith
#

leaked

unkempt hill
#

then just read off users

#

obv you can change the types

#

keeps the last 30 most recent seen users

#

safe to call

#

every message

finite monolith
#

oh

#

that's very nice

eternal iron
#

@finite monolith

finite monolith
#

ye

unkempt hill
#

@eternal iron did you end up finding somewhere

eternal iron
#

Ye solved it

unkempt hill
#

Madge use my dank code

eternal iron
#

The mention provider has a messagehandler that i just registered in our own stuff

unkempt hill
#

oh there you go

#

that works

eternal iron
#

Now to implement replies boatyDeleteImmediately

unkempt hill
#

good fucking luck

#

unless

#

twitch

#

already parses for you

#

then ez

eternal iron
#

Twitchs implementation does some stuff to close viewercards and handle some edge cases

#

But i think i can just call the setMessageTray with the messageid and channelid

#
n.onMessageClick = function() {
                    var e = n.props
                      , t = e.channelID
                      , i = e.message
                      , a = e.hasReply
                      , r = e.reply
                      , o = e.isIntroduction;
                    if (n.props.hideViewerCard(),
                    r)
                        return n.setOPCardTray(r),
                        void (t && (0,
                        se.UY)({
                            threadID: r.parentMsgId,
                            channelID: t,
                            uiContext: se.Xw.ThreadIcon
                        }));
                    if (a) {
                        var s = (0,
                        re.j)(i);
                        return n.setOPCardTray(s),
                        void (t && (0,
                        se.UY)({
                            threadID: s.parentMsgId,
                            channelID: t,
                            uiContext: se.Xw.ThreadIcon
                        }))
                    }
                    n.setMessageTray(),
                    t && (0,
                    se.fi)({
                        messageID: i.id,
                        channelID: t,
                        isIntroduction: o
                    })
                }```
finite monolith
#

very based periods

eternal iron
#

Its prettified minified code

finite monolith
#

or whatever its called

#
                    var e = n.props
                      , t = e.channelID
                      , i = e.message
                      , a = e.hasReply
                      , r = e.reply
                      , o = e.isIntroduction;
#

i mean this

eternal iron
#

The same happens with our code when we minify it

unkempt hill
#

have you ever seen google code

#

god

#

they dont just minify

#

they obfuscate

#

its so bad to read

#

literally almost impossible if you dont know all the weird syntax

#

turns fucking youtube code into jsfuck

finite monolith
#

oh

#

right

#

have you ever seen uh

#

scam website obfuscated code

eternal iron
#

Nvm, dont think setting the messagetray is easy despair

unkempt hill
#

green Trolldespair

eternal iron
#

Think it was from a lost ark server

unkempt hill
#

message tray doesnt take a reactelement?

eternal iron
#

I can create whatever element i want there yea

#

But was hoping to just call some internal function

#

And have it do it for me

#

But i think it only exists on messages rendered by twitch

unkempt hill
#

not that hard for us to do tho

#

really right

#

just set tray to a container

#

and render one of our chat message components there

#

oh yeah did you guys consider

#

my message node map idea Tomfoolery

naive hatch
#

I like the preview windows!

finite monolith
#

i made them even better

naive hatch
vapid veldt
#

modCheck pre-beta v7

naive hatch
#

literally only thing holding me back from rolling with it exclusively is not being able to pause chat by pressing ctrl, and changing with width of the chat. old boomer brain needs more reading room sadE

unkempt hill
#

oh we dont have that as an opt?

#

probably should do ApuArt

naive hatch
#

making the chat wider is the big one for me imo. wide emotes be breaking my brain when I try to read a message with them in it OMEGALUL

#

my current dank fix

shell schooner
#

kek told you resizable chat was a useful feature

unkempt hill
#

its not

#

mad a s hell

naive hatch
#

I cant use chatterino exclusively because then my twitch recap is gonna say my favorite emote was fucking: heart, hotpokket, wutface, and that I lurk more than Kate PepeLaugh

unkempt hill
finite monolith
#

Fuckin

finite monolith
eternal iron
#

Set margin auto on the h3 and svg in the details of the tooltip to vertcally allign the text btw @finite monolith

finite monolith
#

Ok

unkempt hill
#

it was an ab test

#

for a while

teal knoll
unkempt hill
#

proof of life?

eternal iron
#

Im guessing quite a few more had this due to experiments in ffz settings

unkempt hill
#

wtf does that mean

unkempt hill
#

ffz changed the way that feature works

#

didnt they

#

they made it reset

#

on refresh

eternal iron
#

Because twitch complained or something?

unkempt hill
#

idk

#

perhaps

vapid veldt
eternal iron
#

Mentions were easy, replies are not @daring gale

daring gale
eternal iron
#

Dont have access to the setMessageTray which creates the correct tray element

#

So we'd need to create our own, which we could do. Just takes time

daring gale
#

y no access tho

sinful schooner
#

i find it funny Zach will post about bttv but not a peep about anything 7tv

daring gale
#

can't you hook it

eternal iron
#

Only exists on a chatmessage rendered by twitch afaik

sinful schooner
#

he posted about bttv upping the emote slots

#

but then he didnt follow up about the migration tool

eternal iron
#

We can hook the tray, just not the function that creates a reply tray

sinful schooner
#

i dont value him like that but its interesting

#

if bttv doing the minimum for slots in 2022 was worth posting about, 7tv has 10x more things worth posting about imo

eternal iron
#

More ify's MonkaMini

sinful schooner
#

hi catsittingverycomfortable

teal knoll
vapid veldt
unkempt hill
#

what exactly the issue is

#

we dont WANT

#

the native message line renderer

sinful schooner
#

he literally makes a living off twitch news

unkempt hill
#

we want to put our own messages

#

which we can easily do

sinful schooner
#

he has a weekly newsletter about twitch

#

theres no way he doesnt know

daring gale
#

ApuThink just make a new tray then

unkempt hill
#

no we can set the tray

daring gale
#

Figure that's easy

sinful schooner
#

i dont think hes being malicious, but i do think its a conscious choice that hes not posting about it

vapid veldt
#

yeah of course but you get what I mean

unkempt hill
#

he wants to use the native thread renderer

#

and then patch it

#

which doesnt make sense to me

#

setting the tray we can do

eternal iron
#

I wanted that to solve it fast yea

daring gale
#

show him how to do it

sinful schooner
#

i do hope he posts about v3 when it properly drops though sennykBLEH

eternal iron
#

I know how to do it

#

At least i think LULE

daring gale
eternal iron
#

I just create an element which i pass to the tray

#

and then teleport to it

sinful schooner
#

ya i liked that empiOMEGA

vapid veldt
#

maybe night or Aiden is his inside man SUSSY

finite monolith
#

consider looking at my pr

daring gale
#

ill look when i get on PC or sum fdm

finite monolith
#

thanks

#

proper scaling and a smol bit of restyling

eternal iron
#

No settings for minified tooltip Sadge

unkempt hill
#

he tried to apply at twitch many times

#

and he never makes it

teal knoll
#

now he works for discord

#

๐Ÿ˜ญ

vapid veldt
shell schooner
unkempt hill
#

you mean a helix api

#

probably not

teal knoll
daring gale
#

we don't really need to do anything i think

#

Just add support for historical messages

#

And that experiment will work

eternal iron
#

Think i have a solution for historical messages

daring gale
#

ok pr review time

eternal iron
daring gale
#

@unkempt hill OkeyThink

finite monolith
#

are those some devtools

#

or something

daring gale
#

chrome devtools

#

oh it's the smooth scroll i think

finite monolith
#

oh kool

daring gale
#

yea smooth scrolling introduces some overhead

#

sorry wrong ping that wouldve been @eternal iron

eternal iron
daring gale
#

though not sure if it's even fixable

eternal iron
#

Could check if duration is 0 in the beginning and just use the old implementation

daring gale
#

some performance issues with scrollToLive() even when smooth scrolling is off

#

container.scrollTop might be a getter

#

because it alone takes 235ms of total time in 10 seconds

unkempt hill
#

its not a getter

#

but i assume

#

its triggering

#

reflow

#

should probably

#

measure once

#

and then lerp based on assumed value

#

or

#

dont measure

#

and flip the layout direction

#

to be bottom to top

#

then we just always scroll to 0

#

and never have to measure anything

daring gale
#

with the old function pre-PR #27, no mention of 7tv in the performance profiler

#

the high cycle tasks are twitch

unkempt hill
#

what was 27

daring gale
#

smooth scrolling

unkempt hill
#

yeah I think this is just triggering reflow

#

not sure

#

if theres a way to avoid that

daring gale
#

can do this for now ig

eternal iron
#

Messure the performance if you include this before the scrollTop part @daring gale ts if (duration == 0) { container.value.scrollTo({ top: container.value.scrollHeight }); bounds.value = container.value.getBoundingClientRect(); }

#

lol

daring gale
eternal iron
#

I guess we can include a notice on the smooth scroll setting that it may affect performance

forest pawn
#

Looks like things are going great here foxenSip

unkempt hill
#

suprised

#

that this is still an issue

#

on modern browsers

#

layout thrashing has been a thing

#

for ever

#

literally just reading from some props

daring gale
#

yeah im thinking we could add some kind of gauge

unkempt hill
#

causes reflow

#

and takes literal ms

#

away from perf

daring gale
#

where we rate which options might cause performance overhead

#

or performance boosts

forest pawn
#

Google sits high and mighty on their throne and thinks they're perfect foxenSip Im not surprised

eternal iron
#

Btw, is there a way to remove the structuredClone from the extension?

unkempt hill
#

where do we use it

#

and why

#

the alternative

#

is

#

get this

#

JSON.parse(JSON.stringify())

daring gale
unkempt hill
#

yes this is ligitimately

#

how some libs

#

do it

daring gale
#

yeah why remove structured clone

unkempt hill
#

and "recommended"

#

practice

daring gale
#

aside from chrome <97 not supporting it

eternal iron
#

Its not supported in some browsers

daring gale
#

but we can polyfill it

eternal iron
#

Operagx

#

and safari LULE

unkempt hill
#

where do we use it directly anyways

daring gale
#

in the worker i think

unkempt hill
#

oh yeah

#

then thats it

#

opera and safari dont support structured clone

#

specifically

#

from workers

daring gale
#

thing is workers do a structured clone on messaging

unkempt hill
#

yeah

daring gale
#

so how do they handle it

unkempt hill
#

thats the wierd part

#

idk

finite monolith
#

๐Ÿฆ€

unkempt hill
#

i think its not a support issue

#

of the algo

#

but an exposure issue

#

its not exposed probably

#

on WorkerGlobalScope

#

because in those browsers

#

it works fine

#

from main thread

#

and its not like a fancy algo that needs mainthread

daring gale
#

so ig just polyfill it

unkempt hill
#

or anything

daring gale
#

so that it does JSON.parse(JSON.stringify) if no structuredclone

unkempt hill
#

we dont do anything fancy do we

daring gale
#

nah

unkempt hill
#

like structured clone

#

does some fancy things

#

that that cant do

daring gale
#

just make copies for things like event handling

eternal iron
daring gale
#

github actions DIESOFCRINGE

#

what the fuck DIESOFCRINGE

unkempt hill
#

LULE what

#

it didnt install make?

#

what distro

#

doesnt have

#

make

daring gale
#

i am uncertain

#

im just gonna merge

#

i think its scuffed cause i resolved the conflict on web

eternal iron
#

Branches are closing again pOg

daring gale
#

yea disregard its just github being scuffed

#

no shot it just
doesnt have make

#

time for the giga merge

unkempt hill
#

giga cum

#

giga penis

#

giga cock

#

giga cum

#

๐Ÿ’ƒ

finite monolith
#

Giga chad

daring gale
#

nvm actually its just 2 files to rebase

#

surely im gonna pick out everything correctly

finite monolith
eternal iron
#

Left a review on treuks pr after you merged it LULE

daring gale
#

yea i saw that the srcset function was gonna conflict with master

#

but since it was based on my branch i figured just merge and fix it on my branch

finite monolith
#

KKonaW less work for me

eternal iron
#

I left the ability to pass an imageType to it, but should never be needed since it has the avifsupported directly there

#

And instead of always doing 1x, 2x, 3x. I made it so it tries to get the multiplier from the filename, but defaults back to the iterator

#

FFZ emotes are 1x, 2x, 4x so the iterator wouldnt work

finite monolith
#

Ok

#

I see

eternal iron
#

And some of them are just the same imagesize for all of them anyway LULE

finite monolith
#

Dead ass

eternal iron
#

Do you have any identifier on personal emote sets in the code? @daring gale

daring gale
#

there's a bit flag

eternal iron
#

Was thinking in relation to the set sorting in the emote menu

#

Personals should be placed at the top right?

#

Is 4 personal?

#

Just include this in specialCases() ```ts
// Clauses that should place at top
if (s.flags & 4) return -2;

daring gale
#

yea

#

add an enum tho @eternal iron

#
type EmoteSetFlag int32

const (
    // 1 - Set is immutable, meaning it cannot be modified
    EmoteSetFlagImmutable EmoteSetFlag = 1 << 0
    // 2 - Set is privileged, meaning it can only be modified by its owner
    // or a super administrator, regardless of the "Edit Any Emote Set" permission
    EmoteSetFlagPrivileged EmoteSetFlag = 1 << 1
    // 4 - Set can be personally entitled to a user, meaning its content can be used globally
    // but may require additional review by content moderators
    EmoteSetFlagPersonal EmoteSetFlag = 1 << 2
    // 8 - Set is distributed via a purchase, meaning its content must be approved
    // for commercial use by rightsholders
    EmoteSetFlagCommercial EmoteSetFlag = 1 << 3
)```
eternal iron
#

Sorry, very busy eating food atm OpieOP ๐Ÿฅช

daring gale
#

actually disregard enum for now

#

i need to change how types work

#

but thats for a later refactor

drowsy egret
#

What is going on in here

daring gale
#

v3 PagStick

#

did you test out personal emotes @drowsy egret PauseManSit

forest pawn
#

Its great PagMan

woeful stirrup
#

Is kira a sub?

forest pawn
#

Looks like not

eternal iron
#

Idk what the performance impact of the deep watch on emoteProviders is tho

daring gale
#

i denounced the remap function

#

deep is needed here tho a more performant way might be to add a numeric sequence value

#

incremented each time we update the providers

eternal iron
#

It only runs once as long as you dont open the emote menu before all the emote sets are inserted tho

#

Now it takes a second to load the emotes when opening?

daring gale
#

nothing prevents the sets from being inserted here

eternal iron
#

Does it call the remap before the menu is opened?

daring gale
#

ye

#

because it's watching the global emoteProviders value

eternal iron
#

Computed isnt called unless we need them for anything

#

So it never calculates unless we open the menu

daring gale
#

thats correct no computed calls happen here

#

i dont think deep watch is a performance concern

#

as vue reactive values are just getters and setters

eternal iron
#

Not sure either

daring gale
#

it simply hooks to every nested value

eternal iron
#

But they have a warning on performance impact on their site

daring gale
#

idk ApuThink cant really think of a better way though

#

we could watch the emoteMap i guess

eternal iron
#

I saw some stuff about debouncing the setter of a computed value, but that was vue2 or non setup

#

We could consider making a debounceref for the emotemap and emotesets

#

Its easy to make

#

And it would probably reduce rerenders multiple places

daring gale
#

true

#

i added debounce on the intersection observer

#

it waits a tiny bit before loading the emotes in view

#

so when a user is rapidly scrolling it'll avoid downloading images unnecessarily

eternal iron
#

It only starts downloading them tho, it cancels them if you scroll past them

daring gale
#

still wasted bandwidth

#

and clogs network requests

eternal iron
#

At the cost of not showing emotes immediately

#

I wonder if we could track emotes that we have already downloaded

#

So that it would show those immediately without debouncing

daring gale
#

it's possible

#

i can make it a special state

#

if its been loaded before, it wont be debounced

eternal iron
#

I guess we can use the @ load?

daring gale
#

nah

eternal iron
#

or does that fire once the "" srcset loads

#

The benefit of the onload is that it ensures it only skips the debounce once we have the image downloaded

naive hatch
eternal iron
#

Yea that seems good

daring gale
#

what do you mean by "this was moved to below"

eternal iron
#

The same code is just below

daring gale
#

whats the difference?

eternal iron
#
<!-- Zero Width -->
        <div v-if="emote.overlaid?.length" class="zero-width-label">
            <template v-for="e of emote.overlaid" :key="e.id">
                โ€”
                <img v-if="e.data" class="overlaid-emote-icon" :srcset="imageHostToSrcset(e.data.host)" />
                <span>{{ e.name }}</span>
            </template>
        </div>```
this is dosnt exist above the <!-- Labels -->
#

Also, not sure if emote.overlaid.length works anymore since overlaid is a record not an array now

polar magnet
#

<!-- I hecking love typing these style of comments. they're so convenient to type -->

daring gale
#

@eternal iron what is this?

#

why are we doing it this way

#

file names have 0 guarantee to start with a number

eternal iron
#

in that case it defaults to i

daring gale
#

yea but why?

polar magnet
#

peepoGlad but y?

eternal iron
#

ffz emotes are 1x 2x 4x, the other implementation maps it to 1x 2x 3x

#

Which causes wrong emote sizes for high dpi displays

daring gale
#

oh right

eternal iron
#

So yea, its not optimal

#

but fixes issues for now i believe

daring gale
#

seems fine

#

i dont see what would have to change in the fixed size function

eternal iron
#

wdym

daring gale
#

you commented about making the other function trucks implemented the same

#

but it uses width/height values not scale increments

eternal iron
#

It multiplies the base by the index

#

So a 32x ffz emote with sizes 32w 64w 128w we would instead map as 32w 64w 96w

daring gale
#

so this?

charred pendant
eternal iron
#

You dont need to parseint

#

its a string and were gonna use it as a string

#

nvm, im stupid

daring gale
#

but it's not used as a string

eternal iron
daring gale
#

xd

eternal iron
#

You can non null assert the at(0)

#

as were checking it before

daring gale
#

oh right

#

ye

#

KKonaW foo.bar!

#

KKona it's defined, now shut the fuck up

eternal iron
#

the ?? creates a temporary variable right?

#

same as foo?.bar

daring gale
#

it does generate code yes

#

non-null assertions are just an indicator to typescript to not complain

eternal iron
#

Yea

#

So theyre efficient if we can use them

daring gale
#

do be careful with them tho

eternal iron
daring gale
#

alr

eternal iron
#

I wanted a setting to choose tooltip style

daring gale
#

mergeable i guess

eternal iron
#

But can wait yea

#

Just merge and send to google if you want

daring gale
#

yaya

#

just gotta get the process started

#

as it's a mv3 extension surely google won't take long to review right?

#

mv3 will surely help with review times won't it Clueless

#

also do the โœ… thing

eternal iron
#

No branches PagStick

charred pendant
#

im pausechamping im pausechamping

eternal iron
#

I dont know if ive actually tested the personal emotes yet LULE

#

Was on my own branch when you were doing the stage test

#

RIght now we dont have the personal emotes untill we've sent one message, should we do something about that?

#

like have the user fetch his own personal set to add to the autocomplete emote menu

daring gale
#

i know about it but id need to add an endpoint for it

#

so ill do it in a later build

eternal iron
#

Its stored in the db right?

#

So only an issue on the first load

#

I'd make a test version for safari, but we have to sort out the structured clone first

naive hatch
#

PagBounce new!!!!!!

green wing
#

wtf bruh

daring gale
#

AINTNOWAY

#

since when

#

wtf

green wing
#

just now

#

using the new file

#

retried like 5 times

naive hatch
#

FeelsDankMan getting the same error and tried dowloading like 2 times

woeful stirrup
#

All available channel emotes are showing now
can navigate to diff channel tab without issue
Okayeg ๐Ÿ‘

#

on first load
personal emotes aren't showing until i hovered over it

teal knoll
#

NOWAY its updating automatically

#

cosmetics arent changing for me tho OkeyThink

#

is it cuz im banned?

green wing
woeful stirrup
#

Known issue: Changing to no badge and no paint will mess shit up

teal knoll
green wing
#

imagine having a banned account on twitch dot television

#

time to migrate to kick

woeful stirrup
#

oh wait

#

kick PepeLa

green wing
unkempt hill
#

We're a web extension so we can be confident in current versions and compile to recent targets which have nullish op support

daring gale
#

p sure we target esnext rn LULE

unkempt hill
#

Then it shouldn't gen any code

#

Should just be supported by browser

#

Same for ?.

#

Nullish was like ES 2017

daring gale
delicate robin
#

Only way I can get my Personal Emotes to show up in my emote selector is by going to the 7TV website and viewing my Personal emotes than they appear

woeful stirrup
#

Another -ify
How many clones do you have melon

delicate robin
#

@unkempt hill is my grandfather

daring gale
#

however personal emotes will not show up in the menu until you type a message in chat

#

or hit enter on the input box

empty dawn
#

@delicate robin

delicate robin
daring gale
#

no

shell schooner
daring gale
#

someone here asked i think , this will be part of a later beta build (not first one but next patch)

#

figured out confirmation that message was sent

teal knoll
#

i forgor to ask this but would this feature be an enabled/disabled setting?

#

or is it perma?

empty dawn
#

Perma would be weird โ€”SENT

daring gale
#

the suffix isnt part of it obviously

#

its just gonna be your message appears greyed out until it's sent

#

or red if it failed to send / timed out

ruby otter
empty dawn
#

oh

#

that makes more sense

ruby otter
#

i see my 4โ‚ฌ/month are being put to good use, keep up the good work ant holeannytfBusiness

daring gale
shell schooner
#

Very good CoOkey

shell schooner
#

the emote card do be looking cleaner now kek

#

more readable

#

so is there gonna be a search bar for the emote menu Hmm

low wadi
#

I canโ€™t see my paint and badge also should personal emotes work in this version? I donโ€™t see them anywhere UHM

dull siren
eternal iron
shell schooner
#

YEAHBUTFFZ i know

hollow geyser
#

@daring gale issue with the twitch tab in emote menu are accepted or will they be dealt with in the next builds?

eternal iron
#

What is the issue?

finite monolith
#

tf asks a vague question
tf doesn't clarify
tf leaves

eternal iron
#

Nah, i think something has been mentioned before, I just cant remember

shell schooner
#

tabbing twitch emotes takes priority over 3rd party?

dull siren
#

Yes

eternal iron
#

RIght now i dont think we have set up any rules for priority

shell schooner
#

FeelsDankerMan im saying maybe thats what they meant

#

idk

eternal iron
#

I plan on making a "fancy" drag to reorder type thing that can be used to determine orders of stuff

#

For the settings

shell schooner
#

also i think the emote suggestions should have a fixed max height

#

so they dont cover the whole chat

eternal iron
#

True

finite monolith
#

My thoughts are that

#

Oh

#

You're talking about suggestions

#

Yeah

#

That's true

shell schooner
#

also maybe this + hover effect

#

instead of having them all be visible

#

when they are not active

#

keeps the menu cleaner pepeSit

finite monolith
#

I like the buttons because I did those

shell schooner
finite monolith
#

Other than that

#

Idk I think both hiding buttons and keeping them look around the same

eternal iron
#

Sure you dont want to try to code some of the visual stuff? vite automatically updates the website when you save a file, without the need to refresh the page @shell schooner

shell schooner
#

FeelsDankerMan i lack the skills to do that

eternal iron
#

I doubt it, its easier than you think

shell schooner
#

i dont even know how to start FeelsDankerMan

unkempt hill
#

first cum Wankge

finite monolith
#

First cum first serve the cum

hollow geyser
# eternal iron What is the issue?

I decided to clarify first, because I was not sure about the relevance of the problem against the background of the current focus. I don't know what this might be related to. I am using pure chrome instances for dev build 7 tv. On the main account (1 screenshot), other emotes are very rarely displayed in full (only one emote) and the same thing happens with the emotions of the channel to which I have a 3-level subscription (either 5 animated emotions are displayed, or only one (for bits)). If all the emotions have loaded successfully, then there are problems only with the emotions of subscriptions of level 2 and 3 subscriptions (in the menu they are displayed only for the first level) Probably this error occurs only for me, so I didn't notice similar reportsDanki

eternal iron
#

Is this the latest version? I should be fixed

hollow geyser
#

yes

eternal iron
#

Im gonna be afk for 30 min, ill check after

eternal iron
#

Can you open dev tools -> Application -> IndexedDB -> seventv(dev) -> delete database. And then reload the page? @hollow geyser

unkempt hill
#

cum tools -> select date -> 1945 -> fighter jet -> set scene -> alien invasion -> preload tactic -> V formation -> home -> match -> start game

eternal iron
#

Which dev build are you using? @hollow geyser

mossy monolith
#

Maybe add an option for bold mentions as in extension v2? Thinkgi

eternal iron
#

You mean that all mentions are bold?

mossy monolith
#

yes

eternal iron
#

Could do that yea

#

Right now only mentions that target yourself are bold i believe

hollow geyser
#

I really didnโ€™t notice the fix and used dev6 Danki sorry

unkempt hill
#

the white square with black text

ruby otter
#

FDM i just intstalled the beta and when opened the chat on the bttv emotes this showed

noble terrace
#

probably opera browser moment, but 7tv works only in a single tab at a time. So like if I want it to work in a different channel I have to close the tab it's currently working in

vapid veldt
#

damn bruh so many beta and test builds I can't test the shit fast enough

naive hatch
#

I'd like to see the channel listed for twitch emotes again like in FFZ. so many places I've checked out because of the emotes

ruby otter
forest pawn
#

I assume y'all still workin on gift messages?

#

Hey guys I noticed on native twitch when you @ mention someone the mention turns bold, any chance you might reflect that on 7TV end?

forest pawn
#

I dont look at the logs oop

#

So I assume since chatterino does approve 7TV emotes, they would later allow personal emotes? (just so I know for ppl who dont use Chat7)

daring gale
#

unlikely

#

they've already said no

forest pawn
#

That sucks

#

Just bc they're sub perk?

daring gale
#

it's not even a sub perk necessarily it's an entire system

#

it doesnt restrict things to only subs

forest pawn
#

Oh yea bc normal users should also see em etc

daring gale
#

but people will have to ask them i guess

forest pawn
#

Either way chatterino devs are stupid

daring gale
#

they are quite gatekeepy ya

vapid veldt
#

will try to reverse engineer bttv personals that have no documentation but won't allow 7tv personals kek

daring gale
#

i kinda gave up on chatterino ive already been convinced to make my own chat app to replace it

forest pawn
#

Would take a lot of work so keep chat7 during that time maybe?

vapid veldt
#

please call it 7chat Prayge

shell schooner
#

chat7 =

#

chatsen

daring gale
#

a lot of the work has been done via the extension so itll be mainly just decoupling twitch internals for a raw irc implementation

deft tangle
#

Chad7

vapid veldt
#

chat7 = chatterino 7 ELUL

obsidian phoenix
#

very clean very nice

#

good shit

#

love smooth scroll

deft tangle
#

Definitely an upgrade over vanilla chat. But i still use ffz because of how many tool sthey have to customize the chat

vapid veldt
deft tangle
#

I hope there will be a way to keep the old chat when the new chat is pushed to the release version

daring gale
#

feel free to suggest the things from ffz you'd like to see most

deft tangle
#

Do not mind if i do

daring gale
#

there will not be a way to keep the old chat on release i dont think

#

there's just no point

deft tangle
#

Aright, so I'll pester you about all the things I want before then

daring gale
#

if you want a lesser experience just remove the extension

vapid veldt
daring gale
#

but ideally all the best features are all in

vapid veldt
#

I will try to make a list for you mr atol

deft tangle
#

Same

#

FFZ has been feeling really bloated lately. There may be too many options

vapid veldt
#

alternating background color for chat lines would be nice

deft tangle
#

10000%

vapid veldt
#

makes it easier to read chat for me

deft tangle
#

Agree

#

First visual additon

#

That should be like top

forest pawn
#

Get FS chat NODDERS

daring gale
#

thats a 2 minute feature

vapid veldt
deft tangle
#

Yeah so get on it sodaxdd

obsidian phoenix
#

as long as I never have to see these categories again, im set

vapid veldt
#

tbh that's the main feature I want from ffz I don't think the rest matters for me Lime

#

already works better then ffz imo

forest pawn
deft tangle
#

Few other nice to haves in terms of making chat readable without blowingu the entire page to 150% on my 4k monitor

forest pawn
#

Should be worked on by ppl NODDERS

daring gale
#

@eternal iron can you look into getting historical messages working btw? ApuArt twitch rolled out their experiment to 40% of users

obsidian phoenix
deft tangle
#

These three options are some of the reasons I still use ffz

shell schooner
forest pawn
#

It worked fine when using the beta, I saw chat history

daring gale
#

ChattingFast i think he doesnt need to

shell schooner
#

kek โ™ป๏ธ

finite monolith
#

โ™ป๏ธ

obsidian phoenix
daring gale
#

it doesn't work fine, it's not implemented

#

you don't see emotes or anything on historical messages

deft tangle
forest pawn
#

Ah you want to broaden it

daring gale
#

it's a twitch feature

#

we didnt implement chat history

#

we just dont support it yet

forest pawn
#

Could you implement this FFZ add-on in 7TV, its useful for mods

vapid veldt
#

few things

  • have chat messages descending (new messages appear from the top instead of the bottom)
  • be able to flip the chatbox to the left side of the screen
obsidian phoenix
vapid veldt
daring gale
forest pawn
#

Is it intentional when 2 ppl have written the same animated emote they are not in sync?

finite monolith
#

its a firefox thing afaik

forest pawn
#

I use chrome

finite monolith
#

nvm then

forest pawn
#

Git f'd Treu LULE

daring gale
#

would be a scaling issue

#

just means browser is loading a different size on separate occasions

forest pawn
#

Interesting if its the same emote how would it scale different Hmm

eternal iron
#

Is dev tools open and cache disabled?

forest pawn
#

Uhhm I dont believe I have cache disabled

#

I dont fuck around with dev tools

#

Soo no

low wadi
#

are the personal emotes supposed to work now ? wixeisO

dull siren
low wadi
#

they do ?? i have sent messages where are they in the menu ?

dull siren
#

here

daring gale
#

there is an issue if you have multiple tabs of different channels it wont load

dull siren
daring gale
#

close out all tabs then refresh

finite monolith
#

it could be a decent idea

#

if opening the emote menu announced your presence to the api

vapid veldt
daring gale
#

nah personal sets can just be part of the user identity data request

finite monolith
#

i guess

low wadi
# dull siren

they weren't there at first but now they popped up ! i'll test if they work ! FeelsGoodMan

dull siren
odd bone
#

does this prebuild have moderation

#

or ffz compatibility for moderation

daring gale
#

@odd bone theres no prebuild its on the chrome store now

#

but yes it has user cards and the mod slider

odd bone
#

mod icons? Apu

daring gale
#

no icons yet just the slider

odd bone
#

are you planning to have compatibility with ffz settings still or will you make your own

daring gale
#

ffz setting compatibility is planned

#

not for all of them ofc - they have a shit ton, but most applicable

odd bone
daring gale
shell schooner
daring gale
#

will publish in an hour if no issues Okey

quasi carbon
finite monolith
ruby otter
#

is this going to be kept when the extension gets updates?
I personally think it's a good idea Okayge

empty dawn
daring gale
#

it'll be removed from being an automatic popup when the extension goes to live however

#

or, it might be an option, but defaulted to off

ruby otter
#

i see

daring gale
#

or made less visible

#

but yeah something like this will exist in some form Okayeg it's good to inform users about changes

ruby otter
#

FDM both of them are running the latest beta, right side im logged on an alt, left side it's not logged in

empty dawn
#

It autoclosed on my client. Maybe an issue with other plugins or something? Can a console screenshot help to find the issue or is it irrelevant? @daring gale

daring gale
#

you mightve clicked outside it

#

that would close it

empty dawn
#

I didn't click at all

#

waited for twitch.tv to load, popped up, closed immediately

daring gale
#

i cant replicate it

ruby otter
#

ffz was on let me retry

#

ye it was ffz fucking it

daring gale
#

alr

#

looks good enough for a release i believe

ruby otter
#

ThinkO_O historical chat messages chat messages don't really seem to be working on firefox, I dont have any other extensions enabled

daring gale
#

did you find that cosmetics work better now?

ruby otter
daring gale
ruby otter
#

ah

#

i see

#

well then it's only left to check cosmetics

#

just checked they seem to work fine for me SeemsGood

#

scrolling is still kinda dank tho FDM

daring gale
#

wdym by scrolling is kinda dank?

eternal iron
#

The scroll in the emote menu is donk at least

ruby otter
#

ye that's what i mean

daring gale
ruby otter
#

sorry forgot to type emote menu

daring gale
#

yeah thats a chromium issue

ruby otter
#

ah

daring gale
#

will have to change how it works

empty dawn
#

disappears everytime Shruge

eternal iron
#

I guess it could pause the scroll of the chat during its animation? @daring gale

ruby otter
#

changelogs pop up don't show on Firefox, but since it's something not that relevant it can be passed eShrug1 forsenE eShrug2 , everything else seems to work fine

#

FDM also last question, will chat pause be added later?

daring gale
#

wdym by chat pause be added?

#

is it not?

eternal iron
#

CTRL to pause i presume

daring gale
#

oh

#

yea i mean why not

#

though the scroller i made is so responsive that just one touch of your scrollwheel is enough

ruby otter
#

i usually use hover to pause, but it's also rare for me to use web chat LULE im just using now to help with the extension

eternal iron
#

We should provide settings for these kinds of things anyway

ruby otter
#

FeelsOkayMan rechecked everything 1 last time and everything seems to work fine both google and firefox

empty dawn
#

the update notice also appears every time I open a new channel. is it intended?

daring gale
#

fixed now

empty dawn
#

thx

#

I can't use chat for a few seconds when going back to a tab with a busy chat. chat is frozen for a few seconds and have to wait for it to load all messages before I can click into the "send a message" field

empty dawn
#

tab completely crashes if I wait too long before going back to the tab with busy chat

#

seems to be an issue

daring gale
#

@unkempt hill seems to be broader issues with recursion deadlocks

empty dawn
#

it didn't crash the tab but took over a minute to load the chat. Smooth scroll set to 500ms, line limit 150, if that's relevant. Waited 5-10 Minutes before going back to the xqc tab

daring gale
#

try disabling ffz @empty dawn

#

im not able to replicate this atm

empty dawn
#

will do

#

seems to minimize the issue. without ffz, chat is frozen for just 2-3 seconds instead of more than a minute

empty dawn
#

second test without ffz.
Left xqc tab without pausing for ca. 10 minutes. went back, chat froze, player paused, tab not reacting anymore. took less then a minute to continue tho.
maybe someone else could try to reproduce.

deft tangle
#

Still needs that alternating background

daring gale
empty dawn
daring gale
#

disable bttv?

empty dawn
#

will do

#

disabling bttv solves the disappearing patch notes btw (maybe features like auto-stop front page video and instant join chat when going to a channel did that)

empty dawn
#

chat still freezes but only for a few seconds. Will do another test in 10-15 minutes and see, if it will be longer then.

daring gale
#

i'll have a look for beta 3 at refactoring the chat loading sequence

empty dawn
daring gale
#

can you show the console pls

#

when a crash like this occurs

#

especially after it starts responding again

empty dawn
#

console after it works again. chrome doesn't respond at all when it happens, couldn't open console

daring gale
#

with debug logging

#

top right click on "default levels", enable verbose

empty dawn
daring gale
#

interesting that it completely spams the endpoint

#

that might be linked

empty dawn
#

the yellow ones are new

#

also these two appeared after the next test

#

the scroll-blocking "wheel" event seems to appear when chat is working, too. might be unrelated

eternal iron
#

Yea, those yellow warnings are unrelated i believe

dawn shadow
#

Somedays ago I asked if this new beta works in opera gx (if anyone can remember). Since its in the chrome store, its working fine! Looks awesome. I like how the Emotes are seperated by different Addons! Superb - keep it up