All Activity
- Past hour
-
PW 3.0.261 β Core updates + AgentTools updates
AndZyk replied to ryan's topic in News & Announcements
This helps only temporary for me. As soon as you delete the compiled files (which is something I like to do π ) the error reoccurs. - Today
-
Peter Knight started following MediaHub 1.16.0 released
-
Hey everyone I'm pleased to report that MediaHub 1.16.0 has been released. Here's a breakdown of the changes. The next release will optimise bulk upload and crops. I will also add integrated focus points cropping. 1.16.0 Changelog Admin navigation Optional MediaHub link in the admin top bar. A new module setting (Show MediaHub link in main navigation) adds Media Hub to the admin top bar. Custom label for the top-bar link. When the top-nav option is on, a new Custom label field lets you override what appears in the top bar. Useful when the localised "Media Hub" string is verbose or when your team prefers a different term (Media, Assets, Library, DAM). Leave blank to keep the localised default. Setup β Media Hub label is unaffected. Library and inputfield Drag-to-reorder thumbnails in MediaHub fields. Just like the native InputField, you can reorder thumbnails to take advantage of first() and last() etc. Works across any view mode (grid, proportional, detail). Master "select all visible" checkbox in the table view header. Tick the column header to select every row currently rendered; untick to clear. "Add more" button now matches stock InputfieldFile Font, colour, hover state, and icon spacing across AdminThemeUikit, Reno, and Default are more consistent Bug fixes Library search now covers Alt/Description, Labels, and Collections. Previously search only matched the asset title and filename. Searching by exact ID is also now reliable. Renamed filename and title in the upload queue are now applied on upload. Editing the filename stem or title in the upload queue rows had no effect; the values were not transmitted to the server. Both fields are now picked up and saved with the new asset. Duplicating an asset preserves its Collections and Labels. Cloned assets were losing the page-reference fields. Both are now copied explicitly to the new asset. The duplicate confirmation message also clarifies that crops are not copied (they can be re-generated on the duplicate). Cleaned up a stray PHP warning in the library view left over from the v1.15.0 Tags β Labels rename. PHP 8.5 deprecation notice in the MediaHub inputfield resolved (explicit nullable parameter typing). Defensive changes Server-side upload batch limit now matches the configured browser-side limit. Previously the server hard-capped to 50 files per request even if Maximum upload batch had been raised higher; both ends now read the same setting. Bulk-import requests are now capped at 500 selections per request. Selecting thousands of existing site images at once was holding a single PHP request open for many minutes with no progress feedback and no resume path on failure. Larger jobs now surface a clear message asking you to import in batches. Upload temp-file cleanup window extended from 60 seconds to 5 minutes, to avoid deleting an in-flight temp file mid-write on slow connections. Container pages at the site root reinforced as hidden + system on upgrade, so the data-tree containers (Media Hub, Labels, Collections, Assets, Crops) cannot accidentally appear in front-end navigation. Security Import-by-URL is now safer on shared and self-hosted servers. Imports from external URLs are now hard-capped at 5 MB per file and refuse URLs that resolve to private or reserved IP ranges (mitigating server-side request forgery), and reject any non-HTTP(S) protocol on the initial request and on any redirect. Cheers Peter
-
- 3
-
-
PW 3.0.261 β Core updates + AgentTools updates
Gideon So replied to ryan's topic in News & Announcements
Hi @AndZyk You are not alone. Same here. Uninstall and install the module again helps. Gideon -
Hi all, Does anybody notice this with 3.0.260? It happens when wire folder in the root installation folder is a symlink to other folder. Gideon
-
Hi @Mikel I use a custom JavaScript function (that name is entered in the PrivacyWire module settings) to check for consent and then set the cookie for activating NativeAnalytics: function initNativeAnalytics() { const consent = JSON.parse(localStorage.getItem('privacywire')); //console.log(consent); if (consent && (consent.cookieGroups.statistics || consent.cookieGroups.marketing)) { document.cookie = "pwna_consent=1; path=/; max-age=" + (60*60*24*365) + "; SameSite=Lax"; if (window.PWNA && typeof window.PWNA.trackIfConsented === 'function') { window.PWNA.trackIfConsented(); } } else { document.cookie = "pwna_consent=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT"; } }
-
PW 3.0.261 β Core updates + AgentTools updates
AndZyk replied to ryan's topic in News & Announcements
It could be that Modules that use class TestConfig extends ModuleConfig Have the error "Class "ModuleConfig" not found" with the newest update. https://processwire.com/blog/posts/new-module-configuration-options/ I have this with the old Jumplinks module now and I guess some modules use this module config. Can anybody verify this please? π - Yesterday
-
Hi Mikel and SEO specialist Thanks for taking so much time to list your thoughts. I completely agree, and it's a testament to both SEO Modules and ProcessWire itself that they have worked together for so long. I hope my original post doesn't come across as a criticism of either Module or the developers. Life moves on, and understandably, the developers have new priorities. Yes, agree too. And I don't intend to recreate existing Modules simply for the sake of it. But I also want SEO Neo to rely on other modules as little as possible. So it's likely that SEO Neo will act as an umbrella/coordinating layer for companion Modules. All working together. It's an ambitious task, but I would prefer to build from the ground up with modular components (sub-modules) that can work together rather than end up with a Module which relies on various "3rd party" modules. I realise this somewhat contradicts my earlier statement. But to answer your specific points: SEO health (missing descriptions, duplicate titles, noindex flags) as a Lister-based audit view β this genuinely doesn't exist in the ecosystem yet Yes, this is on the roadmap and has been on my mind for some time. The module should have an SEO health dashboard that can display the basic rolled-up audit of your site. I use SEM Rush extensively (alongside several other SEO tools). SEO Neo won't try to replace them, but will surface critical issues within PW itself. I see this as a big benefit to SEO specialists, developers and editors, even if it serves as a launch pad for deeper investigation via more powerful SEO tools. 404 hotspots from the logger with a "create redirect" action wired into ProcessRedirects Yes, this is being developed currently with a focus on 404 logging. AI crawler activity from Wire Request Blocker Have added to the roadmap. SeoMaestro field status across templates SEO Neo will have a field status overview if that's what you mean? It won't report on other SEO modules' gaps. Native urlSegments support β as psy mentioned earlier in the thread, currently needs a hook in SeoMaestro urlSegments is done and working since my last post. I am stress testing on a larger site shortly. Canonical, og:url, twitter:url and hreflang all preserve $input->urlSegmentStr() natively. I also have a config setting for sites that want segments collapsed instead. The hook needed for SeoMaestro isn't required in SEO Neo. Yoast-style content analysis with traffic-light scoring β tends to produce text optimized for the algorithm rather than the reader. I am keen for SEO Neo not to become a Yoast copy. Schema.org helpers with documented hooks β ready-made generators for the common types (Article, FAQPage, Person, Organization, BreadcrumbList) that developers can call from templates. Not auto-detection (that doesn't work without explicit mapping), but a clean API. Noted. Finally, the rollout of SEO Neo's core module and individual components will likely be phases. The Neo in SEO Neo is more a nod to a new approach rather than Nearly Everything at Once. P
-
Hi, @Stefanowitsch, IΒ΄m curious: Do you hook into a PrivacyWire method or do you use its built in custom function trigger? We simply have set up a script that checks the local storage for the privacywire key. Then a cookie for Native Analytics is set or unset depending on its "statistics" value. Cheers, Mike
-
How to transfer a Processwire site from one server to another
Najib replied to modifiedcontent's topic in General Support
Honestly, youβve got everything you need with just the files and a database dump. Iβve done this exact migration a few times, and ProcessWire is actually one of the easiest CMSs to move because it doesnβt hardcode paths in the DB. Just upload your files to the Ubuntu server, import the SQL via phpMyAdmin or CLI, and update your /site/config.php with the new database credentials. The only real "gotcha" is usually file permissions or missing .htaccessβmake sure mod_rewrite is enabled on the new Ubuntu box and double-check that your /assets/ folders are writable by the server, otherwise your images won't render. You definitely don't need a fresh install first; just "drop and swap" works fine. -
Honestly, for a local dev environment, itβs mostly just an annoyance. The main "risk" is that your timestamps for things like page edits, logs, or scheduled tasks will be an hour off. If youβre just building and testing layout or logic, you can safely ignore the warning. However, if you're testing anything time-sensitive (like countdowns, expiring links, or publishing schedules), that one-hour gap will definitely trip you up. Instead of changing your whole system, you can usually just sync them in your config.php as the error suggests: PHP $config->timezone = 'Europe/Paris'; Since it's just your local install, it won't affect your physical clock, and it makes the warning vanish. If the time difference bothers you while looking at the "Last Modified" dates, just keep it as isβnothing is going to "break" the database.
-
Hey! Yeah, that's a classic snag with ProcessWire's Repeater Matrix. The ->type property actually returns the "name" (slug) of the type, but ->label isn't a direct property of the item itself. To grab the human-readable label, you have to pull it from the field's definition. You can do it like this: PHP $label = $item->getRepeaterMatrixType()->label; echo $label; Essentially, $item->getRepeaterMatrixType() returns the actual type object, which contains all those extra details like the label, icon, and description. Super handy if you're building out a custom page builder and want the UI to match the backend!
-
Hi all, SYMPTOM When creating or editing a page with Chinese characters in the page name (e.g., ιζΌζε) while $config->pageNameCharset = "UTF8" and $config->pageNameWhitelist = "" (empty), a fatal error occurs: Fatal Error: Uncaught ValueError: idn_to_ascii(): Argument #1 ($domain) must not be empty in Sanitizer.php:1138 Environment PHP 8.4 ProcessWire 2.6.260 I create an bug report in github https://github.com/processwire/processwire-issues/issues/2215 By the help of AI, I found the root cause. 1. The pageNameHasConflict() method in PagesNames.php calls $sanitizer->pageName($name, Sanitizer::toAscii) to convert the UTF-8 name to ASCII for duplicate name checking. 2. Sanitizer::pageName() triggers punyEncodeName() to encode the Chinese characters using Punycode. 3. Inside punyEncodeName() (line 1085), when $version > 1, each character of the name is checked against $config->pageNameWhitelist. 4. When pageNameWhitelist is empty (""), every Chinese character fails the whitelist check and gets replaced with "-" (hyphen). 5. After collapsing consecutive hyphens and trimming leading/trailing hyphens, the result is an EMPTY STRING "". 6. The empty string is then passed to PHP's idn_to_ascii() function (line 1158), which throws ValueError because it requires a non-empty $domain argument. Gideon
-
Hi Peter, great to see someone tackling this. SeoMaestro is solidly built and still maintained for bugfixes, but the last feature release was June 2022 and Wanze himself has mentioned he's stepped back from active PW work, if I remember correctly. A few things that come up in client work aren't covered by it alone. I showed your announcement to our SEO specialist and asked him to put together a wishlist. We then discussed it internally and stress-tested every point. What kept coming up wasn't really "we need new features" β it was "the pieces exist, but they don't talk to each other". There's already a lot of good, actively maintained tooling in the ecosystem: Wire Request Blocker (Ryan) β AI bot throttling since September 2025 ProcessRedirects (apeisa / teppokoivula) β 301s, wildcards, CSV import/export, v2.2.5 released Dec 2025 Process404Logger (kixe) β clean 404 logging SeoMaestro (Wanze) β the meta/OG/sitemap foundation everyone already uses The actual pain in daily work is that these live as separate islands. A site owner has to install four modules and configure each one in its own admin section. The obvious workflow between them doesn't exist either β a 404 logged by Process404Logger doesn't surface in ProcessRedirects as a redirect suggestion, even though that's exactly the kind of pairing that would save real time. So the honest question for SEO NEO might not be "what new features do we need" but rather: could SEO NEO act as the umbrella that connects what's already there? A central admin section that surfaces: SEO health (missing descriptions, duplicate titles, noindex flags) as a Lister-based audit view β this genuinely doesn't exist in the ecosystem yet 404 hotspots from the logger with a "create redirect" action wired into ProcessRedirects AI crawler activity from Wire Request Blocker SeoMaestro field status across templates Plus the few things that are genuinely missing on the meta-handling side: Native urlSegments support β as psy mentioned earlier in the thread, currently needs a hook in SeoMaestro Schema.org helpers with documented hooks β ready-made generators for the common types (Article, FAQPage, Person, Organization, BreadcrumbList) that developers can call from templates. Not auto-detection (that doesn't work without explicit mapping), but a clean API. What we deliberately left off the list: llms.txt generator β recent log file audits show GPTBot, ClaudeBot and PerplexityBot don't actually fetch the file. The spec is unofficial and no LLM lab has committed to honoring it. Worth revisiting if that changes. Yoast-style content analysis with traffic-light scoring β tends to produce text optimized for the algorithm rather than the reader. Whether the right path is one big new module or a coordination layer on top of the existing ones is your call. But from the user side, the bigger win would be coherence rather than yet another standalone tool. Looking forward to seeing where this goes. Cheers, Mike
- Last week
-
Hi all, a small confession from the frameless corner of the PW universe: in the last 15 years we've spent way too many evenings doing the same FTP-shuffle on shared hosting. Delete everything in site/, drop the DB via phpMyAdmin, re-upload, run install.php, log back in, find out the bug we were chasing only reproduces after a reset, sigh, repeat. The reason we do this on real hosting at all is that the gnarly bugs in modules-under-development never show up locally β AllowOverride, mixed file ownership, mod_security, you know the drill. But "let's test cleanly on the real server" and "no SSH access" don't combine well. So we built ProcessWireReset: a module that wipes a PW install back to clean profile state from inside the admin. No SSH, no FTP, no phpMyAdmin. Click the button, log back in, you're at a freshly installed PW with your superuser intact and any modules you marked as keep re-installed automatically. A few things worth knowing, since destructive modules deserve some care: Modules to keep + Directories to keep. Two fields in the config: one picks which modules survive (transitive dependencies included), the other is a free-form list of paths under site/ that should be spared by the cleanup β handy for things like templates/RockIcons or assets/backups that live outside the module directories. Custom tables go into a snapshot. After the reset you can pick which module-specific tables to restore. Auto-restoring everything turned out to fight with re-installed schemas more often than we liked. The reset can crash mid-way β a kept module's install() can fatal in surprising ways. The confirmation modal hands you a one-time recovery URL with a 256-bit token. If the worst happens, that URL gives you a clean reinstall with your original credentials. Belt, braces, and one extra strap. It's interactive only. No cron triggers, no CI hooks. The destructive button has a real human in front of it, on purpose. Pairs nicely with GitSync: If you're already using our GitSync module, ProcessWireReset is the missing other half. GitSync pulls a fresh module version from your GitHub repo into the live install at the click of a button β but it doesn't touch the DB or re-run install(). After a GitSync pull that changed schemas, fields, or admin pages, the previous install state and the new code drift apart. Hit Reset, the module is removed and re-installed cleanly from the freshly pulled code, and you're testing what you actually shipped instead of a frankenstein of old DB state and new files. That GitSync β Reset β test loop is what we use daily on shared-hosting test installs where SSH isn't an option. Repo (MIT): https://github.com/frameless-at/ProcessWireReset Modules Directory: https://processwire.com/modules/process-wire-reset Caveat the obvious: this thing is for development, not for production. Treat it accordingly. Curious to hear what you build/break with it. Bug reports and pull requests welcome. Cheers, Mike
-
- 8
-
-
-
PW 3.0.261 β Core updates + AgentTools updates
ryan replied to ryan's topic in News & Announcements
if you are dealing with something mission critical I would probably avoid getting AI involved in live running copies of the site. Personally I'm comfortable with using it in my projects, but for your situation I would wait awhile, as this is all very new and somewhat experimental. -
PW 3.0.261 β Core updates + AgentTools updates
adrian replied to ryan's topic in News & Announcements
Just a heads up for everyone - the latest release of RepeaterMatrix v14 will result in a 500 internal server error on PW v3.0.257. It works fine on v3.0.261 but I haven't narrowed down the min required version. Be sure to test thoroughly on dev first before upgrading. -
Rapid β EditorJS block editor fieldtype for ProcessWire
HMCB replied to maximus's topic in Modules/Plugins
I will most definitely be watching this progress. Thank you! -
PW 3.0.261 β Core updates + AgentTools updates
adrian replied to ryan's topic in News & Announcements
Thanks @ryan - so the "page content" part is my concern but I am assuming that so long as we only add the PE field to pages that have publicly available content (frontend viewable) then it should be safe because it won't be able to read the page content from the "entire site" as per your initial post. I know I probably sound pedantic here, but I think this distinction is VERY important. -
PW 3.0.261 β Core updates + AgentTools updates
ryan replied to ryan's topic in News & Announcements
@adrian the full knowledge means templates, fields, page content, ability to read template files, know what modules are installed, etc. Most of it is provided by existing AgentTools commands (sitemaps, docs, etc) -
PW 3.0.261 β Core updates + AgentTools updates
adrian replied to ryan's topic in News & Announcements
I wasn't talking about it maliciously scanning for training data. My concern was based on your comment about it coming "with full knowledge and expertise of your entire site, built in". I was concerned that you were explicitly telling it to read the entire the database so it knows all the content powering the site. Can you clarify what that statement actually means? It's the fact that it appear twice that bothers me - once at the very top of the page and then again above the PE field. Why is it needed twice? It just seems very noisy. -
That answers my question perfectly fine. You understood me here.
-
Collections β Airtable-style data management for ProcessWire
wbmnfktr replied to maximus's topic in Modules/Plugins
I might repeat myself here but: π€― The idea and concept of collections in addition to the interface. That's a great one! -
I feel that! But it became way better than it was a few years back when the world was going nuts. The things I changed in the last 12-18 months: getting all the regular vitamins and supplements for someone my age getting additional supplements that help my brain to keep working checking in on gut health and eating less/none heavily processed foods checking calories and protein in-take - fixing both and removing empty carbs and calories getting back to the gym - first only cardio, now additional strength training All the above helped me to not being stressed out everytime and all the time. I couldn't care less about things thrown at me these days. A full day with meetings, a workshop, and a coffee with friend somewhere in-between, and of course the usual time at the desk don't affect me in a negative way anymore. I don't know how the math works here, but these days I have enough hours each day to have plenty of time, even time to balance everything out. PLUS the weekends for side-projects, fun, friends, family, and just things.
-
ProcessLegalDocs: AI-powered legal document generator
wbmnfktr replied to maximus's topic in Modules/Plugins
I'm blown away by this. π€―- 1 reply
-
- 2
-
-
Hi everyone, Iβve released a new module: ProcessLegalDocs GitHub: https://github.com/mxmsmnv/ProcessLegalDocs ProcessLegalDocs generates legal documents directly from the ProcessWire admin, including: Privacy Policy Terms of Use Cookie Policy Data Processing Agreement CCPA Notice Refund Policy Disclaimer It currently supports 93 jurisdictions and 44 languages, with jurisdiction-aware language selection and document requirements. This is also the first module built on top of my new Context module: https://github.com/mxmsmnv/Context Context acts as the AI/site-analysis base layer. ProcessLegalDocs uses it to understand the site structure, installed modules, fields, pages, and configured AI gateway, then uses that context to generate more relevant legal documents. The module can still work without Context, but in that case it falls back to more generic templates. For best results, Context should be installed and configured with AI. Main features: Generates Markdown legal documents with YAML frontmatter Stores files in /site/assets/legal/ Includes dashboard, preview, download, validation, regenerate, delete, and ZIP export actions Supports many privacy/data protection regimes, including GDPR, UK GDPR, CCPA/CPRA, COPPA, PIPEDA, LGPD, APPI, PIPL, DPDP, PDPA variants, and many US state privacy laws Includes settings for owner/company data, DPO, business audience, data categories, processors, analytics, payments, email/marketing tools, cookies, refunds, subscriptions, review status, and optional ProcessWire page publishing Uses ProcessWire admin UI conventions / AdminThemeUikit Requirements: ProcessWire >= 3.0.255 PHP >= 8.3 Context module optional, but recommended for AI generation Letβs take a look at the module interface: Install: Clone into /site/modules/ProcessLegalDocs/ Refresh modules Install ProcessLegalDocs Open Setup β Legal Docs GitHub: https://github.com/mxmsmnv/ProcessLegalDocs Context module: https://github.com/mxmsmnv/Context This is an early release, so feedback, testing, issue reports, and ideas are very welcome.
- 1 reply
-
- 10
-
-