#developers
1 messages · Page 2 of 1
I'm getting a very different development experience from my WSL compared to mac. Does vite not support hot-reload on mac?
Do you have to get somekind of auth token for font awesome to get the 7TV website to build?
Getting this:
PS G:\Projects-7TV\Website> make deps
yarn
yarn install v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.2.1/fontawesome-common-types-6.2.1.tgz: Request failed \"401 Unauthorized\"".
where do I get the token or can I work around it
i think you can? work around it, but i'm not personally sure how
Sorry for the ping @hasty kernel, but how could I get the paid FA icon package without the token, so I can build the website?
exactly
common dexerto 0 IQ moment
😱 kick is SUBSIDIZING its competitor (twitch) by using AWS 😱 😱 😱 😱 😱
I wonder if you could build a streaming service that used YouTube to host the streams 
just unlisted streams
with a different UI and chat system
it's TOS for sure
I mean, it's just embedding unlisted streams
nothing illegal about that
I was running in hosted mode
Is nobody else getting an automatically generated .yarn/cache directory when making deps in the Extension repo?
which version of yarn are you using?
3.5.0
It's generating this offline cache https://yarnpkg.com/features/offline-cache
An overview of Yarn's offline cache, a feature that allows Yarn to work just fine even should the network go down for any reason.
and I dont know if we want that or not
I'm using 1.23, I imagine most people are still using version 1.X
damn thats ancient
I started a discussion about that https://github.com/SevenTV/Extension/discussions/505
Does anyone know why the 7tv websocket keeps throwing 4012 reconnects?
wss://events.7tv.io/v3
Appears to do it on the 36th message each time
I'm not sure we use the new yarn
iirc its very different
v1 is almost a completely different package manager
you can probably tweak it to get it to run with new yarn, but make sure you dont push yarn.lock or anything
the eventapi has a ttl as a stopgap
it will kill connections after a certain period of time, regardless of activity
just send a RESUME op after you reconnect
the current connection lifetime is set to 15 minutes
it's been set pretty low in order to free space because we are at points reaching max capacity on the current infrastructure
(you may sometimes be rejected from connecting with a 503 "This server is full!" error, that is why)
Okay thanks. So would the solution Melon gave help or would I just have to reconnect?
A lot of people using it then wow. Do you have any plans of a discord 7tv bot cos that's what I'm using it for
youll need to reconnect regardless
but implementing resume is good practice
it can replay missed events and restore your subscriptions+caches
I will look into this thank you 🙂
Where can I find the component that renders history messages? Like the ones with the timestamp https://gyazo.com/15e1370c755d098f6eed58e1041d65f1
Because ChatList doesn't seem to handle them
To clarify a little bit, I'm implementing a blocked phrases feature and I need to skip rendering past/history messages
@exotic sigil https://github.com/SevenTV/Extension/blob/786f77f2a617d6a00017c6da4829eeb36007421d/src/site/twitch.tv/modules/chat/ChatController.vue#L254
seems like the historical message handling is here
somehow missed that, tyvm
is SevenTV.ActiveEmote timestamp when it was added to 7TV or the channel?
the channel
ActiveEmote represents the emote IN the channel
.data is the actual Emote
Petition to replace the BTTV logo with a forsenE, since forsen is the only one that still uses it.
LOOOOL
then you have aris who doesn't use anything at all 
hasL 
but hasan is irrelevant
but it would be funny!!!
Why 7tv doesn't use labels to sort issues on GitHub so people can easily filter?
real question is why isnt this merged already
adds "bug" and "enhancement" labels without needing to manually
if a admin gave me permission to label issues it wouldn't be like that 
give triage role
Triage 
I don't know if the topic of testing has come up before, but I think the extension is on a level of maturity and size that it should have tests, opinions?
Well it has the nightly version. Sorta.
yeah but i think they meant code tests that run automatically and verify parts of 7tv but dunno what would you test in 7tv
Yeah I meant code tests, like unit tests. There's alot to write tests for, render output, shared logic etc.
and writing tests will definitely lessen the amount of bugs in the future
I mean if you got the time to write them go for it
a better method for changelog entries is needed as every individual merge causes merge conflicts in every other pr
when i try to build the extension and test it it cant find the manifest
it says its searching on :8080 and the server is hosting on 7444 but i changed the environment variable and it didnt help
says connection refused
and idk if it's a separate issue but when i try to test my fork the 7tv option just doesn't show up even though it's logging in the console
i just use build:prod script and it works fine for me
I'll try that
I'm not a vue developer normally I'm just implementing the issue about showing ffz and bttv modifiers
how do you run the server then do you just npx vite
icon still isnt showing in twitch for me
like the 7tv icon in twitch for settings
it like requests to the server for the host manifest or smth
it i highly possible that this is a dumb question bc i am not an extension dev normally
yeah idk about using the vite server specifically, i just use build:prod
should work perfectly
hmm
yeah it seems to be working im just not seeing any visible changes on the site
its showing on the console but nothings changing
@patent wing you don't use HMR? 
that's an insane time loss 
@lethal horizon manifest doesn't matter, in dev env it will always fail unless you have an http server serving dist-hosted/
but vite should still work fine
makes sense
i think the first time i tried using it it wasnt working so ive just been using build:prod
💀 bro wtf
but for some reason the 7tv just like isnt showing do i need to build-hosted ro something
not much of a time loss, just write code correctly once :)
that's horrible, i put a lot of effort into building this huge developer experience improvement
tried in both firefox and chrome
i changed like 2 lines of code so shouldnt be huge
which is fine just use chrome
but like now the extension is kinda working but again no settings icon and i cant use 7tv features
show console
linux
404 on the blob for worker data which i assume is just bc it doesnt exist yet
cv+paste it then
Download the Apollo DevTools for a better development experience: https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm
2amazon-ivs-wasmworker.min-f1942659be37261342a2.js:1 Amazon IVS Player SDK 1.18.0-twitch.1-rc.5
/greninja:1 Access to XMLHttpRequest at 'https://c.amazon-adsystem.com/cdn/prod/config?src=652&u=https%3A%2F%2Fwww.twitch.tv' from origin 'https://www.twitch.tv' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
c.amazon-adsystem.com/cdn/prod/config?src=652&u=https%3A%2F%2Fwww.twitch.tv:1 Failed to load resource: net::ERR_FAILED
seventv.useSettings.3.0.5.js:1 [7TV] [INFO] <Site> Using Local Mode, v3.0.5 (context unset)
seventv.useSettings.3.0.5.js:1 [7TV] [INFO] 7TV (inst: 1681695101358) is loading (context unset)
seventv.useSettings.3.0.5.js:1 [7TV] [INFO] IndexedDB ready (site/twitch.tv)
blob:https://www.twitch.tv/7b08ab84-03e3-49f6-917f-5945f218c618:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
seventv.useSettings.3.0.5.js:1 [7TV] [INFO] Received worker data (133177 bytes) (site/twitch.tv)
seventv.useSettings.3.0.5.js:1 [7TV] [INFO] User Settings loaded (site/twitch.tv)
player-core-variant-a-0485440ae4e367059b8e.js:1 Moving to buffered region 0.083 0
i.play @ player-core-variant-a-0485440ae4e367059b8e.js:1
2amazon-ivs-wasmworker.min-f1942659be37261342a2.js:1 Amazon IVS Player SDK 1.18.0-twitch.1-rc.5
DevTools failed to load source map: Could not load content for https://c.amazon-adsystem.com/aax2/apstag.js.map: HTTP error: status code 403, net::ERR_HTTP_RESPONSE_CODE_FAILURE```
sorry
anything after that
nop
nothing 7tv after loading settings
i did add a setting so maybe my code just sucks but i wouldnt expect it to fail quietly
enable verbose logging
is that a build setting
oh wait this is also prod bc matin
aight 1 sec
yeah i know that bit
same stuff then some warnings about setTimeout handlers taking a while
and that comes from twitchcdn
do u have verbose logging on
yes
ah just used the vite server and it work 
Hastebin is a free web-based pastebin service for storing and sharing text and code snippets with anyone. Get started now.
well thats good to know i guess
also twitch fix your cors smh
are you sure this is on @lethal horizon
yes
looks like that except in light theme bc i installed chrome just for this
if i turn verbose off it doesnt show the forced reflows or the [vite] connected
fresh install
did it ever work before
nope
i only added this code in chatmodule where it was adding the other settings
declareConfig("chat.hide_emote_modifiers", "TOGGLE", {
path: ["Chat", "Style"],
label: "Hide FFZ and BTTV Emote Modifiers",
defaultValue: true,
}),```
then added that in the tokenizer code where it hides modifiers
} else if (hideModifiers.value && nextEmote && backwardModifierBlacklist.has(part)) {
// this is a temporary measure to hide bttv emote modifiers
tokens.push(toVoid(cursor, next - 1));
} else if (hideModifiers.value && prevEmote && part.startsWith("ffz") && part.length > 3) {
// this is a temporary measure to hide ffz emote modifiers
tokens.push(toVoid(cursor, next - 1));
} else if ((parsedUrl = this.isValidLink(part))) {```
so i think the code should be fine?
is there anything in chrome://inspect/#workers
uh uncaught window is not defined
nothing else
on the twitch worker blob from 7tv
may be an issue
chrome://settings/help

