Patrol 4.0 | Observable Flutter #89
1:33:10

Patrol 4.0 | Observable Flutter #89

Flutter 07.05.2026 3 588 просмотров 154 лайков

Machine-readable: Markdown · JSON API · Site index

Поделиться Telegram VK Бот
Транскрипт Скачать .md
Анализ с AI
Описание видео
Watch as Craig Labenz is joined by Head of Mobile at LeanCode, Mateusz Wojtczak, to explore what's new in Flutter integration tests with Patrol 4.0 and Marionette MCP. Resources: Patrol → https://goo.gle/4ng83b2 Marionette MCP GitHub → https://goo.gle/3OSvLh7 Watch more Observable Flutter → https://goo.gle/ObservableFlutter Subscribe to Flutter → http://goo.gle/FlutterYT #Flutter #ObservableFlutter

Оглавление (19 сегментов)

Segment 1 (00:00 - 05:00)

Hello everyone and welcome to another episode of Observable Flutter. My name is Craig Lebenz and I'm your host. And today I'm joined by an esteemed returning guest uh from Observable Flutter Cannon. hopefully that this episode is not as seismically impactful as last episode was, which is a joke that we'll get into uh shortly. But before we dive too deep, do recall that today uh that this is the Flutter community and we all know what that means. We're going to hold ourselves to our own sterling mental image of ourselves. Okay, so today's guest coming in hot from Poland, a head of mobile development at Lean Code. Uh I'm very excited to have him back. Matus Voidchuk. He's uh really just a luminary I would say in the Flutter community. I've seen a lot of his talks and uh just an extremely high quality developer working on an a one-of-a-kind product in the Flutter space. So, uh, Mate, welcome to Observable Flutter. Would you like to say a few words to introduce yourself? — Yeah. Hello. Uh, hello everyone. Hello, Craig. Thank you for having me here. Uh, back again, uh, with the patrol staff, of course. So, yeah. Uh, you already introduced me pretty well. Uh, I'm at and I uh and I work at Linkode and uh I'm also one of the patrol guys uh from the team and here I'm representing all the way because we just got a new merch patrol mugs. — That's a nice mug. — You want one? — I would drink coffee out of that mug — because you know we're going to see each other pretty soon. So, because of Google IO, so I can bring a mug. Yeah, Yeah. — Okay. Oh my god, I would be so honored. Uh, we've got somebody here from Google Cloud Tech. I don't know who's running the handle over there, but great to see you. Good morning from California indeed. Uh, yeah. So, last time you were on the show, I mentioned that hopefully this wouldn't be as seismically impactful of an episode as last time. Our the stream about a year and a half ago at this point ended a bit unceremoniously as I got a tsunami warning on my phone. — And we had to wrap things up real fast so I could go, you know, look at the news and see like am I actually in any danger? Uh it turns out I was in no danger at all because there's a lot of mountains in Mountain View and those mountains were creating a really nice ring around uh where I live from. And also then nobody was hurt at all and there was basically nothing. So it was a total false alarm but still we hope to have no tsunami alerts today. That's our goal. — Uh yeah, exactly. And uh yeah, so one and a half year ago uh we had an intro to control. So, uh, we tried to, yeah, we actually set it up because we made it before the tsunami. So, we set it up on your computer and render the patrol challenge app, which is our like an example that's, uh, pretty much a nice showcase of all the functionalities and features that are unique to patrol. So um like you uh mentioned in the title of the stream uh right now we have a 4. 0 release and that's very important for us [snorts] and why it's because it's actually something that we call a proper 1. 0 uh this 4. 0 you know what I mean like sometimes like uh you just feel like okay now I would call it a 1. 0 — and uh when we released 4. 0 Though this was this moment for us when we felt like this is a maybe not complete but this is a ready product like we uh and why we are like we feel like that is because of the web support — uh which was the pretty much number one issue — uh on our GitHub and a lot of users um asked us uh about the the web support. Uh, so it was something that we were thinking about pretty much since the beginning of patrol, but there was always something else and we always were we were a bit scared about it and this is also a nice story about uh being scared uh of developing a

Segment 2 (05:00 - 10:00)

big feature because um uh it was something like you know web is a whole different story like I can actually my screen if it's Okay. — Yeah, I think I'll allow it. — With that being uh the whole point of — the stream is we can have a podcast as well. — Yeah. — It's popular on YouTube right now. — It is. — Okay. So, uh this is the almighty patrol docs uh page uh patrol. co. And um here is patrol 4. 0 O announcement and uh there's a nice article about uh patrol web support and why it was uh hard uh in terms of before coding it. So uh the diagram of you know architecture like we mentioned in the first stream uh about patrol with mobile is that we have to do a lot of stuff to appear as a native end to end testing framework so that our tests are like Android tests like iOS tests so that from the outside you don't know even that it's flatter because of that we can be run on any farm so uh if there's a it's pretty much it's mainly for flatter enterprise companies because they come and they say we need end to end tests and we use for example um I don't know browser stack or firebased test lab or source labs or there are many popular farms for uh all the mobile testing — and they say okay uh we have that and we have to use it because we already have a contract you know we already use it for other apps something like that — right — and there was this um issue that flatter was a bit different because it's like every framework is a bit different right like it's a normal thing so uh you know flatter tests are run for from flatter driver needs a host uh flatter integration test is only for flatter code so you cannot interact with native stuff and there was a gap in there and some enterprise companies told us for example that uh quality assurance department uh didn't allow flatter because they cannot test it or they have to use some workaround solutions that are not flatter so that they cannot do it so well and so on. That's why we needed to be uh very much mobile testing Android and iOS but web is so different. It's a whole different story and all we were scared that you know we made a whole lot of assumptions uh that because we are on mobile like what what's like for example that uh we have a mobile app and in on both Android and iOS you have some test app um I would say uh some um idea of a test app that tests the main app under test for example and on web there's no app — there's no app like you just you know you just run a URL in the browser. So we didn't know how it works. Uh the same goes with the first phase. It's a discovery phase. So we actually have to ask the Dart engine like we have to run the Dart runtime and ask the flatter side from the native side how many tests are even there like because they are only all in Dart. So we don't know that from the native perspective. So we have to do the discovery phase, ask about the tests and so on and so on. So there was a lot of stuff that was pretty much uh intuitive right now for us because we do that for I think four years like right now patrol is like about four years old. So you know from that perspective we already just assume that and every time that new person comes to the patrol team they don't know what we are talking about and we just have to explain it to them. But for us it's like okay yeah that's obvious and now a new uh platform especially that when we introduced Mac OS support it's very much like iOS it's like most of stuff is pretty much the same the APIs are — very similar uh and there are just minor differences and here we were very scared so um the issue is that before uh before we started web um everyone wanted to estimated you know how big it is how big how large it is from perspective of the development would it take us I don't know a week a month half a year — and it's also hard to estimate it if you don't know it — we can guess — indeed — but you know uh we are we also

