Leaderboard
Popular Content
Showing content with the highest reputation on 08/13/2025 in Posts
-
SSE (Server-Sent Events) would be a game-changer for ProcessWires core, and the trash functionality example perfectly illustrates why: The Current Problem: As you mentioned, the current trash system is painful - deleting hundreds of pages requires multiple confirmations, long waits, and often timeouts. Your clients shouldn't need API knowledge just to empty their trash efficiently. How SSE Solves This: One-click bulk operations: Start deleting 1000+ pages with a single confirmation Real-time progress: "Deleting page 234 of 1000..." instead of a frozen screen No more timeouts: SSE keeps the connection alive, bypassing PHP execution limits Graceful interruption: Users can safely stop/pause operations if needed Beyond Trash - Core Benefits: I have written several converter or importer modules for my clients, that import data and transform them into pages or a payment matcher module, which compares bank statements with invoice pages inside of ProcessWire. For all of these modules I wrote custom SSE Event handlers myself which is much boilerplate and duplicated code as Bernhard mentioned. Imagine every ProcessWire installation having this built-in: Import/export operations with live feedback Batch page operations (move, publish, unpublish) Asset processing (image optimization, file management) Search index rebuilding Module installations and updates Why Core Integration Matters: Standardized approach: All modules can use the same SSE implementation Better UX across the board: Every long-running operation becomes transparent Developer-friendly: No need to reinvent the wheel for each module Professional feel: Matches modern user expectations from enterprise CMS Addressing Adoption Concerns: I can't predict what percentage of users would use this feature - nobody can provide statistics for something that doesn't exist yet. But consider this: every ProcessWire user who has ever dealt with timeouts, batch operations, or large imports would benefit immediately. The feature would be invisible to those who don't need it, while being invaluable to those who do. Your modules already prove SSE works brilliantly with ProcessWire. Making it core functionality would elevate the entire ecosystem.3 points
-
@DV-JF I was focused on making Lighthouse happy before, but I've put in some updates to make that Wave tool that you linked happy too. I can't duplicate the flickering you saw on mobile, what device and browser are you seeing it on? I'm testing with Chrome on Android 16 and an iPad with Safari on latest iOS.2 points
-
I've built this over and over in several of my modules (RockDevTools for Livereload, RockCalendar for creating events). Always a lot of work. Always a lot of boilerplate code. Always a lot of issues to fix. I think it's time to bring SSE (Server Sent Events) to everybody. Simple example (Empty Trash): Client-Side: // create stream const stream = ProcessWire.Sse.stream( 'ssedemo-empty-trash', (event) => { const textarea = document.querySelector('textarea[name="empty-trash-status"]'); try { let json = JSON.parse(event.data); stream.prepend(textarea, json.message, 100); } catch (error) { stream.prepend(textarea, event.data); } } ); // update progress bar const progressBar = document.querySelector('#empty-trash-progress'); stream.onProgress((progress) => { progressBar.value = progress.percent; }); // click on start button document.querySelector('#empty-trash').addEventListener( 'click', (e) => { e.preventDefault(); stream.start(); }); // click on stop button document.querySelector('#stop-empty-trash').addEventListener( 'click', (e) => { e.preventDefault(); stream.stop(); }); Server-Side: public function __construct() { parent::__construct(); /** @var Sse $sse */ $sse = wire()->modules->get('Sse'); $sse->addStream('ssedemo-empty-trash', $this, 'emptyTrash'); } public function emptyTrash(Sse $sse, Iterator $iterator) { $user = wire()->user; if (!$user->isSuperuser()) die('no access'); $selector = [ 'parent' => wire()->config->trashPageID, 'include' => 'all', ]; // first run if ($iterator->num === 1) { $iterator->max = wire()->pages->count($selector); } // trash one page at a time $p = wire()->pages->get($selector); if ($p->id) $p->delete(true); else { $sse->send('No more pages to delete'); return $sse->stop(); } // send message and progress info $sse->send( $iterator->num . '/' . $iterator->max . ': deleted ' . $p->name, $iterator ); // no sleep to instantly run next iteration $sse->sleep = 0; } Code + Readme: https://github.com/baumrock/SSE/tree/dev What do you think? Would be nice if you could test it in your environments and let me know if you find any issues!2 points
-
@ryan - the demo site (still linked from the new site) is still showing that .htaccess needs updating error (has been for a very long time) and running an old version of PW and the old theme. All fields and templates need to either have an icon or no icon - it looks messy with the alignment in those dropdowns when there is a mix. Maybe minor, but these details are what makes a project look professional or sloppy.2 points
-
Congrats on the launch @ryan Would it be possible to get some kind of webhook that I can call and send data to? I have everything automated for all my modules and I really don't want to log into the modules directory to push all my updates manually 😞 It would probably be ok to add all the readmes once, but still all the version numbers and the "last updated" indicator would be outdated as all my paid modules are private git repos. And I put a lot of effort into all my pro modules, so it would be nice if that could be visible somehow in the modules directory. See RockCalendar as an example: https://www.baumrock.com/en/releases/rockcalendar/ Ideally we'd have a github workflow that anybody can add to his/her project that automatically sends new data to the modules directory on every new release. I can build that workflow if you want and all you'd have to do is to add it to the github repo (like this example from RockShell) so that we all can use it in our CI automations and then add an url hook to processwire.com that reads the data from the webhook and updates the modules directory entry.2 points
-
This thread is intended to be a collection of useful tips and tricks when developing PW sites using the awesome DDEV development environment. First tip (and only issue I've had since almost a year) is how to prevent an endless redirect loop when using "force HTTPS" in htaccess: https://github.com/processwire/processwire-requests/issues/4521 point
-
Hey @Pete - I maintain four different Tracy core versions which are all included and used based on the version of PHP available. I have also made a real effort to ensure PHP 7 compatibility (maybe even 5 - not sure). A Tracy upgrade is basically instantaneous on all my servers/installs so I've never thought of the compiling process as an issue. Adding a namespace is probably more of a big deal with so many panels and reliance on the Tracy core itself - maybe just a matter of lots of backspaces to start loading things from the global namespace. The one other module I namespaced was AdminActions and it was a real challenge but that was mostly due to trying to support installed custom user actions whether they were namespaced or not. Still, it put me off namespacing others. I'll try to find some time to see what's involved sometime soon.1 point
-
@DV-JF I swear I thought I fixed that in a previous version... Thanks for the PR. I'm tidying up some updates and will include in the next forthcoming release.1 point
-
@FireWire Would you have a look at https://github.com/SkyLundy/Fluency/pull/19 - there's a litte syntax error for x-default.1 point
-
@ryan any feedback on my related suggestion? https://processwire.com/talk/topic/31404-weekly-update-– 8-august-2025/?do=findComment&comment=249930 What I forgot to mention: For that to work and to make it secure we'd have two options: Add a secret token to the users module directory profile that anybody can use to send update info to the modules directory Use a push-pull concept. The user just triggers and endpoint on processwire.com (like processwire.com/update-module/?module-id=1234) and then PW calls a predefined endpoint to grab data from (eg baumrock.com/get-module-info/?pw-module-id=1234) This endpoint would have to be defined in the module's directory of the user so that anybody can use their own endpoint. I'd prefer (1) as this would be a one-time setup on your end and anybody can just copy and paste that token and add it to the request payload for the trigger, eg: { "token": "abcdefg", "module-id": "1234", "version": "1.2.3", "readme": "This is a calendar module for PW" } And I think (1) would even be easier to implement on your end as well 🙂1 point
-
@adrian To be fair both are very nice sites. I see so many sites, and I like to look through the lens of how memorable it is. Like whether there's anything strongly unique or surprising that makes me want to click further inside, and hooks into my memory so that I can recall it later. That's what I'm missing from the Contentful site, even if it is nicely designed. As a visual learner, I'm drawn in by bold visuals and anything that makes a site different from any others. That's also what I'd like to communicate about PW, as something different from the Contentfuls, Wordpressers, and Drupals of the world. On the PW site, the large headline is unexpected/surprising, and whether one likes it or not, it's memorable, bold and stands out from the crowd. Likewise with the abstract animations, they communicate the concepts (to me and I'm sure others) in a way that text just doesn't. There's plenty to read for the book learners too. So whether one subjectively likes some of these things or not, I think it will prove to be memorable and engaging, and good for gaining new users.1 point
-
Can I humbly make an overarching statement on my thoughts about website design. I think there are certain types of sites that should have artsy, flashy, animated content and large fonts - these can make the right impression and be part of the visual experience. But when it comes to technology, I think clean, simple, and free of distractions is needed. Take a look at how clean https://www.contentful.com/ is and compare with https://www.sanity.io/ which is mess of moving stuff that I just want to gloss over. I also think you might have missed a key marketing point - "headless"1 point
-
@elabx you might want to use this approach and create a dynamic runtime superuser: https://github.com/baumrock/RockShell/blob/64a453a518e11dc445ae451bf1ca2d5e30126ef6/App/Command.php#L588-L590 $su = new User(); $su->addRole("superuser"); wire()->users->setCurrentUser($su);1 point
-
I don't know if this is intentional or not, so reporting just in case - at certain screen widths, the slider has its right edge cut off. Note that the Konkat site has a similar issue with "Konkat" having no right margin at certain widths. It also has the same crazy amounts of vertical whitespace on smaller screens that I mentioned for the new PW site above. I'd also be tempted to suggest that at all sizes it should uses the smaller padding that appears on smaller screens - it makes it look much more like a monitor screen, which I assume is the idea?1 point
-
@taotoo Thanks, fixed the animation in Firefox. It turns out Firefox needs the SVG filter to be visible, so had to remove the "hidden" attribute and move it off screen with absolute position. I don't know what's up with the MS Edge appearance (I don't have that environment to test in) but if you find what it is, please let me know. @poljpocket I prefer to stick with the term CMS and guide folks into the CMF side of things, since the term isn't so widely known/used. Though I'll continue to use it, just not front and center. @adrian Blur issue should be fixed. The large text size on the homepage is intended. @Alexander That assertion is incorrect. The metrics say this redesign was long overdue. But you are right about a performance issue with the desktop version of Safari (only) related to not using the GPU, I'm working on it.1 point
-
Congrats @ryan on the launch of the new website. I like it a lot! Since everyone else is posting the issues they found here, I will do the same. Thanks for considering! Layering issue on the homepage This is probably best illustrated with this screenshot: You can see I am using the devtools element selector tool and my mouse is clearly over the PW logo yet the morph canvas is focused by the tool. You might need to adjust the z-index of the header. "The CMS" menu item and "A powerful/friendly/... CMS you'll love" I love that ProcessWire used to not positioning itself strictly as a CMS because it isn't. It is so much more. This is also made clear in the introductory text: So the title and the first and most important menu item both tell visitors that ProcessWire is a CMS but then the text immediately contradicts that. I am sure you talked about this. Some ideas to solve this (yes, they have caveats too): The menu item can be called "ProcessWire" or "About" The text can be called "ProcessWire is powerful/friendly/... and you'll love it!"1 point
-
Kudos for the launch of the new website! I share the reservations about the animations, and I find nasty the huge file size for the h1 headlines on non-mobile devices. And the styling of the buttons is ugly. Of course, it's all a matter of taste, too. But I found a bug: At the bottom of nearly every page there are links to the top level pages, e.g. to Blog. But the href attribute of this link is "blog/", that is, relative to the actual page. So the link results in the 404 error page when the link is on a subpage, say on processwire.com/about/ - there is no page processwire.com/about/blog/!1 point
-
I think everyone here knows that and just wants to help improve the site for new users. On the download page I noticed Softaculous: Here, especially with regard to new users, the text could be updated. However, in my opinion, the demo available there is a problem that is more likely to deter new users than get them excited about ProcessWire: No one new to Processwire can figure out the backend or anything else from this demo.1 point
-
To clarify and gently push back on this, prefers-reduced-motion isn't just for people who may have a preference for no animation. Personally I'm fine with animations. It's an accessibility feature that allows people who may be affected by animations (e.g. vestibular disorders) to send a signal to websites from their OS or browser. It's good practice to check for that and respect it, when possible, especially if they're non-critical animations.1 point
-
Quick css fix for the misaligned "Project" button: Add <button> to your css selector: .pw-module-primary-actions a, .pw-module-primary-actions button { } Another note: on the homepage you should add the width and height attributes on the slideshow’s images (maybe even a background-color?) so there’s no layout shift when loading the page: Also I think you could echo the logo’s svgs using file_get_contents to avoid the empty spot like in my screenshot. Lastly I would also advice to respect "prefers-reduced-motion: reduce" for the lottie animations (and have a fallback svg image in case there’s no javascript). It’s quite easy to do by setting the autoplay option using "window.matchMedia('(prefers-reduced-motion: reduce)').matches".1 point
-
A few suggestions on what is a great new theme: Similar to @adrian, I have an issue with font size on larger screens. I have a wide screen and the site smacked me in the face when I visited this morning. Recommend adding css something like: :is(header, main, footer) { width: min(80%, 100ch); margin-inline: auto; } or adding a class to the header, main and footer components. The text was far too big to read and much of the important above the fold content fell below the the fold. Same for every other page I visited. In additon, use CSS to clamp the font-size to a min, preferred, max size rather than a fixed 14vw. https://developer.mozilla.org/en-US/docs/Web/CSS/clamp Absolutely agree with @gRegor about reduced motion. This should be in the CSS, eg: /* Remove all animations and transitions for people that prefer not to see them */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } } Add CSS "text-wrap: balance" to headings and "text-wrap: pretty;" to long content, eg paragraphs, list items, blockquotes, etc. It has good support on modern browsers and makes a difference in appearance and readability. https://developer.mozilla.org/en-US/docs/Web/CSS/text-wrap Keep up the good work1 point
-
In a similar accessibility vein, you might consider supporting prefers-reduced-motion to toggle animated/static content.1 point
-
Is there any way to adjust the font size to personal preferences? I'm finding headings way too big on my screen resulting in unnecessary scrolling to read anything. The animated heading at the top bring back not particularly fond memories of the <blink></blink> tag. I suspect it may be mobile first, but if I'm accessing the site it's for documentation, and I'm not going to do that on a phone. One of the things I've loved about ProcessWire is it's fairly well documented, but if I have to do extra scrolling every time I want to reference docs because everything is so much bigger, that's not helpful. I realise other people may like the new design, and I don't want to impose my preferences on others, but honestly I can't say I'm comfortable with the new presentation. Sorry, I know lots of work has gone into this. It's why I'm asking, following the ProcessWire philosophy of allowing total flexibility, whether actual site visitors themselves can have some option to select default font sizing, so those who like it big can keep it that way, but those who'd like it smaller can have something more to their liking.1 point
-
Love the new look! Congrats! A couple small things with Javascript disabled: the sections down the page like "Total control over the design" don't show anything in place of those animations. It would be nice to have some static image fallback in that case. Also in the ProcessWire Weekly subscribe prompt at the bottom, the caret on the button does not appear when JS is off, so it just looks like a form input with a circle next to it.1 point