Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. I agree it's confusing and it only works for the core, not for modules.
  3. I didn't know that either! I too always assumed you have to click the "upgrade available" link, and if that link wasn't there, you could not upgrade. That seems like a UX issue to me.
  4. Today
  5. Thanks @maximus! It's a pity I can't give at least 5 likes to your post :)
  6. 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.
  7. 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
      • 3
      • Like
      • Thanks
  8. I think Opus is a sledgehammer, and Codex is quite an ordinary hammer.
  9. Which AI model are you using? I've found that high-end AI models, such as Opus 4.7 (Extra High), are great at complex data tasks. However, I've always had better visual and UI results with Sonnet 4.6 (outside of PW). Having said that, I've developed several non-ProcessWire professional tools with AI. If you have the benefit of using Tailwind or ShadCN, you can achieve very nice, clean and consistent UIs with little prompting or babysitting (even if they can be generic). I think the models have more training, data and Tailwind references to work from. When it comes to PW, I don't know why the models have such a hard time, even when you point them to working examples. You might have better luck having them scaffold something first with just HTML and CSS based on UIKIT and then get them to apply the interaction and functions?
  10. 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;
  11. 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.
  12. Hi, A small but practical module for anyone working with ProFields Repeater Matrix on the frontend. GitHub: https://github.com/mxmsmnv/InputfieldMatrixType The problem Repeater Matrix is great for building flexible content blocks β€” but when you need to identify item types programmatically, things get messy fast. Types are stored in internal template names like repeater_matrix_123, there's no clean way to get a human-readable type identifier, and extracting structured data from different item types means repetitive code in every template. I ran into this building a gift catalog on e-commerce project β€” a matrix field with three item types: Box, Handbag, and Bouquet. Each has different fields and pricing. I needed clean type identifiers for frontend rendering and a JSON API for Alpine.js components. What it does FieldtypeMatrixType β€” a dedicated field for storing type identifiers per matrix item (e.g. box, handbag, bouquet) InputfieldMatrixType β€” admin UI to configure identifier and display name per type MatrixDataProcessor β€” PHP class that extracts all matrix item data into a consistent structured array, JSON-ready $processor = new MatrixDataProcessor($page); $items = $processor->getItems('opt'); echo json_encode($items); Each item returns id, type, displayName, price, and a fields array with name/label/type/value β€” ready for Alpine.js, Vue, or any API endpoint. Supports Text, Textarea, Options, Checkbox, Integer, Float, Page references, and Image fields out of the box. Custom field types via formatValue() override. Requirements: ProcessWire 3.0+, PHP 8.1+, ProFields Repeater Matrix MIT License.
  13. @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.
  14. That's great. I've been running a 5090 here because I still do conventional rendering but even on 32GB there are some great local models.
  15. Yesterday
  16. So... the very first iteration looks like this. Used a "Look there, apply to that"-prompt. We wiill get there. Now I have to dig a little bit deeper to fine-tune. Big help already! Thanks @maximus!
  17. 🀯 this might actually be the solution to everything wrong in my modules. I am not sure if I already read about it here somewhere but couldn't find it when looking up module theming/styling. I will give this a try. Might have to try a few variations as most projects, even new ones, still use the old styling.
  18. I tried adding examples, but it doesn't always work. Sometimes he often doesn't understand what needs to be implemented and how. Sometimes he's pulling hardcode, sometimes something else. I usually write prompt in AI "apply the design system to the module https://github.com/mxmsmnv/pw-design-system" and then it makes a more conscious design. To ensure the design is consistent across both the old and new versions of the theme, you need to create a hardcoded framework like in my Collections module. Then it will look the same across all versions. If you write directly for the new design, some parts won't display in the old one. I've migrated almost all of my websites to the new theme. Clients just need to get used to it, then they'll say it's so cool. I'd also make a colored header module in the admin panel, but that's a whole other story. Design system https://mxmsmnv.github.io/pw-design-system/
  19. 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"; }
  20. How do you prompt and guide Agents (or any AI tool) to get a good understanding of module pages? Below are screenshots of what I currently have (finally). Yet both could be much more beautiful or at least organised and looking more clean. Sure I could go fully custom here but i want it to work with AdminThemeUiKit (and all existing flavours of it). Do you add other modules as examples to the context or do you go this step as we did 5 years ago and code it yourself?
  21. 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.
  22. https://ai.google/societal_impact/
  23. 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
  24. Last week
  25. 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.
  26. That's why GitHub Issues exist. πŸ˜„
  27. True - that would be amazing. But also, think about 22,000 support tickets? 🫣
  28. 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
      • Like
  1. Load more activity
Γ—
Γ—
  • Create New...