Segment 3 (10:00 - 15:00)

have some budget and we have to tell our you know link code um uh I would say founders that um you know we don't know how much is that and we don't know uh if we should take it up right now or not. So uh what's the lesson from that? Uh one of our team members. Uh they actually needed it once in their project. Um and uh over the weekend they he vip coded it. He took some, you know, AI of choice and he just vibe coded web support and uh and just uploaded the video on Saturday on Sunday something like that. uh a video of you know the whole scenario from the example app that we use but run on the browser — and we were like you know only like the um the awesome reactions and everyone was like you know tada and you know celebrating like you know whoa like giga chat moment you know like whoa — the guy just came and he said I just did it and it was actually very much like a breakthrough moment because then uh We could ask okay so how much complicated is it? How much complex like how much code was there needed from AI? Uh we can look into that. uh he just you know pushed that to the branch or made a PR and we could read through and say okay so uh we can just uh we had to just make a few decisions but we knew that we have to pick some uh web framework to use a web framework for testing so there's puppeteer um selenium uh a couple of them and one of them is uh playright and playright is a open-source framework for end to end testing for web that's right now the most popular and we saw that it's very much trending and it's becoming a standard like everyone uses it. So we thought okay let's use playright because from a short you know uh chat with Gemini it turned out that it might be a good choice [snorts] the comparison of a couple of them and we thought okay play so he just assumed a playright and he did the VIP coding part. So then it was much easier for us because the question was not how big is the feature but it was like how much is it to make it production ready like so that we can um without a fear I proudly merge it to the main branch and that was to be honest like uh pretty easy to estimate. So we went after it and this is the story that if you are scared about it because everyone was scared and it turned out not to be a half a year uh engagement like everyone thought that it's like a lot of work and it was always at the top and everyone said like we have to choose something else because this is too large and we don't have right now we cannot fit it — and so yeah so then like let's just do a five coding session and it's really helpful. So right now um we have this uh comparison table — that story reminds me by the way of like being afraid of a feature for a long time and then finally being you know from one force or another being forced to face it and discovering that it was not complicated all along. Uh I couple years ago was making this academic game. I mean AC it was an academic exercise. The game was multiplayer Pong. I ended up giving a talk about it at Fluttercon Berlin. And I was I had gone I pursued so many different things because I didn't really want to do like UI rubber banding and like easing and handle that. uh I didn't want to implement that logic to hide the latency of just physics and the internet. And then after I exhausted all these other possibilities, I realized like, oh man, I actually have to do that. And then it literally took me less than 10 minutes to do. I had been trying other solutions for months. And this is pre AI, you know, I didn't vibe code it. This is before LM could write code. And it took 10. It was just like, oh, I guess I would do this for the function and I do that and then I'll just like lurp it and I was done and I felt so silly. So anyway, that's very relatable to me. Okay. But you were showing us this table. — Yeah, we love uh shortcuts. That's why like we as programmers and we don't know if we think about you know some solution that doesn't seem to be the

Segment 4 (15:00 - 20:00)

super shortcut then we don't want to do it right now. And this is like I think the lesson um right so this was the first thing that's what was huge from our perspective in patrol 4. 0 O was the web support because a lot of users wanted it and it uh appeared which was not so for me at least it was not so obvious that there are a lot of companies that use flatter on only on web because typically we told companies just test it on mobile and like you have I don't know 90% chance that it works on web because you build from one code and it's just something you can do right away just test your mobile version of the flatter app Right. And uh and you can test the widget test and golden tests and unit tests uh are like platform independent. So that was something that we could tell before the web support. But it appeared that uh a lot of companies are using only web uh only flatter web target. So that was very important and but uh another thing is like I mentioned that we assumed um Android and iOS. So we introduced play uh playright and web and then um there is the next thing which is uh now we have to rethink about talking to the platform. Um because uh the third platform is not just uh you know attaching the strings because [snorts] before that when we introduced Mac OS it was just the same like iOS and here um there are concepts that are totally not mobile and and so on. So uh so before it was dollar. native native. When we did the first stream and we wanted for example to do something with native permissions or native dialogues, uh every time we wanted to step out of the flatter world, we did dollar. native and after that on this object you could uh you could just basically um execute call any functions that are native related uh native meaning platform. So like the first thing is native flatter is native right this is the first thing that we always say so that's why we changed the naming uh to platform because this is actually platform and not — yeah — right that makes sense — this is much more yeah especially that native is also a keyword uh I think uh like it's not a keyword but it's highlighted — uh you can check it out in your IDE if you have a Dart code it's I think it's something from Dart one or something like that maybe from before but if you write native it's going to be highlighted differently and it was actually very convenient — word yeah — yes but before it was very convenient because when we showed the code that was native it had a different color many times so it was really nice to show it because you could see the native parts — but but we thought native is related to FFI right now like many times when people um think of native uh call native function they think of FFI so we wanted to be more uh the idiomatic with the flatter community and since on the flatter website you have multiplatform framework like right this is like the one of the like main uh lines so we thought like platform is the good one and also we wanted to find uh uh how the API should look like so this was a great challenge all because before we just had uh one API for two platforms. So you know we had just uh nativetap and that was just a common method for uh both platforms. Uh but then — it was good until it wasn't — it native was good until native 2. So we did a thing that uh a lot of frameworks did before and we were always laughing of them. So uh this is something that we when we introduced native 2 it was like in the team we had a you know a daily meeting and it was like okay look what we become. It's just like — it's literally — native tofinal_2. — Yes. And but we didn't want to break of course the API for users that have stable tests and so on. And we just wanted to test drive the new approach. So uh before um a couple months before the release we also had this native tool and we thought uh okay let's introduce iOS selector and Android selector so we can because finder is something that's also

Segment 5 (20:00 - 25:00)

