Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. Human in the loop, aka HITL. The latest acronym and IMHO for vital for devs.
  3. Today
  4. Untested... and just a starter idea for your use case, but maybe via a hook in site/ready? if ($input->urlSegments->count > 0 && $input->urlSegment(1) === 'sitemap.xml) { rtrim($input->urlSegmentStr() '/'); };
  5. psy

    SeoMaestro

    Further to above, there was an issue with the sitemap handling urlsegments with the canonical link. Another hook solved it for me:
  6. Yesterday
  7. Good day! One of my templates has a list of allowed (whitelisted) url segments set (via "Which URL Segments do you want to allow?") . And all of them but one should end with a trailing slash for SEO reasons. The new url segment (called `sitemap.xml`) should work without trailing slash. Could you please suggest how this could be done?
  8. Hi friends! And thanks for this useful module πŸ˜‰ I'm not (actually) pretending to become this module supporter but I've found a bug which broke a couple of pages in my PW admin, so I had to make a fix. The problem is that Activity Log module cannot handle the situations when a data field has been deleted. I did a quick fix, feel free to use it πŸ˜‰ MarkupActivityLog.module
  9. It's always great to hear feedback, it makes modules a must-have for every developer!
  10. @szabesz I get that except for project-summary.md. That file must stay as is when re-exporting or the change history will be lost
  11. Last week
  12. Humans In the Loop ARC AGI 3: When there is no pattern to follow, artificial "intelligence" fails: As long as we pretend to save the environment with "green energy," "renewable energy", luxury electric cars, and the like, while hiding the dark side of the trade, there is little we can do simply by refusing to use online LLM services: https://rumble.com/v39h4nu-the-truth-about-green-energy-its-all-a-hoax-to-make-money.html First and foremost, we should make products that last for decades, or at least are upgradable/updatable, so that certain parts can last as long as possible and the rest can be replaced. Also, the right tool for the right job is preferable to "the newer, the better" just because it's new. As long as profit dictates, there will be no effective solutions to problems like this, IMHO.
  13. Is Duplicator aware that some environments can contain symlinked Modules of remote repos? I can set the excluded files and folders to: .git .github .cursor .DS_Store .gitattributes .gitignore otherwise I recently had PHP warnings on some hosts about open_basedir restrictions. Cheers P
  14. Especially because the module does not delete already generated files. FI you turn off an option after it has been turned on and files have been generated, you will need to manually delete the files that are no longer needed.
  15. Thanks again @maximus! 1. I found an issue: In context/prompts/ md files /site/assets/ seems to be hardcoded, eg.: ## Files to Reference - `/site/assets/context/api/endpoints.json` - existing API endpoints - `/site/assets/context/api/schemas/` - data schemas - `/site/assets/context/snippets/api-examples.php` - code patterns 2. Agent might pick up /prompts/ In SKILL.md and README.me the "AI prompts and instructions" and similar text bits might be misleading for an agent. When someone feeds the LLM manually with necessary files only, this is not an issue, but when feeding an agent via SKILL.md, it would be preferable to clearly state that these files are only templates for LLM/Agent prompting, so an automated agent should leave them alone. Sure, I can simply turn it off in the setting, but just a safeguard, a better wording for them would be welcome. 2. Tiny UX request: Sometimes I close the Settings tab, and even the browser's "open recent tab" is just not an option "anymore", so a button like "Go to Module's Settings" would be handy: Thank you in advance for considering.
  16. Context Module v1.1.9 Released! πŸŽ‰ Quick update with two improvements based on your feedback: Fixed Cline Skill Name Compatibility (reported by @szabesz) Changed SKILL.md name: from ProcessWire Context - example.com to context Cline requires exact folder name match to activate skills Now works out-of-the-box when exported to .agents/skills/context/ Improved Better Project Summary Template (improved by @psy) Rules now embedded directly in the file (AI sees them every update) "Update in place" mode instead of overwrite (preserves history) Boundary protection: #### DO NOT UPDATE ABOVE THIS LINE #### Auto-removes duplication More concise and actionable format What this means: More reliable session continuity with AI agents AI won't accidentally modify template structure Cleaner, focused checkpoint summaries Download: GitHub Thanks @szabesz for the testing and @psy for the improved template!
  17. Nice solution! @Mikel Thanks for sharing! I will surely try it out. I used the style's menu for solving this, but your module is sure a lot more user-friendly.
  18. @maximus Thanx a lot! A little request: for Cline to pick up a SKILL (unfortunately) the name must exactly match the folder's name `name: context`. So `name: ProcessWire Context - example.com` does not work. In Cline, one can turn SKILLs on/off to save on token usage. Obviously, skills turned off will be excluded. Currently, mine looks like this: Well, the UI is clearly not designed for a lot of skills and mass management of them, but it's still in beta, so I hope it will be improved in the future. I did experiment with how Cline handles the context skill. Here is what I found: Test 1: Finding Child Pages Task: What pages are under the 'About Us' page? Without the context skill: It queries the database and is actually able to give the same information, plus a bit more (page IDs, for example). This uses about 19-24k of the 200k context window. With the context skill: I specifically asked: "What pages are under the 'About Us' page? Do not query the database. Use the SKILL named context to figure it out." Using the skill only is (of course) a lot faster. Both ways used about 19-24k context, but with the skill only, Cline just read 2 files (agents/skills/context/tree.json and agents/skills/context/structure.txt) and outputted: Under the "About Us" page (template: basic-page), there are 3 child pages: Terms & Conditions (template: basic-page) Disclaimer (template: basic-page) Privacy Policy (template: basic-page) Test 2: Explaining Repeater Matrix Fields Task: Explain what Repeater Matrix fields are used by the system, and for what. I tried asking both: "Explain what Repeater Matrix fields are used by the system, and for what. Do not query the database." and just: "Explain what Repeater Matrix fields are used by the system, and for what." Both resulted in similar outcomes, and the database was not queried. Cline read 12 files (the first two were agents/skills/context/matrix-templates.json and agents/skills/context/structure.txt) and also analyzed the template files. For a 99k context usage cost, I got a general overview, not just the structure, but how they are actually used. Restricted to context skill only: Next, I tested this: "Explain what Repeater Matrix fields are used by the system, and for what. Only query the skill named context and nothing else." For a 21k context window usage, I got the structure and info on what they are used for. Naturally, because it was no allowed to analyze the templates, it could not completally figure out how they are actually used in practice. I think Cline is great. It is – of course – an improvement over a simple chat window when the developer needs to manually provide files and context for each session. I am yet to test its Memory Bank and other advanced features, but even my basic Skills setup is very powerful already. And thanks to z.ai's GLM-5.1, using it is pretty cheap.
  19. cb2004

    I'm back

    @Soma a massive welcome back. I followed you on Twitter and absolutely loved your art journey but then it just seemed to disappear. As I hate social media I am not really on anything else, and certainly don't use X anymore. I always wondered what happened to a forum legend. As somebody mentioned earlier, you probably don't realise how much your posts have and still do help people.
  20. If anyone is interested in being able to set script-src-attr to "none" on the frontend of their sites, the namespaced branch of Tracy now uses eventListeners everywhere - no more inline handlers.
  21. Hi, everyone! While working on a client project we were looking for a way to let editors apply CSS classes to individual images in rich text fields β€” quickly, visually, and also in the frontend editor. ProcessWire already has several ways to get CSS classes onto images, so it's worth being precise about what this module does differently: TextformatterFluidImages adds one class to all images automatically β€” great for img-fluid across the board, but there's no per-image choice. TextformatterImageInterceptor is more powerful: editors tag images in the image field, and the Textformatter applies the corresponding classes at render time. The logic is developer-defined and centralized, which is exactly right when you want consistent, rule-based image treatment. But the class is invisible in the editor, applied only in the frontend output, and editors have to set the tag in a completely separate place from where they're actually working. TinyMCE's built-in styleFormatsCSS is the closest thing to what we wanted. You write CSS, ProcessWire turns it into a Styles dropdown. It works, but the dropdown is generic β€” it shows all defined styles regardless of what's selected β€” and there's a known accumulation issue where nothing prevents float-left float-right ending up on the same image. And it doesn't work in the frontend editor. What we needed was simpler: editor clicks an image, picks a style, sees immediately which styles are active, can combine them or remove them individually. No dialogs, no separate fields, no render-time magic β€” the class goes directly into the <img> tag in the saved HTML, visible and editable right there in the editor. That's what this module does: It registers a context toolbar in TinyMCE that appears as a floating "Image Style" button when an image is selected. For CKEditor the same options show up in the right-click context menu. The class list is defined once in the module settings and works across both editors β€” no separate configuration per editor type. Each entry shows a checkmark when active, clicking it again removes it, multiple classes can be combined freely. Works in the admin and in the frontend editor. Complete Readme on GitHub: https://github.com/frameless-at/ProcessImageClasses and the module directory. Any thoughts on further improvements welcome! Cheers, Mike
  22. Ivan Gretsky

    I'm back

    This start to look like "The Expendables". The superheroes are back 😎
  23. horst

    I'm back

    Hey, welcome back @Soma! Great to see you here (again). So, I'm my self are away from PW since around 2022-08. I only followed a bit by reading some of Ryan's blog posts and @teppo's ProcessWire Weekly. Well, maybe this summer I'll be able to work more with PW again and participate here in the forum. πŸ’¬
  24. Context Module v1.1.8 Released! Thanks everyone for the great feedback! Here's what's new: New Features SKILL.md Auto-Generation (requested by @szabesz) Automatically generates SKILL.md for AI coding agents (Cline, Junie, etc.) Lists all exported files with descriptions and usage examples Follows Cline/MCP skill format specification Enable/disable in module settings (enabled by default) Project Summary Template (suggested by @psy) Auto-creates prompts/project-summary.md template Helps AI agents maintain context between coding sessions Structured format: project state, decisions, issues, next steps Ask AI to update at end of each session for seamless continuity Setup for AI Agents: Cline (PHPStorm/VSCode): Set export path to .agents/skills/context/ Junie (PHPStorm): Set export path to .junie/skills/docs/ Re-export and SKILL.md + project-summary.md are auto-created Bug Fixes FieldtypeQRCode Compatibility (reported by @psy) Fixed error when exporting field definitions for FieldtypeQRCode Added method_exists() check before calling getModuleInfo() Now works with all fieldtypes using .info.php pattern Documentation Added Best Practices section to README covering: AI coding agents setup (Cline, Junie) Session continuity workflow File upload strategies for optimal token usage Download: GitHub Thanks @szabesz and @psy for the excellent suggestions!
  25. Found it out myself. As a test case, I set up a vanilla multi-language site and created a custom TextLanguage field "custom1" for the images on "home". I wanted to change and save a single language value directly, e.g. $mlFieldValues->setLanguageValue("de", "new Value") ; $p->of(false); $p->save(); But this deletes all other language values. Instead, I have to 1. read in all current values, 2. change whatever language value has to be changed and 3. save the entire object. $newValues = ["de"=>"DE overwritten by script", "fi"=>"FI overwritten by script"]; $p = $pages->get(1); $img = $p->images->first(); $mlFieldValues = $img->custom1; print "\n\nBEFORE:\n";print_r($mlFieldValues); print "\n\nNEW VALUES:\n"; print_r($newValues); $p->of(false); foreach($newValues as $lang => $newValue){ $mlFieldValues->setLanguageValue($lang, $newValue) ; } $img->custom1 = $mlFieldValues; $p->save(); print "\n\nAFTER:\n";print_r($mlFieldValues); Output: BEFORE: ProcessWire\LanguagesPageFieldValue Object ( [default] => previous english value [de] => previous german value [fi] => previous finnish value ) NEW VALUES: Array ( [de] => DE overwritten by script [fi] => FI overwritten by script ) AFTER: ProcessWire\LanguagesPageFieldValue Object ( [default] => previous english value [de] => DE overwritten by script [fi] => FI overwritten by script )
  26. Thanks @szabesz My comparison would be based strictly on licensing and 3rd party dependencies, so it wouldn't be fair. I didn't want to inject any processwire modules/jquery, etc. into the frontend. I leave processwire to do what it does best. I found sundeditor while working on a forum project a few years back. The source css/js files are fairly easy to update/customize, and the plain javascript, MIT license, and source were big selling points. So I can't really offer a comparison as I haven't tried modifying tinymce/ckeditor.
  27. Turns out, I started using Cline in PHPStorm instead of Junie. I used up all credits – that came with Junie's trial period – in no time. However, that was not enough time to decide if Junie is worth the money or not. My main issue was that I want to use agent Skills, but Junie is still in "beta" state in that regard and it has no useful documentation on its Skills feature either. Being new to coding with AI agents, I do not want to spend money on something I do not have enough time to play with in advance. So I looked for alternatives, and found the Cline plugin (extension), and sort of fell in love with it at first sight :D I have a z.ai subscription (GLM Coding Lite-Yearly Plan) which was cheap thanks to last year's Black Friday deal (thanks to @wbmnfktr for mentioning z.ai to me) and the GLM-5.x models are pretty good (https://docs.z.ai/guides/llm/glm-5#coding-performance-on-par-with-claude-opus-4-5) so the Cline + GLM-5.x combo works well, cheap and is relatively easy to get started with. My subscription has a "5 Hours Usage Quota" and the maximum I used it so far was only 6% percent in a 5-hour coding session, giving me plenty of room for a lot more usage. So this setup is cheap and powerful, I "just" need to develop my own Skills library, on which I already started to work on. (BTW, JetBrains IDEs do support 3rd party LLM providers, but z.ai has a non-standard BASE URL, and the IDE does not support that which is a shame. It fails just because of that.) Anyway, thanks to the output path being configurable in the settings of Contex, I pointed it to .agents/skills (that's where Cline saves its files, contrary to Cline's official doc page which is erroneously states it is [~/].cline/skills), so now the module generates files into .agents/skills/context. So far so good, but a Skill to be used properly by the agent needs a proper SKILL.md file too. At least that is my understanding. So I vibe coded a BASH script to generate SKILL.md for me, I just need to run it after each Context generation process, and I get the following in .agents/skills/context/SKILL.md : I am not sure this is the best SKILL.md content but the LLM suggested this and it aligns with Cline's recommendation (after I asked the model to make it align...), so I started using/testing it. @maximus I wonder if you could add support for optionally generating SKILL.md, too. The issue with SKILL.md files is that agents seem to have certain preferences regarding their content (ie. the format of the information is presented in them), so maybe a template-based approach could be adopted. I am just brainstorming here as I have no specific idea about how such a template option could be implemented. Thanks in advance for considering.
  28. This module is great for establishing the rules for AI. Something I needed was a way to continue the narrative between sessions. Here's what my AI suggested as a prompt: That way I can close an IDE session and use both Context prompts and project-summary.md to bring the AI up to date.
  29. Christophe

    I'm back

    Welcome back @Soma πŸ‘½!
  1. Load more activity
Γ—
Γ—
  • Create New...