-
developer
03 JunIf your plugin adds its own Markdown syntax — a callout block, a shortcode-like construct, a custom inline mark — you've historically done it by assigning a closure to Grav's Parsedown instance and registering a trigger character by hand. That approach still works in Grav 2.0, and it always will....
-
grav2
03 JunMarkdown is the heart of writing content in Grav, and for Grav 2.0 we gave it a proper pass. The engine is still the same fast, Parsedown-based renderer it has always been, and everything you've written over the years still renders exactly as before. What's new is that Grav now understands a muc...
-
plugin
02 JunIf you run forms on a Grav site, you've almost certainly used Google reCAPTCHA. It's been built into the Form plugin for years. You sign up with Google, grab your two keys, paste them into the plugin config, and the spam mostly dries up. Free, simple, done.
Google changed that. reCAPTCHA isn't...
-
developer
01 JunMost of the Grav 2.0 developer series so far has been quick wins. The compatibility flag is a one-line change. Adding API endpoints is a couple of event handlers. Custom blueprint field types are the one place where you've actually got work to do, because the way they're built has genuinely change...
-
grav2
31 MayI've been running my own Grav sites through an AI agent for a few months now, and the thing that kept nagging me was how every other CMS handles AI. It's always bolted on. A chatbot in the corner, an autocomplete button in the editor, a "summarize this post" feature that ships your content off to so...
-
grav2
26 MayThe Grav admin has carried the project for the better part of a decade. Admin Classic was always pragmatic: a Twig-rendered interface, jQuery for the dynamic bits, built directly on top of the same render pipeline that serves the public site. It worked, it shipped, it scaled to a global community...
-
grav2
20 MayBack in late 2015, we announced that Grav's translation workflow was moving to Crowdin. At the time it was a huge step forward. Instead of forking a plugin repo, hand-editing YAML in your editor, and submitting a pull request for every typo, contributors could log into a polished web UI, translate strings in context, and let Crowdin manage the round-trip back to GitHub. For a community that was just starting to grow internationally, it was the right call.
A decade later, the picture has changed. The Admin plugin became Admin2 with its own SvelteKit5 SPA. The plugin ecosystem expanded well past what a single Crowdin project was comfortable indexing. AI translation went from "interesting demo" to "genuinely usable", and our own ecosystem now ships a first-party API plugin and Admin Next that make it trivial to build the kind of integrated tooling that used to require a whole separate platform.

So we built one. Today I'm thrilled to announce the Grav Translations Portal, live at translations.getgrav.org, and the new home for translating Grav plugins and themes going forward.
-
developer
18 MayThe Grav API plugin is the load-bearing component of Grav 2.0. Admin Next is built on top of it, the MCP server runs through it, and any third-party tool that wants to talk to a Grav site (a build script, a CI job, a headless frontend, a mobile app, an AI agent) goes through it. The API ship...
-
developer
07 MayIf you ship a Grav plugin or theme, the new compatibility flag is one of the most important things to know about for Grav 2.0, and it's also one of the easiest 2.0 updates you can make. It's a one-block addition to your
blueprints.yamlthat tells Grav exactly which major versions you've tested...
Andy Miller