idiomatic to flatter testing right when you think when you are a flatter def think finder — you think of a finder class from flatter test which is a first party uh library so we did don't we don't want to have any uh mismatch with the and mix up with the first party naming because this is this would be the worst. So we thought of selector. This is something that's pretty uh obvious in end to end testing world. But then then web came and we thought okay so uh with web there are so much different interactions like browser dialogues iframes keyboard like keyboard comes into the play so uh a lot of different stuff uh I don't know opening a new tab something that is very hard to fit into the previous API So we thought okay let's uh let's do platform and let's do the differences explicit because we didn't want something like uh this was the main discussion that if you for example if you run uh platform iOS as uh press back on iOS what should happen right because there is no back button so one person says nothing it should be uh it should be what's the word — the word Uh yeah, no. Uh and another person says exception because if it's a noop then you could have a wrong code — in your test. — So maybe exception but then pragmatic people say no I don't want exceptions because then I have to have if statements and something like that and something that's implicit and I don't know about it. So we said okay let's make everything explicit when it comes to types. So we just introduced Android, iOS and web on platform because we thought this is the best way to be uh less flaky, more stable and future proof. We don't we won't have to do another breaking change. This is something for Heer. — Um — users of course still have to do a like if statements, right? Or do you um because we've got the Android. press press back there. So that line of code is going to be able to be run everywhere or no? — Yeah. So this is the answer. So uh we thought let's be also pragmatic. So we introduced some common things to the mobile part if you would like to have and something like a tap. We thought that this is something that could be everywhere because it's just for the convenience. — Um, and also we introduced something because some people like to have more like declarative way. So they don't want ifs. So then they might you know want the maybe actions. — Yeah. So this is the the main thing and uh I think uh one more uh big thing that we introduced is the VS code extension that I can show you in anti-gravity actually which is here. So this is also something that uh users wanted us to deliver is that patrol tests can be seen in the testing tab and that you can go here and actually you know uh run it. — Yeah. And see this icon and debug it because it's also non-trivial of course because we have our own CLI and we have to do you know all the native stuff. That's why we need to do some uh custom stuff to attach the debugger. So, uh this is the the extension. Uh and um let's see the web part. So we can launch the I will launch the app first [snorts] on the web so that you can see uh because we have a showcase path so that you can see what's the what are the web challenges for example or things that users would want to test in the flatter web app. And earlier we were all waiting on Flutter. Now we're waiting on Chrome.

Segment 6 (25:00 - 30:00)

Flutter is finally innocent. — Mhm. [snorts] It might be a bit slow on my computer because we are streaming and I have also emul Android emulator. Yeah. — Is it this? Yes, it is. Okay. So, uh let me just go to settings, Chrome settings, and change the theme. I will show you why cuz Okay, — your eyes everybody. — Yeah. So uh this is one of the things that you know it's tricky for example. So yeah start the test would be uh that you have to change the theme to dark to pass. to pass. So let's do that. That's better. Um then we can continue to next test. We have to enter the secret key combination. That's al also something that we didn't care about when we had only mobile apps. — Uh and we revealed the hidden button. And now we are testing responsive layouts because this is another thing that you resize windows. — Yeah. — So — I'm doing that. And now I can continue. Um then I have a cookie. This is a part I didn't uh go through myself, but probably I will need to do this and see the cookie somewhere. — Where is the cookie? Secret code. — Here it is. — I can copy it like that. — That Yeah, honestly, that's the code I was going to guess. — Yeah, — guess that here. And here you have an i frame. This is also something that users uh told us, right? — Yeah. — Uh frames. — So scroll down in an iframe to find the password field here. I have to — I don't even know what's the correct password. Can I just do anything? I was going to Yeah. I mean, ASDF would be what I would uh say for a very simple sequence. — Okay. — ASDF. That to me, oh, I wanted it to be so — This is funny. We have to see the code. — Okay. So the idea here by the way while you're looking this up is — like this is a manual step but in practice is that what is playright what's going to drive this whole process? Oh 1 2 3 4 5 looks like — yeah we could have we could have known — a couple more guesses we would have got there. — Yeah. Uh — oh copy and past supposed to do this. — Yes. And also we have this beautiful alert like it's JS alert. — Yep. Yep. — Oh, I can see P in the comments with the password. He's the guy that VIP coded and uh the the first version. — Oh, nice. — Hello. — Thank you. — Yeah. So, and this is the old school quiz that we already did in the first at the first call. So, uh at first stream. Yeah. So right now uh what we can do and it should work is it should work. I under underline it and emphasize that it should work is this. So we can finally do um device chrome and let's see how it works out. If you want me to change the zoom uh or something like that uh let me know. Um, maybe one click bigger could be good. — Okay. Um, yeah, the trade-off here is then you got to like make the terminal as small as possible and other stuff. — Okay, it's it's doing something. I thought it's I'm out of RAM because it's totally possible today. — Yeah. — Okay. It's doing something and I'm not clicking on the screen so that you know. Uh yeah. So this is a test on the using code, right? And uh yeah, thanks to that we can finally go through the main I

Segment 7 (30:00 - 35:00)

think platform interactions on web because of course not all because you know how it is. We released that and uh and some users told us for example that they need multi-tab uh which is — it's obvious but you know it's you can't implement everything all at once. So, we had to choose something. Uh, and we have a playright report. I never went there. I don't know how it looks like to be honest. — Well, we're going to find out together. — It's actually nice. — Oh, yeah. — Yeah. So, we had all the steps. This is also something that we need to uh you know um uh in add but it's actually using the uh the playright actions. Yes. So uh what is also cool that playright is widely supported. So if someone supports playright it should be pretty easy to support uh to support it and patrol. And I can see the comment. I'd love to understand how that was solved. Uh if you mean um web support, this is the — well I think so the comment before they said uh you shouldn't be able to use password input to a flutter input widget that easily by just using playright. So I think this is the uh friction that they were — okay — pleasantly surprised that you were able to overcome. — Let's see the code. because I don't know either. It's P's code. [clears throat] — Maybe he can maybe he he's in the chat. Exactly. Yeah. — So, you mean here we have this scroll to this is rather uh because it's an I frame and it's just a I think it's just a classic web input. It's not a flatter input, right? It looks like this. So that could — because we use platform web enter text. So probably when we go there — this I mean does that mean we're like was that input at an actual DOM element and not something rendered by Flutter canvas? — I think so. That's the because it's uh that's the trick. Right. Yeah. They're Raphael is saying the same thing. Well, that explains it. If it's a DOM element and not a — We can even find it. I frame iframe charge. — We should be able to just right click and inspect. — Yeah. — It's true. I can do that. But I can see it's HTML in here. So, we can go there because Okay. Yeah. So, it's just another website that's not flatter. And this is just the input. Right. And also because this is also a pretty popular thing that you embed some third party stuff that's just a web element into an iframe — and in the test you want to tap on it. For example, you have some and also uh another thing is third party login. This is something that's pretty much uh bugging us right now is that a lot of users uh of course in a lot of apps especially enterprise B2B stuff you have to sign in right and uh and usually and it's if it's just you know sign in with login and password or email and password and it's just uh — that's easy — two fields it's easy but many times you have to tap on something like sign in with I don't single sign on — Google anything. Yeah. And it's so you have a popup or you have a new tab — and popup and new tabs is they are cool because our first — I'm going to let you uh talk for a second. Somebody's knocking at my door and my dog is — I can see I can hear uh the dog. — Yeah, I'll be right back. — Cool. Yeah. So the issue is that you have to uh actually know that we are running in the tab because patrol is running in the same process as the app and on the web it means that this is running in the tab and uh when you uh redirect or just go to a location that's not your app the app dies like right if you were on the debugger, the app would just uh you know would just uh disattach and detach and uh this is the issue.