what version does it show there
Version 103.0.5060.53 (Official Build) (64-bit)
yeah thats a bit old
me when i dont update my repos in months
hmm it should be enough normally.. though yeah that's a fair bit behind
in theory Chrome 97 is the minimum supported version
okay i gotta go good luck tho
hmr is insane it's worth getting it to work for anyone who plans to work with the extension

if not ill just start the pr and ask someone else to test for me
nixos 
~~just make a backup of /home/yourname (or whatever it is on nixos)
~~
i dont have anythign with nearly enough storage for that lmao
gonna get a new laptop soon though
probably get like void linux on it or something so i dont have to worry about all the purity stuff while staying kinda lightweight and cutting edge
and without using arch

see i didnt even need to ask
he uses arch btw
cringe
if anything
thats - rep
now you've got - rep from linux users
AND normans
way to go
im on a systemd system rn lmao
yeah aur is aweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesome too
tf
system update finished mid type
i guess locked the e key down
ok i updated to 112 and same error
??? just rebuilt and it's working again
had to completely remove and reinstall aside from just hitting refresh
did you do this?
you probably had the dead worker still alive
you may have also not built the worker entry properly
sometimes you have to build a full build first
before running
ok code works swag
time to push
dont have ffz premium so i just hope that works too
ok pr #526 is officially there
yall should really write a contributing.md or something with a style guide or like a template for issues/pull requests
so anyway what exactly are requirements for contributor badge
oh i see
makes sense
yeah i just added a switch in settings lmao thats not gonna count
basically either buncha small things or one big thing
well i might hang around and fix some issues if i have time but i also have a bunch of schoolwork so we'll see
My PR for issue forms was merged today, so new issues should be formatted nicely :)
yeh might look into doing that aswell
@lethal horizon did you install chrome from the official google website with .deb package? if you install it through some app store it might install as snap/flatpak and cause issues
again its nixos they dont reall do the whole "install from the official site" thingy
need everything to be pure and functional
but it works now so its fine
oh right, didnt see that you are using nixos
https://github.com/SevenTV/Extension/pull/501 is ready to merge.
This added an option to highlight messages from moderators. (default to off)
small change but you should remove the dot at the end of the changelog to match with the rest
fixed
maybe its just me, but what is the proper way to prevent the plugin from loading in hosted mode?
from a dev perspective
I know the env variable points to localhost, but that seems to still try and load in hosted mode
well it wont do anything because it cant read a manifest
hmm I had to go to chrome://inspect/#workers and terminate the worker, that seems to have "fixed" my issue
if your page hangs (usually this happens when a module file is hotreloaded, it leads to hooks being recreated which instantly causes an infinite recursion) then you need to go kill the worker as well, since it'll also hang
need to add a few more files to full-reload list that reminds me
yes, I've gotten the infinite recursion issue more than once, would be nice to be able to terminate/reload the worker when doing a page refresh as well
@naive mesa about your twitchdatabase following api, is there a way i can query more than 100 channels, or how do get info other than the 100 channels displayed?
how should i change the cursor
oh wait that's the twitch api limitation
my API is undocumented so just be vary of that when using it. But otherwise, requests have a cursor, which you can use as a query parameter to get the next page
I would recommend just using Twitch's API tho
isnt the cursor in your api's response the current page cursor
in twitch's it's the cursor for next page
man finding which component renders the section of the DOM you're trying to patch is ridiculous
it's like different for each component
I mean I've been making good progress, it's just slow
haven't tried vue devtools yet, but I'd imagine it could help?
its not vue tho, its vue hooking into react 
two different frameworks with different philosophies (albeit similar in the end)
ah you meant like that
it's ok now .w.
no thanks

