Jump to content

Recently Updated Topics

Showing topics posted in for the last 7 days.

This stream auto-updates

  1. Today
  2. One minor nitpick with this module is that if you're running the dev version of ProcessWire (lets say version 3.0.123) and that version receives additional commits/updates but without a version bump, you can't "upgrade" to it given how this module works. You can only upgrade when 3.0.124 dev version is available. Not a big deal for me since I have a bash script that takes care of pulling the latest from GitHub, however it would be nice to support getting the absolutely latest bleeding edge version with this module.
  3. @MrSnoozles Have you tried this GitHub repository? https://github.com/uiii/processwire 🙂
  4. @ryan One suggestion: What do you think about adding a file field to the engineer for asking questions with files? For example: Create me a page with the contents of this Word file. Also it I noticed that questions that take longer will end in an internal server error because of the long execution time. In this case one would better use the terminal, because I think there is no easy solution around this except for increasing the server time limits? Very interesting development. I just created a homepage and a subpage on a fresh install without writing a single line of code. 😅 One issue Claude Sonnet 4.6 had was the concept of Markup Regions. It had problems with the main-tags and disabled Markup Regions in the end. 😄 But maybe it can understand Markup Regions better with a more precise prompt. I have no tested that yet.
  5. Thank you very much for your feedback and for your contribution to helping us refine the module! I'll try to make some adjustments in the coming days. The module has been in development since February 2026, so stable operation was paramount. If you have any issues or suggestions for improvement, I'm always happy to help!
  6. Hi everyone, Built this for a financial news site that needed live stock quotes embedded inline in editorial content. Drop a ticker into any text field and it renders as a live badge with price, change, and direction - clicking opens a full detail popup. GitHub: https://github.com/mxmsmnv/Stocks What it does: Live price badges - ticker, price, change amount/%, direction arrow; click opens a popup with open/high/low, 52-week range, P/E, volume, market state Three data providers - Yahoo Finance (free, no key needed), Finnhub, Alpha Vantage TextFormatter with three parse modes: Explicit [stock:AAPL] tags Cashtag/hashtag - $AAPL, #TSLA Auto-detection by company name and aliases in text Company Manager - tracked companies with names, aliases, enable/disable toggles, bulk CSV import Four CSS frameworks - Vanilla CSS (built-in), Tailwind, Bootstrap 5, UIkit 3; auto-detected or manually set File-based cache with configurable TTL and per-ticker clear from admin Circuit breaker - pauses API calls after repeated failures, serves stale cache with ~ marker Custom provider API - add any data source by extending StocksProviderBase $stocks = $modules->get('Stocks'); echo $stocks->renderBadge('AAPL'); echo $stocks->renderBadgeAs('TSLA', 'bootstrap'); Requirements: ProcessWire 3.0+, PHP 8.2+ MIT License.
      • 4
      • Like
  7. Yesterday
  8. The Tracy core now supports some new AI agent tools: https://github.com/nette/tracy/releases/tag/v2.12.0 I have included this new version, but also extended it so there is now a new bluescreen panel with the Agent Markdown version for easy copying into your AI deity of choice. I also added a copy MD to clipboard button for those exception files generated by guest users (in production mode):
  9. https://demo.processwire.com/
  10. Hey @ryan, is this a side effect of your recent restructuring of the /wire/core/ classes?
  11. Hello @Peter Knight To be clear, FrontendForms doesn't send any form data by default – it just checks whether a form is valid or not. Inside the isValid() method, you can send form data — or do whatever you want (e.g., store the values on a page). So it's not a "Email Form" module by default. Informing about what went wrong So in this case, it's a bit more complicated. The validator can only set the form validation to true or false (without sending information to an administrator). Of course, it could happen that a real person uses some characteristics of a SPAM text and the text is therefore declared as SPAM. This risk always exists, but it is very low. For this reason, it is necessary to inform the user about which mechanisms were responsible for the failure of validation. But I agree with you: too much detailed information (e.g., word 1 and word 2 are SPAM words) could give a human spammer too much information. My Opinion: In this case you have to make a compromise. You can't stop SPAMMERS completely. If it's a bot, it should post a fixed text in a text box – it will fail and can't react the way it changes the SPAM text it's going to pass. When you have real human SPAMMERS, it becomes much harder to stop them, because they can react much different than a bot. At the moment, the information in the error message is very general and doesn't contain too much detailed information. Yes the danger is always there, especially with AI - so I guess I leave it general. You can also change the error message to your own by asking the user to call you by phone if the message fails validation. Another option would be to set the threshold lower (e.g. from 50 to 30) so that more SPAM properties are accepted and the entered text is more likely to pass validation. I don't know what the "best practice" scenario is in this case. Maybe someone has an idea how best to deal with messages that have been falsely declared as SPAM, even though they are not.
  12. Last week
  13. Hi @nbcommunication - I've actually set up my own report endpoint which logs to PW log files (csp-report and csp-report-only). I also ping via slack for any enforced violations. The only thing I still have in report-only mode now is "require-trusted-types-for". I have actually reported to a few open source projects I integrate about the changes to support "require-trusted-types-for" and they've actually been very responsive so I am hoping to be able to enforce this option very soon also. Note that I do exclude violations from browser plugins and the like, so my csp-report log is actually almost completely silent now. I do have separate policies for frontend vs PW admin which helps because PW still has various inline scripts and no nonce (yet). I am using Cloudfront but all my CSP and nonce logic is handled locally in my /site/init.php file - it's very different and much stricter than what I posted earlier above. I have Cloudfront enabled caching for all assets, but I am not using Procache for a variety of reasons, but performance with Cloudfront asset caching is a pretty good middle-ground.
  14. Context v1.5.0 — AI Gateway Hi, just pushed a new release. The main addition is a centralized AI Gateway — a ContextAI class that any ProcessWire module can use to make AI requests through a single shared configuration: $ai = wire('context')->ai(); // Simple $text = $ai->complete('Summarize: ' . $page->title); // Full options $result = $ai->chat([ 'messages' => [['role' => 'user', 'content' => '...']], 'model' => 'openai/gpt-4o-mini', 'caller' => 'MyModule', ]); // Gateway entry point for third-party modules $result = $ai->gateway(['caller' => 'MyModule', 'messages' => [...]]); Supported providers: OpenRouter (200+ models via one key), OpenAI, or any OpenAI-compatible endpoint. New settings fieldset: provider, API key, default model, temperature, max tokens, timeout, global system prompt, and a Test Connection button that fires a live request and shows the response time. The idea is that modules don't need to implement their own HTTP clients or manage API keys — they just call wire('context')->ai() and everything is configured in one place. GitHub: https://github.com/mxmsmnv/Context
  15. Hey NEO in this instance is more aligned to “new” than any acronym or AI /LLM technology. I guess the upper case letters suggests an acronym but, honestly, I just liked the visual rhythms of both words. Not sure if this answers your question or if I misunderstood?
  16. I’m using the core FieldtypeComments in ProcessWire and everything works correctly on the frontend and in the database. Comments are saved properly and displayed without issues. However, in the admin I get a one-time SQL error after a new comment is submitted: SQLSTATE[HY000]: General error: 1525 Incorrect TIMESTAMP value: '1777649215' Observations: Difference between “error value” and stored value is consistently +3600 seconds No data corruption or functional issues occur Environment: PHP timezone and $config->timezone both set to Europe/Brussels The warning only appears once per comment submission and does not affect saving or rendering. Has anyone seen this behavior before with FieldtypeComments?
  17. Yes, I know it well — great Dashboard module! I've used it on almost every project to keep the admin from feeling bare. But as projects grew, I kept hitting the same wall: customizing Dashboard meant writing PHP for each install, and the widget lists got unwieldy. Start (and its companion module Collections) came out of that frustration — the goal was a fully visual, no-code editor where you just drag, drop, and pick icons without touching any config files.
  18. Hi. I have set up a 301 redirect in the host webspace to redirect to a pw site on to my other host server. I simply have these 2 lines in .htaccess and nothing else. (There is no pw on this webspace) RewriteEngine On RewriteRule (.*) https://my-otherdomain.com/mysub [R=301,L] On this other server I have pw installed in a folder www/mysub This works in so far the home page is shown as expected but internal links give internal server error. I suspect because url slugs are referencing the wrong server. Do I need to add rules for this and any idea what rules to add ? Thanks for any help-
  19. Mm picture tags could work but then that means creating portrait-oriented edits for every corresponding desktop slide image - and that's not always possible depending on what design will be shown, especially when I begin uploading the rest of my projects. If I'm querying mob vs desktop based on tagged images won't that impact caching regardless? Maybe I misunderstood. In the end I may end up doing extra edits but it's a bit of a pain. Maybe excluding the slideshow from Procache might be another idea...if possible
  20. You need an M5 Mac with 128GB RAM, I think (see: https://www.youtube.com/watch?v=SmuX-Al7DUs&t=173s) I have a M4 Pro Mac Mini with 24GB RAM. I cannot run anything more demanding than Qwen3-VL-8B, as the model must be kept in memory (you don’t want to wait for a model to load, I load it before starting to work on something and unload it at shutdown). I do not use Qwen3-VL-8B for coding, instead I use GLM, Gemini subsriptions (and recently, for that given project only, the client pays for Claude subscription so that I can use it). I also like the image descriptions Qwen3-VL-8B generates. IMHO, strangely, it is better than any other LLM I’ve ever tried in this use case. My only issue with Qwen3-VL-8B was that in chat mode it spits out emojis by default all the time, which I hate, but the “NEVER use emojis!” system prompt in LM Studio solved that.
  21. I actually came across the need for this as well. @ryan - could we perhaps have: $page->isUrlHook In my case I have url segments enabled on the homepage and some logic to process them, but that logic can't tell if it's a urlsegment or a path created by a URL hook. I ended up with this for now: $urlHookSegments = []; $pathHooks = $wire->hooks->pathHooks ?? (new \ReflectionProperty($wire->hooks, 'pathHooks'))->getValue($wire->hooks); foreach ((array) $pathHooks as $hook) { $match = $hook['match'] ?? ''; if (preg_match('#^/([^/{(]+)#', $match, $m)) { $urlHookSegments[$m[1]] = true; } } if ($input->urlSegment1 && !isset($urlHookSegments[$input->urlSegment1])) {
  22. PromptWire is now at v1.9 and includes a few new features and fixes. The list below is AI-generated... Diagnostics can run against production The eight read tools (pw_health, the four pw_db_* ones, pw_logs, pw_last_error, pw_clear_cache) now accept site: local | remote | both. Previously site: remote was silently ignored and queried the local database instead. Bulk page push to remote or both pw_pages_push accepts targets: local | remote | both. Pages go in parent-first order so newly-created parents exist before their children try to attach. Pull pages back from production pw_page_pull source: remote fetches a page that was edited directly in the production admin and writes it into your local sync tree, so you can re-edit and push back without touching the live admin. Phantom diffs eliminated from pw_site_compare Page content is now hashed deterministically across environments. Identical content produces identical hashes regardless of timezone, page-array storage order, or whether a date field has an output format set. pw_modules_list Lists installed modules with version, file path, and install state. Pass site: both to compare local vs production install state in one call. pw_users_list Lists users with id, name, email, roles, and any member_* fields. Pass includeAll: true for every non-system field on the user template. pw_resolve Bulk name-to-id lookup for fields, templates, pages, roles, permissions, users, or modules. Translates names into the equivalent IDs on the target site without one round trip per name. pw_inspect_template Like pw_get_template but each field comes back as {name, type, label}. Designed for spotting fieldgroup differences before pushing changes. File inventories include .module files and symlinked module directories Previously the file sync silently skipped any modules developed in symlinked sibling repos. pw_modules_list bugfix (v1.9.1) The default call with no classes filter was returning null class names. Caught during release validation and patched the same day.
  23. There is nothing good about imperial 😜
  24. @monollonom Bingo! 🙂 I was not aware of this config setting. Never used it on any templates. And that said, i wouldn't have investigate in this direction. Especially all source templates do not have this flag set. Maybe it is a good idea to check/set this while adding pages through the API, though. Many thanks, cheers Olaf
  1. Load more activity
×
×
  • Create New...