Segment 8 (35:00 - 40:00)

So um when you go to another page that's for example uh Google because you want to sign with Google and typically Google would do the pop-up or a new tab. So it's cool but if you change the location in the same tab you would kill the previous page hence uh you would kill patrol. So we cannot revive afterwards. So this is the main issue and I don't know how we are going to solve it to be honest. We don't have any like all the solutions have trade-offs. There's no silver bullet. So we don't know yet to be honest. And if someone has a nice and neat solution to that, we are very welcome. Um — yeah, — that sounds tricky. Am I remembering right though from the last time you were on I thought we did a social sign on but I guess that was probably mobile not web right — yes we did but on mobile it's much easier because your app is still somewhere in the background but the process is not killed — because uh this is the same we have the same uh the same challenge on the mobile if you would like to test what happens if you kill the app. — Yeah. So, we would also have that problem. But this is obviously not a not something that's blocking you. It's not your number one go-to test scenario queuing the app usually. — Yeah. But you just need to hire somebody else to vibe code it over the weekend. — Yeah. Exactly. Exactly. Exactly. — Now, Randall has a good point here with this question. Have you reached out to Stuart Morgan who handles a lot of the single signon packages like Apple and Google uh O for like the first party flutter packages to see how they test the web implementations? — Not yet actually. Not yet. — Yeah, that could be a hot lead. — That it could be. Yeah. To talk with Stuart. Um, I only know that some uh I know that some packages, I think Google Maps or one of Google Maps packages use patrol and we didn't know about it until like a week ago. Uh, and accidentally we saw that they just use it in uh in the SDK package somewhere. — Oh, that's exciting. — Yes, that's really cool. — That was nice. Yes, this that was um this is very nice when we saw for example — you do this — is it yeah interesting I was talking to the original developer of the flutter Google maps plugin uh — but it's not maps I think it's Google — not maps — flatter navigation sorry — oh he does navig yeah — so I saw that there's a — I was talking to that guy — maybe was example oh patrol test Yeah, — that's great. — This is the and that's also some uh news about patrol 4. We changed the directory from integration test to patrol test because it was very misleading and for some people like some people would like to use integration tests like first party integration test and uh patrol tests in parallel. So we thought it's better to just have patrolled this directory so that no one's misled about what's being used under the hood. — So that was another thing and it and of course we had the issue in flatter dev tools I think because flatter dev tools uh treat they were treating integration test like a special folder and not patrol tests of course. So we had some issues with that but it's cool because uh thanks to that the best thing about developing patrol is that we learned a lot about uh flatter — I bet — because we had to because of the all the bugs that we had and all the blockers also we had to for example solve some flatter issues of course or wait for some other issues to be solved so that we can uh and so on. So that's really cool because uh this is how the you know ecosystem grows and it's better. All right. So yeah. Do you have any questions about Patrol 4 before we go to the next adventure that I have? — Um so a couple thoughts here. One, someone said my volume's a little low. I turned up the gain. So, let me know if it's still low or if it's better. And then

Segment 9 (40:00 - 45:00)

52RK, I don't know who you are, wrote, "I think Jasper looks more interesting than patrol. " Well, I don't know how to tell you this, but those two technologies don't have much to do with each other. — Yeah, it's true. And actually, Jasper would look like uh Yeah, a DOM element for us. — If we tested iframe with Jasper, — we would have to use platform — extension. Um anyway, yeah, that like that comment surprised me. Um anyway, yeah. Okay, so questions here. Uh well, I know one thing that you want to do in the rest of the stream is to actually build a feature probably, you know, vibe code something real quick and then you all have this MCP server, Marionette, and we want to test it using that. So, I definitely feel like it's time for some hands-on stuff. So, um we do [snorts] — Sorry. I saw — I saw a question about the air earthquake. — Yeah. Right. [gasps] — If last time is any indication, we still probably have another half an hour before the earthquake. So, um yeah. No, I think it would be great to uh Well, Randle says it was a tsunami, but you know, first it's an earthquake, then tsunami. Um I' I'd love to see Marionette server. I've been hearing a lot about it, but I haven't really I haven't spent much time looking into it or at it myself. So, um I I'd love to see that. — All right. So yeah, we did a stream a couple weeks ago about patrol MCP and every was a stream like not observable. It was uh we did a stream uh on uh X uh patrol X profile — uh and uh a lot of people were interested in Marionette uh and I saw that it's gaining some uh traction. So uh let's just how should we start? Maybe let's have an example. So I have the app and first we can check if I don't have anything unttracked in changes and then I can run. — Yeah. actually run the app probably zoom in. Yes. So we have this conference that is called flatter techsummit and it has an app. It had an app. Uh there will be uh Michael from Flatter Team, the lead of Flutter team on the event and we uh we had uh an app a year ago for the uh participants which is very funny because when you have a event for like 50 people, you don't develop the app. And it's right. That's right. You don't. But we wanted to test out a couple things. So we developed an app and uh right now uh this is our kind of an example app you know because it's uh it's like internal I would say client um and uh today we're going to use this uh conference app to develop some new feature but when it's uh when it's built I will show you how it's how it looks like. So this is the app but probably it's the old version so we have to wait for it. Okay. So um yeah Marionet MCP uh Dart MCP and patrol MCP those are three that we're going to use today. So uh what's it all about? Uh so as you all know we have Dart MCP. I can actually open my MCP configuration so we can see all of them. So we have Dart MCP, right? You already have had a probably more than one episode about it. — Yeah, most folks here probably have that already installed. — Yeah. So this is uh this is something that allows like injects uh context, right? So this is all about injecting the right context to your LLM to your model when you are vip coding or AI assisted coding. Uh so um what Dartm is for, it gets you applos uh it can uh read some package uh uries and of course connect to the tooling uh do the hot reload uh also

Segment 10 (45:00 - 50:00)