no thanks 
When “mutating the returned node” do you mean the “return” of the _reactInternalFiber property of a hooked component?
huh?
I was asking about this pretty much https://github.com/acdlite/react-fiber-architecture
I think you have a misunderstanding of the way this system works
you don't ever touch and should never touch the fibers themselves
let the hook tools do that for you
the hook tools will efficiantly scan neccissary dom and fiber trees to find components matching your criteria
it will then patch those components directly
giving you control over their lifecycle
from then its as if you had direct access to the components lifecycle functions, and just a small bit of its data
the hook tools also provide an easy way to track out react nodes as they pass through fiber and the other parts of the life cycle
for use in Teleport
this is what the trackRoot and domNodes fields are representing
if you mean to mutate things as the component renders them
then you can add a render function in the hook props
which will execute after the component has been turned into a new vdom tree
allowing you to change what gets rendered before it hits fiber and gets diffed
if you mean to just insert vue elements in place or inside of react components you can use trackRoot and do a teleport to each instances domNodes.root
if you mean to just insert vue elements into a specific part of a component
you can combine the two
if you find a specific part of a rendered output in the render hook, you can call ReactHooks.getTrackedNode(name, rElement)
when the vnode tree passes through fiber and eventually onto the dom
instance.domNodes[name] will be populated with the actual dom element
best associated with the vnode you tracked
which you can then teleport into, like above
if you mean to hook more internal parts of a component, your options are limited, if the component or its class prototype exposes the things you desire to modify
you can use the ReflectionHelper.defineFunctionHook() method
which will automatically hook and allow you to intercept method calls
even if other extensions hook the same functions, or if the functions are ephemeral
as long as they belong to an object
this is why functional components are impossible to hook, without situational hacks, like you saw in the animated avatars implementation
regardless I beleive you have a misunderstanding of what fibers are
or how react's internals operate, modifying fibers wont do anything, they are not real representations of the things you want to change
there are multiple extremely similar types in react internally
Components, Elements (x2), VNodes, Fibers, DOM Elements
the hooks are adapted such that they look for stateNode matches to your selector
dom nodes hold references to their vdom fibers
fibers hold references (ocassionaly, depending on hierarchy and component type) to their owner component instances
there are also multiple representations of component instances, of which we do not have access to all of
its all very situational what is accessable and what is not
the hook tooling attempts to generalize this out as best as is possible
to work in the most possible amounts of situations
you should not be touching any internals directly

