All Activity
- Past hour
-
Hey folks, we at frameless Media often develop across multiple devices – laptop, tablet, sometimes even from a phone with an AI coding assistant. Git is our single source of truth, but getting those changes onto a staging or production server has always been annoying. Especially on shared hosting where there's no SSH, no git, and git-based FTP via YAML configs is more hassle than it's worth. We also frequently need to test new modules directly on shared hosting environments where the server setup differs from our local machines. Manually uploading files after every push? No thanks. So we built **GitSync**. 🎯 TL;DR: ✅ Link any installed module to its GitHub repo ✅ See all branches and their latest commits ✅ One-click sync – only changed files are downloaded ✅ GitHub Webhook support – auto-sync on every push ✅ Works on shared hosting – no git, no SSH, no cron ✅ Private repo support via GitHub Token What's the difference to ProcessUpgrade? ProcessUpgrade is great for updating published modules from the PW modules directory. But it tracks releases, not branches. During development, when you're pushing to `develop` or `feature/xyz` ten times a day, you need something different. That's where GitSync comes in. 🚀 How it works Install the module, add your GitHub Token (optional for public repos) Go to GitSync > Add Module, pick any installed module from the dropdown GitSync searches GitHub for matching repositories automatically Link the module to a repo + branch – done From now on, you can sync with one click. GitSync compares file hashes locally and remotely (using the same SHA1 blob hashing that git uses internally) and only downloads what actually changed. No full re-downloads, minimal API usage. Want it fully automatic? Set up a GitHub Webhook – enter a secret in the module config, point the webhook to `https://yoursite.com/gitsync-webhook/`, and every push triggers an automatic sync. The module overview shows a ⚡ webhook badge on auto-synced modules so you always know what's wired up. The real power: remote development with AI 📱 You're on the train, phone in hand, chatting with Claude via the Claude app. Claude writes code, commits to a feature branch on GitHub. GitSync picks up the webhook and syncs the module to your dev server. Automatically. You open the edited webpage on your phone, check the result, give feedback, iterate. The entire development loop without ever opening a laptop. 🤯 This works just as well for teams: multiple developers push to GitHub from different machines, and the staging server always reflects the latest state – no manual deploys, no SSH sessions, no FTP. We've been using a prototype internally for a few weeks now and it's become part of our daily workflow – especially the webhook auto-sync is something we don't want to miss anymore. As proof of concept we built the public release entirely as described above 😃 Technical details for the curious The differential sync works like git itself: every file's content is hashed as `sha1("blob {size}\0{content}")`. GitHub's Trees API returns these hashes for the entire branch in a single request. GitSync computes the same hash locally. Matching hash = identical file = skip. Requirements ProcessWire >= 3.0 and PHP >= 7.4 with cURL Module and Docs 👉 GitHub: https://github.com/frameless-at/GitSync 👉 Module Directory: https://processwire.com/modules/git-sync/ Would love to hear your thoughts, ideas, and edge cases we might not have considered! Cheers, Mike
-
- 2
-
-
-
@adrian noted. For me, the DB abstraction would open a lot of doors for us, special if we could use SQLite. I really want to make an app/desktop using PW and NativePHP.
-
No plans on that from me - I was just seeing if Claude could do it - I think it would be something that would require core modifications and maybe modules that plugged into the core abstraction layer for each DB.
-
Is a new module coming up? 🙂
- Today
-
module HTMX for ProcessWire: Build reactive, state-aware components effortlessly
elabx replied to ukyo's topic in Modules/Plugins
Fantastic, thank you so much ukyo! -
ukyo started following New blog: ProcessWire and AI
-
Hi @ryan and the ProcessWire community, Thank you for starting this amazing discussion. Like many of you, I've been deeply exploring how to make AI agents more effective within the ProcessWire ecosystem. Hearing about the new Agent Tools and the API.md initiative is incredibly exciting! ProcessWire’s predictability and clear architecture make it exceptionally pattern-friendly for AI agents. Building on this exact philosophy, I have been developing two complementary open-source packages: processwire-console and processwire-boost. I wanted to share my architecture and findings, as they align perfectly with the goals discussed here. 1. API.md vs. AGENTS.md (Data Documentation vs. Orchestration) @ryan your idea of adding API.md files to Fieldtype modules is brilliant and absolutely necessary. It solves the issue of the AI not knowing the exact CRUD syntax for specific module APIs. However, as @szabesz noted regarding directory structures (.agents/ vs global contexts), managing when the AI reads this context is equally critical. If we feed everything to the AI at once, we waste tokens and dilute the context window. I see API.md and AGENTS.md as completely complementary: API.md (The Knowledge): Native, module-level API documentation focusing purely on syntax and dataset interaction. AGENTS.md / map.json (The Librarian & Routing): Placed in the project root, this acts as a trigger-based router. Instead of holding documentation, it lists installed modules and triggers (e.g., "Use when working with HTMX components... read site/modules/Htmx/AGENTS.md" or "Working with Repeater? read site/modules/FieldtypeRepeater/API.md"). mcp.json: The configuration for integrating ProcessWire's context securely directly into Model Context Protocol (MCP) servers locally. By combining ProcessWire's native API.md documents with a root-level AGENTS.md / map.json router, we can keep the AI deeply focused. It drastically reduces token usage and limits hallucinations because the AI only reads the specific API.md when it is actively working on that module's scope. 2. Giving AI "Hands": The Console & Migrations While having readable documentation is half the battle, the other half is allowing the AI to safely interact with the system. I see that AgentTools natively introduces a very cool migration runner (--at-migrations-apply) and a dedicated CLI file for agents. This is a massive step forward to prevent AI from executing dangerous ad-hoc scripts. To build on this paradigm, my processwire-console package reimagines this CLI experience utilizing a full Symfony Console architecture. This gives both developers and AI agents strict, typed, and predictable commands, along with a dedicated migration architecture. Instead of editing a single agent script, the AI can seamlessly run independent commands like: php vendor/bin/wire make:migration AddBlogFields php vendor/bin/wire migrate:status php vendor/bin/wire migrate This provides a Laravel/Symfony-style schema migration system that AI agents understand natively. It allows them to scaffold entire schemas predictably without breaking the production environment. processwire-boost: To give the AI safe, read-only oversight, I integrated an MCP (Model Context Protocol) server over JSON-RPC. Agents can natively execute tools like pw_schema_read (to understand the exact templates/fields currently installed) or pw_query to fetch ProcessWire data securely before deciding how to proceed. Repositories & Working Examples If you're interested in giving these tools a spin or looking at how the AI components communicate with each other, they are open-source here: processwire-boost: https://github.com/trk/processwire-boost processwire-console: https://github.com/trk/processwire-console For a real-world example of a module that seamlessly integrates with this AI context architecture, you can check out the Htmx module. It not only includes its own localized AGENTS.md, but it also actively extends processwire-console by injecting its own CLI commands. For example, AI agents can scaffold native UI components directly from the terminal: php vendor/bin/wire make:htmx-ui Card Htmx Module: https://github.com/trk/Htmx @ryan your approach with API.md in the core modules is the final missing piece. When ProcessWire natively exposes its capabilities clearly through text, architectures like processwire-boost with intelligent context indexing will allow agents to seamlessly crawl, understand, and reliably act upon the CMS with unprecedented accuracy.
-
I actually played around and got Claude to build an DB abstraction layer for PW that would allow using Postgres etc. Seems like there is definitely potential on this front.
-
@ryan It seems Claude is your real co-worker now—does that mean we can expect major developments sooner? I’m thinking of things like official nginx support, additional databases, organizing template files into subdirectories, and so on.
-
And when they do, they treat it as the "global context", while /.agent/ is the "project context". At least that's what Cline does, so ProcessWire should not automatically touch ~/.agents/ and should warn about such an action in the first place. see: https://docs.cline.bot/customization/skills#skills Quote: "You can also create skills manually by creating the directory structure in your file system. Place skill directories in .cline/skills/ (workspace) or ~/.cline/skills/ (global) and Cline will detect them automatically." Since Cline supports both .cline/skills/ and ~/.cline/skills/ the same is true for storing skills in .agent folders as well.
-
This is a good workaround, I think, especially if the target directory can be configured in the module's settings. .agent/ in the site root could be the default path. BTW, some AI agent tools support both the .agent/ location and have their own preference, like Cline suggests .cline/. I use .agent/ with Cline, and it works well.
-
bernhard started following RobotsTxt — Manage robots.txt from the admin UI
-
RobotsTxt — Manage robots.txt from the admin UI
bernhard replied to maximus's topic in Modules/Plugins
I think there is only one thing missing: a screenshot 😉 -
We made the PR and let you and Claudia decide on how you want to handle a fallback. Also we renamed .agents to agents, so FTP transfer works reliably. It has the format I posted for templates/fields/roles/permissions. And it has various wrapper functions for things like creating pages, roles, install modules etc. These can live in various locations like site/migrate.php or inside a Foo module in Foo.migrate.php or the Foo.module.php itself or anywhere you call $rm->migrate(). It handles dependencies for migrations gracefully. Files it doesn't handle as far as I know. @Peter Knight has a module for page content creation with AI that he is working on. That one does rich text content and images, I think. Yes, that's very unfortunate indeed. I went with .agents because it's supposed to become the standard and many tools already support it. So I do the symlinking ritual until that is sorted out (if ever). Someone made a CLI for this at https://github.com/runkids/skillshare I haven't tried it yet, but looks pretty impressive.
-
Good morning @Stefanowitsch! Right now, this is possible for all images on a page using the page mode for prompts. I did a short screencast which shows what I mean. This way, you have to open each page, click 'Save + Alt-Text' (or whatever you want to call it), and move on to the next page. You could definitely create a script to process multiple pages at once, but this would require some refactoring of the module – I actually like this idea 😄 prompt-ai-pagemode.mp4
-
Context Module - AI-Optimized Site Documentation with TOON Format
maximus replied to maximus's topic in Modules/Plugins
Yes, it's documented in the README under "Best Practices → Session Continuity" section! I've also just improved the AGENTS.md file to make it more prominent with a clear example prompt. The docs now show: At end of each coding session, use this prompt: Update prompts/project-summary.md with current project state. Follow the existing format in the file: - Be concise and factual - Use bullet points - Update in place (don't overwrite history) - Remove any duplication Save the file. The template file itself also has the rules embedded, so AI sees them every time it updates. This is in v1.3.0 which I'm releasing shortly with CLI support for AI agents. -
Hi everyone, A small but practical module — manage your robots.txt directly from the ProcessWire admin, no FTP or SSH needed. GitHub: https://github.com/mxmsmnv/RobotsTxt What it does: Visual editor under Setup → Robots.txt with dark theme and monospace font Two-column layout — preset sidebar on the left, editor on the right 10 built-in rule presets — click any card to append rules to the editor: Allow all / Block all crawlers Hide admin panel (/processwire/) Block uploaded file assets Block AI training bots (GPTBot, CCBot, anthropic-ai, Google-Extended, FacebookBot, Omgilibot) Sitemap reference, Crawl-delay, Block query strings, Google only, Bing only Rules overview — parses the file after saving and renders a human-readable table with color-coded Allow/Disallow/Crawl-delay badges Status bar with file path, size, and last-modified date File locking (LOCK_EX) on write, CSRF protection, role-based access via robots-manager permission Automatic path detection via $config->paths->root Requirements: ProcessWire 3.0.200+, PHP 8.2+ Screenshot: MIT License.
- 1 reply
-
- 7
-
-
- Yesterday
-
giovannim joined the community
-
I could swear that was playing at the gym today.
-
Various agents have various needs unfortunatelly. Not sure if this changed recently but in order to test my SKILLS I needed to create various folders (as symlinks) like: .agent .claude .cline .factory .goose .kilocode .kiro .pi .roo .windsurf Like for the ~/.config/ folder on Mac and Linux also the dot is necessary. Another option could be using the ~/.agents/ folder but here as well, not all agents support this yet.
-
@gebeer Sounds like Claudia would like to add the .agents/skills directory like you have. So if you are able to send a PR for that and with the ddev support, please do. We'll add something in the module that checks that we can write off the root path, and if not, we'll instruct them how to manually copy. The .agents directory may not survive all install methods, like ZIP upload and some FTP installations, so may be better to start with site/modules/AgentTools/agents/ dir and install to "/.agents/..." (with the period, if necessary).
-
PlausibleAnalytics — Full-featured Plausible Analytics dashboard
bernhard replied to maximus's topic in Modules/Plugins
That would be really cool! On the other hand I had problems when using Plausible as data grew extremely large on a very small site over a very short period of time... So I'm not using it at the moment and went with the oldschool (and ugly) matomo... Your dashboard looks definitely a lot better, so I'm looking forward to seeing where you bring this 🙂 -
Hi @robert I have a basic question about the usage of this module. I want to use it for example to create description texts for images. This works - but on a image heavy site which features lots of different galleries I have to create each of this texts individually (by selecting the image, then click on the prompt option). Is there a way to configure the prompt so that it creates the alt text for every image in a "images" field at once?
-
PlausibleAnalytics — Full-featured Plausible Analytics dashboard
maximus replied to maximus's topic in Modules/Plugins
Yes, I understand what you're talking about. There is no interactivity in the module, only dry data for the period. I think I'll think about it in the next versions. -
@gebeer Thanks! Sounds like Claudia would like a PR for the ddev update if available. For the skills stuff, thanks for explaining it all. I'll look forward to having a closer look in your commits but one thing noticed so far is that your version has the option to install the skill files off the PW install root in a .agents dir. But the only place PW an assume is writable is off the /site/assets/. So the .agents off the root would work in some installs and not in others. Thanks for the example rock migrations file. It looks to me like the same format that the core Pages Export/Import module uses, except that the module uses them JSON encoded. While we're calling the ones generated by Claude with the AgentTools module "migrations", they really are just repeatable logic. So the logic can be about creating/updating/deleting some pages/fields/templates or perhaps something else. How does the Rock Migrations format work when you need some logic as part of the migration, such as creating a page, then creating another page that references that page (FieldtypePage)? You could do this with the pages export/import but would have to run the JSON through more than once to do it. Also, how does it handle files? Handling files is something AgentTools does not yet do.
-
bernhard started following PlausibleAnalytics — Full-featured Plausible Analytics dashboard
-
PlausibleAnalytics — Full-featured Plausible Analytics dashboard
bernhard replied to maximus's topic in Modules/Plugins
@maximus this looks awesome! Is the dashboard interactive? On your screenshot it doesn't look like it is. So for example when a user clicks on "Instagram" in the sources panel would it filter for that source or segment etc? Or is it intended as a basic dashboard and advanced insights would be via plausibles dashboard itself? eg like in the demo https://plausible.io/plausible.io -
PlausibleAnalytics — Full-featured Plausible Analytics dashboard
psy replied to maximus's topic in Modules/Plugins
@maximus You're on fire 😄 -
module HTMX for ProcessWire: Build reactive, state-aware components effortlessly
ukyo replied to ukyo's topic in Modules/Plugins
@BitPoet Thank you for info 🙂 I updated video