analyze do that fix format and all that stuff and it's cool it's for developing the app and uh what was lacking from our perspective Ive was that uh when you actually uh run the app and you actually develop something and you want to to validate it uh how human does it is that they actually have to you know click through the feature. So how you typically uh you know develop uh like everyone is that you you developed some part and you want to see if it works. So you go to the app, you tap on some buttons, you go to the feature, you see, okay, I'm good. I can go back and do some more work. — This sounds familiar. I recognize that flow. Yeah, — exactly. So and uh why we do that? This is the right question to ask because we like AI pretty much follows the human uh loop. So why we do that? Because we want to find the discrepancies between what we wanted to do and what we actually did, right? — So we want to see if we are actually on track, — right? And you probably had every everyone in the stream that bipecoded or coded with an assistant. You probably had that situations when you actually did uh not the thing that you were supposed to with the or rather the agent did a thing that you you didn't supposed them to do, right? So uh so Marionet is u about runtime verification. So it allows when you run it, it it's an MCP for your flatter runtime. So basically when you have an app running like I have right now and if I have MCP like Marionet running uh my agent can ask the app to do something like it can for example tap on some flatter things. — It can get the widget hierarchy. It can take a screenshot. This is very important. I think the most important is [snorts] taking a screenshot because uh many times we want it to look like a Figma design for example and it's also about um tokens count. So we want to save tokens and when uh when you are coding in the dark like on flatter and friends you know the flatter and friends conference you there's a and there all every time after the conference there's a flatter in the dark challenge when you code but you can't see the app that you code — yeah in the code first and then y — yeah and it's very hard to do it right yeah — so and if you had a Figma design and someone told you afterwards, hey, it doesn't look like the screen like design, — you would see the code and it would be very hard for you to tell why it doesn't look like the Yes. — So, so with Marionet, it can take a screenshot of some parts and, you know, do the comparison and let's say, okay, I can see the problem. Uh, I have the wrong padding, for example, [snorts] or something. So does it actually use the golden test infrastructure to compare the screenshot? How does that part work? — Um this uh in in flatter you can actually do uh you can um how to say it rasterize — any widget — you can uh internally yeah that's how golden tests work. — Mhm. So it's you're right. It's very similar. The mechanism is very similar, but we don't use the golden test of course because test tool. — That's what I was wondering. Yeah. — Yeah. Okay. So you can see the app it it's on some mocked data. So it's you know it's a conference app. There are thousands of conference apps uh like a student project. So uh it's — so we have an agenda and we have a um talk details and what we wanted what we want to implement is we have a Figma here. It's this — adding and edit note feature. So I would like to have this add note. — This I would like to add. — Then I get this. Okay. — And then when I actually uh input, I have the — I have the note saves it. Yeah. — And I can edit it. If I erase it, then it should disappear

Segment 11 (50:00 - 55:00)

— like add note should be displayed again. So pretty simple. Uh so that we can make it uh live. Uh so what we are going to do we are using of course Figma MCP like I uh already shown here. So we have Tart MCP we have Figma MCP. Um you probably you already did that on stream or not? Figma MCP Flutter. — Um I used Yeah, there was a Figma MCP. No, I did the Flutter Figma MCP. This was a handful of months ago. I have not ever used the first party Figma MCP on the stream. — So two quick things that are very important like two tools are get design context which will just uh pretty much download the code for like the code in some HTML or something like that. So something like you know that looks like uh the structure of this. — Yeah. — And most uh most important get screenshot of course. So this is something that we we're gonna abuse. Um and then we have Marioet. So we can connect [snorts] and we use VM service. — So every time when you run the app like here we ran the app and you can see something like this right connecting to a VM service. — So this URL is important to us. I'm going to copy that. Then we can get interactive elements to know what uh where we can click on tap on the screen. Then we can tap double tap long press enter text blah blah and take screenshots and get logs those two things. Uh and this is a bit different than Dart MCP logs. I don't remember right now why uh but I think just that we just use some other ah you can uh also connect your own logger because some people in production apps you use some custom loggers and you would like to have your own logs because you already use your own logs and not for example printing you know and the global log. Yeah. — Yeah. No, I never I never print my logs. — Yeah, I heard about it, right? So, um yeah, and Patron MCP, this is something for later. Okay, let's do it. Um, so we have Figma and I uh I selected four frames in here and I even have a example prompt with the URLs because uh this is important to have those URLs. Maybe let's do it right here. Okay. So, uh, one more thing that's pretty important is that we don't want to use any back end because write back end right now, right? Um, so the note should be stored locally on device. — Nice. Yeah. Uh what's also important is use marionet mcp and make sure that design uh matches one to one. — Nice. — Right. Uh we can also say that uh — Oh, right. You've got the VM service to give it. Yep. — Yeah, it should it can you use it can do it uh — find it on its own. — Yes, but — let me just But it's uh sometimes it can't. I don't know why. — Does it slow it down to find it on it? I mean [snorts] obviously the answer to that is — in some sense obviously yes but does it slow it down like a lot? — No no it's a just one step so that it can connect and afterwards it's cool and usually when I run it usually it's uh usually it starts implementing things and doesn't care about verifying and when it finishes implementing then it kind of reads the rest of the prompt. It's like with humans, you know what I mean? — Yeah. — You just if you read implement this for designs, you would start coding, right? So, it does the same. Okay. Uh send up marionet.

Segment 12 (55:00 - 60:00)

Let's see what happens. — I thought it was listed in your — I guess I don't know what the setup process fully entails, but it looked like it was listed in the MCP server. Yes, but — the issue is that you have Marionet MCT. Uh the to use Maret MCP you run uh you activate it as a global tool. So the MCP server is a global tool but to integrate it with your app you have to do something like this. So that the VM service that so that we are an extension on the VM service inside. So we have to register this extension that's why — and uh probably it's not there but it tried to do it. — Yeah. No isol — Yeah. No isol. File. — So uh let's see if it's if it figures it out itself. For now, it's doing the Figma get screenshot like you can see. Uh let me just show it. It's very fast. Okay, here. As you can see, it just took the screenshots. So, it took four screenshots from Figma. Right now, I have a clear picture of all four designs. Let me explore the feature code. — Blah blah. Okay, it's working. So, be I wanted to have it on top [snorts] so that's easier for everyone. We have a main file and it should be instead of this. So um I'm saying let's not code at all manually. [snorts] — Okay. — Right. — So you're not going to paste in the line that you have in your clipboard. That is the correct answer. Yes, exactly. Because — Okay. — You know, we could do the whole feature. — Yeah. — And you're expecting that it will be able to uh it'll find this line that it needs to add and it'll add it. — Yeah. From my — Do you have a skill for this? — No. No, no. I only added the skill for patrol because this is something that patrol team encourages. And uh Marionet has I don't know if Marionet even has any skills. And usually when I work with uh usually cloud models, but uh when I work with that uh it automatically finds out within the first connect and uh if the connect fails, it just sets it up. So I think it reads the readme because uh this is just my guess but uh yeah to be honest — yeah uh I don't know if it will because maybe it or maybe it forgot already because you know the context maybe it forgot that I wanted to use marionet then if it forgot we will try to help it and say set it up and verify But we will do that so that we will see that it actually verifies. This is the best part. — Mhm. — Yeah. So because of that uh it's much easier to find out bugs and also it's much easier if you want to vi code and uh not be present at your computer then uh marin mcp is very helpful because usually when you vip code and you have a bug uh you have to do it manually to somehow check it out or to see uh why it's happening. or to take the screenshot or anything like that. But if you have um Marioet, it should automatically go there, see that it doesn't work, update the code, you know, reload or just go back and forth. So it's very cool with within that automatic loop. So we wanted just to, you know, close the this autonomous loop. That's why — Marionet exists. And we saw that it's gaining more and more traction. Actually, it was even I think this week someone gave a talk about it. Uh it was not no one from link code, — just someone from the community. Yeah, it was really nice. — So, quick question here. Um coding with Kanye Dev asks, "The Flutter MCP or the Figma MCP server is currently being used, not the Figma dev mode MCP, right? And do you know the answer to this? — Yes. Uh