Should the config keys be variables in a dictionary or smth
hey, is there some getting started for the api docs?
i only know of https://7tv.io/ but i dont know how i interact with it at all
7TV Developer Portal.
what do you want to do in general
nvm got it, but i've wanted to fetch the emotes of a specific emoteset :)
yeah
in that case do a get request for https://7tv.io/v3/emote-sets/<emote-set-id>
https://github.com/SevenTV/Website/blob/dev/src/apollo/query/emote-set.query.ts#L67
If you dont need that much info for the emote set, you can use GQL with GetEmoteSetMin or GetEmoteSetForCard query
oh nice, thank you!
i noticed that the chrome web store extension hasnt been updated, causing a new update on install. this seems counterintuitive
can someone check if this bug happens to you:
go to this link: https://embed.twitch.tv/?channel=xqc&height=100%25&parent=embed.twitch.tv&width=100%25
does it show that 7tv needs a new update, even though it is updated on https://twitch.tv ?
one is running on hosted mode tho
hey guys, just wanted to let you know you're doing a great job thank you
surely one day i'll start earning cash online so i can start subbing 
This is on the “release” build, not dev right?
yes
yes it happens on both stable and nightly
hmm interesting
this is what i see on the usual ttv website
(not using any dev/experimental stuff)
it's a CORS issue
Hey i wanted to ask if "make deps" is an actual command, which i don't know of, because i would love to contribute and make it easier for new developers to get in to developing
yes it is, you need to install GNU Make
it will run the deps section in the Makefile
alternatively you could just run yarn which does the same thing. it's just standardized into a Makefile so that we can make sure theres a consistent dependency structure in case more than just JS dependencies are needed
yea i saw that as well in the makefile, also do you need to install Node-Env in Linux or is this another Windows exclusive thing?
You might want to get WSL if you're on windows
Environment is untested on windows shells
Cmd/PowerShell, not tested
works pretty well so far, just needed to install some standard stuff
i would like to make the readme easier to understand, but i don't know how dumbed down you'd want it to be
is there a function or event, when the chat finished loading? I implemented the hiding of the gifted subs leaderboard, but it seems stupid to change the css everytime a message loads 
i did test it
worked fine enough
i just had to get rid of the NODE_ENV=production stuff
there is a node module called "win-node-env" which worked for me
that's good then
I wonder how much the performance would improve using the windows vs wsl
Is there a way to make 7tv work in twitchls.com website?
that would be really really awesome since it's way more lightweight on pc compared to standard website
you probably want to ask the dev of that website to add support
is there a similar thing that supports 7tv? like any script that uses embed+chat instead of full scale twitch
How about Streamlink with chatterino?
https://streamlink.github.io/index.html or https://streamlink.github.io/streamlink-twitch-gui/
https://github.com/SevenTV/chatterino7/releases?referrer=7tv.app
A command-line utility that extracts streams from various services and pipes them into a video player of choice.
A multi platform Twitch.tv browser for Streamlink
Chat client for https://twitch.tv. Contribute to SevenTV/chatterino7 development by creating an account on GitHub.
Thanks a lot! I will try it
wow this is amazing, nice
a lot of the github software i like uses Chocolatey, I guess it's time to try it
if you have any other software suggestions I'm all ears (if it's too off-topic you can DM me)

Something Anson would look at
it's the YouTube Musical Spectrum
https://chrome.google.com/webstore/detail/youtube-musical-spectrum/ddpceafiohdlkiemibjgplcicblnfggi?hl=en
it pleases my autism
trying to see if i can get it works on twitch
should I attempt to rebase my PR or will one of the maintainers do that?
bone structure 
but yes it's a spectrogram and I look at them frequently
they're a useful tool for audio work
of course you also work with audio
mf's spectogram looking like the iron lung camera
lol
wtf is this shit
8-bit music waterfalls
Who calls spectrograms waterfalls? Please stick to the terms for these things that we're used to.
(
sorry)
it probably shows it over time, hence the "waterfall"
(top is current, then falls down; a video would probably be better)
I know what they are and how they work, but they're just called spectrograms
Since the direction it "falls" doesn't have to be down
They're often scrolling right to left
Yeah
also random question does twitch show that you can ban/timeout other mods now?
that would be useful
Is that actually twitch?
I always thought it was a 3rd party feature
that looks less like a bug
and more like a design choice
so the message lengths dont fuck up
Ye I checked both with/without extension it’s the same
i wasn't referring to the spectrogram itself but the effect where it shows the history
idk what they call them in college but it's used in the industry
which languages/scripts are popular these days for the easygoing freelancers? (for average baj IQ
)
i heard great things about vue
Vue is just a JavaScript frontend framework not a language
that's the one we primarily use at 7tv tho
depends on what you wanna do
JS is easy for beginners and can do both front and backend
yeah I just want something easy and fun to learn so I can have some income in my spare time
i tried learning c# and game dev stuff but it just takes too much time and had irl stuff came up had to quit, left a bad taste
sorry, yea i forgot to mention js
it's like a must at this point i didn't even need to ask it hahah
are you like starting from 0 with JS?
unfortunately yeah 😅 i studied linguistics in the uni long ago and they never really touched any programming or anything
ended up being neet home security
also probably answered on google but, does github usernames really matter? do companies look for real names or just using a nickname is alright (even though theyre all taken
)
sorry if it's going off-topic i'll stop after this 
You can change github name later
And quick google search tells me HR dont really care about github names (as long as it is not around
territory)
And if you are starting from 0, then look for some yt tutorial you can follow along, there are plenty of those
Also maybe try to not use chatgpt to help you with stuffs
changing your github e-mail is dangerous for your commit history though huh?
oops nvm enough offtopic 
twitch making design changes be like
that just stays on screen now with the extension
previous style for reference
it doesn't happen all the time (the purple box staying up)
I'd instantly be like
thoughts?
https://pyscript.net/
Run Python code in your HTML.
what would you use this for? Python already has a few ways to host servers(flask and django come to mind) and it's pretty easy to call python functions from js with these.
it's not
isn't it just v-on:click="method_name" (?
it wasn't an issue with the onclick. Had an issue with onClickOutside, but fixed it by passing the element ref to the ignored refs options
that didnt work
or depending on heirarchy @click.capture.stop
i mean its a mockup
looking for someone to implement this
oh xd
@rotund pivot do you prefer people that want to contribute fix bugs or add features? there's prob a lot less that want to fix bugs huh
anything helps 
i dont know
in my book fixing an annoying bug weighs heavier than adding a new feature, that's my 2 cents
@exotic sigil
your pr actually made the emoji menu usable
thats nice to hear :)
sorry for lack of reviews on PRs im dealing with a lot of other stuff
@rotund pivot does something like this look alright?
i just took the first emoji in each category and displayed it
i based this set of icons on twitter/ios keyboard menu
looks like its the standard
is this set anywhere or is it just a coincidence

