🔴 JetBrains Air: Agentic Development
Chapters7
Host announces the POW package release and previews building an app with JetBrains Air.
Nuno Maduro dives into JetBrains Air, POW, and AI-assisted PHP development, testing how agentic tooling reshapes coding workflows in real time.
Summary
Nuno Maduro uses this stream to explore JetBrains Air as a fresh, AI-first editor focused on tasks and agents rather than heavyweight IDE features. He introduces POW, a PHP testing-output tool that slims human-readable test results into compact JSON to reduce token costs for AI agents. Throughout the session, he toggles between back-end and front-end work, showing how POW plays with Laravel, PHPUnit, Paratest, and other PHP testing ecosystems while Cloud Code and Codex steer the AI-driven coding flow. The live build includes a landing page for GoodHabits.com and a Laravel/Inertia front end, with the AI handling migrations, models, and controller scaffolding, then iterating on statuses, enums, and dashboard payloads. He debates planning versus execution with the AI, experiments with different models (Codex vs CodeEx vs Juny), and documents performance and cost trade-offs. By the end, the dashboard evolves from rough scaffolding to a near-functional prototype with habits per day, status tracking, and basic user flows. The chat intercuts security and tooling news (Axios npm incident, cloud code leaks) to ground the session in current tooling realities. The long tail takeaway is a hands-on view of how agentic tooling like JetBrains Air, POW, and Cloud Code can accelerate iterative product-building, albeit with caveats around cost, environment parity, and editor capabilities.
Key Takeaways
- Pow creates JSON-structured outputs (instead of verbose human-readable results) so AI agents parse test results faster and cheaper during PHP workflows.
- POW claims to transform tokens into a minimal 20-token output, enabling notable cost savings when running large PHP test suites (e.g., thousands of tests).
- JetBrains Air is free to try in the session, but the underlying AI models (e.g., CodeEx, Juny) and usage can incur costs and require API keys or cloud credits.
- The stream demonstrates a practical Laravel-based app (GoodHabits.com) built iteratively: migrations, enums, and a simple Habit model with status tracking, then frontend wiring via Inertia.
- The discussion anchors on productivity trade-offs: Codex can over-structure models and migrations; Cloud Code often feels faster and more battle-tested for planning, though pricing can vary widely.
- JetBrains Air emphasizes task-centric UX and AI task management over traditional code editing features; the editor’s strength is orchestration and AI-assisted planning, not desktop IDE depth.
- Security and ecosystem hygiene are foregrounded with Axios npm incident and cloud code leaks, underscoring the need for token hygiene, two-factor auth, and cautious dependency management.
Who Is This For?
Essential viewing for PHP/Laravel developers curious about AI-assisted development, AI tooling skeptics evaluating editor candidates, and teams exploring agentic coding workflows to reduce token costs and accelerate iteration.
Notable Quotes
""POW is agent optimized output for PHP testing tools. It is fully agnostic and works with Laravel, Symfony, Laminas, vanilla PHP, and testing frameworks like PHPUnit and Paratest.""
—Nuno explains POW’s broad ecosystem compatibility and its core promise: compact, machine-friendly test output.
""This tool when you are running within an AI agent cloth code cursor Davino or whatever will automatically transform those tokens into just 20 tokens.""
—Demonstrates the token-reduction claim at the heart of POW.
""The JSON output is a minimal structure ready for the machine to read, with only the information we need.""
—Highlighting the practical benefit of machine-friendly output over verbose human-readable logs.
""I love when I produce a video and then I enjoy watching the video. That means the video is good.""
—A personal touch from Nuno about filming quality and engagement as a quality signal for content.
""The editor’s strength is orchestration and AI-assisted planning, not desktop IDE depth.""
—A summarized critique of JetBrains Air’s current strengths vs traditional IDEs.
Questions This Video Answers
- How does POW change the cost of PHP unit testing with AI agents?
- Is JetBrains Air free, and what are the caveats for using CodeEx or Juny inside it?
- What are best practices for implementing agentic PHP back-ends in Laravel?
- Can Cloud Code alternatives like Codex or Juny be effectively used for planning in Laravel projects?
- What are the security considerations when pulling AI tools into a PHP/Larav el workflow, given npm Axios incidents?
Full Transcript
Hey, hey, hey. Yeah. Light. Uh-huh. Hey, hey, hey, hey, Hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey. Black. Hey. Hey. up. Light it. What's up? What's up? What's up? How everyone is feeling today? Welcome back to another live stream. Nice to see you all. And today is the release day. Have you guys seen my new package? Oh yeah, baby. We're going to talk about all of that today, plus exploring the new Aentic editor of Jet Brains, which I'm very excited to explore today, actually. So, this will be awesome. We are going to build an app together, and it will be dope.
Alexandro Kovi, how you doing? Nice to see you. Oscar, what's up, dude? Nice to see you as well. Peek and flow, of course, from Twitch. How you guys doing today? What's up, kick tick tockers? Everyone, hope you guys are having a fantastic week so far. Okay, it's Wednesday, middle of the week. I know, I know. But we have exciting news. I have just released the package and I want to show you everything. Okay, I want to show you everything. First of all, how you guys doing today? What are you guys doing right now? What are you guys working on at the minute?
Nice to see you all in my live stream as well. You just saw the paw video. It looks cool. Thank you. Thank you. Thank you. Let me show you. Actually, let me actually show you. It's awesome. I'm excited. Well, well, well. I'm excited as well, chat. I'm excited as well. Let me show you. Okay, let me show you. And this is the project I've been working on for a while already. Okay, it's called POW. Let me actually show you. I'm not logged in. [ __ ] that's a problem. Give me a second here. Give me Give me a second here.
Let me log let me log in on into this GitHub account real quick. Oh my god. Oh my god. Oh my god. Oh my god. Hello Archie. How you doing? Nice to see you. Chat, say hello. Say w stream. How everyone is feeling today. Hopefully good. I'm feeling super happy today. I went to the gym very early today. I managed to publish a video about this new package I've been working on and I kind of want to show you everything about this today. Okay. plus build an actual pack an actual application with you all with Jet Brains Air.
Okay, but first let's talk about this. Let's talk about this. Okay, so I just published on Twitter a new announcement um which I kind of want to show you as well but [ __ ] I cannot log in. It's only problems today literally. But let me try something else though. Let me try to go to my uh Twitter profile directly. Can I do this? Yes, I can. Here we go. Oh, here is a tweet chat. Okay, here is the the magnificant tweet. Okay, here we go. Here we go. Here we go. Anyways, uh yeah, I just, you know, I've been working on this project called Pow.
And better than just show you what it is, we are going to actually use this project today. I actually want to just show you the video real quick for those who are not familiar with the video yet. Okay, this is the video. This is the the the link for the video. But this is what the project is about. Let me show you. By the way, tap W sound. Okay, type W sound if the sound is okay. What's up everyone? And today I'm going to introduce you to a pal. Everyone is How is the sound by the way?
Is the sound any good? Hopefully it's good. Type W sound if the sound is okay. W sound. Thank you. Thank you. Thank you. All right. Sh. Let's watch the video real quick for those of you who haven't watched yet. Okay. If you like the package, type W pow. Okay. Wow. Everyone, what's up everyone? And today I'm going to introduce you to POW. Everyone is using agents to code. And the reality is that agents are still getting that human readable output. And as you can see here, we have 400 lines literally of human readable output with ASKI characters.
We have colors. We have pretty much everything here. Close to 500 lines here, which is kind of crazy. Now those 500 lines can actually represent a big number in terms of tokens. But more importantly, they can pulate your context window. That's why today we are fixing this by introducing POW. POW is agent optimized output for PHP testing tools. Is fully agnostic. Works with Laravel, Symfony, Laminas, vanilla PHP, whatever. but also works with any PHP testing framework PHP unit past or pa test. So this tool when you are running within an AI agent cloth code cursor Davino or whatever will automatically transform those tokens into just 20 tokens.
That's it. Super simple easy peasy lemon squeezy really just works which represents a bunch of reduction in terms of tokens but more importantly a bunch of reduction in terms of cost savings. This one was actually crazy when I noticed that actually if you run past PHP without any flag like compact or any tail whatsoever. If you run it like 50 times with a thousand tests will actually be seven bucks if you are using cloud cod's API. Obviously not not a lot of people are using cloud code API that are using the subscription but you know if you're using the API this literally seven bucks reduction on a 50 a 50 um 50 run in the same session you know the one thing that is worth to mention that is cloud code have some caching and [ __ ] like that which is not contemplate it's very hard to calculate this cost okay but you know kind of crazy though so for example here using cloud code API but also running a thousand tests 50 times we actually see for example seven bucks being saved on that session which is kind of crazy.
Now it's time to see this in action. Let's actually require pow on this project. Type composer required in Maduro. This was a very important thing for me. So as you may know like I really wanted to support the entire ecosystem. So Laravel Symfony you know laminas whatever plus I wanted to support PHP unit paratest plus past PHP. I really wanted like the entire ecosystem to be included on this one. So the only thing you really have to do is type composer require and that's it. Instantly the agent gets JSON output. Pow. And when this is over I can actually go back to cloth code and I'm going to ask exactly the same thing and bam done.
Now we have JSON. As you can see we have literally JSON output. And something I've noticed which I did I should I should have mentioned on the video like here all the way top we have a,000 assertions running in less than a second. 70 7 uh 700 milliseconds. And just below we have JSON. It's because it's just JSON with a minimal compact output. It's instantly faster as well, which I probably should have mentioned, but instead of having all this human readable uh output before and I can type control O to actually see what we have inside.
And as you can see, we have super minimal structured JSON output uh ready for the machine to read. And we have only the information we need. Now it's important to keep in mind that this works with any PHP testing framework. So I can go here to this project. Just go back and ask to run vendor. Very important chat. You see we love PHPUnit by the way. Everyone typing w PHPUnit. We love PHPUnit in the PHP past community. Everyone loves PHPUnit. So of course we had to include PHPUnit on this one. In PHPUnit for example and this will equally work just like magic.
I can even ask to run par test if I want to. And that that is no better feeling than watching yourself and like what you are seeing right now. So I really love when I produce a video and then I enjoy watching the video. You know that means the video is good. By the way when I'm editing I always try to think like am I having fun watching this video? And if the answer is no probably people won't have fun either you know so equally work as well. And this is framework agnostic meaning that it works on symfony laminas whatever.
Now this plug-in also supports any output of the plugins on pass that you love. So if you have coverage like coverage mutation testing uh you know anything that provokes that basically outputs anything else besides the regular PHP unit pass output that output will be puted just below. Now one very important thing about this is that it won't have any colors it won't have any spacing will be literally um will be literally like super optimized for the machine. things like type coverage, coverage, mutation testing or more. Here as an example, I'm running past php with d- coverage.
And as you can see, the output of the coverage is being put on this key call output. And just below cloud code was able to understand that output and give me a coverage summary real quick. Oh my god, I should have demoed something. So yesterday, I literally ran this project um against uh with cloud code against the previous output like all the colorings and [ __ ] like that. And then I ran with a JSON output and asked cloud code which output you prefer the most. And he said, "Oh my god, I prefer much better the second one because it's so much less content to parse and to read.
Let me just show you how errors and failures are actually handled on this minimal JSON output." So I'm going to go to this assert true and I'm going to actually assert that this true is actually false which will cause a failure. And then I'm going to go back to my terminal and I'm going to just say to cloud code to literally run again everything. So I will just say run uh the test suite uh again. And by doing this, cloud code will now get that error directly on that JSON minimal output and it will be able to understand what's happening.
As you can see now we have this failures array which is telling the AI where exactly the test suite is failing and just below was able to understand that I can even come here and say can you fix it and obviously the AI will understand very quickly what and be good to go and that's it. Let me know in the comments below what do you think this project is out by the way. This is the YouTube video in case you want to support my work. The only thing you have to do is go to the video itself and click on this like button, okay?
If you want to support my work, literally takes a second and it means the world to me. Okay, so that is out uh the repo. Let me send it to you as well in case you guys want to use it. I actually need like beta testers. Package name is fantastic. Actually means bread in Portuguese by the way. But anyways, so this is the package link. If you guys want to support the package, just put a start on the repo. But also like actually test it out. The only thing you have to do is type this composer require nunum pa and then by doing this you just have to ask your agent your agent will literally just include um will start producing JSON from now on hopefully okay that's what is supposed to happen okay but there is crazy results here and hopefully the community will be excited about this okay so this is pow um what else I want to speak with you about before we jump in uh did you guys saw the axio security issue plus cloud code getting open source first.
Did you guys saw that [ __ ] Type W or whatever if you have seen that cuz it is kind of crazy. Let me actually just, you know, kind of speak with you a little bit about that. Axio issue. Anxious issue. No, not really. More Axio. Here we go. The Acronuse. Is this a good one? Uh Uh-uh. Yeah. Do you want to see the Yeah, let's let's actually quick talk about this. This is kind of crazy. Honestly, I have just read the in between the lines and I have quickly scanned my my desktop about this. By the way, you guys seen it?
Yeah. Just to give you like um just to make you understand how problematic this [ __ ] was. So, basically JavaScript has this equivalent of packages in PHP call it uh npm. Okay. So through npm is where people in JavaScript get packages updates and [ __ ] like that. Now one very famous package called it Axios actually got compromised. Okay. Axio is used by lot of apps even you know um it's used everywhere literally. Axios is like this HTTP wrapper that literally does what fetch does but with a more fancy API. Now the problem with uh with this is that Axis actually got compromised meaning that one of the maintainers account got compromised and it was able to actually publish a malware within one of the versions of Axio and the versions are this one.
By the way, I would highly recommend all of you literally just go to every single project you have and just run this script to check if you are using any of these versions because if you are it's like very very problematic. literally like you get a Trojan horse or installed in your laptop which can do various things like the the the can literally download files and just inspect your laptop and [ __ ] like that. Anyways, the first thing I did was literally check if I have any of those two versions on my laptop and I don't which is good.
Uh but yeah, you would type npm install that would literally run a post install script which will install this virus in your laptop and it would just remove itself so you would never know basically. It's kind of insane. you slept while that version was out. Yeah, it was kind of insane. And uh you know and it would that would give like remote access to the attacker. Um and you know and it's kind of crazy like apparently the way the attacker got access to Axio's repository was by getting access to a classic long lived token. So one of the maintainers had this um old token that didn't have an expired date and basically the attacker got access to that token.
and he was able to publish a version on his behalf. Um that was basically a version that was there on npm for 3 hours. Meaning that if you by any accident created a lot of app during those threehour window in your laptop the likelihood that you are currently with a tro in your laptop is just huge and uh you know I got super scared when I saw that I instantly ran a security check on my laptop. There is scripts out there already which you can run and see if you have any issues. But uh but yeah, at Laravel we also did what we could.
We instantly updated the starter kit to not use this uh to not be able to even install the the the the version with the issue. And it's kind of interesting because now people are saying okay well how can we actively or proactively make sure we don't install um new versions like instantly. So the maintainer have some time to literally just put them out there put them like out of the npm. And some people are saying like something you can do is run this npm config set minimum release H3 which literally says okay if there is a new version of this package at least wait 3 days before you are able to install it in your laptop.
What do you guys think about this? Do you think it's a good idea? Type yes. Type no if you don't think it's a good idea. I think it's a double-edged sword in the sense that you know obviously you would be protected against this kind this kind of scenarios. So these kind of standards would never happen again. But at the same time at the same time like if there is bug fixes you wouldn't wouldn't also get those bug fixes instantly. You know exactly what is a if what if is a security patch exactly. So it's kind of difficult to to even you know access even like realize if this is a good idea.
I personally don't know. I think it's a yes and a no. It's yes in some cases and no it's in other cases. So exactly. So there is that. Um and there is also like this second thing you can do which probably makes sense which is ignore scripts. Uh composer already has this by the way. Composer does not allow you to uh run scripts scripts as part of composer update. Okay. You need to explicitly actually on Laravel we have that. Let me show you. So on Laravel, if you go to the Laravel repo, we have this uh script at composerjent level right here, which is is pass php somewhere here, I think, here we go.
So this literally allows passph to be able to run scripts. Okay. Uh but yeah, it's basically two packages only like specified here. But on the JavaScript ecosystem, what they are saying is that just simply do not allow any package uh that you don't know to be able to execute scripts. So you know kind of insane story also kind of shows to how sensitive this JavaScript ecosystem currently is. Even the PHP ecosystem may be actually compromised by something like this in the future, you know. Well, I wanted to ensure you guys what I have done this this last year uh regarding my open source packages.
As you may know, I support multiple open source packages that probably use today. Things like collision, things like passph, things like lustan and more. And what I have done is that I have went to every single repository and I have scoped the much as possible the list of maintainers. Okay? And I've also ensured that every single maintainer have two factor identification. um enabled. Okay. Um so that's what I have done so far. There is no not much more I can do honestly. And uh and yeah, I've also, you know, I obviously don't have any token, especially classic tokens on my account, but I I try to get I only get granular tokens at the minute, which is exactly what we want.
So yeah, that's it for the active issue. I think this is crazy, by the way. Insanely crazy. The next uh news we have to talk about, and it's the cloud code being leaked. I honestly I'm scared of [ __ ] even Google this because apparently Anthropic is like suing everyone as part of this issue and there is a likelihood that some YouTubers actually did videos about like the source code of a cloud code and u they actually say I actually have the risk the risk of being sued by Enthropic just by doing this video. Uh so currently Enthropic I'm going to just explain you the issue.
Okay so we have cloth code the model and we have cloth code CLI. Okay, two different things. One is the model, the other one is like the UI for the model. And apparently like the UI for the model which is cloud code CLI got got open source by accident. Okay, and the mistake was apparently made by cloud code itself which is interesting. It's the model itself which literally made an issue and Anthropic literally you know um saw that cloud code um cloud code CLI is code was leaked and um what they have done is that they started to sue people like not sue people but literally issue uh take down takedowns on GitHub meaning that you know a lot of people have published that code on GitHub already and um Antropic literally just starts saying you need to to remove that repo from GitHub.
The thing is that it's on the internet already. So once it's on the internet, it's just crazy. Let's take a moment to read the chat though a little bit. So pick and flow agreeing with uh the security patch uh being a double-edged sword. Exactly. You know, um Domino source is asking if bun prevents post install scripts since long time ago. Uh I didn't know about that. That's interesting. Thank you. Thank you. Thank you. Pinflow is saying the following. The code is very interesting. I'm using cloth code to analyze it. So you're using cloud code to analyze cloud code.
It has leaked code. Interesting. I honestly I don't want to download the code at the minute. I don't want to see the code either because I'm just too scared of it, you know. Um Mann is saying the following. The solution is just to have Laravel build every single thing in the world as first party. No external dependencies. Boom. Hire material. Uh that's complicated. It's a lot of code to maintain. You know, Laravel sits on top of like a lot of open source packages and obviously like you know it's kind of hard to maintain everything. Okay.
But yeah, cloth code is CLI code. it was leaked is TypeScript. Okay, that's the only thing I know it's Typescript. Um, which is, you know, it's not a surprise. I kind of knew already it was Typescript. It's Typescript is using Hink uh CLI uh framework. Uh but yeah, all is open source. It's literally like a million repos out there. The repo that leaked the code is now with 100k GitHub stars. That's the fastest repo reaching 100k GitHub stars in like a couple days, which is kind of insane as a story. Okay, now just be mindful about this.
Entropic is this billion evaluated company and currently their source code got leaked by their product themselves. Like the product called it cloud code leaked the call code CLI code by mistake which is just hilarious as a story. Okay, anyways uh this is kind of interesting and yeah let's actually you know start the the stream real quick. Uh today goal is kind of to uh explore um Jet Brains Air. Okay, Jet Brains Air is this new agent coding editor that Jet Brains released and I kind of want to know if I want to explore this tool with you guys.
Okay, I haven't seen [ __ ] about this. I haven't used it already. Does any of you have used Jet Brains Air? And if yes, do you like it? What do you think about it? If you haven't used it, just type no. I'm curious to see what is the adoption currently of this tool. but it's a new editor and I kind of want to explore it as explore it a little bit. Something I like already is that it's not focused on the editor. It's kind of focused on the AI tasks. So this will be interesting to explore a little bit and we're going to dive into all of this.
Uh we are building this thing called it good habits.com. This is what we are going to build today I think and the goal is like having some sort of you know way where you can track our good habits. Okay. Go to the gym, have healthy food, don't drink alcohol, don't smoke everything. Okay. Okay. Uh someone is saying that there is no Linux version at the moment. Oh that's interesting. This is like Mac OS only. That's interesting. None of you have tried it which is good. Okay. So we are going to explore all of this today.
It's f it's focused on um it's focused on um agentic coding. So I'm going to just give full access and we are going to explore all of this together. Okay. That's the goal for today at shield live stream exploring jet brains air. Uh what do I want to do and what do I want to talk about? Yeah. And uh before we start just as as a reminder I just released POW. POW is this new agentic output for PHP testing tools. Supports a lot of symfony laminas and more PHP unit and power test and everything. Make sure you check that tweet but also make sure you watch the video.
Okay. Okay. Here we go. Watch the video, put like on the video, support my work that way. Okay. Literally for free. So yeah, let's say thanks to our sponsors. Redberry International, one of the best digital agencies to work. Uh they do Laravel, they do Vue.js. They're absolutely awesome. Check them out. Okay. Redberry. International. We also are supported by uh SER API. If you want to have uh Google access um through an API basically like do Google search uh and have JSON results. This is literally for you. Okay. SER Aapi.com. Also, Mailch used to be like a local email solution, but now they support production emails as well.
They are fast. They are awesome. Check them out. Miltra.io. Jet Brains, of course. And it's funny because today we are literally exploring Jet Brains Air, which is their new gigantic um um editor for uh software development. We are going to explore that today. But they are supporting the channel. PHPtorm is dope. Check them out. Of course, titan.com. They build and rescue web apps and and you know, they're awesome. They are experts on React, experts on Laravel. They wrote the book Laravel up and running. Check them out. titan.com. Uh, code rabbit.ai. If you want to have some nice AI code reviews directly on your pull requests, this is absolutely for you.
Okay. Code rabbit.ai. That being said, I think we're ready to go. This is pow. Okay. Okay. Okay. Already like 50 GB stars. Not bad. Okay, we're ready to go. So, let's explore this today. Again, today will be a chill live stream. Okay, a chill liveream. You guys are going to help me out exploring this Jet Brains editor. Okay, this is called the Jet Brains Air by the way. Let me just quickly Google search uh so you guys actually have the website if it looks free though. Do you guys know if this thing is free though?
Cuz I was able to download it and then I just open it and it looks free. So, do you guys know if this is actually free? This is the link by the way. Okay, it looks free because I just downloaded and I open it and it didn't ask for any license or to just pay for anything really. So, I assume it's just free. Why name pa? Pow means um bread in Portuguese. That's why you will order a pizza. Well, no good. Pizza is a lot of carbs, dude. Order a salad, man. A salad with some nice sauce on top of it.
That's much healthier. Okay. Okay. Does any of you have tried air already? Like, do you know why if it's if it's free? I don't even know. It's working for me. It looks free though. So, all right. So, I kind of want to explore what do we have here. So, we have an UI FA focused on tasks, AI tasks. Okay. What is this? G work tree docker. Oh, I can run this on Docker directly, which is something I don't want to do at the minute, but I can open the tasks. Okay, let's actually just spawn a new task to see how it goes.
Let's type here. Uh, can you tell me what that's actually install POW as part of a new task? That's actually a good point. So, I'm going to just say something. I'm going to just copy this. I'm going to say, can you install POW? This is like super small. Let's make it bigger. Here we go. Can you install POW, please? Okay, just send the link. I'm going to click on send. So, all the accessibility stuff like keyboard stuff is just working, which is good. Okay, now I can literally see all of the tasks here, which is interesting.
Credit balance too low. [ __ ] it's literally not for free. Oh no. Give me a second. How do I even put money on this? I don't even know. Log out. Oh, it's using cloud code API. That's why it's not working. [ __ ] What other models can I use? Can I use Jet Brains? I can. Well, I think we're going to use Juny, I think. Give me a Give me a moment, chat. Give me a moment. You try today. Well, I thought it was free, but we have to pay for the model. Kind of expected though, if I'm honest.
Uh uh uh. So, let's actually Do you want to use Juny today? I don't even know. Uh, yeah, let's let's use Juny. [ __ ] it. Well, we could use also Codeex. Would be kind of cool to use Codeex. Uh, yeah, let's actually use Codeex. Okay, it's asking for the API key. Where do we even get that? Let me see if I'm not sharing my screen. I'm not. Yeah, let's use Codeex real quick. All right, chat. Wait a moment here. I'm just doing login with my open co open code account real quick and get an API key.
Uh why do I even do that? Here we go. We are going to use codeex by the way. Okay. All right. So I'm going to create an API key. Let's actually do that. I'm going to call this air just access to everything. Yep. Yep. Yep. I'm going to copy validate it. Done. Okay. So, now I can choose open co uh openai. Yes, I can. Nice. I'm going to log out from anthropic. I'm going to close this. I'm going to reopen it. I don't see it. Like, give me a second, Chad. How do I even add?
Oh, okay. I may have to close the entire editor. One second. Okay, full screen again. Open goods. It keeps defaulting for the cloud code agents which is Oh, I may have to start a new session. That's why actually makes sense. Yep. Okay, new task codeex. Here we go. Okay, we're good to go. I think I can close this. Uh I can open that. All right, Shad, I think we're good to go. So, I have here all the GPT models. Um, just correct me if I'm wrong. I should be using the GPT 5.3 codeex. Correct. If I want to use like the codeex model, this is the one.
And if yes, like what is the difference between this and the top one? I think I should be using this one because it says codeex. This one doesn't say codec. So, I don't think it's like code optimized or whatever. Use 5.4. It's better than 5.3. Oh, I'm confused now. Oh, the new 5.4 supports code too. Okay. Well, let's use that one then. I can close this. Let's actually copy this again. I'm going to say the following. Can you install PAL on this project? Okay. So, now we're using GPT 5.4. This is like probably the very first time I'm actually using codeex for everything like and I'm I'm you know, you guys know.
Oh my god. Seriously? One second. Usage limit exceeded. Okay, I need to [ __ ] put money on this. One second. Um, open AI platform dashboard usage. How do I even put money on this? I don't even know. Where is billing usage? Okay, I don't have any money. I have literally two cents. How do I put money on this? Your profile. Billing, billing, billing, billing, billing, usage, maybe. Nope. Oh, billing. Got it. Okay, I have zero cents. So, I'm going to add credits. I'm going to add 10 bucks when I actually had like 30 bucks already. So, this this is done.
Confirm payment. Please work on the first go. So, I don't have to do anything else. Come on. Come on. Openai. Come on. Hey, what's up, Jokanito? Nice to see you. Okay, people are saying that GPT 5 5.4 is awesome. That's good. All right, payment successful. So, I'm going to just retry. This should just work. Okay, it is slow. Like we actually have noticed this the last time we worked together like that that codeex is in general slower than cloth code and you can instantly see it like you see just [ __ ] thinking for no reason. I don't know if it's like doing anything else behind the scenes.
It might be that but if it just feels slower like let's actually just go here for example and just say and just basically say something like this say hello for example let's see how slow actually it is saying hello you see I don't know I feel like cloud code would probably be even faster doing this okay all right so considering I need to determine so we are going to give like full access to this stuff okay Yeah, just allow. Can I give like full access? Where do I do that even? Stop uh thinking level instant mode chat.
Okay, I think we just gave full access to into it, which is good. So, it just did literally Laravel boost MCP server tool, which is good. Now, it's in inspecting the app in the POW installation docs. It's kind of understanding a little bit what we have on composer.json. And now I hope we'll just type composer require. Hopefully. Yep. That's exactly what we'll do. I'm wondering if I have boost um codeex instructions. If we don't have that, we may have to do it. Oh, here we go. Terminal. Oh, nice. Uh, PHP artisan boost install agent AI guidelines agent skills boost MCP.
Uh, do I want this? No. Okay, but I want agent skills and agent guidelines. Okay, it's now requiring POW. Uh, doing composer required numaduro pow--dev. I'm going to say yes, you can proceed. Eventually, I want to be in full dangerous mode so we don't have to do this all the time. Okay. I'm going to say that I want codecs only on this project. We don't need anything else. So yeah, just codecs. All right, that's it. I don't think we had codeex before. So the new session will already have instructions. Showstopper is saying choose option two.
Option one is just for that instance. What do you mean? You know, it's kind of overthinking. That's exactly what we saw last time we used Codeex. It's just too too much. But yeah, seems already done. Oh, when you ask permissions. Gotcha. Got you. You keep having agent execution fishing with the error. Which model are you using? Jan. Oh, option two to do not ask again for this. Actually, what I want to do, what I should have done is just give full permissions. What I will do is that I'm going to just stop here. Okay. And I'm going to just install POW myself.
But for the next session, we are going to go full allin. Okay. So, I'm going to just delete this one. Delete this one. And then here, do we have an option full access? Here we go. So, we have here this full action full. You guys can see it. We have this full access thing. This is exactly what we're going to do from now on. Okay. We now also have codeex boost installed, which is good. Um, let me just double check where are we at uh here on the compos.json. So we see POW installed which is good.
So now because POW is installed if I start a new session and if I say something like can you run the test suite uh it has full access so you don't ask me for [ __ ] Plus with PAL PHP we get uh JSON output on the console. Okay hopefully Miluk is saying click on the brand icon and change the thinking level to medium. Oh, it's medium already, by the way. Okay, thank you. Okay, now with full access, it was able to literally just run instantly. Okay, now this is interesting. What is What's happening here? Agent execution finishes with error.
Oh, wait. What? Already? I literally just give 30 bucks. What do you mean? Are you serious right now? No way. This must be a mistake. I literally just gave $30 into this [ __ ] No way. This cannot be true. [ __ ] If it's true, it's [ __ ] It's literally [ __ ] No, I have 30 bucks. Like, what the [ __ ] Okay, I'm going to retry. Now it is working. Like what the [ __ ] That was hilarious, right? Sue them. Yeah. Okay. A couple things that we need to double check. First of all, the testuite is failing because there is a new inertia SSR thing which we are going to disable real quick.
One second. So, if I go to Where do I even disable inertia SSR? That's interesting. This might be a new thing. Yep, it might be a new thing. What we're going to do real quick is kind of disable browser testing at the minute. Okay. Um, and here I don't need to have browser testing at the minute. Kind of cool as an editor, though. All right. Do I need to save it? I do, which is kind of bad. Kind of would expect this to just be autosave. Okay, just uh run again. Let's see. Now, we should be good now, though.
I do need to double check that inertia SSR thing. Wait, didn't we just removed browser testing? Like, what the [ __ ] Oh, we did. But it's not there that is failing. It's literally because of this facade that prevents stray requests. Okay, let's go again. Okay, go again. Something weird though is that with Jet Brains air, we are not getting that JSON output. So, it might be that this um this may have a different environment variable. Browser not found. Okay, let's actually fix that. Uh Uh, let's go into PHP unit. Just remove this. Here we go. Go again.
By the way, that's a bug. The agent finish with error. That's a bug apparently. Oh, here we go. By the way, this is not expected. All these dots are not expected. Okay. Uh uh. Okay. I think what we're going to do, I do need to double check this. This is part of my starter kit. I need to I do need to double check this uh offstream. So, I'm going to go into I'm going to actually open a new project using Laravel's regular um skeleton, I think. Do I want to do that now? Let me think.
because otherwise I would kind of have to fix this at configuration level. I would have to disable the essentials thing. Do I want to do that? Yeah, let's do that actually. So on essentials, let me go there essentials. There is one thing that is preventing HTTP requests uh uh which is at essential service provider level and we have this prevent spray request. Okay, this is the one we need to disable. So let's do that. Okay. And then we include it here. All of this is to get the a passing test suite, which is kind of crazy.
All right. Try again. And we good to go now. Nice. We have a passing test. Uh a negative side effect of this is that um we are not getting the JSON output I think. Wait what? Try again. If it fails it will grab blah blah blah. Yeah now it's working exactly 159 passes which is good. We are not getting the JSON output which it might be because we don't know the environment variable of this Jet Brains error even though I thought we had codeex on there. I wonder if I change to codeex for example again if you will basically have the JSON output.
Now it doesn't. Okay, I may have to double check this. I've tried another Mac that works. That's awesome. No, no, no. Well, the air is for free. The model though, it's paid, which is understandable. Okay. So, we have a passing test suite. Um, what else we want to work on? Let's actually start working on the brand simple website to see how this project feels even how does it feel to use uh Jet Brains edit uh Jet Brains Air. Okay. Meanwhile, Shad, we have about, let me see, 80 people watching the live stream. Don't forget, go all the way down, put like on the video.
Uh, insanely important. Also, make sure you see my new video about POW PHP. Okay, I just released a new uh package called it POW. Check it out. Okay, check it out. It's absolutely awesome. Uh, let's start working on this. Okay, so if I open this project uh new task, this is interesting. So, this is like the existing one. I can just open a new one and just be in a local workspace again. Nice. All right, let's walk around a little bit. So, here I can create new tasks. This is where I can just walk through the files.
Nice, nice, nice. By definition, they are just closed. Uh oh, I can also close the project window right here, which is good. What is this? Like a search history thing. Okay, this is actually [ __ ] good shad. Basically what I can see from this is that we have a window just to analyze all of the changes that are not committed yet which is exactly what I complained about PHP Storm the last stream is that um I felt like you know PHPtorm is is too focused on the editor and um not focused on the agentic oriented way of developing apps.
So I'm happy that this is literally focused on tasks plus focused on the actual diff of changes that we are about to commit. This is very positive by the way. Okay, this is very positive. Even though do you guys like the style of this? Can I actually tweak the style? Oh, I can. Nice. I can go to light team. Jesus Christ. It's basically PHPtorm commit page. You know what? You are not the first one telling me that. I probably should spend some time checking PHP Storm is commit page because a lot of you told me that it's actually very good.
Is anyone using PHPtorm commit page like the the G UI page of PHPtorm? Shad, should we go dark mode or light mode? Type dark for dark mode. Type light for light mode. Yeah, I never used it. We probably should flashbanged. Okay, you guys want dark. Let's go dark. What is this? There is only one dark team which is this one we are using. Oh, we can change the this color though which is blue. I can change to like pink and [ __ ] like that. I don't think I care about that though at the minute. Okay. Uh GPD 514.
I can change the font as well which is positive. I like your brains mono so let's keep that one. All right, good stuff. All right, let's get some [ __ ] done. so let's actually commit something here. So I have all of this which I kind of want to commit. Okay, let's assume I want to commit all of this. So all of them are pre-selected, I think. How do I select them all? Oh, just like this. Oh, nice. So I'm going to commit whip. Can I do this? Commit successful. Oh, nice. Now there is no changes. Well, kind of expected.
What is this? Comments on tasks. Okay, there is history. Oh, history of sessions. Nice. And I can also have a terminal. Okay. How do I close stuff? Oh, I can open and close like this. Okay. Well, that's kind of easy to understand. What is this? Oh, this is the project structure. Okay, cool. I think I want this one always open. So, I have the terminal. Can I put the terminal all the way down? That would be kind of cool, I think. I don't know. So if I open this and I open the the any file and I open a terminal as well.
Oh, here we go. If I open the file itself plus the terminal, the terminal comes all the way down. Okay, good stuff. Good, good, good stuff. Let's see what we have. A lot of people saying dark dark dark. You're always asking obvious questions, Nuno. I'm sorry, dude. Cuben Federal is saying the following. Nuno, do does he actually have an actual code editor? Yeah, I think he has a code editor. I don't think it's as powerful as the code editors you are used to. So for example, I'm going to try to click on this user thing and just go to the file itself.
You see it doesn't go to the it doesn't go to the file itself. So for me, it tells me already that this is not as powerful as PHPtorm. It feels like almost just a regular code editor without like ID capacities already which I don't think I needed to you know I don't think on this agentic area you know future we don't even I don't think we even need refactoring capacities and [ __ ] like that because the AI will do it anyways like code auto completion uh all that [ __ ] it doesn't matter anymore you know it used to matter but not anymore but I kind of want to understand if you guys agree with me.
Uh, yeah, you cannot click on the definition though. So, it doesn't give you like PHP Storm stuff. Well, that sucks though. I kind of agree that I kind of want a place where I just click on this and go to the file itself, but I don't think like having a super powerful code editor matters anymore. I think like what matters is like this agentic approach basically. Okay. All right. Let's start super, you know, let's start super simple. Let's actually start developing some stuff. Um, is the app open? Yeah, it's right here. So this is the app at the minute.
I want to go with a s with a very simple um UI for this. I'm going to just describe the type of app I want to build. Uh so let's just type here. Let's build together this application. Call it uh habits or good habits.com. Is habits written on the correct way? I don't even know. Let's actually Google it real quick. I think it is good habits. Oh, it's with one B. Okay. Okay. Wood habits.com. Um, so your task will be develop uh the landing page. I want something super minimal yet slick. Um, what else we want?
It needs to have some sort of classic vintage style. The goal of this app will be at some point to track my days. So, I want to be able to go to the dashboard at some point and have my day or like day three uh Monday kind of style and I can quickly check things like uh no beer, no smoke, uh gym work or gym session uh I don't know water or whatever etc etc however your focus is just for now the landing page make sure you also set a tone that can be later used on the other pages.
Okay. So, I'm going to just send this on and to see how it goes. How can I change this to planning mode though? So, I'm give full access. Can I change to plan mode? Is a thinking level situation? I don't think it is. What is this instant mode? Nope. Why do I even send this in planning mode? Do you guys know how can I toggle the planning mode here? Benjam is saying the following. I had a large refactor this week took quite a bit of time and back and forth with cloud. The weak point for AI.
So pitchbtor storm will be my first port of call in the future. Yeah, I think like you know for a bigger refactor you want to use like cloud code for sure but also like um you know AI can do it very quickly. I think like if you have good a good test suite I would just literally trust on AI to do it. Um if you don't have a test suite probably I will just trust um deterministic refactors through PHP storm AR is still very good. There is no planning mode. Interesting. Shift tab or something. Let me try shift use plan.
What do you mean like all the way top? No items available. Nope. There is no plan shed here. and shift. And shift this literally does do this. Yeah, no shift. Shift tab should do it. Uh, shift tab doesn't do anything. Developer judge is saying the following. Started my new job this Monday. So happy that I'm finally working in house in a single SAS product at last. Oh man, congratulations. I'm happy for you, man. Congratulations. On the bottom, there is no there is nothing on the bottom. There is thinking level, but I want to plan. I want to plan, not this.
Look at the chat drop down. Huh? No, I want to plan. I don't want to think. I want to plan, you know. Well, there's no plan. Um, let me actually type this. Uh, make sure you elaborate a plan before coding. I'm gonna just say elaborate a plan before coding and let's see how it goes. Okay. So, I'm going to send this. And while I'm sending this, I think I'm going to start building like the back end, the actual back end of the app. So, let's actually open a new session. That session is like ongoing, which will work on the landing page.
And I'm going to just copy paste the same message. Let's build together this app. Um, the goal will be so your gold goal will be work on the back end of this app. Um the goal of this app is some point to track my day. So I want to be able to go to the dashboard at some point have the three Monday kind of style with the quick checkins blah blah blah blah. However, your focus is build the back end. So uh you know let's start with uh migrations and we are going to move slowly.
Okay this is exactly what I told you [ __ ] Like I I really like to I really like to to move very slowly with AI, especially on the back end stuff. JavaScript, I don't really care, honestly. The front end, I don't think anyone cares, but like the back end, you kind of want to have solid code. You know what I mean? Am I going to move slowly? Make sure you elaborate the plan before coding. Okay, so here we go on full access again. And we just send I'm going to say plan it with me first. Okay, so now we have two tasks at the same time.
One is running kind of doing stuff like search docs. We have got the stack. Now I'm checking whatever whatever. Okay. And we have the other one which is kind of building the back end. So we have two uh what else we need? I think that's it. I think for now that's it. I want to kind of move slowly but surely. I think this landing agent will be responsible for building the actual front end at some point. But uh for now we'll kind of uh just do the landing page in the back end. We'll just be the one that we are going to build migrations and then models and then actions and everything from that point.
Okayoom chat, what are you how are you guys doing today? What are you guys working on at the minute? I know that a bunch of you like to watch me on the background which is not you know it's something that I would expect. I kind of do that as well with some of my favorite streamers. I just watched them on the background and I want to know what are you guys doing though? What are you guys working on at the minute? Is a lot of app anything else. Does it have a g a work tree feature?
I don't know. That's a good question. It does. Apparently it does. Here we go. G work tree. I never used g work tree though. I don't think I think like G word 3 was kind of meant for non full stack frameworks because I mean there is questions like databases and [ __ ] like that and um I don't know how well gitrix would behave you know I don't know is this a codeex client no this is like a jet brain's air upgrading uh legacy system oh that's interesting dude good luck with that puya what's up dude I'm working on my resume website good luck dude Use uh cloud code for that.
It will help you a bunch. Make sure you ask cloud code to give you like a real unique uh styled for you kind of resume. So it doesn't come with it like generic shift tab works on codeex client. It doesn't work apparently on chat brains. I want to see like planning for implementation. Well, so I asked, "Can you plan with me?" And he basically like I think it will propose me a plan. It just went too far again. Oh, this is the back end. Okay, this is good. Never mind. Okay, it didn't it didn't plan.
I think it's already like building it. Here we go. It's already like changing stuff. So, I don't know. Let's see the the backend strategy. Here's the backend plan I have suggested before we touch some code. Okay, here it's actually planning stuff which is good. So, Laravel app is running Laravel 13 with 45 UID usage escalite for local development. For the dashboard goal, I would have a model around users, user defined habits, daily records and per day habit check results. I would not store day three Monday directly. I would derive it from the user start date plus the tracked date that keeps the source uh uh of true simple data model.
Users add tracking day started at okay reason end becomes track it on. Okay, makes sense. Habits one row per habit user wants to track. This will be ID user ID name slug. Why do we need a slug here? Huh? We may have to review this one. So slug type. We do need a type. Absolutely. Yes. Target value you need. sort order is active. This is like overdoing it for now. I think this is like too much. So, we are going to do like uh on the it's actually like bullet listed on the habits one uh keep it more simple.
So, ID for sure and this will be a has UI. This will be a UID. Okay. User ID. Yes, we need a name. Do we need a name? Because it feels like we need just a type. That's it. Yeah, we need a type and that's it. And I think what else we need? We need like a done or is completed or completed at. Let's actually just have a completed which will be the date the habit was completed on. Okay, completed at um yeah, I think that's enough. Okay, the type will be the actual type which will be no beard, no whatever.
AI sucks ass. What do you think? Why Why do you think? Why do you Why Why do you think that I found that Codex likes slugs for no reason? Yeah, that's that is no reason why I would have slugs here. So, I'm I'm just removing slugs from this point. Yeah, Ren is saying the following. Hi, Nuno. First time watching the stream live. I usually listen to your streams while I'm work. That's awesome, dude. By the way, Shad, don't forget go all the way down, click like on the video, and subscribe to the channel if you haven't done it yet.
Okay, that's insanely important. So, we need U ID, UID, of course, user ID, type completed, and that's it. We don't need anything else. Day records. Let me see what is this. One row per user per calendar day ID. User ID tracked on. We don't need this either. Yeah, this is definitely over complicated things. We don't need any of that. So, let me actually explain that to AI real quick. I'm going to say the following. Can I put this all the way top? I cannot. Well, let's do it here. all right. You are over complicated complicating things for now.
You are over complicated things for now. For sure. For sure. For sure. For sure. For sure. For sure. Besides the user plus I don't even need I don't even need that. Yeah. Besides the user, you don't need you just need the Aby's table. Okay. this table we'll have and then we say this thing we'll have ID user ID type and completed at exactly and that's it viauler or something else we are going to populate this table every day at midnight So, the user sees this list of habits to complete. I'm going to say, what do you think?
Definitely Codex was trying to over complicate things like like what are they with three tables in such a simple example. We don't need that. Absolutely not. Okay. The a landing page agent is still working on the landing page. Good simplification. I am trimming the plan around that single table approach and calling out that uh one field I think is still necessary for V1. Uh this is a much simpler direction. Yes sir. My only push back is this ID user ID type completed that you are missing the day the row belongs on. That's a good point.
We could use the creative ad for this, I think. Yeah, we can definitely use the created for this. Okay. So, in Laravel, uh, in Laravel, can we should we use the created ad for this? I think we are going to use a created for this. I think like I wouldn't do that if this was a real thing, but like for now it's enough. So, in Laravel, we can use timestamps or whatever. And this will have uh created it and Track it on. That's a good point. Okay, let's actually use a track it on or track it uh track it on.
Yeah. Yeah. Okay. Let's add uh track it on then to the original list. have suggested you maybe the slug for the type. We don't need slugs. It's just too soon to think about slugs. What's your current stack, Nuno? Uh, my current stack is Laravel, Inertia, and React. How about you guys? Type on the chat which stack are you using at the minute? GPT is a German scientist. Yeah, I feel like GPT a thousand% likes to complicate things. Like honestly, that was like already going crazy like with three different tables for something as simple as this.
That's crazy though. Okay, this looks good. Can you create the migration so I can review it? Laravel inertia in view. Yeah, I know a lot of you love inertia. Love view. So that's good. Uh we don't need status yet. So status typically is that when you have more than one different statues I feel like now we have literally two things which is either is done or not done. Okay it's creating like the migration as we speak. Oh great point from Cuban Federal. Cuban Federal is saying the following. Why completed art? Can a habit be completed in the next day or some other day?
That's a very good point. That's a very good point actually. Why the [ __ ] is creating a test for the table? Like this is so ridiculous though. Oh my god. You guys keep telling me that Codeex is good. Like why the [ __ ] Codeex is doing a test for the table? This is so ridiculous though. Like he's using past which is positive but like creating a test for the table. Who does this you know we don't need tests for migrations dude that's insane. Laravel tin alpine lavl live wireware postgress just tell it not to. Oh yeah I just did.
All right let's analyze the migration. So what I will do here is just check the changes and I'm going to click on this and this is what we have. Can I inline change this? I can. All right. So we have a schema create habits which is a UID primary. That's good. For GUI ID constraint and on cascade delete. Um let's remove the on cascade. Let's just have constraint. We have a type which is a string. That's good. The track it on which is a date. That's positive. And someone was just mentioning that um someone may complete a task or may complete an abbit on the next day.
So the completed on is just stupid from this point. So I think we are going to go with the statues that someone was suggesting. So what I will do here is just type string statues and this will be uh by default uh potentially pending and you can complete it afterwards if you want to. We have time stamps and we have a couple of uh unique ids. um user ID with type with track it on are unique. This is positive. And we also have an index on user ID on trackit on as well. So I'm going to remove the down method and this is good to go I think.
So I'm going to go here. I'm going to open a terminal real quick. I'm going I want to make sure I can run this migration which hopefully I can. Here we go. It just works and I can close it out. Nice, nice, nice. So migration is done. I'm going to just commit whip uh all the time. So this is done. Okay. Can I close this? Yes. All right. So, migration is done. What I will do now is create the model for the habit thing. All right. Good. Good. Can you create a model model factory and just a couple tests around this model?
So now I kind of expect to create all the relations like all those type annotations all the way top like the feelable stuff, all that crap. Okay. So, we're going to have that plus all the model factories as well. How we are with our landing page. Apparently, the landing page is done. Okay. So, what we are going to do is make sure we can see it. Okay. Let's go just go here. Okay. I have been told that Codex is actually very good with UIs and it didn't disappoint. Jesus [ __ ] Can you guys see it? This is beautiful stuff.
Daily discipline. Keep it beautifully. A quieter A of tracking days. Keep each day honest and uh in order. Oh my god, this is very good. What happens if I click on login? I still have the whole design. Kind of expected. This is so cool though. Oh my god. Did he use Tailwind? That's a good question. I I don't know. Does it really matter though? Let's see. Um let's see. Let's see. Let's see. Yeah, it did, I think. No, it did not. Wait, what? Oh, it did. It did. It did. We're good. We're good. He used Tailwind.
Yeah, it has some a few custom styles, but uh it did. Yeah, that's every codeex landing page. Do you mean this is like common in terms of UI for Codex or Codex actually very good building landing pages? WUI. Yeah, WI 100%. I like it. Oh, this design is literally Oh, okay. Well, it looks good though. I like it. You know, by the way, Shad, I just released a new video on my YouTube channel. Here we go. Here we go. Here we go. Make sure you put like on this video. Make sure you watch the video.
Insanely important for the adoption of the PHP tooling. That's codec style as purple is the clawmal design 100%. Okay. Uh well, I like this design. I don't really care if it's like the common one. I like this design. So what I will say to uh codeex is that I want you to propagate this design across all the various pages we have. So I'm happy with this landing page for now. I don't even check the code if I'm honest. I'm going to just say whip on the commit message like this. Oh, this is so good chat.
Okay, I just noticed something. So here I'm just reviewing the changes of this task but we have also changes from the other task and if I'm moving around the tasks the viewer the commit viewer will be only focused on that task that is very good by the way I don't know how this behave in terms of conflicts but uh it looks very awesome by the way okay so I'm going to say whip for the landing page situation and I'm going to go back I'm going to go back to the task itself and I'm going to say well you know very cool stuff can you now propagate it to the guest pages like log in register forget password like all that stuff except the dashboard because I am still working on the back end well dashboard and also like dashboard or anything that actually will conflict with the back end.
Okay, so I'm going to just ask to propagate this changes across all the various guest pages we have. Okay, this is still with the front end agent. Okay, I'm going to go back to the backend agent and continue to the work. Apparently just finished the model itself. So, uh, kind of want to analyze a little bit what what's happening here. Okay. Did you bring your own key? Yeah, I just literally loaded 30 bucks and I'm using Codeex. Um, you know, I I knew already Codeex, it's not like my favorite cup of tea. I like Cloud Code more.
Uh, it just feels more like, you know, an agent I would use myself. And Codeex, I feel like just tries to over complicate things. I don't know, it just goes too far sometimes. I just noticed that it was literally trying to test my migration, which is like ridiculous. Cloud code would never do that. There is front end skills to improve them on a UI. Oh, that's nice. So, yeah. Uh just by the way so from my understanding and you guys let me know if I'm incorrect from my understanding jet brains air is free the models itself themselves are not free which is very expected you know dino dino is saying the following just by curiosity when you are not streaming and working by yourself do you always use English for the prompt yes I use English all the time yes that's a great point I actually never thought about using non-English language do you guys that's a good question.
Does everyone here uses English? If the answer is yes, type yes on the chat. If you use your own language, like you know, Portuguese or Spanish or whatever, um, write no. I never thought about that actually. I'm going to be honest. I'm liking the experience so far on Jet Brains Air. Looks it looks awesome. Okay. Okay. Let's review the code. Okay. Codeex actually is doing the coding style I like. So we see a string a string ID a string user ID this is not correct oh is correct because it's a UID never mind okay user ID we have a type which is it needs it's missing a casting we see fillables okay there's a few things we need to fix okay there's a few things we need to fix so I'm going to just go here and um I'm going to ask them okay so I'm going to just say use an enum so I'm going to say the following remove fillables use an enum for the type.
What else we have? Uh, in for the type uh track it on date completed at day time. Do we still need the completed that? We don't need the completed anymore, do we? I don't think we do. Well, let's preserve it. I don't think for the UI will even matter, but let's keep it for now. So, remove fieldables. Use enum for the type. Uh, what else are we missing? I think that's it. As factory as UIDs, user. Okay, cool stuff. Can I see more? Oh, on the user model, he had it like the relation habits. That's good.
On the factory itself, uh, we don't see the statues the enum being used. So, using them for the type update the factory. Oh, there's a two-day helper today. Well, today I've learned we see a completed um factory thing. Okay, this is positive. Okay, this is ridiculous. So here we are removing the completed. However, the model itself does have a completed. I honestly think that codeex is just stupid. Like here on the migration is removing the completed, but on the model itself is literally using a completed. So I don't know. Read the completed. Let's actually remove the completed.
It's just stupid. So, I'm going to say remove the completed. I'm going to say that this time totally. Uh uh uh uh uh uh uh. What else? We see a a couple tests. Okay. We testing casting and you test a two array which is positive. Okay. Going to just say click send and see how it goes. Now, is using mutable dates for the date times? Uh that's actually a very good question. Let me double check that. It's using carbon interface and I'm going to say um that do you mind of using immutable carbon I'm going to say the following.
The amount of using immutable carbon here. Oh. Oh, that's cool. I just literally copy paste and it did this which is kind of cool in terms of UI. You know what I mean? Running multiple tasks works better on Git work trees. Yeah, I need to I need to test that out. I haven't actually took the time to test Git work trees on Laravel. I can easily think about problems like uh various databases and things like that. So I kind of want to you know uh not do that today basically. Yeah, I noticed that he didn't package the edits on migrations.
I saw that. Yes. Yeah. So, we we're using statues now because statues is better than completed. Uh completed that would be problematic if people are completed yesterday statues like today. You know what I mean? Okay, I think we done. So hopefully now I can open my habit.php. I see carbon immutable already being used. I see a habit type. Let's see where the habit type was placed. Oh, the habit type was placed at app enums, which is positive. So we see no beer, no smoke, gym session, and water, which is good. Uh, this is equally good.
User type, we don't see fillables. We see the casting being properly used here. And I think we're good to go. Yep, we see a bunch of front end changes here. And this is not positive because it's not even related to this task. Yep. Yep. Yep. Okay. I thought the G changes would literally only contain changes from the task itself, but apparently right now I see stuff from the front end, which is not done by this uh model. So by this task, so I'm confused. I'm going to say the following. uh do you mind of running uh the entire test suite?
So I'm going to say to run composite test and see how it goes. This landing page has dark mode. I don't think it has dark mode. It went like full um full non-d dark mode. I'm also noticing that is relying too much on CSS instead of relying too much on tailwind CSS by default. This is another thing that I would probably you know see cloud code doing is that it would just rely on tuin CSS by default. This is a lot of custom CSS. Okay, we don't see tuin CSS being used always which is not positive.
Are you able to comment review online like pull requests? I think there is some comments here. Um here we go. There is comments right here which I don't know why I would ever use comments here All right. So, composer test is running. Covered current coverage 99.5%. Okay. I'm going to say the following. Can you have 100% coverage, please? So, the back end is working, the landing page, the front end uh agent is done. So I assume there is a bunch of changes on creating a user which is kind of expected on email notifications user password.
So if I go here and I click on login I see this good stuff. I click on register. I see this. I can obviously forget my password which is um how do I even go back? Oh, right here. Log in. So, if I forget my password, where is the forget password thing? Oh, right here. But is Eden. You cannot see it though. But it's there. So, I'm going to just say something. I'm going to screenshot this and I'm going to say that I'm going to move it here, which I cannot do it. That sucks. Okay.
Well, I'm going to say the following. The forget password uh link is white so you can't really see it with um with uh brown yellow background. Does the landing page have back dark background? It doesn't. It does not have dark mode. No. Cuban Federal is asking how did they understood to use property annotations for the model properties out of the box. Um so I have a full talk on that topic. But something I have noticed is that agents are actually very good picking coding conventions. That's the reason why um I use you know I use my starter kit by default because it just picked all that style from my existing user model.
So if I go here into app, open models, user model, you see that I have that style already, you know. So it just basically did the same. So here for example, property reads, final classes, like all the full drill. So if I go to habit, I see the same thing. I see final classes, property reads, it just picks my existing coding style. That's it. By the way, passwords will be deprecated. Can you elaborate? Which passwords are you talking about? Oh, it just fixed the the forget password thing. So, if I click on login, I see forget password.
Nice. It's right here. You guys cannot see it, but it's there. Here we go. Okay. All right. Let's uh register real quick. So, I type Nuno Maduro. I am this dude. Bam. Bam. I create login. And now I have to verify my email. So let's actually open her email. Is it here? It's not here because it goes to the logs, I think. Let me just double confirm that. So if I open here app let's actually click here on go all the way down. So we use mail driver log by default. Oh, passwords is being phased out in favor of pass keys, biometrics, device- based information.
Oh, interesting. Where do you like where that is happening? Like across the web, you mean across the entire web? If yes, that's crazy though. Uh, let's click on storage logs. So, here I should have the actual email. Oh, here we go. here we go. This is the link I need to copy paste. Give it to me. Okay. So I'm going to verify my email and it's done in the password is not the the dashboard is not yet migrated to this new style because it's not yet done the back end. So now we go back to the back end story.
All right. So we have 100%. What is he doing? It's like flacking. Okay. We have 100% code coverage now. So if we go to the diff which is right here, we can close this on. Here we go. So we have a habit model which kind of does what I want. Super simple user model with a new relation factory with a completed at the end. Oh, completely what removed. But we have a status and everything. Nice, nice, nice, nice. We don't have a status here though. What is a status though? Just gone. It is gone for some reason.
Why did you remove the statues? Add it back. Don't forget the the enm for the the statues. Cuban Federal is saying the following. I think like setting up browser test at the start for uh example certain accessibility issues would force solve some design issues from the get-go. Oh indeed that's a good point indeed. Show to saying the following big change on corporate policy on password is that is need states um new guidelines no password reset every month just uncompromised okay it's adding the status which is what I wanted rerunning the test suite nice so now we have the status back which is positive so I assume we see equally Habit statues.
Yep. Yep. Yep. Which is an enam either pending or completed. Okay. Habit type. Habit statues here as well. Abbit factory with statues here as well. Type in statues. Random element from the habit type. Nice, nice, nice. We see a migration which is exactly what I want. We see a bunch of CSS changes. This is like the front end stuff which is here for some reason. We also see two tests, one for each model which is positive as well. Okay, let's see whip here. Let's whip all this stuff. Okay, done. All right, next step is work on actions.
Uh, so we have models, we have migrations. Can you work now on actions? So, let's think a little bit. What type of actions do we need? So we obviously need um an action which will create like which will seed all the habits for one user for that day. Okay. So let's basically um create an action that's that is b basically like create um habit. Do we need to create a habit? I feel like we we need to create all of the habits for that day like instantly. So I feel like something a little bit different.
It cannot be cruddy. I'm going to just type um prefill habits or daily habits or actually create daily habits. Yep, that's a good one. Create daily habits. We need to update habits to update the statues itself. So, update habits statues. Uh what else we need? So, this will prefill all the stuff. Then the user checks something. I can I need to update the habit statues and I think that's it. We don't delete stuff. Yeah, that's enough. So, I'm going to just say the following. The create daily habits will go to every user on the platform and uh create habits for the current for the given day.
For the given day. Yep, that's good. And the update abid statues will receive an abbid and uh update the statues to the given one. Okay, we have simple two simple actions to basically do exactly what we want. A create daily habits will run on scheduleuler, you know, every day or whatever and make sure all users have um their habits in place. And then we have an update habit status which will basically make sure the user can check and uncheck the given habit. It's this is kind of weird though. I would expect codeex to use skills and [ __ ] like that.
I wonder if I missed something while configuring boost for codeex cuz why is searching docs? Like I think like all of the skills should literally have everything boost needs for this kind of weird. Are you going to have only good habits or are including some good pleasures as well? Uh only good habits I think you know like um most importantly I want to be able to go at the end of the day and just check everything I have done correctly. Um you know it's kind of surprising that is no such app out there that really just works like this.
Pav is saying that you can hide the shite as well. Typing command too. Oh, really? that's interesting. Oh, yeah. If I click here, I can hide this chat. So, I can open multiple sessions, but I can also hide this chat. Oh, nice. Okay, we can see already uh like what is actually about to propose. So let's actually open this and see it and analyze it together. Okay, let's see. So create daily habits will receive a track it on. So this is a day. Okay. And then we are going to query the user select by ID and then by chunks of 100 we are going to insert or ignore habit attributes.
That's interesting. Insert or ignore. Today I've learned I literally didn't know this existed. What it does though insert or ignore method will ignore errors while inserting records on the database. When using this method, you should be aware of that duplicate records will be ignored or other type of errors may also be ignored depending of the database engine. For example, insert ignore will bypass MySQL streak mode. Interesting. So I assume like if this user already exists will simply just not be inserted. Interesting. Thank you for pow. Very nice. Thank you for watching uh and seeing POW.
By the way, chat, new video on my channel about POW PHP. POW PHP, in case you haven't seen it yet, is a new uh PHP package that will basically give you agent optimized output for PHP testing tools. Uh really just works. Check it out. Okay, if you haven't if you haven't checked it yet, check it out. Okay, I'm going to just literally ask him to write the test that will test the duplicate. So write a test that ensures that if I give the same tracket on twice nothing will be duplicated. But also, but also if I give the same track it on.
No, no, no. I'm going to keep it simple. Okay. Nothing will be duplicated. Okay. It will basically ask for a test for that situation only. What else we have? I'm going to close this. I'm going to open GitHub changes. I want to check the update habit status. So, this is like that simple. Basically, we just do habit update blah blah blah blah. And I want to return a new fresh instant, not a refresh. Receives the habit and the update status. This one is trivial though. This one is the more complicated one. Skills need to be placed at project root jun skills skill name.
Yeah, boost honestly should does that. I think I had an issue with messy codeex workflow but I start using Oprah superpowers and now Codex works very well for me. Yeah, I'm a cloud code user so I don't really know too much about clo too much about codeex. Okay, let's see. Added that exactly exact regression task you ask it for to create daily habits test. Okay, cool. what it checks creates uh daily habits twice with the same tracket on ass total habit count stays users plus the habit type cases okay okay that's positive so now we ask to run this onuler okay actually do I want to run the I want to run this like via artisan command okay I'm going to say the following I'm going to actually commit this stuff okay I'm going to go here I'm going to commit this stuff I'm going to say yes.
And I'm going to say the following. Create an artisan command and schedule it that will run once exactly at midnight. This command run the action that will fill the habits for all users on today date. Boost does not install it for Junior yet. Oh, interesting. Didn't know about that. Did you report that to push back? Push back is like doing all that stuff. So, make sure you report that to him. Okay. By the way, Shad, if you just arrived, my name is Nun Maduro, Peach Laravel developer. I'm also Lavl core team member. Today, we are just developing an app just for the fun.
Literally exploring a little bit Jet Brains air. Kind of feeling the mood with this editor. Looks cool so far. Uh, if you enjoyed today's live stream, don't forget subscribe my channel, my YouTube channel. Insanely important. Okay. How about people with different time zones? Uh I think this will be UTC only, but that's a very good point That's a very good point. Um that's a very good point. Let's not worry about that at the minute. Okay. It's a very good point though. So I think like what end up what this would end up doing is like populate the the entire week already.
I think you know we just populate a week in advance. Uh that would solve the problem already. uh especially with people with different time zones. But let's not focus on that. It's a good point though. It's a very good point. Uh but we can work around that by just populating an entire week at once. So I will just change the schedule command to do that. Very good point, man. You are paying attention. That's awesome. Okay, we have this create daily habits command which runs habits create daily. Uh, do I like this? Create daily habits command.
Habits create daily. Uh, I think it's okay. Create daily habits for all users. Okay. Receives the the action as an argument. Nice. And then just gets the start of the day. It will create those habits and then it's done. Okay. This is like literally perfect. On the console, we schedule this a daily at midnight. Nice. And then we have a test for this which will make sure everything is working as All right. Good stuff. Positive stuff. Whip. All right. Perfect. And so we have actions. We have I think we have everything we need for moving to the controllers, I think.
Um. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Um, yeah, let's move to the controllers. Perfect. Now, moving on to the controllers. Um, don't uh focus too much on the front end. You can reuse the existing styling. The controllers, but the controllers should be able to do the following. Did you watch Alan Franc's video on Google? Snitch snitch. Snitch. Um, I have. Yeah, it looks okay, you know. No, I think like Tess, if what we're going to end up doing, if you know, if this would be a real thing, I think like we would just run this command in advance for the week, you know, for the entire week.
seven days in advance basically. So you would we would populate always like the entire week for the users. So then like every single user will always have like this the next seven days ready for him to populate you know. So the controller should be able to so habits habit controller index this will list the habits for the given user for the current day. Note the user must be able to go back in time uh in days actually. Okay. By default current day. Habit controller update allows the user to change the statues. What else? I think…
Transcript truncated. Watch the full video for the complete content.
More from nunomaduro
Get daily recaps from
nunomaduro
AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.