Segment 13 (60:00 - 65:00)

— yes, you know the answer or the answer to this? — Yes. Yes, I know. And uh I'm thinking yeah, it's just the official Figma def mode. Yes, def mode. — Like you I turned on the deaf mode and my MCP is a local host exposed from the Figma desktop. Okay, — I know that you can also use it without Figma desktop. Uh but then you have to change the config of the MCP from local host to remote host. — So you mentioned closing the autonomous loop and I ran an experiment the other day that really wasn't an experiment because there was no control and um so it was a very poor experiment pre pre uh scientific method level experiment, but I put in a prompt to Gemini in anti-gravity, I'm going to go walk my dog. And what I wanted it to take out of that was, uh, don't wait for me. Don't ask me any questions. I'm not here. Just go. and uh it did just go, but I don't know if it, you know, that was because it never had any issues and it was it would have always been able to get to the end of the task. Um, but it was like a pretty involved thing, you know, full stack feature. Um, talking to Firebase, blah blah. And when I came back, it had I forget if it was 100% correct or if there were a couple small tweaks. I think it was largely good. and then there was like responsive UI changes or something. Anyway, but yeah, that idea of like not being even present at the computer. Um [clears throat] my level of trying to close that loop is telling it the LLM that I won't be around. — Yeah, you're on your own, buddy. — Yeah. Yeah, totally. That's why I always do uh when you run claude cloud code you can pass the flag danger dangerously skip permissions and this is when you they will never ask you anything unless it's actually related to the code like if it's related to the some business decision or code decision that they actually want you to make then they're going to ask you but if it's like if I like if it's a question of can I do something they are just going to do it. — So uh I learned that but it's of course it's not so safe and I don't encourage everyone to do that but uh there are some experiments in the community right now with the autonomous loops. There's something called Ralph which is about it's all about having agent like non-stop coding and there's also something called Gast Town uh and it's uh the part of the team that works on it uh is the person that worked on the flatter team. It's Chris Cells. — Oh yeah. — Yeah. And he is because I'm on the I noticed that I'm on the Discord. So, shout outs to Chris and the whole Gast Town team because uh — Chris is quite an AI maximalist. — Yes. and he is also um maintaining the discord for the Gasttown community. And the gas town is like when you uh it's like it's very I would say poetic uh because you are you are a mayor of a town and you have couple of [clears throat] — and you have a mayor a agent and you have like some other agents that do the work and you just talk to the mayor and mayor sends the messages to the agents and there's also a concept of mail. — That's good. So they sent the mail — okay — so that it's a synchronous. So even if mayor would I don't know crash or you would spin up the mayor after a couple of hours first thing that mayor does it's the it read it mailing — if there are any info and also it can send a dog to see if uh any agent is working properly or uh if it's done the right and read the logs. So there are a lot of stuff like that there and it's very interesting. I tried to do some stuff with it. — Um, — wow. — Maybe we can one day try to do that with flutter and to you know try to do the whole app — with the guest town. — Do they have um like electoral politics? Can they elect a new mayor? That would be — that would be nice. you know, periodic elections, you know, term limits, all that good stuff. — They Yeah. Oh, let's see. That Marioet

Segment 14 (65:00 - 70:00)

is not integrated yet, — so it's going to probably do that. — So, by the way, it's been cooking for a long time. I would have expected for just this note feature app like it to — kind of crank that out. Um, oh no, agentic gerrymandering. what he says. That's incredibly depressing. Uh that's actually the saddest thought I've encountered in a very long time, but also very funny. Um so all you know, it's been 5 10 minutes here. — Yeah. — Progress so far has just been on the feature, but it hasn't been able to validate it at all yet. — It's as you can see, it's trying to use Dartm, but it's failing multiple times. So — we can tell it to — to integrate — accept all — obviously uh set up. So you have uh stated here you said before the stream and you've stuck to it that you don't want to touch any code including just pasting in this one line that will help it — like how do you think about you know why not just paste in this line? What are you uh — what's your philosophy on this — here? because it's I wanted to do to the AI episode and uh I would never find out — what's the problem if I Yeah, of course obviously because you know in the end — our work with MCPS and AI like here at Linkode is that in the end we would we want to end up and we are pretty much there to have that autonomous loop most of the time. So we want to know if it fails and how it fails and why it fails. — We want to know that because uh it's hard to like we don't want to fight the trend. It's not like because I want to be don't want to be any like to to have controversy or anything like that we don't want to code or anything like that. We obviously want we love coding. It's just that uh for we want to make tasks like this autonomously so that we can code tasks that are giving us this spark you know — that we love when coding. — Um validate the app. Ah yeah connect using this validate the feature. You just need Okay, I think it's I hope my English is kind of correct. Dude, your English is incredible. — But to be honest, this is another thing. I uh rather uh prompt in Polish. Well, I mean, of course, it's your native language because it's just that just that I don't know how to say, but sometimes it's like uh you can just uh make someone think something. You know what I mean? When you talk because when you talk to model, you want to it just things that work with human work with AI very often. So when you think like how I would say that so that the person would get it. — Right. Yeah. I mean it makes total sense to me that you can uh — Oh, it made it. Sorry. You can — communicate more directly, more efficiently in your native language. Of course. Oh, this is Wow. I've never heard this before. This is super interesting. Oh. Uh people keep typing. I clicked on the second one that I wanted to. So benchmarks say English is the most token efficient and which I guess like is maybe not terribly surprising given that most of the computing world like originated in English and then apparently Spanish is the second most uh efficient language. But I wonder, you know, is this a matter of like a couple percentage points, tens of percentage points? I'm curious about that. Yeah, I also saw this uh articles. I don't know why it's trying to use launch it again. I like we already launched it. Uh — this is something that I'm uh maybe I have to figure it out because when I have Dart MCP enabled um and Dart extension enabled in

Segment 15 (70:00 - 75:00)