ye as far as i see it's just coincidence, but i'll see what i can do without ruining the code too much 
the emoji menu is already a mess 
looks like this now, is this any better?
much better
the hand for "people and body" can stay
idk why we have it split into 2 categories anyway
everything else uses "smileys & people"
yea pretty sure it's grouped by the symbols itself
unicode standards
anything that uses anything else is wrong
these are defined groups
the icons are defined as well I beleive
do i need a issue or something to make a PR?
also this cant stay like this
you should be using the emoji components atleast
these are just regular text glyphs
which will be displaying using the systems style
not our svgs
ah so i have to make the svg's first/find svg's right? I think I'm outa my field there, but will try to look for something
can i ask why the text glyphs are not allowed? Is the system style that bad?
the svgs are all already included
they're being used for the actual display of the emojis
ah i see, Surely this will be easy for me to implement 
just use the SingleEmoji component
all emojis are compiled into a couple of parallel svg atlases
and imported into actual page locations using the <use> tag
all you have to do is specify the size and glyph id
thank you ❤️
quite new to this open source stuff and i'm pretty lost
looks like this now
ok will make them smaller
first i need to delete my other pull request, because i committed on the main branch 
or maybe submit your pr first
i wanna see it in action
and then we can decide how big they should be
yea will do in a sex 🙂

sec*
PR is submitted if you wanna take a look
tried my best 
do i have to request a review after every change in my PR or do admins in my PR get a notification if i made a commit/comment?
they see it
@quick ibex
you think it would be possible with the mod slider to stop chat whenever you click on the mod slider button?
would make it better imo, unless im stupid and its already an option
thats possible but i don't think excellify would do it
you can make a github issue for it
it might be taken up some time, doesn't seem that difficult to do, just a few structural tweaks
an aside, looks like there's already code to support mouseover/altkey chat pausing, but I don't see options/settings to enable it
because they are native settings
Oh the native settings 
so how do you know that someone else isn't already working on an issue?
you could also probably ask here
that's the thing I'm pretty new to vue and don't want to reserve a issue just to fail completely when someone else coulda been working on it that whole time
was thinking of giving this one a go though https://github.com/SevenTV/Extension/issues/553
i guess you could just comment on it that you're looking into it, if you decide to not pursue it anymore you ninja delete your comment 
lol
i mean these smaller kinds of open source projects i guess it's not so strict
It's fine if a PR randomly pops up that fixes it and I've already been working on it it's not a big deal
well that wouldn't be very nice
god damn I'm trying to understand how the extension "hooks" into twitch and it's making my head spin

i would love to help, but i have no clue as well
is it possible to have embedded chat to use 3rd party emotes

My emote 
working on new user card 

looks clean
CSS Grid 
?
tooltips
ive been using grid since i started the extension wdym
nvm that was probably melon then
grid > flex
its less of a pain in the ass for sure
So strange, I was running extension locally just fine for a few days, but all of a sudden it doesn't seem to work at all. It generates a dist folder, and there's no vite errors. The index.html it generates is blank though, and the extension doesn't do anything.
Killed worker and restarted chrome, same thing. This error seems related
even tho running no errors

