Today, there is a small Wavebox update to version 10.134.18. It contains important updates to Chromium 134.0.6998.166 and some other fixes for reported bugs. Meanwhile, @thomas_101 is busy working on some bigger extension work under the hood! 🏃♂️
@xmlking@jason_mayes@webllm of native implementations. AiBrow has a standard API for using the ext or WebGPU depending on what you need. All this said, I think it's too early to say how compatibility will work out, but we're fortunate that we already have different impl options even at this early stage!
@xmlking@jason_mayes@webllm This is part of the reason I published the AiBrow extension (https://t.co/u1pIYFtYjH) as it allows you to specify the model and ensure you're using the one that works best for your use case. You can of course do this with WebGPU/WebML but performance is about half that...
@xmlking@jason_mayes@webllm For pre-canned human tasks like summarize I think you can swap models out without much trouble. It's when you're using the LLM as more of a complex system like in an agentic agent where the LLM can make or break a system...
We got GMail (full interface) working in @ladybirdbrowser, let's fricken gooooooo! 🚀
This one is nice because I've been told by many people "you'll never be able to handle modern web apps like GMail"
Don't listen to armchair defeatists. We can build whatever we want! 🤓
Dang I'm excited about new semantic attr() capabilities in CSS!
I wrote a post about why this feature is so powerful, how it could change the way you build components, and how I would use it.
Advanced attr() is rolling out in Chrome 133 starting next week 🥰
https://t.co/akDXDaDygm
@jason_mayes@Google …but using some grammar helped to constrain it to just the translation. https://t.co/p4vn8HPjbz a little bit like pre LLM chat when it was just completion and you could steer an LLM by starting its reply because by the time it gets to the end of the “translation-fr” key…
@jason_mayes@Google Exactly! I’ve also found you can steer the output a bit more using grammar like this. We played about with getting a LLM to translate text and it would be quite chatty about the whole thing “Sure here’s your text in French…”
So much is shipping in Chrome 133 (stable rollout begins in 2 weeks!)
A couple of big ones:
1. Scroll-state queries: check if something is stuck and where — https://t.co/aeJg84xJLC
2. Extended functionality for attr(): assign types beyond strings to attributes and use them in your CSS — https://t.co/VXqGLh6ER4
3. Text-box trim: control the space above and below text — https://t.co/ycngwTCytL
(Honorable mention). Hint popover type: open an unrelated popover while an existing stack popovers stay open — https://t.co/Cg2cYhlEmN
@jason_mayes@Google There is a paper about the methodology here https://t.co/3N70vuU1fd. The extension uses llama.cpp which has an implementation of it with it's Grammars API https://t.co/7Nr0PqoRHx
@jason_mayes@Google It works the same with JSON, although after a closing quote the most likely token is a full stop, the grammar filters this out so the LLM only has a choice between comma for another property or } to close the object
@jason_mayes@Google …more likely to pick one that’s a lower probability (e.g fries -> jelly). The grammar rules filter out the available next tokens before the LLM can select them, so jelly is never available.
@jason_mayes@Google Think of it similar to how temperature works, when it picks the next token the LLM may be presented with 5 possible tokens each with varying probabilities. A lower temp makes it pick the highest probablity next token (e.g fries -> ketchup), a higher temp makes it…
@jason_mayes@Google It’s okay. Hard to explain in short tweets :-). It works by changing the next token selection logic, so the model is only able to pick tokens that fulfill the grammar rules.
@jason_mayes@Google Because of this the LLM wouldn’t really miss a comma, because that wouldn’t be considered a valid token when generating the next. The same with the end of the output, normally LLMs use <end_of_turn> or similar but this would only be valid after the closure of the object
@jason_mayes@Google After that, freetext tokens to make the key. Until eventually the LLM sees a close quote as the most probable next token, moves on to a : and then a number/array/object/string etc.