anti-gravity then it sometimes doesn't know that I already use it for example I already run it or something like that and I noticed that when I — disable the dart extension because I don't code like if you don't code you don't need extension. questions because it's uh it's just taking your memory. — That's hardcore — because you just if you uh you know only read the code to review it. — Yeah, — you don't need the analysis. — Uh yeah, the full restart is needed. Oh, okay. It makes sense. — That's why it wanted to do Okay, so it was smarter than me. — It's a good joke. I don't know if that restarted or not. — It left some errors. — They have tried to restart but — AI stuff. There's some error. — I tell you AI will never catch on. Famous last words that I hope my credits — It's always funny to me. Yeah. me is when I say, you know, fix the errors where it's like, — yeah, they're errors. So, like — there are only two real errors. — Like, okay, who asks? I mean, I guess if you're aware that there's more, then you know, maybe that could broadcast to you that it's like unaware of some errors, but uh that's also probably just not really like I imagine in like Python and Dart or sorry, Python and JavaScript kind of the more duck type languages. Its ability to identify where the errors even are is probably more important. — But with Dart's type system, it's like, yeah, there's two errors because that's what the analysis server says. Okay, it worked. — Is it a new URI? — No, it shouldn't be. I think it's always one — per — Oh, [snorts] you didn't — flutter run. — You didn't have to rerun flutter run. You're on the same flutter run invocation. — Yeah. Yeah. Since the beginning. — Yeah. Yeah. Sorry. — Uh verify the add edit note feature with Marioet. It's always better to tell it because if it sees Marioet then it knows to use the MCP of course. — Yeah. — Okay. Now it's connecting. It's connected. Okay. So what's what it's doing right? Let me take a screenshot to see the current state. Obviously it got the screenshot. So app is on home screen. I need to navigate. So, it navigated as you can see. — Nice. — And it took the screenshots and it's okay. Uh, interesting. I can see the note section is already showing a saved note. That's actually interesting. Uh, it's probably because earlier I was trying to do it, but it would mean that it used exactly the same uh like key — local storage. Yeah. — Yeah. So, okay. Now it's actually testing it if it's working, right? You can see. — So, is it going to type a new note? — Yeah. — Let me now edit the text it said. — I wonder what it's going to type. [snorts] — Great dog on. — This is something AI would say. Yeah, it saved it and it checked the edit flow works perfectly. Now, let me verify persistence by going back and reopening the session. It makes sense. That's what human would do. Check if it's still there. — This is what I meant like it just does the things — you would do so that you can go grab a coffee. — That does sound good. I want to go get a coffee. Okay. So it did all the validations. So uh validation results. Yeah. Note section visible. Edit pencil icon shown. Saved note displayed. Really insightful visible. Yeah. So it's really nice. Um and now the feature is working correctly end to end. So this is the this is Marionet and why it's uh it closes the loop. — Yeah. So that's pretty cool and you can use it with web

Segment 16 (75:00 - 80:00)

Mac OS because we are pure Flutter. — Pure Flutter. Okay. — So we can do so that's also nice — because that's even more flexible. Uh it's that's why um we are not using patrol in here because it would be an overkill. Yeah. A lot. Yeah, I can see you can grab one or not. Are you grabbing the coffee right now? — Oh no, no. This is uh that was the name of our demo at cloud next — and Randall was there. So — um so okay the you mentioned you're not using patrol which I guess that's because patrol is mostly in to talk to native things. So would it use patrol if the integration test required native features? — That's a hard one. Uh so this is uh much lighter to use marionet and much more flatter way. So for this AI validation like 99% things that you code within flatter apps are flatter. — Yeah. — So that's why we thought okay let's do the flatter thing that would work with all flatter apps. It's much faster. Also we try to save tokens by uh for example getting only the interactive uh views. Maybe I can show you here somewhere uh when it already launched it. Okay. So um it connected it took screenshots. So uh what we try to not do. Okay. So here you can see get interactive elements. So it's very important that we saw for example with uh I think Dartm that sometimes um the AI uh chooses to dump all the widget tree — and it's usually not uh not needed for the task and uh when you dump all the widget tree you pay a lot for the tokens and also you inject it into the context. So, uh it's just, you know, it weakens — the important parts. — Yeah. — Because you just uh kind of put in the garbage in garbage out uh rule, — the holy rule of AI — prompting. So um that's why we we added this get interactive elements because uh I'm uh explaining because uh at the first time when you see it in our docs you might think uh it's overeng engineering but uh that's why we have that like in here what's that okay so you can see this like found 33 — uh 33 interactive elements in the on the screen like some only gesture detector ctors uh you know buttons — things that are uh from material or your app design system because sometimes you might want your own interactive elements to be shown but from what I saw it didn't put any of them into the config so it just you know thanks to that it doesn't have to — yeah it's like a compressed version — yeah inject some yeah and not to inject columns and rows and a lot of paddings for example. So this is also important. It was important for us. — Yeah. I imagine you're pulling those parameters out of the you must be pulling them out of the render tree. That's the only thing that knows coordinates, right? — Yeah. It's uh actually you can see it in the code for marionet. So element tree finder uh interactive elements here find element tree. So we go through the element tree and we just try to visit all of the nodes and extract the ones that are uh are the ones we search for. — Yeah. So we ask if it's interactive — from our like for users perspective. — Yeah. — Yeah. — Or for example like hit testable you know. — Yeah. — This is something that's also important. Yeah. And uh yeah. So if you want to see the code of course uh it's open source so uh you can see it and uh hopefully extend with some other features and uh create a PR. It would be very nice. Yeah. So another — we don't have to do everything. — Yeah, exactly. But we did most of the

Segment 17 (80:00 - 85:00)