are you making shit up or recreating something 
you have an aggressive content blocker
I had the same issue with brave browser
both simultaneously i took some inspiration from the layout treuks made a while back
I haven't changed any extensions since it stopped working though. I already tried disabling ublock too. I think it might be a problem with it building. Surely there's supposed to be more in dist/index.html than this right? That's the first page it opens when you install right? ```<!DOCTYPE html>
<html lang="en" data-seventv-app>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,400&display=swap"
rel="stylesheet"
/>
<link href="https://fonts.googleapis.com/css2?family=Work+Sans:wght@700&display=swap" rel="stylesheet" />
<link
href="https://fonts.googleapis.com/css2?family=Work+Sans:wght@100;600;900&display=swap"
rel="stylesheet"
/>
<script type="module" crossorigin src="http://localhost:4777/src/options/options"></script>
<link rel="modulepreload" crossorigin href="http://localhost:4777/assets/seventv.useUserAgent.3.0.6.js">
<link rel="modulepreload" crossorigin href="http://localhost:4777/assets/seventv.useSettings.3.0.6.js">
<link rel="modulepreload" crossorigin href="http://localhost:4777/assets/seventv.StarIcon.3.0.6.js">
<link rel="stylesheet" href="http://localhost:4777/assets/seventv.style.3.0.6.css">
</head>
<body data-seventv-app>
<noscript>
<strong
>We're sorry but 7TV doesn't work properly without JavaScript enabled. Please enable it to
continue.</strong
>
</noscript>
<div id="app"></div>
</body>
</html>```
extensions work a bit differently then "websites"
index.html doesnt do anything in regards to twitch
^^
it's only used for the options page
oh aight so it's normal to just have <div id="app"></div>
ye it's just a template, vue replaces this element at runtime
If I click on extension it shows blank square
something is wrong with your vite , try removing dist/, rebuilding and reloading the extension fully
what does your .env.dev look like?
i had an updated version of their mockup
thats poggers
i found out you can actually query your own message history in any channel
even as a non mod

ligma link?

yeah unless you have the APIs hosted locally, you might want to use the production urls
except for VITE_APP_HOST
could be huge for a website or the add on
yeah i m adding that on the new user card
if you click on yourself you'll see your own message history
doesnt work for anyone but yourself if youre not a mod though
looks up how to erase own messages
maybe make it toggable? I can already see all the people commenting this new thing they don't understand how it works
cant you just use randers chat history by default so it works on all users
well, it's tos

third parties cant store messages beyond 24h
just pull the last 24h then 
ligma
i mean it could even just show you the messages from your session
yea i'll add a toggle for it sure
yah that will still happen , similar to chatterino
it'll pull the live messages
could you paste your .env.dev? I did what anatole said and deleted dist, deleted extension, re-ran start command, then loaded unpacked again and same issue. Also disabled every other extension except 7tv. 
make deps?
NODE_ENV=development
VITE_APP_API="https://7tv.io/v3"
VITE_APP_API_GQL="https://7tv.io/v3/gql"
VITE_APP_API_REST_OLD="https://7tv.io/v2"
VITE_APP_API_EVENTS="wss://events.7tv.io/v3"
# VITE_APP_HOST="https://extension.7tv.gg"

just don't commit it into git
yea my dockerfile runs that CMD ["sh","-c", "make deps && yarn start"] it has a couple warnings while running make deps but I don't think they matter
ty
I tried using wsl instead of docker and now it says it's generating dist but never does

if youre using wsl you need to use the linux file system
you cant write to windows
(or, technically you can, but it'll be super slow and unreliable, since it'll run through a different protocol)
hmmm never used wsl before, shouldn't it show up here? or am I just listing windows directories again
idiotic idea
way to get the only living log tool taken down
and need to google how to use the linux file system
because the most popular extension
lets anyone use it
the same extension
that some staff already hold a grudge towards
and surely wouldnt take any chance to shut a feature down from
this is a windows directory
that is mounted on the linux system
ok so I think I get it, I need to do everything in wsl, including clone the repo to there instead of windows right?
that's what worked for me
yea this is why i wouldnt add it
if we added the logs api twitch will dmca it
since it's already against TOS and only alive because twitch hasnt given enough of a fuck to take it down so far
yeah
recent-messages
but useless
for us
since we already have history
and its not indexed by user
its only the past 800 messages
it should probably just be
like chatterino
just a reorganization of messages that are already loaded
and at the top
a little header
- end of current session -
or something
thats what i mean
thats what chatterino does
as soon as a message goes out of the scroll buffer
its gone from the user box
except I think we can just unify it
so if we can fetch it, we fetch it
and if we cant then its only live
with a little info message that informs you why there are no messages above
and its not that the user hasnt said anything else before
@hasty kernel so for the video player stuff I was working on to pause the video on click, I should be added a VideoPlayerComponent to the twitch.d.ts file using the react tree?
Ok thanks, that's what I was looking at last night and the mediaPlayerContext you mentioned helped
Yep it works now after switching to WSL. Must have been some weird shit with docker. I didn't change my docker setup at all tho from the time it was working to when it wasn't tho ¯_(ツ)_/¯
thanks for help everyone
https://twitter.com/TwitchSupport/status/1654229386755813376 one more button

🥺 please keep the yoda stare forever

@hasty kernel can i get contributors role ? 

contribute to the development of the 7tv project
significantly contribute*

free 50 bucks
@hasty kernel it can look like this instead
its the same shit as
= avatar outline with channel accent color + red live bar
i dont really see the point anyway
how often do you see streamers chatting when theyre live
instead of "live" you can just put a number there instead
rounded up if its too long
I like that idea
what's the best way for me to see elements that don't commonly show up on a page? such as hype train elements? I'm just going to click random high viewer streams until I find one I guess, but I'm not even sure how many different community highlights exist
i forgot twitch literally added a section on the home page for streams with a current hype train
anyone wanna work on "reset to default" feature? 
@hasty kernel could you spare some time to look at PRs?
When I run yarn start and try loading the extension into chrome, I get the setup screen but the extension wont actually load on twitch and I have several errors in the extensions page. It says they're just warnings but it's not loading so 
Not sure how to proceed.
- Manifest version 2 is deprecated, and support will be removed in 2023. See https://developer.chrome.com/blog/mv2-transition/ for more details.
- 'scripting' requires manifest version of at least 3.
- 'content_security_policy': CSP directive 'script-src' must be specified (either explicitly, or implicitly via 'default-src') and must allowlist only secure resources.
those "errors" are normal
you should read the console logs when you are on twitch
also see above convo from a week or so back
Ah, saw you mention aggressive content blocker. ublock origin was stopping it
Hm, still only seems to be half-working though. Have a whole bunch of console errors
One of them is a connection refused to localhost:3000. i know on mac there's usually a popup saying to allow connections when you bind locally, but i'm not getting that when running yarn start
you can just ignore them
and ublock origin shouldnt be a problem
unless you have some special filters
i just have all of the built in filter lists
ALL?
I've never enabled all of them
that seems a bit excessive
Not the region ones but all the ones above it yeah
well that's not too bad
maybe try with just the default lists
if that works, then enable each one and test to see which one is the culprit
I totally disabled ublock original though and parts of the extension still dont work for me though. BTTV/FFZ emotes are loading but none of the 7TV emotes show. Is that expected since it's looking at a local server?
no
did you modify some code
also check this https://github.com/arkenfox/user.js/wiki/4.1-Extensions
times of particularly high demand can make loading emotes from the 7tv servers fail, or take a long time
make sure your .env.dev is updated
Didn't modify anything. For some reason it mostly started working now after rerunning yarn start again. 7TV emotes still arent loading but everything else in the extension works so far
well I mean the env variables point to the 7tv apis, so if you don't have them running on localhost, then it's not going to work 
what's the difference between a property hook and property proxy? why would one be used over the other?
I guess to me it sounds if you want to define your own handler instead of the default set, get, value hooks
definePropertyProxy() just returns a raw proxy which you'd need to implement yourself
definePropertyHook() returns something you can use in practice
you shouldn't need to use the former in most cases
also in 90% of cases you only need to care about value()
I figured, it was more of a curiosity
yeah thats what I suggested as well

feel free to open another PR if you have a proper fix since the one by batyodie was not correct
or they could update the PR with the suggested fixes
Not sure if I should leave a single comment or start a review? I pressed start review and it's pending 
ah yeah
proxy shouldnt be used
property hook is the base of all hooks
it takes a field on an object and hooks it, as the name implies
propertyproxy takes that field and binds a proxy into it
when its read
if the child is an object
given the object {cum: {forsen: true}}, if you made a proxy on .cum when someone reads object.cum they get a Proxy({forsen: true}) instead of the real backing value
property hooks are what provide the backing value in the first place
there are inherant flaws with using proxies though ( identity doesnt match, readers of old values are "corrupted" and can still hold your proxy after you unhook )
its not something thats recommended
if you need nested hooks just actually nest hooks with the value helper
hook gives you access to the property itself
proxy makes a hook that gives readers of the property a proxy of it ( if its an object value )

definePropertyHook(mediaPlayerComponent.instances[0]?.component, "props", {
value: (v) => {
definePropertyHook(v, "mediaPlayerInstance", {
value: (v) => {
definePropertyHook(v, "core", {
value: (v) => {
if (typeof v == "object") {
coreState.value = v;
}
}
});
}
});
}
});
but it doesn't work 
what are you even trying to do
that looks like not smart code
are you running that immediately after setting the hook?
instances[0] wont exist at that time
and therefor the define will fail
also
are you actually expecting those values to change?
you probably dont need the hook on anything but the props
then just set out mediaplayerinstance to a ref
and watch it
unless you expect .core to change
when .mediaplayerinstance does not
also
i recommend
using a v-for
I mean this is a whole new twitch type that could add a lot of extensibility so I'm trying to format things in a way that makes sense
to instance a new vue component
for every instance of a hooked react component
instead of directly hooking .instances[0]
even if there is only 1 instance?
just instantiate a new one
why would you expect
that there could only be one?
what about the mini player
or what about on the start page
either way it will make your code smaller
and easier to work with
because you can set out local variables
and state
self confined
expecially because
you'll have to watch instances
regardless
and figure out which ones havent been hooked
etc
i imagine twitch doesnt keep the same component instance
across page changes
from a non video page to a video page
and watching arrays in vue is not very fun
its alot easier if you use v-for
which will do reconsiliation for you
then you can also have simple cleanup
with just onUnmounted
to unhook or destroy existing state
yes I started to architect my code like that
<template>
<template v-for="inst in mediaPlayerComponent.instances">
<!-- <VideoStats v-if="shouldShowVideoStats" :instance="inst" /> -->
<!-- <PauseOnClick v-if="shouldPauseOnClick" :instance="inst" /> -->
</template>
</template>
if you pass the same instance to multiple child components like above, are the property hooks unique to each child component? my thinking was no
javascript objects are pointers, if you pass the same object to two different places it is still the same object
ok cool
somehow I thought a "simple" addition would be easy, but the rabbit hole is deeper than I anticipated
don't get me wrong, I'm learning a lot
(and thank you for putting up with my bs/confusing questions)
no if you hook the same property in two places
the first one will be destroyed
this is by design
@rotund pivot yo u herer
im goinna deploy the user card to nightly tell me what u think

@rotund pivot nyow
it disappears when the message gets flushed out
also text for ants 
timeouting someone does this
the buttons just disappear
- add an outline to the whole card
the same one emote menu uses
- make the twitch icon the same size as x icon
idk why you left the top corners not rounded
pretty good so far anyway
Also when you open an emote card from the user card it opens it behind the user card
text clipping
aaahh wire
it doesn't update with new messages sent
Is there any way to apply for my bot to have a higher Rate-Limit? 
well not that big like ~60 lines changed
what the diff between like 2 links
?
if you have a message that includes 2 links, what's the diff time between tokenization1 and tokenization2
i meant i made this function https://github.com/SevenTV/Extension/blob/master/src/common/chat/Tokenizer.ts#LL21C4-L21C4 faster, the link checker i made is actually slightly slower than the master branch but it fixes the special characters bug, it's slower because my regex is more complex
my PR got merged 
github actions moment 
Classic 
backdoored
yea gh actions seem broken yet again
fix your shit beel gates microsoft whoever tf


Hello fellow nerds
Anyone know how to get the search api endpoint to work?
am i not supposed to use this or does it not work right now?
7TV Developer Portal.
not sure about the one documented in 7tv.io
but you can search emote with GQL 
read: #developers message
daily github down 
if the requests to the frontend respond with a 200 then it's all just fine
yeah something is broken
why would twitch prevent calling setMuted function unless user has unmuted? 
they don't, the browser does
browsers don't let you play audio (sometimes video) until the audio has been played from an event with user interaction
its probably a hardcoded check to initialize the state of the player correctly
because if it tries to play unmuted
when the user has not interacted
the video will fail outright
you dont get a failure event
it will just not play
forever
makes sense then
you can workaround though by making sure its muted
and then playing
and it wont count as "autoplaying"
so the browser wont stop it
no its a twitch check
n.setMuted = function(e, t) {
var i = n.props
, r = i.videoAd
, a = i.isAdShowing
, o = i.mediaPlayerInstance
, s = i.audioBlocked
, l = i.updateContext
, d = i.updateAdMuted
, u = i.disableUserPreferencePersistence
, m = i.playerType
, p = i.userEverUnmuted
, f = t && t.persist
, g = t && t.userTriggered;
(!g || e || p || l({
userEverUnmuted: !0
}),
g || !s) && (r && (r.setMuted(e),
d(e, !!g)),
r && !(r && !a) || null == o || o.setMuted(e),
f && !u && c.p.set("video-muted", m, e),
s && l({
audioBlocked: !1
}))
}
exactly what i just said
userEverUnmuted
read above
if they did not do this
it would cause the video to error
if autoplay was blocked
by the browser
its a safety check
I mean, I don't necessarily want to workaround around it, but it might be confusing if I add it as an option
just guessing by the code above
you should beable to pass { userTriggered: true } as the second argument
its probably some event type though
and that should be ok
because its on click
which is a user triggered context
as long as you run the code in the same event loop cycle
as the click happens
ok, passing that seems to work
functionality is working with the hooked component
now to tackle the difficult problem of eliminating DOM operations 
just to clarify if a property hook returns a HTML element is it ok to call queryselector on that element?
but we shouldn't be querying the entire html document, right
that is the video container of the mediaplayer
or I guess I can just navigate the tree myself
yeah that is preferable
hook render -> walk tree to the react side of the element you want to change
add a tracked node, replace the child
with a wrapper
watch domNodes -> teleport with vue, or patch with a component
if you're trying to set an event
which I assume you are
you can use the helper in Reflection.ts
they take a namespace for events
so you can set them declaritively
and remove them on unmount by name
any more complex changes should probably be done on the react side

was step one getting stylelint to work at all?


even autofixing
does it work with volar?
Pag
ew what the fuck
"modern" color-function notation
who would ever not want to put the commas
yeah im probably disabling that one
me when i farm lines
@pseudo rivet can u test
#575
fuck it removed the vendor prefix for background-clip
classic chrome not supporting web standards
why implement the standard thing
when we have our own non standard vendored version
that does the same thing
try to check if there are any other suck quirks
across our UIs
on firefox as well
it probably also removed the vendored text color
that we use to change the color to transparent
without corrupting currentColor
seems like it didnt
probably bc that one is non standard
yeah seems like it doesnt remove the vendor prefix if the rule is itself nonstandard
but background-clip is standard just not supported on chrome
feelsdank man
also this is gonna royally fuck up a lot of PRs i apologize in advance

@hasty kernel wrong rule package version for this version of stylelint
hmm
that version of style-lint-config wants a different stylelint version
its still unhappy
i think the packages all are requesting different versions of stylelint
its not an error its just a warning
it doesn't prevent completion
its just suboptimal
because it cant fully satisfy all of their dependencies
yeah just potential for issue
but not a problem
unless there is one
the postcss error should be fixable though
might just grab the actual rules they define and manually define them in our config
ah yeah







