Recently Updated Topics
Showing topics posted in for the last 7 days.
- Today
-
InputfieldMatrixType - Type identifiers and structured data extraction
szabesz replied to maximus's topic in Modules/Plugins
Thanks @maximus! It's a pity I can't give at least 5 likes to your post :) -
So far I tried with: Z.AI GLM 5.1 Kimi K2.6 MiniMax 2.7 Opus 4.7 Codex 5.3 DeepSeek Pro & Flash V4 Results don't vary that much here in this case. I generated a few variations now and will pick the best parts from each variation. Huge context windows do help when I tell the agent to inspect a module that has a certain type of block i want to use/copy. Like tables or listing, like button groups or dropdown buttons. Outside of ProcessWire modules absolutely. They do a great first draft you can fine-tune then. I played a bit with ui.sh and impeccable.style to achieve quite good results. Even landing pages, newsletter templates, and everything non-dashboard type of design. Shadcn/TailwindCSS are great for fast prototyping of good looking interfaces. Even when using models like the older MiniMax 2.5. I did a small comparison a while back using older models and no skills or design frameworks. It was fine. https://log.nerd.to/log/ai-frontend-design-comparison/ Pointing in 2 directions helps: pointing at existing modules and how they did it, or just copy and paste the code (which isn't that easy sometimes) pointing at static examples and design systems for the fine-tuning - in this case the one from @maximus. I'm complaining on a high level here. π The main part, developing the module, took an hour. So there is room left to design the UI a bit. The module is up and running, does what it should do. I am happy for now.
-
Hey everyone! Our frontend developer saw GitSync and said "this is lovely for module repos β but what I actually want is the whole /site/ on a branch. Push, switch, done." Reasonable. We said "yeah, we'll get to that." That was a while ago. SiteSync is what we eventually built. What it does: SiteSync deploys a ProcessWire installation's /site/ from a configured GitHub repository β one repo active at a time, but repoint it whenever you like, we're not the boss of you. Every template, stylesheet, RockMigrations config file, content seed lives on a branch. The admin lists every branch in the repo, you click Switch, /site/ is atomically replaced with that branch's tree, RockMigrations applies schema changes on the refresh hook, content seeds run. Click another branch, switch back. Click Rollback on yesterday's deploy, you're on yesterday's deploy. No git binary on the server, no CI runner, no SSH keys β everything goes over the GitHub REST API from PHP. What's new here: Coding-agent fluent. An AI coding agent (Claude Code, Cursor, OpenAI Codex, β¦) reads a shipped AGENTS.mdfrom your ProcessWire root β which SiteSync auto-scaffolds on install β edits files on a feature branch, opens a draft PR, and the SiteSync admin shows you updates available. We bootstrapped a complete blog β schema, templates, styling, three seed articles β from an iPhone with the Claude app. No laptop in the loop. Real staging via two installs. One SiteSync per environment, both pointed at the same repo, different active branches. Feature β PR onto staging β staging auto-deploys β browse staging.example.com like an actual human β second PR onto live-stable β live deploys. Schema changes hit the staging DB first, not directly into live. The grown-up workflow you usually pay a SaaS for. The technical guts: Versioned everything. Each deploy is <branch> + <SHA> + <commit title> in the Recent deploys table. One-click Rollback to any prior row β the rollback is itself just a regular deploy of that exact tree, same atomic two-pass write, same snapshot, same tracked-sync. Tracked sync, not strict mirror. A new file in your branch shows up on the server. A file your branch never knew about (a third-party module's helper, a hand-edited template, last night's debug log) stays where it is. SiteSync only deletes what SiteSync itself wrote β verified by per-file blob SHA in managed-files.json. Atomic two-pass write. Pass 1 downloads every blob to <final>.sitesync-tmp next to its target. Any failure cleans up all tmp files; /site/ is never half-mutated. Pass 2 POSIX-renames each tmp β final. Pre-deploy snapshots as tar.gz, configurable retention, one-click restore. Your /site/ before SiteSync touches it. If you've ever pasted find . -delete into the wrong shell, this is your safety net. Webhook with hold-back. A direct edit on the server (3am emergency typo fix) is detected; the next webhook push to that same path is held back with HTTP 409 + a clear admin banner instead of silently overwriting your hotfix. The push waits patiently for you to commit and push the local change. Fits your stack: RockMigrations marriage. Fields, templates, roles, permissions as config files under site/RockMigrations/. SiteSync deploys the files and calls $modules->refresh() β RockMigrations hooks the refresh and applies your schema changes. No custom post-deploy step, no extra wiring. Schema-as-code that actually deploys. Editorial seeds under site/content/ for the "first article" / "bootstrap pages" problem β every .php file in there runs on every deploy. The bundled AGENTS.md documents the conventions for keeping seeds safe: idempotency guards (so a re-deploy doesn't duplicate content), and versioned filenames like 99-patch-rename-foo-v1.php for the rare "we need to rename this on every install" case. Conventions, not magic β your seeds are plain PHP doing whatever you want. What it doesn't try to do: replace your CI, sync site/assets/ (uploads stay where the editor uploaded them), or pretend to be a fleet deployer. One site, one active repo, one Switch at a time. The simplicity is the point. Beta status: in active use on real ProcessWire sites. The atomic-deploy + tracked-sync + hold-back + snapshot machinery is stable. The agent-templates and staging walkthrough landed in the most recent sprint and would benefit from more real-world miles. Bugs, edge cases, and "wait, that's a weird hosting setup" reports very welcome. Boring details: License: MIT. Requires: ProcessWire 3.0+, PHP 8.0+ with curl and phar extensions. GitHub token: fine-grained PAT, Contents: read only β read-only. SiteSync literally cannot modify your repo. If the server is ever compromised, the token can pull source code but not push anything back. Get it: Repository: https://github.com/frameless-at/SiteSync Install: drop into /site/modules/SiteSync/, Modules β Refresh β Install README has the whole tour: config, webhooks, path filters, staging walkthrough, agent workflow. Companion to (but not dependent on) GitSync β install both side by side if you want module-level granularity and whole-/site/ branch deploys. SiteSync can even reuse GitSync's GitHub token, because typing the same PAT twice is a crime. One last flex: For a proof of concept we just used SiteSync in combination with Claude to migrate a 20-year-old blog β articles, comments, gallery images, the lot β out of its previous CMS into a fresh ProcessWire install. We just installed the module, pushed /site/ to a Repo and connected the agent to it. We fed it with a JSON Dump of the Blog-Data and said what we wanted: Schema as files on a branch, content as idempotent seeds, snapshots between attempts because of course the image migration didn't work on the first run (or the second, or the third). New /site/ deployed clean, two decades of writing intact, old URLs preserved. Tataaaa. Curious to hear how it lands in your setup. Cheer, Mike
-
- 2
-
-
-
Version 2.0.0 ProcessCronJobs no longer relies on ProcessWire's LazyCron module. Due-state is now checked internally against each CronJob's lastRun and its configured interval. LazyCron definitions such as LazyCron::everyDay still work, though. Remove lazyCron dependency add build in delay methods fix race condition with the original LazyCron Module fix cron command preview;
-
Thank you very much. Unfortunately, I dropped the whole topic a few days later so I do not have the Azure setup data anymore. It was really, really complicated so we solved the problem otherwise.
-
@Jonathan Lahijani m5 Mac air has 24 gb, the only options available were 16 or 24 at microcenter when I bought it. But I was already stretching my budget so more ram than that would not have been an option. But I'm looking to experiment with local LLMs on my iMac, which has 16gb, not the new computer. They can run as slow as they want, I'm only experimenting, I'm not looking to replace the AI services, just wanting to learn and give my iMac something to do.
- Yesterday
-
I solved this warning (PHP 8.4, ProcessWire 3.0.255, MarkupSimpleNavigation 1.3.7π Warning: Undefined array key 1 in /homepages/site/assets/cache/FileCompiler/site/modules/MarkupSimpleNavigation/MarkupSimpleNavigation.module on line 313 With this change in MarkupSimpleNavigation.module on line 312 - 316: if($this->iteration == 1) { $out .= "\n" . ($this->outer_tpl[1] ?? ''); } else if(count($children)) { $out .= "\n" . ($this->inner_tpl[1] ?? '') . "\n"; }
-
Using AI with ProcessWire: Where Do I Even Start?
Christophe replied to zilli's topic in Getting Started
In case it is of interest to someone: https://www.youtube.com/@IBMTechnology I viewed one of the videos presented by Martin Keen the other day and thus discovered this channel. There seems to be a lot of good videos about different aspects of AI and other subjects. I haven't started yet with AI, I'm just slowly trying to understand how things work. As soon as I can I'll try to use it locally. In reality the first (specialized and local) one(s) I'll probably/perhaps try will be while using DaVinci Resolve Studio. For the moment the only one I've started using a few times is Leo on the Brave Browser (On another subject, I just discovered yesterday by accident while using the mouse that it is possible to split the view with (only) 2 visible tabs, unlike with Vivaldi where there are more options. I hadn't even searched if it was possible. And I've just discovered it is now possible with Firefox, but also only with 2 tabs.). I had found about Aider a few weeks or months ago, it seemed really interesting. -
https://ai.google/societal_impact/
-
module Native Analytics β a native analytics module for ProcessWire
Roych replied to Roych's topic in Module/Plugin Development
Iβve just uploaded a new version of NativeAnalytics 1.0.20. This update mainly focuses on monthly reporting, privacy options, engagement tracking improvements and some smaller admin UI refinements. Added / improved Added optional monthly email reports Added Send test report now option in module settings Added report preview before sending Added optional PDF report attachment Improved page-level analytics summary inside Page Edit Added a setting to show/hide the Page Edit analytics summary Improved spacing and styling of the Page Edit analytics block Improved engagement event tracking, especially form submit tracking Added better cache-busting for updated tracker/admin assets Added module info files so the ProcessWire modules directory and Upgrade module can detect the version correctly Added support links to the module info array The module should now also be upgradeable through the ProcessWire Upgrade module once the modules directory has refreshed the latest version. The current version is 1.0.20. Special thanks to matjazp for testing the module and reporting useful issues along the way. The feedback helped a lot with polishing the module and making it more reliable in real-world use. P - Last week
-
Module: AIOM+ (All In One Minify) for CSS, LESS, JS and HTML
matjazp replied to David Karich's topic in Modules/Plugins
Sorry for late reply. Is this something new, did you upgrade the module or is this new install? AIOM doesn't inject admin bar, I guess it should be there, if you have permission to use it (I don't know the module). Is it better if you don't use html minify option? Empty cache just remove css/js files so they are regenerated next time. Will take a look when I have more time. -
That's why GitHub Issues exist. π
-
I recently started to use more desktop apps, in this case OpenCode Desktop, which is quite similar to OpenAI Codex and the Claude Desktop app, but actually available for Linux. One great feature is Git worktrees support. They just work with NextJS, AstroJS, HonoJS but not with ProcessWire in my DDEV setup. I'm not sure if anyone else already found a great solution or maybe even built a module, script or anything like that (and I couldn't find anything) to support Git worktrees in DDEV environments with almost no manual intervention, so... I asked my agent to help me. I just pushed the inital/experimental version to Github. I tested it quite a bit with two projects locally in my setup and it works on my machine. https://github.com/webmanufaktur/processwire-ddev-worktree This is more like a proof-of-concept than a stable release. In case you want to test it, maybe don't. Or at least not with important projects. There might be plenty of edge-cases it won't handle right now or even break things on your machine. But it just solved a pretty big problem (for me) I ran into today. Look into it, feel free to fork it or send a PR.
-
- 4
-
-
Collections β Airtable-style data management for ProcessWire
maximus replied to maximus's topic in Modules/Plugins
Thanks for the kind words! I have a month's worth of modules, not as big as Collections, Ichiban, or Context, but very useful. Usually, when I run into a problem, I try to solve it right away using a module so that other users can use it in the future. -
PW 3.0.261 β Core updates + AgentTools updates
adrian replied to ryan's topic in News & Announcements
Another findRaw() deprecation which will throw an exception from these new core updates. If you try to do "image.filename" or any other image subfield, you'll get: ProcessWire\\WireException: Unknown column name(s) for findRaw: image.filename Just use "image" and it will work. -
Module: Video embed for YouTube/Vimeo (TextformatterVideoEmbed)
psy replied to ryan's topic in Modules/Plugins
Iβve been using `TextformatterVideoEmbed` for YouTube/Vimeo embeds and made a small local patch that seems generally useful for generated iframe output. The change adds two attributes to generated iframe embeds when they are not already present: ```html loading="lazy" referrerpolicy="strict-origin-when-cross-origin" ``` This is independent of any consent/privacy module. It simply improves the default iframe markup produced by `TextformatterVideoEmbed`. The intended behavior is: - add `loading="lazy"` to iframe embeds by default - add `referrerpolicy="strict-origin-when-cross-origin"` by default - do not override either attribute if it already exists in the iframe markup - keep existing embed behavior unchanged otherwise Example implementation pattern: ```php if(stripos($embedCode, ' loading=') === false) { $embedCode = preg_replace('/<iframe\b/i', '<iframe loading="lazy"', $embedCode, 1); } if(stripos($embedCode, ' referrerpolicy=') === false) { $embedCode = preg_replace('/<iframe\b/i', '<iframe referrerpolicy="strict-origin-when-cross-origin"', $embedCode, 1); } ``` Reasoning: - Native iframe lazy loading is now widely supported and helps avoid loading off-screen video embeds unnecessarily. - `strict-origin-when-cross-origin` is also the modern browser default in many contexts, but making it explicit gives generated third-party embeds a safer baseline. - The change is low risk because it only applies to iframe markup and skips attributes already present. Would this be suitable as a small PR to the module? If preferred, it could also be exposed as module config options rather than hardcoded defaults. -
Hello everyone, We're slowly working through our site and moving things into modules for antarctica.gov.au, in the process we hope to open source some handy things we've built over the years. As we operate in Microsoft heavy corporate environment, we've noticed more and more strange looking links getting pasted into our site. These are Microsoft protected links and are a 'intercept' link that attempts to check the link is legit before letting the user proceed to the original URL. These links get automatically made when a user copies a link from Outlook/Teams/Office. The issue is, these links leak data in the URL parameters, including the email address of who has copied the link! Hence, we wrote two companion modules to find and format these links. First is TextformatterMicrosoftProtectedLinks which formats the links at render time. Second is FormatMicrosoftProtectedLinks which replaces the link with the original URL when saving the page. We provided both modules as it depends on your preference. Some people like to leave the page content as the original (including the protected link), others like to replace this. Let us know if you notice any issues using these modules.
-
- 6
-
-
There is a panel on tracy to see all the database queries executed, maybe something there?
-
Dear @Nomak, your project sounds straightforward and well-prepared. Since you already have a fully completed design and will handle the backend yourself, I can focus entirely on delivering clean, responsive, and high-performance frontend code. Here is why I am a great fit for this project: Location & Legal: I am based in the EU (Germany) and will provide a valid EU VAT ID for proper, hassle-free invoicing. Experience & Modern Tech Stack: I have been working in web development since 1995, meaning I understand the core of the web inside out. However, I always stay on the cutting edge. For modern, responsive, and maintainable styles, I highly leverage Tailwind CSS, alongside clean HTML and robust JavaScript. Efficiency through AI: I actively integrate modern AI tools into my workflow, which allows me to speed up the development process, optimize code efficiency, and deliver high-quality results faster. Responsive Execution: Ensuring a seamless experience across desktop, tablet, and mobile devices is standard practice in my work. You can convince yourself of the quality of my work by taking a look at my portfolio: π dotnetic.de/referenzen I would love to realize this project with you. Letβs connect to discuss the details and the design template. Best regards, Jens
-
Yes, I have a day job, and it's not programming. I work on it mostly in the evenings after work.
-
-
Hi everyone SEO NEO is ready if anyone is available for early testing. I have been testing on a fictional purpose-built site to stress-test multilingual content, URL segments and a heap more. If you'd like to try it on your next real PW build, please DM me, and then we'll work quickly towards the general release and availability via PW modules and GitHub. Cheers, and have a great weekend π P
-
Hey Brendon This took me back. When I first started freelancing, I distinctly remember a period where I felt the same. It was impossible to keep up, know everything, have time to stay current and be in a relationship. And for a brief while, I was trying my best to do all those things. Two revelations really helped me relax and enjoy life and stop stressing. 1. A friend reminded me that my relationships were more important than my work 2. I realised the most important challenge is knowing what I don't need to know So, to clarify number 2, it was a case of switching from: I need to know Adobe Flash, Actionscript 1, HTML and CSS, PHP (3), JS, Dreamweaver etc etc etc to I don't need to be an expert in all these fields. I just need to know how to solve the client projects in front of me. If I don't know something at the time, I'll learn, buy a book or suggest an alternative. So I hope that helps. I notice you're looking for a system to cram it all in, but the thing that actually helped me was accepting I couldn't (and didn't need to). So don't sweat. It's funny because lately I had to remind myself of my 2000 AD self. I began to feel with AI and AI Development that there's no way I can keep up. I've been bookmarking 50 pages a day (but reading none) and can occasionally feel burnout approaching. So I'm going to relearn to calm down a bit, because that girlfriend from 25 years ago is now my wife, I have a good freelance business, and the most important things are relationships, health and peace of mind. Everything else is a bonus and worth chasing, but not at the expense of the fundamentals. Also, you mention your friend's life, but you're measuring yourself against someone you're painting as superhuman. That could easily be a confidence and happiness killer right there, and unlikely to be helpful.
-
Many thanks @Ivan Gretsky.
-
Can you provide more info? You edit some css file and want to insert "overflow:hidden" and then happens what?