things are done by AI in this package — because the author uh that is our actually uh backend head of back end uh he authored it and it's also a funny thing about this marionet that we already had it in October. — Okay. And no and it's it was just there for our internal purposes and no one thought about uh actually using it like — releasing it and that it would be helpful for anyone. And then there was a post in the that's why this is the the — the takeaway from this is about the community and why community is important is that one day there was a post on X uh by Thomas Burkhard. I — I'm pretty sure everybody knows him because he's a legend in the community in the Flutter community like from the beginning of the Flutter community pretty much. and Thomas uh had a exposed uh about uh [snorts] having like playright MCP but for flatter. — So it's literally that because playright MCP it's nothing about end to end testing uh it's about just interacting live. So this is runtime interaction literally the same — and someone uh sent it on our company Slack — and they sent it and I said this — no better I said it would it it's a great idea and we should build it and then the my friend approached me and he said we already have it and I said what I said yeah we had it one day uh because we thought that it's going to be a nice addition to our AI stack. and we saw it and we said, "Okay, yeah, it's literally the thing that Thomas uh mentioned, — was asking for. " — Yes. And we released it and then we followed up that uh post, Thomas's post, and we said something like, "Yeah, we delivered and here's the GitHub link or something like that. " — Uh so, so that you know, we can. So, it was very funny. Um yeah. Um, one more thing for today I wanted to show patrol MCP and hopefully maybe it will work. So because why patrol? We already tested it, right? You could ask and uh right we tested it but we tested it uh live and it's not written anywhere for future for regressions. M — so now we would like to have a patrol test for that [snorts] — so that we never so that AI would not break it so easily. Now, this, by the way, is why I was asking earlier if you were using actual golden tests because you're going so far as to save screenshots and compare screenshots here. And it feels like, again, we're all about to find out how you actually implemented this. But my naive approach to solving this, if I was approaching this problem, would just be to do everything that we've done so far, but then kind of output those in like a golden test friendly format and allow golden tests to run henceforth. But so how does it actually work? — The golden test is a good idea. One thing that I was because I yeah I was thinking about it but one thing is what would be the golden file? This is the main question and I don't have the answer yet. — What would be the golden file? the first one because right now we could have if we had a Figma design that would be in the perfect world like every uh product owner would say that it's the holy grail to have a you know onetoone comparison with Figma but it's — usually it would be — couple pixels odd. — Yeah. — So what to do? We have to introduce a threshold and like an error margin. Do we want to have an error margin so and so on? So maybe but it's uh it's just something that we need to answer a couple question about. That's that's just something and I didn't know what are the answers because everyone would say differently — like everyone would answer different. — Uh that's why and the golden file one thing would be nice to have the first one as a golden file for example, right? It would be enough maybe like the first verification like it did right now. It could be enough. — Yeah, that's what I that would be my assumption. Yeah. Um but the thing is another like just to um to take that thread uh another thing is that here we have a backend data. We have live data from some environment from the back end. — And in the golden test you would have to do the same. — because here we are you know we were

Segment 18 (85:00 - 90:00)

already from the home. We were signed in. We went to the agenda. we went to some uh specific talk and then we had a golden file with a note from that state. — So it's also doable but we would have to — reproduce that. So yeah, that's uh that's something that just uh — and a lot of that I think really gets into how somebody's architected their app — which is not really a thing that patrol or marionette can easily uh assume you know ideally your data layer is abstracted enough that you in the test form can easily provide either mock records or like mock data repositories that just return this exact same data and you don't you know you don't actually care about the — the server but it's not obvious that every app is going to be architected to make that very feasible. It's true. — It's also some It's also something that's much easier to do with Marionet because you are live and you already connect to something and you just like a human being, you just take uh you just take a screenshot or a mental screenshot and you just try to figure it out. M — and with uh with golden tests or some more procedural tests you have to be very anti-flaky and strict and you know you want to have stable things and so on and you want to know the architecture because in this kind of runtime verification you don't have to know that you can do this policy of AI has to think and I just uh give the AI all the resources to think — and it will just figure it out and try to type password into the password field. You know what I mean? Uh so that's — it'll be like maybe it's 1 2 3 4 5. I don't know. — Yeah, exactly. Maybe it would actually probably guess it faster than us. — Probably. — Uh okay. So that was incredible. I think there's a lot of folks in the chat who are pretty impressed. Randall's taking a look. Looks great. Someone a minute ago said, "Love to give it a go. Amazing work. " Um, and then everyone's arguing whether or not there's a drink that has as little sugar as water. So, um, you know, standard internet fair. Uh, so, uh, mate, any, uh, any kind of closing thoughts here? Anything else you want to get to? How, uh, seems like a pretty darn good tour. — Uh, yes. I owe my fl uh I owe the patrol team to do another episode on patrol MCP because I forgot about it. — Okay. Well, come back anytime. — So, if you're okay with it, we can do that after the Google IO. — Yeah, that sounds great. Uh you're absolutely welcome back. And also please uh let's let us know how you what you think about this maybe on social media or anywhere so that we can see the feedback especially the Marionet MCP it's very new thing uh we would like to know more about your thoughts and how would you approach it or use it we already got a couple interesting uh things uh about for example how people cannot use it because for example someone uh reached out to was from some American bank — and they said, "Hey, I love this, but I can't use MCPS — uh at our uh work environment. So I but I can use CLIs because uh why not and because of some random compliance, right? " So uh so the so yeah — in chat we had — you are yeah uh it was nice that you uh saw it and uh and the that person helped us to also deliver the CLI part. So I think there is CLI to be uh to answer your question and it's here huh yes so in packages there is a CLI because of that so someone so that's why I am asking for feedback because uh we didn't we we just wouldn't know that you know — there is uh some some company that would actually make use of CLI we thought Why? If we already have MCP. Yeah. So that's why that's why. — God, that's so funny. Also, just the like you can't use this thing cuz that's unsafe, but you can use this other thing that is identical.

Segment 19 (90:00 - 93:00)

— Yeah. And it's uh this is funny because uh in a Microsoft copilot like this work uh you know policies like when you have a copilot in your organization uh some admin from uh another company told me that by default MCPS are disabled and this is probably the reason why they are disabled in companies because people are afraid of turning on the default. It's not like everyone has anything against MCPS, — but it's just the default settings is that they are turned off — and many people are just afraid of turning on something because of the security. — Yeah. — And using CLI is not turned off by the default. — Interesting. That was his theory that it's just about the default that every everyone if they have to you know change the default they have to ask someone in the organization settings. — Nice. Amazing. Uh all right. Well folks that has been a refreshed look at patrol and MCP Marinette's MCP server. Not yet patrol's MCP server. That's going to be that remains elusive, but hopefully we'll get back to it in an upcoming episode. — So, I am going to be out for the next two weeks doing IO things. If you're going to be in California next week, then you'll be able to see Mate and I. And there's going to be a very — Yes. And there's a huge uh Flutterbased demo at IO this year called Anti-Gravity Cafe. No, anti-gravity coffee co. And it is all powered by Flutter and Firebase and uh you know of course Gemini and written in anti-gravity and all that good stuff but all the UI is Flutter and it involves printing custom images made by Nano Banana onto your latte. That's what Randall was mentioning earlier when he said Gen. Time for a Gen Latte. Uh so I look forward to having my Gen Latte from Anti-Gravity Coffee Co. in that patrol mug. That's what I want to do. It's gonna be great. — Maybe I will actually bring a couple more so maybe someone would uh would want one. — I'm sure folks will. Yeah, absolutely. So, any last thoughts, Monte, before we sign off? Uh thank you everyone for the kind words and uh great questions and uh it's great that we made it without any uh earthquakes. — Yeah, I mean there you know there's still maybe like 10 15 more seconds but if we sign off quickly enough we should be okay. Uh all right well folks as I said I'm going to be off the next two weeks and then I should be back uh later in May after that. There's also an American holiday in there somewhere, so I'm not sure. But, uh, I'll be back. And until then, everybody, happy fluttering. See you everyone.

Другие видео автора — Flutter

Ctrl+V

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник