All Activity
- Past hour
-
Ah let's not forget The OG WireQueue! Couple examples from my own experience, involving FormBuilder: It would be great to make FormBuilder actions asynchronous, when integrating whatever third party email/list management, some have very simple integrations that can pass as barely noticeable since it normally involves an extra request, but some of these, sometimes require tokens refreshments to a different endpoint for example, and time starts adding, making the forms feel slow. Another issue that I actually have right now in a website, is how I integrate FormBuilder to save leads as pages, and before saving new pages, I make a search of existing pages/users to avoid duplication of data. This has worked perfectly for the last 8 years or something, but after a few hundreds of leads saved in the database, the query of users during the request is starting to be noticeable, and the form submissions now feel slow. So I'm going to build FormBuilderActionQueueItem to add this process as a queue item to be processed and migrate all logic to the queue worker. Another example that comes to my mind is also building emails that depend on some sort of query, it's not a rare petition that I get to "enrich" emails with related information and data that comes from queries, since the FormBuilder administrator emails' purpose is to help a sales teams make decisions.
- Today
-
Hi, We use the mod_cspnonce + Apache SSI approach. .htaccess: Options +Includes AddType text/html .html .php AddOutputFilter INCLUDES .html .php <IfModule mod_headers.c> # If not the PW admin <If "! %{QUERY_STRING} =~ /{your-admin-url}/"> ... Header set Content-Security-Policy "\ default-src 'self';\ script-src 'nonce-%{CSP_NONCE}e' 'strict-dynamic';\ ... " </If> </IfModule> In your template: <!--NoMinify--> <script src="./your-script.js" nonce="<!--#echo var="CSP_NONCE"-->"> <!--/NoMinify--> Note that the NoMinify tags need to be added to stop ProCache stripping out the SSI var as it treats it as an HTML comment. We've been using this in production for 2-3 years on sites with the Apache module available and it works well. Cheers, Chris
-
@teppo @elabx The wp-cron looks identical to lazyCron. But the queue stuff does look new. I built out the IftRunner queueing module a long time ago and apparently Apeisa did find it very useful, since he had me build it for them at the time. But I didn't have any good use cases myself, so didn't continue building the module beyond the original scope. But I think we did do some pretty cool stuff it. Though it was so long ago that I think the landscape has changed and if we were to build something now it'd be very different from before. I'll definitely look into it more here. I'm still interested to hear @Jonathan Lahijani use cases too.
-
@AndZyk The model field accepts any value — you're not limited to the predefined examples in the dropdown. For OpenRouter, type the full model ID directly (e.g. anthropic/claude-sonnet-4-6) and it will be saved as-is. I'd suggest configuring in Setup > AgentTools > Agents, rather than using the module config settings (though they map to the same things). We've added several common OpenRouter model IDs to the suggestions list in the next update, so they'll appear in the dropdown automatically. As for the fields appearing to mix values — sounds like maybe browser autofill? The API key field uses type="password", which can cause some browsers to try to autofill nearby fields as a user/pass. Disabling browser autofill for the page should prevent that. Or, in Setup > AgentTools > Agents, you could just click the little "reveal API key" button just to make sure something else isn't getting autofilled into it. Please let me know if you still can't get it to work?
-
prestoav started following Core Module Export/Import – Error
-
PW: 3.0.255 PHP: 8.3.3 Sadly I now have the same issue and I can't find a way around it. Duplicate sites, create a new page on one then try to export the page to the duplicate site and get this error: Error: Call to a member function getLanguageValue() on null in wire/modules/LanguageSupport/FieldtypeTextareaLanguage.module:126 #0 [internal function]: FieldtypeTextareaLanguage->___importValue() #1 wire/core/Wire.php (425): call_user_func_array() #2 wire/core/WireHooks.php (1018): Wire->_callMethod() #3 wire/core/Wire.php (484): WireHooks->runHooks() #4 wire/core/PagesExportImport.php (998): Wire->__call() #5 wire/core/PagesExportImport.php (685): PagesExportImport->importFieldValue() #6 wire/core/PagesExportImport.php (535): PagesExportImport->arrayToPage() #7 wire/modules/Fieldtype/FieldtypeRepeater/FieldtypeRepeaterPorter.php (255): PagesExportImport->arrayToPages() #8 wire/modules/Fieldtype/FieldtypeRepeater/FieldtypeRepeater.module (1006): FieldtypeRepeaterPorter->importValue() #9 [internal function]: FieldtypeRepeater->___importValue() #10 wire/core/Wire.php (425): call_user_func_array() #11 wire/core/WireHooks.php (1018): Wire->_callMethod() #12 wire/core/Wire.php (484): WireHooks->runHooks() #13 wire/core/PagesExportImport.php (998): Wire->__call() #14 wire/core/PagesExportImport.php (685): PagesExportImport->importFieldValue() #15 wire/modules/Process/ProcessPagesExportImport/ProcessPagesExportImport.module (619): PagesExportImport->arrayToPage() #16 wire/modules/Process/ProcessPagesExportImport/ProcessPagesExportImport.module (320): ProcessPagesExportImport->processImportItemToPage() #17 wire/modules/Process/ProcessPagesExportImport/ProcessPagesExportImport.module (242): ProcessPagesExportImport->processImportSubmit() #18 wire/modules/Process/ProcessPagesExportImport/ProcessPagesExportImport.module (76): ProcessPagesExportImport->processImport() #19 wire/core/Wire.php (413): ProcessPagesExportImport->___execute() #20 wire/core/WireHooks.php (1018): Wire->_callMethod() #21 wire/core/Wire.php (484): WireHooks->runHooks() #22 wire/core/ProcessController.php (362): Wire->__call() #23 wire/core/Wire.php (413): ProcessController->___execute() #24 wire/core/WireHooks.php (1018): Wire->_callMethod() #25 wire/core/Wire.php (484): WireHooks->runHooks() #26 wire/core/admin.php (174): Wire->__call() #27 wire/modules/AdminTheme/AdminThemeUikit/controller.php (15): require('/home/u99035861...') #28 site/templates/admin.php (15): require('/home/u99035861...') #29 wire/core/TemplateFile.php (328): require('/home/u99035861...') #30 wire/core/Wire.php (413): TemplateFile->___render() #31 wire/core/WireHooks.php (1018): Wire->_callMethod() #32 wire/core/Wire.php (484): WireHooks->runHooks() #33 wire/modules/PageRender.module (547): Wire->__call() #34 wire/core/Page.php (3152): PageRender->render() #35 wire/core/Wire.php (416): Page->___renderPage() #36 wire/core/WireHooks.php (1018): Wire->_callMethod() #37 wire/core/Wire.php (484): WireHooks->runHooks() #38 wire/core/Page.php (3097): Wire->__call() #39 wire/core/Wire.php (413): Page->___render() #40 wire/core/WireHooks.php (1018): Wire->_callMethod() #41 wire/core/Wire.php (484): WireHooks->runHooks() #42 wire/modules/Process/ProcessPageView.module (193): Wire->__call() #43 wire/modules/Process/ProcessPageView.module (114): ProcessPageView->renderPage() #44 wire/core/Wire.php (416): ProcessPageView->___execute() #45 wire/core/WireHooks.php (1018): Wire->_callMethod() #46 wire/core/Wire.php (484): WireHooks->runHooks() #47 index.php (56): Wire->__call() #48 {main}
-
Thank you for adding the multi agent feature. For me it doesn't work with OpenRouter, because the model should be for example anthropic/claude-sonnet-4-6 instead of claude-sonnet-4-6. But if I change the model manually it messes app the fields, because of the predefined options I think. It mixes values in other fields. Could you please fix this? 🙂 Regards, Andreas
-
virtualgadjo started following How to transfer a Processwire site from one server to another
-
Hi, honestly, the answer is in your first post, files and DB backup are all you need (same as when you go online for a local dev website) the only things you'll have to change are the db connection settings in the config.php file of course, depending on the pw version the websites are using you may have to check the php version your new hosting server is on and if needed set a lower one (most recent hosting service will use a 8+ version and if your website uses a 3.0.165 pw there may be some warnings 🙂 in that case go for a php 7.4.x version and, afterwards, simply upgrade both your pw and php) have a nice day
-
@Roych thanks! This is a really nice and clean module that integrates straight into the backend. I just installed it on a client site and its already filling with interesting data. @ai_slop I was able to make this module work together with PrivacyWire since I am inside the EU. If consent is chosen the cookie is set and the module activates.
-
elabx started following PW 3.0.259 – Core updates
-
Got my vote. I've implemented https://github.com/php-enqueue in a couple projects. @ryan Nice to se the Cli interface, just wanted to give a heads up of wire-cli and rockshell. These have been around from a time maybe something could be inspired from these libraries or maybe pick up from the current state of the libraries to work on things like scheduling/queue/agenttools
- Yesterday
-
@szabesz thanks for letting me know. Yes, the link was a mistake. I wanted to pin the 1st comment to the the top for the latest info but didn't know how. In future will add new info above old for continuity. 🙂
-
That’s a good set. Thanks for the feedback. Re. The top 10 limit. I’m thinking of dashboard space where the dashboard contains rolled up data of many metrics. But you’ll be able to click into a detailed page listing top X. In the meantime if you view table mode of the library and sort by size, you’ll get the same data.
-
szabesz started following JSON+LD Schema module , Tracy and AI/LLMs and Analytics for MediaHub - taking requests
-
This workflow would be really powerful, indeed. Using the MCP server as a tool, the agent could use it on its own, but also the developer could ask the LLM/agent in the console, as Adrian mentions:
-
I would give these (and related stats, listings) high priority. (BTW, why just 10?)
-
@psy Thanks! Note that the link above points to /talk/topic/13598-jsonld-schema-module/?do=getNewComment Is it that by mistake, perhaps? Another note is that I find it confusing that you edit the initial post and also clear the trace of its past state(s). This way it looks like information from 2016, but it is clearly not, and the discussion following the first post also looks odd and confusing to the newcomer.
-
I'm not getting it done as quickly as I'd like. Most of the modules were written in February and March, when I had free time. Regarding the topic, yes and no. I want to standardize everything so that it looks native. Everywhere and always. And also the UI and UX should be convenient. So that when you open the Tracy dashboard at 3 AM, it doesn't look like a bright light, nothing more. @Ivan Gretsky
-
Ivan Gretsky started following PW 3.0.259 – Core updates , Important / Interesting Updates and Tracy and AI/LLMs
-
@maximus Seeing the speed with which you produce new cool modules just maybe you could come up with a custom theme css pretty quickly: - https://forum.nette.org/cs/31690-dark-mode-pro-tracy-css (translate from Czech) - https://github.com/nette/tracy/blob/ab7b1d19c0de130bed6de5b30c9ad7884131b465/src/Tracy/Debugger.php#L107-L111 It is already possible to change the debugger output to dark natively like this Debugger::$dumpTheme = 'dark'; (https://tracy.nette.org/en/dumper), but that is already by default, as I understand.
-
I have read this a couple of times. But as I am not as fluent in AI dev I couldn't quite grasp the whole workflow idea. So let me explain as I understood it and make my points. I think most devs develop in either IDE like VS Code with an AI extension, Zed and such or in CLI with Claude Code, OpenCode etc. They want their agents to be able to test certain url and see if there are any errors or warnings. I guess it is already possible by telling agents where the Tracy logs are and how to read them. AI has or could easily gain access to those anyway. An MCP could be intermediary here but does it help with anything? Another way would be to use the newly introduces CLI modules that could query an URL and return it along with debug info from Tracy. Just maybe AI agents can now debug in the browser, but that seems like a too complicated scenario. Am I misunderstanding something?
- Last week
-
CLI modules sound great, can't wait to play around with that! Two things I hope ProcessWire will eventually tackle natively (and also the things I currently think are kind of its weak points) are scheduled tasks and queues. For reference: https://laravel.com/docs/13.x/scheduling (or, pardon my french, https://developer.wordpress.org/plugins/cron/ and https://developer.wordpress.org/cli/commands/cron/) and https://laravel.com/docs/13.x/queues. I would assume that Jonathan was thinking of something similar, but I won't try to speak for him 🙂
-
What is the best way to move a Processwire site to a new server in 2026? I have backups from my old sites - almost 2 years old by now... - and have installed empty Processwire sites on my new server. Do the PW versions still have to be the same to make importing the old templates and database etc. work? How can I find out in my backups what version of PW they were on then and could I still find that version and downgrade to it? Or are there now other ways to rebuild the old sites?
-
Thanks @maximus. I think I managed to achieve what I wanted by replacing the /wire folder from the installation package with a symlink to one shared /wire folder, created with the following command line: ln -s /var/www/wire /var/www/html/oneofmywebsites/wire Then install as normal with its own database. That seems to work fine, right? Any drawbacks to watch out for? Why would 'symlinks to /wire' be something to avoid - 'can cause issues with __DIR__ resolution in some PW internals'?
-
A lot of things changed in the world. I do not quite like many of them... But this what is happening here right now with ProcessWire is just amazing! Ryan finally found himself a companion to work with and they both are doing really well! I was kind of concerned about PW development, but not anymore.
-
Amazing stuff. And support for goose turd green !! 😀
-
Hey everyone! Pushed a big update to WireWall today. The main addition is a dashboard module — install ProcessWireWall alongside the main module and you get a live stats page at Admin → Setup → WireWall. It shows blocked/allowed counts, a 24-hour chart, top block reasons, top countries, top IPs, active bans with countdown timers, and a recent events table. Works in both light and dark admin themes since it reads PW CSS variables. Also rewrote the settings page from scratch — went from 15+ scattered fieldsets down to 10 logical sections. City and subdivision blocking options now only show up if you actually have GeoLite2-City.mmdb installed, which cleans things up a lot. A few security fixes in this release too: proxy headers like CF-Connecting-IP are now validated against Cloudflare's published IP ranges before being trusted (previously any client could spoof them), unserialize() in the cache layer got hardened, and some overly broad AJAX bypass patterns were tightened up. Silent 404 mode now throws ProcessWire's native 404 page instead of plain text. GitHub: https://github.com/mxmsmnv/WireWall
-
@Jonathan Lahijani tell me more about the queue system?