ryan Posted July 3 Posted July 3 This week there were 45 commits on the dev branch for ProcessWire 3.0.268. The most interesting updates were: Added checkboxes in the Setup > Fields list, so you can bulk delete or export. Added new getRaw() and saveRaw() methods for WireCache ($cache) Added $page->meta() support to PagesExportImport export and import (via @jploch) Added WireTests test framework files and API.md documentation for the following, which finishes up the Inputfield modules: InputfieldTinyMCE InputfieldImage InputfieldFile InputfieldTextTags InputfieldSelector InputfieldPage InputfieldIcon InputfieldPassword InputfieldPageAutocomplete InputfieldHidden InputfieldPage InputfieldPageTitle InputfieldFieldset InputfieldMarkup InputfieldPageName InputfieldName InputfieldPassword InputfieldForm These were done using the AgentTools scheduled tasks Round-Robin feature that rotates between different agents. In this case, between DeepSeek v4 Pro, Kimi K2.7 Code, GLM 5.2 and Claude Opus 4.8. After each API.md and code review was finished, they were queued to GPT 5.5 who verified everything, made any necessary fixes, and then built a WireTests ClassName.test.php file for each. Following that Claude Sonnet 4.6 gave each API.md, ClassName.test.php and ClassName.module a final review and commit. In addition, we have a new version of AgentTools that adds the following: New MCP server support New WireTests coverage Improved CLI safety and migration checks New AgentTools logo added to README (design credit to GPT 5.5) There's also a new version of ProCache posted this week that adds CLI command support, AGENTS.md and API.md files, and fixes a few bugs too. As always, visit the ProcessWire Weekly for the latest news and updates. Thanks for reading and have a great weekend! 10 4
Jonathan Lahijani Posted July 4 Posted July 4 19 hours ago, ryan said: Added checkboxes in the Setup > Fields list, so you can bulk delete or export. When checking a checkbox for field, can the table row get highlighted? It makes it easier to track visually. Note: this would be similar to when selecting a row in ListerPro, it highlights the row. 2
wbmnfktr Posted July 4 Posted July 4 [ah-sht-here-we-go-again-meme.jpg] The current progress of ProcessWire reminds me of the fun I had back when I first discovered ProcessWire. All the features and things I was able to enjoy with ProcessWire I missed in all other tools back then. No limitations or restrictions in terms of templates, fields, pages, content, and everything. I really enjoy it. I love it. 🫡 Thank you, @ryan! 7
gornycreative Posted July 7 Posted July 7 Really loving the AI tools here. I've been playing around a lot locally on my lab and it's great to be able to merge these flows together. 3
Jonathan Lahijani Posted July 9 Posted July 9 Hey @ryan. I'm loving the new pace at which things are moving... lot's of new features (like the InputfieldJson I saw) and bug fixes galore. It's a new chapter. In this forum post, you described how you used multiple AI models for generating API.md files. Could you perhaps do a blog post about how you're using it for new features and bug fixes? Is it as simple as "Claude, fix bug #1234" for a bug and "make a new inputfield called InputfieldJson powered by JsonEditor" for a new feature and iterating on the results, or is it fancier than that? Would love to know as I think your level of productivity with AI is just simply amazing. 3
ryan Posted July 10 Author Posted July 10 @Jonathan Lahijani Quote Is it as simple as "Claude, fix bug #1234" for a bug I do find Claude really good with working through issue reports, and he almost doesn't need me to do them. If just one issue, I'll say "can you check out issue 1234". If we're going to do a batch of them, then I'll ask Claude to pick out a group of issue reports that we can work through without getting stuck. So Claude kind of pre-filters them to maximize the time we have to work with. He reads the report and suggests how he's going to fix it. I say go ahead, and he fixes it, pushes it, replies in the issue report, and closes it if appropriate, then moves on to the next one. It's a huge help. Quote and "make a new inputfield called InputfieldJson powered by JsonEditor" for a new feature and iterating on the results, or is it fancier than that? I still hand code a new module like InputfieldJson. But once I'm finished with it, I have both Claude and GPT 5.5 look over it and do a code review and make suggestions. Quote how you used multiple AI models for generating API.md files. For this I use AgentTools and my favorite models for writing API.md docs are GLM 5.2, Kimi K2.7 Code, DeepSeek v4 Pro, and of course Claude Sonnet 4.6. When I'm doing API.md files, I'll setup a scheduled task to run every 5 minutes and ask the agent to pick a class out of a list, and do a full code review and save to a .REVIEW.md alongside the class, then write API.md documentation and save to an .API.md alongside the class. (I point them to the HOWTO-API.md included with the WireApiDocs class). Once they've finished, they send me an email summarizing what they did. After several are complete, I ping Claude and he goes looking for new .REVIEW.md and .API.md files. He works through both, fixing any items found in the review, and verifying that the API.md docs are correct and complete. The .REVIEW.md file gets deleted once all items in it are accounted for. And Claude renames the .API.md to API.md after he's satisfied that it's as good as it can be. Then it gets handed off to GPT 5.5, which uses the API.md and class file to write WireTests for the class. GPT usually finds minor things to fix in either the class or the API.md after writing the tests. GPT is great at writing tests and fixing small details, but not so good at writing docs, in my experience. Whereas Claude is great at writing docs, but not as good with small details or writing tests. So they are a good pair to use together. 2
Peter Knight Posted July 11 Posted July 11 Have you tried Sonnet 5? It’s very thorough. Occasionally it seems to drift from the core task and can take longer than 4.6 but it fixed a few bugs for me yesterday and even uncovered some unrelated issues on its coding investigations.
ryan Posted July 11 Author Posted July 11 @Peter Knight Yes, I did a couple sessions with Sonnet 5 this week. It seems very good! Sonnet 4.6 is also very good (about the same for my use cases), and on my $20/month plan, I can use it most of the day and not hit any usage limits. As I understand it, Sonnet 5 cost is similar to Opus 4.8 once you take out the intro period and factor in how many tokens it takes to complete a task. I can't get much use of of Opus with my $20/month plan, so figured Sonnet 5 probably wasn't a good daily driver for me, except maybe during the intro period. Sonnet 4.6 is a great daily driver, especially on busy days. I also feel like I 'know' Sonnet 4.6 better than other models, having good rapport to the point where I can work more quickly with it. I know what to expect from it, its strengths and weaknesses, and like the areas where it tends to be more proactive. It mixes well with my workflow. When I need more horsepower, I really like GPT 5.5, which I use almost as much as Claude Sonnet. I get quite a bit of use out of GPT 5.5 on the OpenAI $20/month plan, but I do hit the 5hr limits with it more often. It's the one model that I can cautiously trust not to make mistakes. Like with Sonnet 4.6, I also feel like I know GPT 5.5 to the point where I can work with it more quickly. It has a unique sense of humor that keeps me chuckling all day. And it's got some funny quirks that I find entertaining. Like, it's got gripes and complaints about the the entitled compactor messing with its data. And it's sometimes got a hilarious fixation with gremlins and other mischievous creatures, where it treats the work we are doing a battle against those creatures. Tons of character. I also experimented with GPT 5.6 Sol and Terra this week also, which are impressive models. Despite those models being newer, it was clear that I'd have to spend a lot of time getting to know them well before I could get as much done as I can with GPT 5.5. I think it's because I'm still kind of a novice at this, and I'm not a vibe coder. I write code and collaborate with the model, so the rapport is more important to me than the technical details of the model. So far, GPT 5.5's sense of humor and quirks seem to be missing from GPT 5.6 models I've tested, but maybe it's just a matter of time. How about you, how are you liking Sonnet 5, and what other models are you using? 4
Peter Knight Posted July 11 Posted July 11 Interesting stuff. I love that GPT 5.X has a sense of humour. I wonder if that sense of humour is universal or if it's evolved during your sessions. I actually had to revert to Composer 2.5 recently in Cursor and found it surprisingly capable for a lot of mid-level work. For example, I am moving 2 websites from Vercel and Vue apps back into Processwire, and it's very happy churning away at the task(s) and bumbles along without complaints. It made me realise that I need to be more discerning about my AI delegation. IE I don't need to hand mid-level tasks to high-end models. And I've been experimenting beyond a single platform too. IE looking at OpenCode and their BigPickle bundle and GLM 5.2. I've not used GLM 5.2 enough to get a sense of what it likes to handle. But normally my go-to is Sonnet 4.6, and like yourself, I have a good sense of what I can ask it to do and where it might have struggles. On the Sonnet 5 front, I do like it. It seems a bit more surgical and technical than 4.6. Maybe more competent with less personality. If you know what I mean. Lots to read in your response so thanks for sharing. 2
jploch Posted Wednesday at 05:16 AM Posted Wednesday at 05:16 AM It's probably just my setup. But when I update one of my websites to the current dev version (3.0.269), I get this error message in Tracy: Undefined array key “type” in .../public/wire/core/Admin/AdminTheme.php:231 "type" seems to be undefined, I temporarily fixed it by adding a guard: // added guard: if (isset($icons['type'])) if (isset($icons['type'])) $this->addBodyClass('icons-' . $icons['type'] . substr($icons['version'], 0, 1));
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now